sispmctl fails on Linux 6.x (Debian 13 / trixie) because libusb-0.1's
USBDEVFS_CLAIMINTERFACE is rejected with ENOENT by the kernel.
Additionally, the Gembird Silver Shield PM (04b4:fd11, Cypress CY7C63001A)
sends a truncated configuration descriptor (11 of 27 bytes), causing the
kernel to register 0 interfaces:
usb 1-2: config index 0 descriptor too short (expected 27, got 11)
usb 1-2: config 1 has 0 interfaces, different from the descriptor's value: 1
The attached patch migrates sispmctl to libusb-1.0 and adds a USB reset
at startup to force the device to send the full descriptor on
re-enumeration.
Tested on Debian 13 (kernel 6.x) with Gembird Silver Shield PM (04b4:fd11).
Patch: https://github.com/nowrap/sispmctl/tree/migrate-libusb1
Thank you for your bug report.
Debian contains a sispmctl package. Does is also show the issue with USBDEVFS_CLAIMINTERFACE? Did you create a Debian bug?
The Git master is git://git.code.sf.net/p/sispmctl/git. Please, create your merge requests here. Merging your branch https://github.com/nowrap/sispmctl/tree/migrate-libusb1 into the upstream master branch fails.
Each commit needs to be signed with a real name, see
https://www.kernel.org/doc/html/latest/process/submitting-patches.html
Please, describe how I can reproduce the issue that you experienced with your Gembird Silver Shield PM. The correction for this issue should be in a separate patch.
Best regards
Heinrich
USBDEVFS_CLAIMINTERFACE is described in https://www.kernel.org/doc/html/latest/driver-api/usb/usb.html. There is not obvious API change in Linux 6.x.
Last edit: xypron 2026-04-11