Open infosecconsultant opened 9 months ago
Try dumping the usb hid report first, maybe it's also detected as a mouse ... I had to google this keyboard out of curiosity and must admit I have never seen anything like this :) it's pretty interesting...
I'll try to do that when I'm back tomorrow. This output?
lsusb -v
usbhid-dump
The keyboard supports Bluetooth... Is there any chance the raspi could pair a bluetooth keyboard? Or have a bluetooth dongle attached to it?
Unless a BT dongle presents as a usb keyboard, I doubt that would work, but I was working on pico W BT support, mostly in the other direction (use BT as client so you need only one pico).
Trying to do support for non-boot keyboards as well, that should sort out most issues with a few stubborn keyboard models.
Any change with the latest fw?
Hey hrvach, I've got some other firmware issues with that keyboard unfortunately. I'll have to try again once the RMA'd unit comes though in a couple of weeks. Sorry :(
Hey @hrvach
Still no luck with the keyboard. Not registering any keypresses at all and I've updated to the most recent release of firmware.
The following output is from a linux machine plugged into the 'A' port of the deskhop.
usbdhid-dump
001:005:001:DESCRIPTOR 1713489329.878272
05 01 09 02 A1 01 85 01 09 01 A1 00 05 09 19 01
29 05 15 00 25 01 95 05 75 01 81 02 95 01 75 03
81 01 05 01 09 30 09 31 15 81 25 7F 95 02 75 08
81 06 09 38 15 81 25 7F 95 01 75 08 81 06 05 0C
0A 38 02 15 81 25 7F 95 01 75 08 81 06 C0 C0
001:005:000:DESCRIPTOR 1713489329.879163
05 01 09 06 A1 01 85 01 05 07 19 E0 29 E7 15 00
25 01 95 08 75 01 81 02 95 01 75 08 81 01 05 08
19 01 29 05 95 05 75 01 91 02 95 01 75 03 91 01
05 07 19 00 2A FF 00 15 00 26 FF 00 95 06 75 08
81 00 C0 05 01 09 02 A1 01 85 02 09 01 A1 00 05
09 19 01 29 05 15 00 25 01 95 05 75 01 81 02 95
01 75 03 81 01 05 01 09 30 09 31 15 00 26 FF 7F
75 10 95 02 81 02 09 38 15 81 25 7F 95 01 75 08
81 06 95 01 75 08 81 01 C0 C0
And lsusb -v output
Bus 001 Device 005: ID 2e8a:107c Hrvoje Cavrak DeskHop Switch
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 [unknown]
bDeviceSubClass 0 [unknown]
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x2e8a Hrvoje Cavrak
idProduct 0x107c DeskHop Switch
bcdDevice 1.00
iManufacturer 1 Hrvoje Cavrak
iProduct 2 DeskHop Switch
iSerial 3 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x003b
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 [unknown]
bInterfaceProtocol 0
iInterface 2 DeskHop Switch
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 138
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0020 1x 32 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 [unknown]
bInterfaceProtocol 0
iInterface 4 MouseHelper
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 79
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0020 1x 32 bytes
bInterval 1
Device Status: 0x0000
(Bus Powered)
The following output is from a linux machine plugged into the black diamond keyboard directly: usbdhid-dump
001:007:002:DESCRIPTOR 1713489935.694410
06 00 FF 09 01 A1 01 09 01 15 00 26 FF 00 75 08
95 40 81 02 09 02 15 00 26 FF 00 75 08 95 40 91
02 C0
001:007:001:DESCRIPTOR 1713489935.695966
05 0C 09 01 A1 01 85 02 15 00 25 01 75 01 95 01
09 CD 81 06 09 E2 81 06 09 B5 81 06 09 B6 81 06
09 E9 81 06 09 EA 81 06 09 6F 81 06 09 70 81 06
C0 05 01 09 80 A1 01 85 03 19 81 29 B8 15 00 25
01 75 01 95 38 81 02 C0
001:007:000:DESCRIPTOR 1713489935.696796
05 01 09 06 A1 01 05 07 19 E0 29 E7 15 00 25 01
75 01 95 08 81 02 95 01 75 08 81 03 95 05 75 01
05 08 19 01 29 05 91 02 95 01 75 03 91 03 95 E0
75 01 15 00 25 01 05 07 19 00 29 DF 81 02 C0
001:005:001:DESCRIPTOR 1713489935.697443
05 01 09 02 A1 01 85 01 09 01 A1 00 05 09 19 01
29 05 15 00 25 01 95 05 75 01 81 02 95 01 75 03
81 01 05 01 09 30 09 31 15 81 25 7F 95 02 75 08
81 06 09 38 15 81 25 7F 95 01 75 08 81 06 05 0C
0A 38 02 15 81 25 7F 95 01 75 08 81 06 C0 C0
001:005:000:DESCRIPTOR 1713489935.698194
05 01 09 06 A1 01 85 01 05 07 19 E0 29 E7 15 00
25 01 95 08 75 01 81 02 95 01 75 08 81 01 05 08
19 01 29 05 95 05 75 01 91 02 95 01 75 03 91 01
05 07 19 00 2A FF 00 15 00 26 FF 00 95 06 75 08
81 00 C0 05 01 09 02 A1 01 85 02 09 01 A1 00 05
09 19 01 29 05 15 00 25 01 95 05 75 01 81 02 95
01 75 03 81 01 05 01 09 30 09 31 15 00 26 FF 7F
75 10 95 02 81 02 09 38 15 81 25 7F 95 01 75 08
81 06 95 01 75 08 81 01 C0 C0
And lsusb -v
Bus 001 Device 007: ID 05ac:0256 Apple, Inc. Black Diamond 75
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 [unknown]
bDeviceSubClass 0 [unknown]
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x05ac Apple, Inc.
idProduct 0x0256 Black Diamond 75
bcdDevice 1.00
iManufacturer 1 AngryMiao
iProduct 2 Black Diamond 75
iSerial 3 000000000000
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0096
bNumInterfaces 5
bConfigurationValue 1
iConfiguration 4 Default configuration
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 1 Boot Interface Subclass
bInterfaceProtocol 1 Keyboard
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 63
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 1 Boot Interface Subclass
bInterfaceProtocol 1 Keyboard
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 72
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 1 Boot Interface Subclass
bInterfaceProtocol 0
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 34
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 3
bInterfaceCount 2
bFunctionClass 2 Communications
bFunctionSubClass 2 Abstract (modem)
bFunctionProtocol 1 AT-commands (v.25ter)
iFunction 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 2 Communications
bInterfaceSubClass 2 Abstract (modem)
bInterfaceProtocol 1 AT-commands (v.25ter)
iInterface 0
CDC Header:
bcdCDC 1.10
CDC Call Management:
bmCapabilities 0x03
call management
use DataInterface
bDataInterface 4
CDC ACM:
bmCapabilities 0x02
line coding and serial state
CDC Union:
bMasterInterface 3
bSlaveInterface 4
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 16
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 4
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0 [unknown]
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x85 EP 5 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Device Status: 0x0001
Self Powered
I'm not sure why the device is an 'Apple' device... Bit odd. I'm testing on a mac and a debian based HP at the moment.
Please let me know if you need anything further from my end.
Output (Constant, Variable),
Report Count (224),
Report Size (1),
Your keyboard is NKRO, that's not supported yet.. it should work in boot mode though, but I suspect it's also a mouse. Can you try rebuilding with ENFORCE_PORTS set to 1 in user_config.h ?
Ordered a NKRO keyboard, that should help with implementing support for it. 😃
@infosecconsultant is there a change with the latest experimental BETA (https://github.com/hrvach/deskhop/releases/tag/v0.60) ?
I thought I'd try with a few other keyboard I have. Unfortunately the Dry Studio Black Diamond 75 keyboard does not register with the deskhop at all. I'm guessing it's got issues with the power draw but I'm not sure. I don't currently have a way to measure that but I've ordered a little inline USB power monitor/tester. I turned off the LEDs etc but still no luck. If there's any advice on debugging please let me know and I'll give it a shot.