How to unload a kernel module which is in use and has a recursive module dependency?


New Member
I have a driver for my ELM 327 an it uses the pl2303 module which depends on the usbserial and this again depends on the pl2303 module.

What I tried:

sudo modprobe -r usbserial pl2303
sudo modprobe -r pl2303 usbserial
sudo modprobe -rf usbserial
sudo modprobe -rf pl2303
sudo rmmod --force pl2303
sudo rmmod --force usbserial

result of rmmod:

rmmod: ERROR: ../libkmod/libkmod-module.c:799 kmod_module_remove_module() could not remove 'usbserial': Resource temporarily unavailable
rmmod: ERROR: could not remove module usbserial: Resource temporarily unavailable

result of modprobe:

modprobe: FATAL: Module usbserial is in use.

Also I tried it with the drivers loaded and unloaded.

kernel modules reference each other[1]

OS: Ubuntu 20.04


Well-Known Member
What if you "unload" the dependencies first and then work back up through the chain?
Just a thought.
$100 Digital Ocean Credit
Get a free VM to test out Linux!

Members online