I connect to my Arduino board with the following Python code.
device=glob.glob("/dev/ttyUSB*")[0] time.sleep(1) arduino = serial.Serial(device, 115200, timeout=5)
It generally works, but somehow some other process must be accessing the board after reboot giving me the error
serial.serialutil.SerialException: could not open port /dev/ttyUSB0: [Errno 16] Device or resource busy: '/dev/ttyUSB0'
When unplugging and replugging the USB-plug I can execute the Python code normally, without the error occuring. How can I avoid any other process blocking the port? And how do I find out the reason for this error?
Alternatively, if your fuser command supports it you can use the -k option to kill them. Show activity on this post. sudo lsof /dev/ttyUSB0 worked for me as well, thanks! sudo fuser /dev/ttyUSB0 worked for me, thanks.
It is the order that the devices are detected. ttyUSB means "USB serial port adapter" and the "0" (or "1" or whatever) is the device number. ttyUSB0 is the first one found, ttyUSB1 is the second etc.
You may kill minicom from a script with the command "! killall -9 minicom" without hanging up the line.
You can use
$ fuser /dev/ttyUSB0
to list the PIDs of the processes using the file. Alternatively, if your fuser
command supports it you can use the -k
option to kill them.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With