I am trying to work with raw GPS data from a USB GPS receiver (Delorme LT-20) through /dev/ttyUSB0/.

My program had been working, but today I get this error:

could not open port /dev/ttyUSB0: [Errno 16] Device or resource busy: '/dev/ttyUSB0'

The program is pretty simple:

import serial
ser = serial.Serial('/dev/ttyUSB0')

How do I fix this?

  • 1
    To rule out the obvious and assuming you made no other changes did you reboot. – Steve Robillard Dec 19 '16 at 5:49
  • What does lsof say? – Bex Dec 19 '16 at 8:08
  • 1
    This never gets old. – Dmitry Grigoryev Dec 19 '16 at 10:48
  • Steve Robillard- No changes, reboot, power-down & restart, unplug & reinsert the USB device. no change. It had been working during my earlier experiments. – user3573562 Dec 19 '16 at 15:18
  • Bex- lsof output is here: dropbox.com/s/cqiw9s74n4ah832/lsof.txt?dl=0 I don't see tty or USB anywhere, but I did try gpsd a few days back- could there be a daemon running? (If yes, how do I kill it?) – user3573562 Dec 19 '16 at 15:30

I know that this is a rather old question, but since I had the same problem I wanted to share my solution (apart from turning it off and on again, which also helped): list the processes which are using the resource and kill them.

Two options are available for this:

$ fuser /dev/ttyUSB0

If that returns nothing, try

$ sudo lsof /dev/ttyUSB0

Then issue a kill using the PID contained in the return-value of the above listed commands.

New contributor
Alf is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.