Re: "permanently" unbind a device from a driver?

Greg KH
2009-01-20T21:04:25Z

On Tue, Jan 20, 2009 at 11:50:07PM +0300, Michael Tokarev wrote:
> Is there a way to stop a module from claiming a
> given device no matter how/when it gets plugged?
>
> For example, there's a series of power supplies
> (UPSes) with USB connection (common nowadays)
> which, by default, gets claimed by usbhid module.
> But it does not work as a HID device, instead it
> uses a serial line logic and has a USB<=>serial
> converter inside, which works just fine with
> cypress_m8 usbserial driver.
>
> usbhid module is loaded on startup (to handle
> usb keyboards/mouses), and it claims this device
> too. Using /sys/bus/.../drivers/usbhid/unbind
> releases it, after which cypress_m8 works as
> expected. But after re-plugging it gets claimed
> by usbhid again.

Just add a blacklist rule to the usbhid driver for this device. There
are a number of devices out there that need this functionality, which is
why there is such a list.

> I understand that it's easy to write an udev rule
> (I don't use udev but that's another story) to
> unbind the device from the driver and bind it to
> another driver automatically. That's basically
> what I have for now (handling hidraw* device).
> But that seems somewhat... ugly, at best.
>
> The question is: is it possible to tell usbhid
> to STOP claiming devices with given vendor:device
> identifier, from now on?
>
> I also understand that to do it permanently the
> given vendor:device has to be blacklisted in the
> driver source. But I don't think it's worth the
> effort.

Why wouldn't it be worth the effort? It's obviously a problem.

thanks,

greg k-h