Make kernel to NOT detect a specific device (SD card reader)

Hi,

I have a notebook on Opensuse 12.1 with a SD card reader. I have a MicroSD adapter (without a microSD inside) in the card reader slot at boot. Sometime, the kernel load normally, don’t detect the /dev/sdb (the card reader) and go though. But sometime, it raise some error and stop booting. So I have to eject the empty adapter and reboot.

I would like to force the kernel or udev to not try to detect the card reader at boot. Is it possible with some kind of udev rules ? Or other trick/hack ?

Regards,

You could blacklist the offending kernel module in /etc/modprobe.d/50-blacklist.conf

Hi,
The offending module is usb_storage. It’s a generic one … I blacklist it. But I suppose that if I plug in a usb key, I have to manually modprobe usb_storage ?
Is there a way to be more device specific ? Here is what I have when I plug a real SD card while the usb_storage is blacklisted :


$ dmesg
...
 5919.380097] usb 1-3: new high speed USB device number 3 using ehci_hcd
 5919.507059] usb 1-3: New USB device found, idVendor=0bda, idProduct=0159
 5919.507077] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
 5919.507090] usb 1-3: Product: USB2.0-CRW
 5919.507100] usb 1-3: Manufacturer: Generic
 5919.507109] usb 1-3: SerialNumber: 20071114173400000

On 12/23/2011 04:46 AM, mhtrinh wrote:
>
> Hi,
> The offending module is usb_storage. It’s a generic one … I blacklist
> it. But I suppose that if I plug in a usb key, I have to manually
> modprobe usb_storage ?
> Is there a way to be more device specific ? Here is what I have when I
> plug a real SD card while the usb_storage is blacklisted :

If you want to be device specific, you would need to get the kernel sources,
modify that driver to eliminate that device from its tables, and rebuild the
kernel. Those steps would need to be redone every time the kernel is updated.

As the above would be a pain, there might be a workaround. If your problem
device only causes trouble in booting, then leave it blacklisted, but put the
modprobe in /etc/init.d/boot.local. That will delay the loading until the system
is safely booted. If you have trouble there, at least you will get some
diagnostics in the logs and you will be able to file a bug report.

It good to know that I can disable specific device by goiing directly in the driver’s table. I will try that the day that my hardware freeze the booting process and when I got some spare time …

I will go for the second solution by putting a modprobe in boot.local

Thanks for your advice.