Is it possible to override a driver that has been compiled into the kernel?

linux-kernel

Solution

You are essentially looking for a way to :

- unbind the default driver from your USB device and

- bind a driver of your choice to it.

Take a quick look at this to get you started.

A slightly more detailed description of the same is available in this excellent LWN article of (un)binding device drivers.

Problem

I have a USB device for which I have an API. This API only works if the USB device doesn't use the ftdi_sio/usbserial drivers. On my laptop, if I plug the USB device in, these drivers get loaded (as modules) and I have to unload them using modprobe -r after which code using the API can see the device. I have another device which experiences the same issue although no modules are loaded so I'm guessing these drivers are compiled into the kernel. My question is this - is there any way to stop this device from using these drivers or do I have to recompile the kernel, etc? Thanks for any help!

Original source