Delcom Products
 
Home->Web Notes

WebNoteId: 3
Title: Issue#3 - USB HID features on Linux Kernel v4.8


Summary: On 2016-07-04 a custom driver was added to the Linux kernel to support Delcom devices. When present this driver installs instead of the generic USB HID driver and hence disables all the USB HID features of the Delcom devices such as Keycode, Mouse, System Controls and Joystick events. This was done with out Delcom knowledge or consent. Delcom has contacted the developer of this customs driver and the developer has removed the custom driver from future kernel revisions.

Date:Jan 24, 2018-Updated Jan 28, 2022
Drivername:drivers/hid/hid-led.c
Effects: All USB HID features on all Delcom USB device with USB VID(Vendor ID)=0xFC5 and PID(Product ID)=0xB080 running the Linux kernel with the custom driver included.
Debian, Ubuntu - Kernel versions v4.8 to 4.17*
Raspberry Pie - Kernel versions v4.8 to *.
Android - Kernel versions v4.8 to < v4.19*
*Actual kernel end version may vary.

Problem:
When a Delcom device with a matching VID=0xFC5 and PID=0xB080 is plugged in, the Linux kernel will install the custom driver instead of the correct USB HID driver. This causes the Delcom device to no longer work as a HID device and therefore disables the USB HID feature. The custom driver also changed the PWM values on the LED ports pin to zero when the driver connects to the device this has the effect of toggling pin output states! All other device feature (e.i. Delcom commands) are unaffected by this driver.


Solutions:
  • RECOMMENED SOLUTION - Change the PID (USB Product Identifier number) on the Delcom device. This will cause the Linux kernel to not recognize the device and load the correct USB HID driver. Note all software that connects to the device must also use the same PID. To make this change you will need to run the delcomSetPID utility. This utility allows you to switch the PID between OxB080(default) and 0xA080(alternate). Click here for the file delcomSetupPID.
    Example: delcomSetupPID 0xA080

  • Use a kernel driver version that does not include the custom driver (hid-led.c).
    • Ubuntu - Use ukuu to update the kernel. Install ukuu. Then run ukuu from the GUI. Select the latest kernel. Reboot. Select latest kernel from GRUB.
         sudo add-apt-repository ppa:teejee2008/ppa
         sudo apt-get update
         sudo apt-get install ukuu
    • Raspbian - Use rpi-update. Note at the time of this writing the fixed kernel has not been release for Raspbian. But is claimed to be released shortly. For now the best solution is to change the PID, see below.
         sudo rpi-update

  • Recompile the kernel without the hid-led driver. Remove the Delcom device IDs (VID=0x0FC5 and PID=0xB080) from the hid-quirks.c file and delete the drivers/hid/hid-led.c files and recompile the kernel.


Linux kernel links:
Delcom support corrected
Delcom support removed

homeproductsservicescontact usshopping cartlegal   © Copyright 2024 Delcom Products Inc - R720 4/26/2024