Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

USB-USB: Ducky One 2 Mini #697

Closed
1 task done
tmk opened this issue Jun 25, 2021 · 13 comments
Closed
1 task done

USB-USB: Ducky One 2 Mini #697

tmk opened this issue Jun 25, 2021 · 13 comments

Comments

@tmk
Copy link
Owner

tmk commented Jun 25, 2021

Ducky One 2 Mini RGB(DKON2061STDKON1861ST) with 1.10/1.09(1.08) firmware doesn't have 'boot protocol' interface, so the converter can't recognize the keyboard.

I believe that this is not their intended desgin, but a glitch.
Interface 0 looks like a boot keyboard interface(6KRO) compatible but it doesn't have boot protocol configuration in descriptor.
Seems that Interface 1 is used for mouse, Interface 2 for report keyboard(NKRO) and Interace 3 for vendor specific purpose Media keys.

TODO:
The keyboard has DIP switch configuration to enable 6KRO/NKRO mode.

  • USB descriptor differernce between 6KRO and NKRO -> No differences

2023-02-01
Ducky One 2 Mini(DKON2061ST) had two issue for USB-USB converter.
(while DKON1861ST model with V1.22 firmware should work without problem. )
https://www.duckychannel.com.tw/en/Ducky-One2-Mini-RGB

Ducky One 2 Mini(DKON2061ST):

  1. has no boot keyboard interface
  2. replies SET_PROTOCOL with STALL and stops working

Fixed with this commit: tmk/USB_Host_Shield_2.0@204bc5d

  1. non-boot keyboard interface is used as 6KRO when boot keyboard is not found
  2. SET_PROTOCOL is not sent to non-boot keyboard interface
@tmk
Copy link
Owner Author

tmk commented Jun 26, 2021

This relaxes driver loading conditions in hidboot.h of UHS2.

