[colug-432] blacklist usb device

Rick Hornsby rhornsby at ktzr.net
Mon Jul 31 18:25:49 EDT 2023


Giving an old 2011 Macbook air new life and a new purpose sans the case, 
keyboard, and trackpad. Basically, I tore the whole thing apart and I'm 
only using the motherboard and the display.

Linux (debian 12, specifically but any distro+GUI will do) installs and 
runs perfectly fine. The problem I'm having is that I cannot seem to 
properly blacklist the missing keyboard/trackpad. Something in the 
motherboard(?) logic is connecting this ghost HID via the USB bus, 
discovers it's not present, and disconnecting it. This repeats about 
every 1/2 second:


[   37.116765] usb 1-1.2: new full-speed USB device number 43 using ehci-pci
[   37.232243] usb 1-1.2: New USB device found, idVendor=05ac, 
idProduct=0252, bcdDevice= 1.18
[   37.232263] usb 1-1.2: New USB device strings: Mfr=1, Product=2, 
SerialNumber=0
[   37.232271] usb 1-1.2: Product: Apple Internal Keyboard / Trackpad
[   37.232277] usb 1-1.2: Manufacturer: Apple Inc.
[   37.239254] input: Apple Inc. Apple Internal Keyboard / Trackpad as 
/devices/pci0000:00/0000:00:1a.7/usb1/1-1/1-1.2/1-1.2:1.0/0003:05AC:0252.0044/input/input51
[   37.297629] apple 0003:05AC:0252.0044: input,hidraw1: USB HID v1.11 
Keyboard [Apple Inc. Apple Internal Keyboard / Trackpad] on 
usb-0000:00:1a.7-1.2/input0
[   37.300103] apple 0003:05AC:0252.0045: hidraw3: USB HID v1.11 Device 
[Apple Inc. Apple Internal Keyboard / Trackpad] on 
usb-0000:00:1a.7-1.2/input1
[   37.407369] usb 1-1.2: USB disconnect, device number 43


I've tried various udev rules without much luck, examples:

SUBSYSTEM=="usb", ATTRS{idVendor}=="05ac",ATTR{authorized}="0"

ACTION=="add", ATTR{idVendor}=="05ac", RUN="/bin/sh -c 'echo 0 > 
/sys/\$devpath/authorized'"

ACTION=="add", ATTR{idVendor}=="05ac", RUN="/bin/sh -c 'echo 1 > 
/sys/\$devpath/remove'"

I've also blacklisted the bcm5974 kernel module.

The dmesg spamming I could probably pretend to ignore, but the cycling 
is also making udev-worker chew up CPU cycles (more or less a full cpu 
core) that I need.

This is where I'm going to veer out of my lane - I'm guessing the 
cycling is happening because of a hardware interrupt of some kind? Is it 
possible to somehow get the kernel to ignore that specific interrupt 
(while not killing off other USB devices)?

thanks!


More information about the colug-432 mailing list