Wie ich am 29. August geschrieben habe, hatte ich diverse Probleme mit „Ubuntu Server 24.04 LTS und HID Devices mit MCP2200 Chipsatz„.
Zwischenzeitlich war ich aber in der Lage das Problem weiter einzukreisen und zu Lösen.
Vermutung
Ende August gab es eine Erweiterung bei den Treibern im Linux Kernel. Folgende Diskussion habe ich hierzu gefunden: https://lore.kernel.org/lkml/202308180056.nB1KSUap-lkp@intel.com/T/.
Ende November ist es dann in den Quellcode eingeflossen: https://github.com/torvalds/linux/blob/master/drivers/hid/hid-mcp2200.c.
Diese Änderung floss dann vermutlich in Kernel 6.8, der mit Ubuntu 24.04 ausgeliefert wurde und dazu führte, dass das Relaisboard (USB Relay Module 4 Channels, for Home Automation – v2) der Firma Denkovi Assembly Electronics LTD, sobald as am USB Port angeschlossen wurde nun mit dem NEUEN Treiber versorgt wird und nicht mehr mit dem generischen HID Treiber.
Mit dem alten Treiber wurde im Devicetree von Linux das Gerät /dev/usb/hiddev0
angelegt. Das ist auch das Gerät, welches man in den Docker Container linken muss (--device=/dev/usb/hiddev0
) damit das Relaisboard von dort aus angesprochen werden kann.
Das sieht man, wenn man sich den Ladevorgang via dmesg
anschaut und vergleicht:
Ubuntu 22.04 dmesg
[ 2.437680] usb 1-2: new full-speed USB device number 2 using xhci_hcd
[ 2.591719] usb 1-2: New USB device found, idVendor=04d8, idProduct=00df, bcdDevice= 1.01
[ 2.591756] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2.591770] usb 1-2: Product: MCP2200 USB Serial Port Emulator
[ 2.591783] usb 1-2: Manufacturer: Microchip Technology Inc.
[ 2.591794] usb 1-2: SerialNumber: 0002460031
[ 2.884575] hid: raw HID events driver (C) Jiri Kosina
[ 2.889410] usbcore: registered new interface driver usbhid
[ 2.889425] usbhid: USB HID core driver
[ 2.893929] hid-generic 0003:04D8:00DF.0001: hiddev0,hidraw0: USB HID v1.11 Device [Microchip Technology Inc. MCP2200 USB Serial Port Emulator] on usb-0000:00:15.0-2/input2
Ubuntu 24.04 dmesg
[ 184.330464] usb 1-2: new full-speed USB device number 3 using ohci-pci
[ 184.857213] usb 1-2: New USB device found, idVendor=04d8, idProduct=00df, bcdDevice= 1.01
[ 184.857220] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 184.857221] usb 1-2: Product: MCP2200 USB Serial Port Emulator
[ 184.857223] usb 1-2: Manufacturer: Microchip Technology Inc.
[ 184.857224] usb 1-2: SerialNumber: 0001693160
[ 184.877118] hid-generic 0003:04D8:00DF.0002: hiddev0,hidraw1: USB HID v1.11 Device [Microchip Technology Inc. MCP2200 USB Serial Port Emulator] on usb-0000:00:06.0-2/input2
[ 184.901800] mcp2200 0003:04D8:00DF.0002: USB HID v1.11 Device [Microchip Technology Inc. MCP2200 USB Serial Port Emulator] on usb-0000:00:06.0-2/input2
[ 184.906240] cdc_acm 1-2:1.0: ttyACM0: USB ACM device
[ 184.906268] usbcore: registered new interface driver cdc_acm
[ 184.906270] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[ 448.466402] usb 1-2: USB disconnect, device number 3
[ 457.088963] usb 1-2: new full-speed USB device number 4 using ohci-pci
[ 457.624849] usb 1-2: New USB device found, idVendor=04d8, idProduct=00df, bcdDevice= 1.01
[ 457.624855] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 457.624857] usb 1-2: Product: MCP2200 USB Serial Port Emulator
[ 457.624858] usb 1-2: Manufacturer: Microchip Technology Inc.
[ 457.624860] usb 1-2: SerialNumber: 0001693160
[ 457.636478] cdc_acm 1-2:1.0: ttyACM0: USB ACM device
[ 457.661624] mcp2200 0003:04D8:00DF.0003: USB HID v1.11 Device [Microchip Technology Inc. MCP2200 USB Serial Port Emulator] on usb-0000:00:06.0-2/input2
Schnelle Lösung
Es mag hier vermutlich eine elegante Lösung geben, aber die quick ’n‘ dirty Variante ist, den MCP2200 Kernel Treiber zu deaktivieren.
Eine temporäre Aktivierung (zum Testen) macht man mit dem Befehl:
modprobe -r hid_mcp2200
Die permanente Deaktivierung erfolgt dann, indem man einen Blacklist Eintrag in der Datei: „/etc/modprobe.d/blacklist.conf
“ vornimmt:
# The MCP2200 kernel driver doesn't support the "USB Relay Module 4 Channels,
# for Home Automation – v2" from "Denkovi Assembly Electronics LTD".
# if the /dev/usb/hiddev* device is missing, you need to deactivate the kernel
# driver to fallback to the generic HID kernel driver.
blacklist hid_mcp2200