diff --git a/hidboot.h b/hidboot.h
index e187189..cdca5f1 100644
--- a/hidboot.h
+++ b/hidboot.h
@@ -410,7 +410,9 @@ uint8_t HIDBoot<BOOT_PROTOCOL>::Init(uint8_t parent, uint8_t port, bool lowspeed
                                         USB_CLASS_HID,
                                         HID_BOOT_INTF_SUBCLASS,
                                         USB_HID_PROTOCOL_KEYBOARD,
-                                        CP_MASK_COMPARE_ALL> confDescrParserA(this);
+                                        CP_MASK_COMPARE_CLASS | CP_MASK_COMPARE_PROTOCOL
+                                        > confDescrParserA(this);
+                                        //CP_MASK_COMPARE_ALL> confDescrParserA(this);
 
                                 pUsb->getConfDescr(bAddress, 0, i, &confDescrParserA);
                                 if(bNumEP == (uint8_t)(totalEndpoints(BOOT_PROTOCOL)))

With this patch above the converter recognizes interface 0 as a keyboard now, but setProtocol() fails with hrSTALL(05).

I think this is a bug of the keyboard, not intended design. But ... not sure.

Waiting for device:
Listening:

Device disconnected.
Waiting for new device:.....
Listening:


TMK:ca653136+/LUFA


USB configured.

Keyboard start.
usb_state: 12
usb_state: 20
usb_state: 40
usb_state: 50
usb_state: 51
Ci vid:3233
pid:6301
klass:00
subklass:00
AC1
AC2
A2 driver:00
BM Init
Ci Addr:01
Ci NC:01
HID_PROTOCOL_KEYBOARD
Ci Ci bNumEP:02
Cnf:01
bIfaceNum:00
bNumIface:00

Interface:00
crST:05
SetProto:05
rcode:05
BUSRST
host.Task: 2420
usb_state: A0
usb_state: 12

@tmk
Copy link
Owner Author

tmk commented Jul 4, 2021

Descriptors extracted by usb_desc_dump and parsed by USB Descriptor and Request Parser:

https://gist.github.com/tmk/6c9b88c117725446dd768a4270847019

The keyboard doesn't have Boot keyboard interface, it seems Interface0 should be that.

@tmk
Copy link
Owner Author

tmk commented Oct 21, 2022

Ducky fixed the issue in new firmware seemingly.
felis/USB_Host_Shield_2.0#738 (comment)

TODO: New firmware 1.0.10 is available and should be tested again.
https://www.duckychannel.com.tw/en/Support/Detail/19

@dinovo1
Copy link

dinovo1 commented Dec 20, 2022

Updated a brand new Ducky One 2 Mini (DKON2061ST) to firmware 1.0.10.
Still does not work with the TMK.
Please let me know if there's any additional info I can provide to help solve this.

@dinovo1
Copy link

dinovo1 commented Dec 20, 2022

Is there some older firmware version I can downgrade to and get it to work?

@tmk
Copy link
Owner Author

tmk commented Dec 20, 2022

Can you share its USB Descriptor here?

Please check 'Troubleshoot' in the first post to get USB Descriptor.
https://geekhack.org/index.php?topic=69169.0

@dinovo1
Copy link

dinovo1 commented Dec 20, 2022

I got this using USB Tree Viewer (didn't want to reflash my TMK).

=========================== USB Port1 ===========================

Connection Status : 0x01 (Device is connected)
Port Chain : 1-1

  ========================== Summary =========================

Vendor ID : 0x3233 (DuckyChannel International Co., Ltd.)
Product ID : 0x6301
USB Version : 1.1
Port maximum Speed : Full-Speed
Device maximum Speed : Full-Speed
Device Connection Speed : Full-Speed
Self powered : no
Demanded Current : 100 mA
Used Endpoints : 5

  ======================== USB Device ========================

    +++++++++++++++++ Device Information ++++++++++++++++++

Device Description : USB Composite Device
Device Path : \?\USB#VID_3233&PID_6301#DK-V1.10-201231#{a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE)
Kernel Name : \Device\USBPDO-12
Device ID : USB\VID_3233&PID_6301\DK-V1.10-201231
Hardware IDs : USB\VID_3233&PID_6301&REV_0000 USB\VID_3233&PID_6301
Driver KeyName : {36fc9e60-c465-11cf-8056-444553540000}\0026 (GUID_DEVCLASS_USB)
Driver : system32\DRIVERS\usbccgp.sys (Version: 6.1.7601.18328 Date: 2013-11-26)
Driver Inf : C:\Windows\inf\usb.inf
Legacy BusType : PNPBus
Class : USB
Class GUID : {36fc9e60-c465-11cf-8056-444553540000} (GUID_DEVCLASS_USB)
Service : usbccgp
Enumerator : USB
Location Info : Port_#0001.Hub_#0001
Container ID : {58e72224-931a-5b00-b1a2-3d6b228565d4}
Manufacturer Info : (Standard USB Host Controller)
Capabilities : 0x94 (Removable, UniqueID, SurpriseRemovalOK)
Status : 0x0180400A (DN_DRIVER_LOADED, DN_STARTED, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER)
Problem Code : 0
Address : 1
HcDisableSelectiveSuspend: 0
EnableSelectiveSuspend : 0
SelectiveSuspendEnabled : 0
EnhancedPowerMgmtEnabled : 0
IdleInWorkingState : 0
WakeFromSleepState : 0
Power State : D0 (supported: D0, D3, wake from D0)
Child Device 1 : USB Input Device
Device ID : USB\VID_3233&PID_6301&MI_00\6&62897EB&0&0000
Class : HIDClass
Driver KeyName : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0033 (GUID_DEVCLASS_HIDCLASS)
Service : HidUsb
Location : 0000.0004.0000.001.000.000.000.000.000
LocationPaths : PCIROOT(0)#PCI(0400)#USBROOT(0)#USB(1)#USB(1)
Child Device 1 : HID Keyboard Device
Device Path 1 : \?\HID#VID_3233&PID_6301&MI_00#7&14fd6a88&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} (GUID_DEVINTERFACE_HID)
Device Path 2 : \?\HID#VID_3233&PID_6301&MI_00#7&14fd6a88&0&0000#{884b96c3-56ef-11d1-bc8c-00a0c91405dd} (GUID_DEVINTERFACE_KEYBOARD)
Kernel Name : \Device\000000ec
Device ID : HID\VID_3233&PID_6301&MI_00\7&14FD6A88&0&0000
Class : Keyboard
Driver KeyName : {4d36e96b-e325-11ce-bfc1-08002be10318}\0003 (GUID_DEVCLASS_KEYBOARD)
Service : kbdhid
Child Device 2 : USB Input Device
Device ID : USB\VID_3233&PID_6301&MI_01\6&62897EB&0&0001
Class : HIDClass
Driver KeyName : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0034 (GUID_DEVCLASS_HIDCLASS)
Service : HidUsb
Location : 0000.0004.0000.001.000.000.000.000.000
LocationPaths : PCIROOT(0)#PCI(0400)#USBROOT(0)#USB(1)#USB(1)
Child Device 1 : HID-compliant mouse
Device Path 1 : \?\HID#VID_3233&PID_6301&MI_01#7&1cd4e4a&0&0000#{378de44c-56ef-11d1-bc8c-00a0c91405dd} (GUID_DEVINTERFACE_MOUSE)
Device Path 2 : \?\HID#VID_3233&PID_6301&MI_01#7&1cd4e4a&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} (GUID_DEVINTERFACE_HID)
Kernel Name : \Device\000000ed
Device ID : HID\VID_3233&PID_6301&MI_01\7&1CD4E4A&0&0000
Class : Mouse
Driver KeyName : {4d36e96f-e325-11ce-bfc1-08002be10318}\0004 (GUID_DEVCLASS_MOUSE)
Service : mouhid
Child Device 3 : USB Input Device
Device ID : USB\VID_3233&PID_6301&MI_02\6&62897EB&0&0002
Class : HIDClass
Driver KeyName : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0031 (GUID_DEVCLASS_HIDCLASS)
Service : HidUsb
Location : 0000.0004.0000.001.000.000.000.000.000
LocationPaths : PCIROOT(0)#PCI(0400)#USBROOT(0)#USB(1)#USB(1)
Child Device 1 : HID Keyboard Device
Device Path 1 : \?\HID#VID_3233&PID_6301&MI_02#7&2a37fc13&0&0000#{884b96c3-56ef-11d1-bc8c-00a0c91405dd} (GUID_DEVINTERFACE_KEYBOARD)
Device Path 2 : \?\HID#VID_3233&PID_6301&MI_02#7&2a37fc13&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} (GUID_DEVINTERFACE_HID)
Kernel Name : \Device\000000ee
Device ID : HID\VID_3233&PID_6301&MI_02\7&2A37FC13&0&0000
Class : Keyboard
Driver KeyName : {4d36e96b-e325-11ce-bfc1-08002be10318}\0002 (GUID_DEVCLASS_KEYBOARD)
Service : kbdhid
Child Device 4 : USB Input Device
Device ID : USB\VID_3233&PID_6301&MI_03\6&62897EB&0&0003
Class : HIDClass
Driver KeyName : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0032 (GUID_DEVCLASS_HIDCLASS)
Service : HidUsb
Location : 0000.0004.0000.001.000.000.000.000.000
LocationPaths : PCIROOT(0)#PCI(0400)#USBROOT(0)#USB(1)#USB(1)
Child Device 1 : HID-compliant consumer control device
Device Path : \?\HID#VID_3233&PID_6301&MI_03#7&1707dfd5&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} (GUID_DEVINTERFACE_HID)
Kernel Name : \Device\000000ef
Device ID : HID\VID_3233&PID_6301&MI_03\7&1707DFD5&0&0000
Class : HIDClass
Driver KeyName : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0035 (GUID_DEVCLASS_HIDCLASS)

    ---------------- Connection Information ---------------

Connection Index : 0x01 (Port 1)
Connection Status : 0x01 (DeviceConnected)
Current Config Value : 0x01 (Configuration 1)
Device Address : 0x03 (3)
Is Hub : 0x00 (no)
Device Bus Speed : 0x01 (Full-Speed)
Number Of Open Pipes : 0x04 (4 pipes to data endpoints)
Pipe[0] : EndpointID=1 Direction=IN ScheduleOffset=0 Type=Interrupt wMaxPacketSize=0x8 bInterval=1 -> 196 Bits/ms = 24500 Bytes/s
Pipe[1] : EndpointID=2 Direction=IN ScheduleOffset=0 Type=Interrupt wMaxPacketSize=0x4 bInterval=1 -> 158 Bits/ms = 19750 Bytes/s
Pipe[2] : EndpointID=3 Direction=IN ScheduleOffset=0 Type=Interrupt wMaxPacketSize=0x40 bInterval=1 -> 718 Bits/ms = 89750 Bytes/s
Pipe[3] : EndpointID=4 Direction=IN ScheduleOffset=0 Type=Interrupt wMaxPacketSize=0x4 bInterval=1 -> 158 Bits/ms = 19750 Bytes/s
Data (HexDump) : 01 00 00 00 12 01 10 01 00 00 00 08 33 32 01 63 ............32.c
00 00 01 02 03 01 01 01 00 03 00 04 00 00 00 01 ................
00 00 00 07 05 81 03 08 00 01 00 00 00 00 07 05 ................
82 03 04 00 01 00 00 00 00 07 05 83 03 40 00 01 .............@..
00 00 00 00 07 05 84 03 04 00 01 00 00 00 00 ...............

---------------------- Device Descriptor ----------------------

bLength : 0x12 (18 bytes)
bDescriptorType : 0x01 (Device Descriptor)
bcdUSB : 0x110 (USB Version 1.1)
bDeviceClass : 0x00 (defined by the interface descriptors)
bDeviceSubClass : 0x00
bDeviceProtocol : 0x00
bMaxPacketSize0 : 0x08 (8 bytes)
idVendor : 0x3233 (DuckyChannel International Co., Ltd.)
idProduct : 0x6301
bcdDevice : 0x0000
iManufacturer : 0x01 (String Descriptor 1)
Language 0x0409 : "Ducky"
iProduct : 0x02 (String Descriptor 2)
Language 0x0409 : "Ducky One2 Mini RGB"
iSerialNumber : 0x03 (String Descriptor 3)
Language 0x0409 : "DK-V1.10-201231"
bNumConfigurations : 0x01 (1 Configuration)
Data (HexDump) : 12 01 10 01 00 00 00 08 33 32 01 63 00 00 01 02 ........32.c....
03 01 ..

------------------ Configuration Descriptor -------------------

bLength : 0x09 (9 bytes)
bDescriptorType : 0x02 (Configuration Descriptor)
wTotalLength : 0x006D (109 bytes)
bNumInterfaces : 0x04 (4 Interfaces)
bConfigurationValue : 0x01 (Configuration 1)
iConfiguration : 0x00 (No String Descriptor)
bmAttributes : 0x80
D7: Reserved, set 1 : 0x01
D6: Self Powered : 0x00 (no)
D5: Remote Wakeup : 0x00 (no)
D4..0: Reserved, set 0 : 0x00
MaxPower : 0x32 (100 mA)
Data (HexDump) : 09 02 6D 00 04 01 00 80 32 09 04 00 00 01 03 00 ..m.....2.......
01 00 09 21 10 01 00 01 22 40 00 07 05 81 03 08 ...!...."@......
00 01 09 04 01 00 01 03 00 02 00 09 21 10 01 00 ............!...
01 22 34 00 07 05 82 03 04 00 01 09 04 02 00 01 ."4.............
03 00 01 00 09 21 10 01 00 01 22 2D 00 07 05 83 .....!...."-....
03 40 00 01 09 04 03 00 01 03 00 00 00 09 21 10 .@............!.
01 00 01 22 39 00 07 05 84 03 04 00 01 ..."9........

    ---------------- Interface Descriptor -----------------

bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x00 (Interface 0)
bAlternateSetting : 0x00
bNumEndpoints : 0x01 (1 Endpoint)
bInterfaceClass : 0x03 (HID - Human Interface Device)
bInterfaceSubClass : 0x00 (None)
bInterfaceProtocol : 0x01 (Keyboard)
iInterface : 0x00 (No String Descriptor)
Data (HexDump) : 09 04 00 00 01 03 00 01 00 .........

    ------------------- HID Descriptor --------------------

bLength : 0x09 (9 bytes)
bDescriptorType : 0x21 (HID Descriptor)
bcdHID : 0x0110 (HID Version 1.10)
bCountryCode : 0x00 (00 = not localized)
bNumDescriptors : 0x01
Data (HexDump) : 09 21 10 01 00 01 22 40 00 .!...."@.
Descriptor 1:
bDescriptorType : 0x22 (Class=Report)
wDescriptorLength : 0x0040 (64 bytes)
Error reading descriptor : ERROR_OPERATION_ABORTED (due to a obscure limitation of the Win32 USB API, see UsbTreeView.txt)

    ----------------- Endpoint Descriptor -----------------

bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x81 (Direction=IN EndpointID=1)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0008 (8 bytes)
bInterval : 0x01 (1 ms)
Data (HexDump) : 07 05 81 03 08 00 01 .......

    ---------------- Interface Descriptor -----------------

bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x01 (Interface 1)
bAlternateSetting : 0x00
bNumEndpoints : 0x01 (1 Endpoint)
bInterfaceClass : 0x03 (HID - Human Interface Device)
bInterfaceSubClass : 0x00 (None)
bInterfaceProtocol : 0x02 (Mouse)
iInterface : 0x00 (No String Descriptor)
Data (HexDump) : 09 04 01 00 01 03 00 02 00 .........

    ------------------- HID Descriptor --------------------

bLength : 0x09 (9 bytes)
bDescriptorType : 0x21 (HID Descriptor)
bcdHID : 0x0110 (HID Version 1.10)
bCountryCode : 0x00 (00 = not localized)
bNumDescriptors : 0x01
Data (HexDump) : 09 21 10 01 00 01 22 34 00 .!...."4.
Descriptor 1:
bDescriptorType : 0x22 (Class=Report)
wDescriptorLength : 0x0034 (52 bytes)
Error reading descriptor : ERROR_OPERATION_ABORTED (due to a obscure limitation of the Win32 USB API, see UsbTreeView.txt)

    ----------------- Endpoint Descriptor -----------------

bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x82 (Direction=IN EndpointID=2)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0004 (4 bytes)
bInterval : 0x01 (1 ms)
Data (HexDump) : 07 05 82 03 04 00 01 .......

    ---------------- Interface Descriptor -----------------

bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x02 (Interface 2)
bAlternateSetting : 0x00
bNumEndpoints : 0x01 (1 Endpoint)
bInterfaceClass : 0x03 (HID - Human Interface Device)
bInterfaceSubClass : 0x00 (None)
bInterfaceProtocol : 0x01 (Keyboard)
iInterface : 0x00 (No String Descriptor)
Data (HexDump) : 09 04 02 00 01 03 00 01 00 .........

    ------------------- HID Descriptor --------------------

bLength : 0x09 (9 bytes)
bDescriptorType : 0x21 (HID Descriptor)
bcdHID : 0x0110 (HID Version 1.10)
bCountryCode : 0x00 (00 = not localized)
bNumDescriptors : 0x01
Data (HexDump) : 09 21 10 01 00 01 22 2D 00 .!...."-.
Descriptor 1:
bDescriptorType : 0x22 (Class=Report)
wDescriptorLength : 0x002D (45 bytes)
Error reading descriptor : ERROR_OPERATION_ABORTED (due to a obscure limitation of the Win32 USB API, see UsbTreeView.txt)

    ----------------- Endpoint Descriptor -----------------

bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x83 (Direction=IN EndpointID=3)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x01 (1 ms)
Data (HexDump) : 07 05 83 03 40 00 01 ....@..

    ---------------- Interface Descriptor -----------------

bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x03 (Interface 3)
bAlternateSetting : 0x00
bNumEndpoints : 0x01 (1 Endpoint)
bInterfaceClass : 0x03 (HID - Human Interface Device)
bInterfaceSubClass : 0x00 (None)
bInterfaceProtocol : 0x00 (None)
iInterface : 0x00 (No String Descriptor)
Data (HexDump) : 09 04 03 00 01 03 00 00 00 .........

    ------------------- HID Descriptor --------------------

bLength : 0x09 (9 bytes)
bDescriptorType : 0x21 (HID Descriptor)
bcdHID : 0x0110 (HID Version 1.10)
bCountryCode : 0x00 (00 = not localized)
bNumDescriptors : 0x01
Data (HexDump) : 09 21 10 01 00 01 22 39 00 .!...."9.
Descriptor 1:
bDescriptorType : 0x22 (Class=Report)
wDescriptorLength : 0x0039 (57 bytes)
Error reading descriptor : ERROR_OPERATION_ABORTED (due to a obscure limitation of the Win32 USB API, see UsbTreeView.txt)

    ----------------- Endpoint Descriptor -----------------

bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x84 (Direction=IN EndpointID=4)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0004 (4 bytes)
bInterval : 0x01 (1 ms)
Data (HexDump) : 07 05 84 03 04 00 01 .......

  -------------------- String Descriptors -------------------
         ------ String Descriptor 0 ------

bLength : 0x04 (4 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language ID[0] : 0x0409 (English - United States)
Data (HexDump) : 04 03 09 04 ....
------ String Descriptor 1 ------
bLength : 0x0C (12 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language 0x0409 : "Ducky"
Data (HexDump) : 0C 03 44 00 75 00 63 00 6B 00 79 00 ..D.u.c.k.y.
------ String Descriptor 2 ------
bLength : 0x28 (40 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language 0x0409 : "Ducky One2 Mini RGB"
Data (HexDump) : 28 03 44 00 75 00 63 00 6B 00 79 00 20 00 4F 00 (.D.u.c.k.y. .O.
6E 00 65 00 32 00 20 00 4D 00 69 00 6E 00 69 00 n.e.2. .M.i.n.i.
20 00 52 00 47 00 42 00 .R.G.B.
------ String Descriptor 3 ------
bLength : 0x20 (32 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language 0x0409 : "DK-V1.10-201231"
Data (HexDump) : 20 03 44 00 4B 00 2D 00 56 00 31 00 2E 00 31 00 .D.K.-.V.1...1.
30 00 2D 00 32 00 30 00 31 00 32 00 33 00 31 00 0.-.2.0.1.2.3.1.

@tmk
Copy link
Owner Author

tmk commented Dec 20, 2022

Thank you for the descriptor. They didn't fix the descriptor to mark a interface as boot device.
I fixed compatibility list on the thread.

I still have an idea on converter firmware fix to support this keyboard.
Let me know when you have time and willing to flash your converter to debug it.

@dinovo1
Copy link

dinovo1 commented Dec 21, 2022

Thanks for your reply.
At this point I am so dependent on my TMK converter that I don't want risk interrupting my workflow.
I would be interested in buying another one (as a backup) and then we can use that one to flash and debug (maybe you can already send it to me flashed with the changes you had in mind?). what do you think?

@tmk
Copy link
Owner Author

tmk commented Dec 21, 2022

I'm happy to flash improved firmware for testing when the converter is shipped, of course.
Please refer this URL when you place an order, so that I make sure to do that.

@dinovo1
Copy link

dinovo1 commented Dec 21, 2022

Just sent you a direct email with a request for a paypal invoice.
Thanks!

@tmk
Copy link
Owner Author

tmk commented Jan 19, 2023

The keyboard doesn't support SET_PROTOCOL request, which ends with STALL.
After the STALL the keybaord stop working for no reason.

Waiting for device:
Listening:
Device disconnected.
Waiting for new device:.......
Listening:
_state: 20
usb_state: 40
usb_state: 50
usb_state: 51
Ci read:0012
left:0000
vid:3233
pid:6301
klass:00
subklass:00
AC1
AC2
A2 driver:00
BM Init
Ci read:0008
left:0000
Addr:01
Ci read:0012
left:0000
NC:01
bootIf[]:00
HID_PROTOCOL_KEYBOARD
[gC]Ci read:0009
left:0000
Cl:006D
Ci ConfVal: 01
Iface: 00
    Class: 03
    SubClass: 00
    Protocol: 01
Iface: 01
    Class: 03
    SubClass: 00
    Protocol: 02
read:0040
left:002D
Iface: 02
    Class: 03
    SubClass: 00
    Protocol: 01
Iface: 03
    Class: 03
    SubClass: 00
    Protocol: 00
read:002D
left:0000
[gC]Ci read:0009
left:0000
Cl:006D
Ci ConfVal: 01
Iface: 00
    Class: 03
    SubClass: 00
    Protocol: 01
[xE1]hidboot:EndpointXtract:iface: 00
hidboot:EndpointXtract:bNumEP: 01
[xE++] Iface: 01
    Class: 03
    SubClass: 00
    Protocol: 02
read:0040
left:002D
Iface: 02
    Class: 03
    SubClass: 00
    Protocol: 01
[xE1]hidboot:EndpointXtract:iface: 02
Iface: 03
    Class: 03
    SubClass: 00
    Protocol: 00
read:002D
left:0000
bNumEP:02
Cnf:01
bootIf[]:00
bIfaceNum:00
bNumIface:00
Interface:00
crST:05
SET_PROTOCOL: 05
SET_IDLE: 00
Ci read:0040
left:0040
read:0000
left:0040
RPIPE: 00
BM configured
Init:00
AttemptConfig2:00
Configuring:00
host.Task: 2340
usb_state: 90
speed: full
Co 

tmk added a commit to tmk/USB_Host_Shield_2.0 that referenced this issue Feb 1, 2023
The keyboard has no boot keybaord interface and SET_PROTOCOL
fails with STALL. Use non-boot interface if there is no boot one.
Skip SET_PROTOCOL for non-boot keyboard.
tmk/tmk_keyboard#697
tmk added a commit that referenced this issue Feb 1, 2023
@tmk
Copy link
Owner Author

tmk commented Feb 1, 2023

Fixed at tmk/USB_Host_Shield_2.0@204bc5d and available on repo and keymap editor now.

Waiting for device:.........
Listening:
_state: 12
Device disconnected.
Waiting for new device:.
Listening:
TMK:8fd2ba/LUFA:d6a7df/UHS2:069220
USB configured.
Loop start.
usb_state: 20
usb_state: 40
usb_state: 50
usb_state: 51
Ci read:0012
left:0000
vid:3233
pid:6301
klass:00
subklass:00
AC1
AC2
A2 driver:00
BM Init
Ci read:0008
left:0000
Addr:01
Ci read:0012
left:0000
NC:01
bootIf[]:00
HID_PROTOCOL_KEYBOARD
[gC]Ci read:0009
left:0000
Cl:006D
Ci ConfVal: 01
    Iface: 00
        Class: 03
        SubClass: 00
        Protocol: 01
    Iface: 01
        Class: 03
        SubClass: 00
        Protocol: 02
read:0040
left:002D
    Iface: 02
        Class: 03
        SubClass: 00
        Protocol: 01
    Iface: 03
        Class: 03
        SubClass: 00
        Protocol: 00
read:002D
left:0000
[gC]Ci read:0009
left:0000
Cl:006D
Ci ConfVal: 01
    Iface: 00
        Class: 03
        SubClass: 00
        Protocol: 01
[xE1]hidboot:EndpointXtract:iface: 00
hidboot:EndpointXtract:bNumEP: 01
[xE++]  Iface: 01
        Class: 03
        SubClass: 00
        Protocol: 02
read:0040
left:002D
    Iface: 02
        Class: 03
        SubClass: 00
        Protocol: 01
[xE1]hidboot:EndpointXtract:iface: 02
    Iface: 03
        Class: 03
        SubClass: 00
        Protocol: 00
read:002D
left:0000
bNumEP:02
Cnf:01
bootIf[]:00
bIfaceNum:00
bNumIface:00
Interface:00
skip SET_PROTOCOLSET_IDLE: 00
Ci read:0040
left:0040
read:0000
left:0040
RPIPE: 00
BM configured
Init:00
AttemptConfig2:00
Configuring:00
host.Task: 2342
usb_state: 90
speed: full
Co input 1: 00 00 07 00 00 00 00 00
00 00 07 00 00 00 00 00 
dinput 1: 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 
input 1: 00 00 16 00 00 00 00 00
00 00 16 00 00 00 00 00 
sinput 1: 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 
input 1: 00 00 04 00 00 00 00 00
00 00 04 00 00 00 00 00 
ainput 1: 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 
usb_state: 12
usb_state: 20
usb_state: 40
usb_state: 50
usb_state: 51
Ci read:0012
left:0000
vid:3233
pid:6301
klass:00
subklass:00
AC1
AC2
A2 driver:00
BM Init
Ci read:0008
left:0000
Addr:01
Ci read:0012
left:0000
NC:01
bootIf[]:00
HID_PROTOCOL_KEYBOARD
[gC]Ci read:0009
left:0000
Cl:006D
Ci ConfVal: 01
    Iface: 00
        Class: 03
        SubClass: 00
        Protocol: 01
    Iface: 01
        Class: 03
        SubClass: 00
        Protocol: 02
read:0040
left:002D
    Iface: 02
        Class: 03
        SubClass: 00
        Protocol: 01
    Iface: 03
        Class: 03
        SubClass: 00
        Protocol: 00
read:002D
left:0000
[gC]Ci read:0009
left:0000
Cl:006D
Ci ConfVal: 01
    Iface: 00
        Class: 03
        SubClass: 00
        Protocol: 01
[xE1]hidboot:EndpointXtract:iface: 00
hidboot:EndpointXtract:bNumEP: 01
[xE++]  Iface: 01
        Class: 03
        SubClass: 00
        Protocol: 02
read:0040
left:002D
    Iface: 02
        Class: 03
        SubClass: 00
        Protocol: 01
[xE1]hidboot:EndpointXtract:iface: 02
    Iface: 03
        Class: 03
        SubClass: 00
        Protocol: 00
read:002D
left:0000
bNumEP:02
Cnf:01
bootIf[]:00
bIfaceNum:00
bNumIface:00
Interface:00
skip SET_PROTOCOLSET_IDLE: 00
Ci read:0040
left:0040
read:0000
left:0040
RPIPE: 00
BM configured
Init:00
AttemptConfig2:00
Configuring:00
host.Task: 2340
usb_state: 90
speed: full
Co input 1: 00 00 04 00 00 00 00 00
00 00 04 00 00 00 00 00 
ainput 1: 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 
input 1: 00 00 05 00 00 00 00 00
00 00 05 00 00 00 00 00 
binput 1: 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 
input 1: 00 00 06 00 00 00 00 00
00 00 06 00 00 00 00 00 
cinput 1: 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 
usb_state: 12
usb_state: 20
usb_state: 40
usb_state: 50
usb_state: 51
Ci read:0012
left:0000
vid:3233
pid:6301
klass:00
subklass:00
AC1
AC2
A2 driver:00
BM Init
Ci read:0008
left:0000
Addr:01
Ci read:0012
left:0000
NC:01
bootIf[]:00
HID_PROTOCOL_KEYBOARD
[gC]Ci read:0009
left:0000
Cl:006D
Ci ConfVal: 01
    Iface: 00
        Class: 03
        SubClass: 00
        Protocol: 01
    Iface: 01
        Class: 03
        SubClass: 00
        Protocol: 02
read:0040
left:002D
    Iface: 02
        Class: 03
        SubClass: 00
        Protocol: 01
    Iface: 03
        Class: 03
        SubClass: 00
        Protocol: 00
read:002D
left:0000
[gC]Ci read:0009
left:0000
Cl:006D
Ci ConfVal: 01
    Iface: 00
        Class: 03
        SubClass: 00
        Protocol: 01
[xE1]hidboot:EndpointXtract:iface: 00
hidboot:EndpointXtract:bNumEP: 01
[xE++]  Iface: 01
        Class: 03
        SubClass: 00
        Protocol: 02
read:0040
left:002D
    Iface: 02
        Class: 03
        SubClass: 00
        Protocol: 01
[xE1]hidboot:EndpointXtract:iface: 02
    Iface: 03
        Class: 03
        SubClass: 00
        Protocol: 00
read:002D
left:0000
bNumEP:02
Cnf:01
bootIf[]:00
bIfaceNum:00
bNumIface:00
Interface:00
skip SET_PROTOCOLSET_IDLE: 00
Ci read:0040
left:0040
read:0000
left:0040
RPIPE: 00
BM configured
Init:00
AttemptConfig2:00
Configuring:00
host.Task: 2339
usb_state: 90
speed: full
Co input 1: 00 00 14 00 00 00 00 00
00 00 14 00 00 00 00 00 
qinput 1: 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 
input 1: 00 00 1A 00 00 00 00 00
00 00 1A 00 00 00 00 00 
winput 1: 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 
input 1: 00 00 08 00 00 00 00 00
00 00 08 00 00 00 00 00 
einput 1: 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 
input 1: 00 00 15 00 00 00 00 00
00 00 15 00 00 00 00 00 
rinput 1: 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 
input 1: 00 00 17 00 00 00 00 00
00 00 17 00 00 00 00 00 
tinput 1: 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 
input 1: 00 00 1C 00 00 00 00 00
00 00 1C 00 00 00 00 00 
yinput 1: 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 
usb_state: 12

@tmk tmk closed this as completed Feb 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants