Skip to content

Instantly share code, notes, and snippets.

@tmk

tmk/MKFission.md Secret

Last active December 29, 2020 05:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tmk/d36d4068ee57f26b27b4f25993ff5e08 to your computer and use it in GitHub Desktop.
Save tmk/d36d4068ee57f26b27b4f25993ff5e08 to your computer and use it in GitHub Desktop.
MK Fission: USB Descriptors

Problem with TMK USB-USB converter was reported with email on 2020-02-02.

It's working fine on a Logitech K120 but I'm having issues with an MK Fission. None of my keystrokes are being registered when it is plugged into the converter.

https://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=3538

USB-USB coonverter recognizes but doesn't resister any key input.
----
Waiting for device:
Listening:
usb_state: 20
usb_state: 40
usb_state: 50
usb_state: 51
host.Task: 2334
usb_state: 90
speed: full
----


=========================== USB Port4 ===========================

Connection Status        : 0x01 (Device is connected)
Port Chain               : 4-4
Properties               : 0x01
 IsUserConnectable       : yes
 PortIsDebugCapable      : no
 PortHasMultiCompanions  : no
 PortConnectorIsTypeC    : no
ConnectionIndex          : 4
CompanionIndex           : 0
 CompanionHubSymLnk      : USB#VID_040E&PID_0100&ASMEDIAUSBD_Hub#5&19eb8386&0&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}
 CompanionPortNumber     : 2

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

        +++++++++++++++++ Device Information ++++++++++++++++++
Device Description       : USB Composite Device
Device Path              : \\?\usb#vid_04b4&pid_0823#6&3884a178&0&4#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
Device ID                : USB\VID_04B4&PID_0823\6&3884A178&0&4
Hardware IDs             : USB\VID_04B4&PID_0823&REV_0101 USB\VID_04B4&PID_0823
Driver KeyName           : {36fc9e60-c465-11cf-8056-444553540000}\0049 (GUID_DEVCLASS_USB)
Driver                   : \SystemRoot\System32\drivers\usbccgp.sys (Version: 10.0.18362.1  Date: 2019-03-19)
Driver Inf               : C:\Windows\inf\usb.inf
Legacy BusType           : PNPBus
Class                    : USB
Class GUID               : {36fc9e60-c465-11cf-8056-444553540000} (GUID_DEVCLASS_USB)
Interface GUID           : {a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE)
Service                  : usbccgp
Enumerator               : USB
Location Info            : Port_#0004.Hub_#0001
Location IDs             : PCIROOT(0)#PCI(0100)#PCI(0000)#PCI(0000)#PCI(0000), ACPI(_SB_)#ACPI(PCI0)#ACPI(BR1A)#ACPI(H000)#ACPI(H000)#ACPI(H000)
Container ID             : {52a6702c-44a1-11ea-9a78-40e230988546}
Manufacturer Info        : (Standard USB Host Controller)
Capabilities             : 0x84 (Removable, SurpriseRemovalOK)
Status                   : 0x0180600A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER)
Problem Code             : 0
Address                  : 2   (*!*ERROR  Should be equal to the port number)
Power State              : D0 (supported: D0, D2, D3, wake from D0, wake from D2)
 Child Device 1          : USB Input Device
  Device ID              : USB\VID_04B4&PID_0823&MI_00\7&24EB5FF7&0&0000
  Class                  : HIDClass
   Child Device 1        : HID Keyboard Device
    DevicePath           : \\?\hid#vid_04b4&pid_0823&mi_00#8&34408252&0&0000#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}
    KernelName           : \Device\000000a2
    Device ID            : HID\VID_04B4&PID_0823&MI_00\8&34408252&0&0000
    Class                : Keyboard
 Child Device 2          : USB Input Device
  Device ID              : USB\VID_04B4&PID_0823&MI_01\7&24EB5FF7&0&0001
  Class                  : HIDClass
   Child Device 1        : HID-compliant system controller
    DevicePath           : \\?\hid#vid_04b4&pid_0823&mi_01&col02#8&1c7cf60d&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
    KernelName           : \Device\000000a4
    Device ID            : HID\VID_04B4&PID_0823&MI_01&COL02\8&1C7CF60D&0&0001
    Class                : HIDClass
   Child Device 2        : HID-compliant consumer control device
    DevicePath           : \\?\hid#vid_04b4&pid_0823&mi_01&col03#8&1c7cf60d&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
    KernelName           : \Device\000000a5
    Device ID            : HID\VID_04B4&PID_0823&MI_01&COL03\8&1C7CF60D&0&0002
    Class                : HIDClass
   Child Device 3        : HID-compliant vendor-defined device
    DevicePath           : \\?\hid#vid_04b4&pid_0823&mi_01&col04#8&1c7cf60d&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
    KernelName           : \Device\000000a6
    Device ID            : HID\VID_04B4&PID_0823&MI_01&COL04\8&1C7CF60D&0&0003
    Class                : HIDClass
   Child Device 4        : HID Keyboard Device
    DevicePath           : \\?\hid#vid_04b4&pid_0823&mi_01&col05#8&1c7cf60d&0&0004#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}
    KernelName           : \Device\000000a7
    Device ID            : HID\VID_04B4&PID_0823&MI_01&COL05\8&1C7CF60D&0&0004
    Class                : Keyboard
   Child Device 5        : HID-compliant mouse
    DevicePath           : \\?\hid#vid_04b4&pid_0823&mi_01&col01#8&1c7cf60d&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
    KernelName           : \Device\000000a3
    Device ID            : HID\VID_04B4&PID_0823&MI_01&COL01\8&1C7CF60D&0&0000
    Class                : Mouse

        +++++++++++++++++ Registry USB Flags +++++++++++++++++
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\04B408230101
 osvc                    : REG_BINARY 00 00

        ---------------- Connection Information ---------------
Connection Index         : 0x04 (4)
Connection Status        : 0x01 (DeviceConnected)
Current Config Value     : 0x01
Device Address           : 0x02 (2)
Is Hub                   : 0x00 (no)
Device Bus Speed         : 0x01 (Full-Speed)
Number Of Open Pipes     : 0x03 (3 pipes to data endpoints)
Pipe[0]                  : EndpointID=1  Direction=IN   ScheduleOffset=0  Type=Interrupt
Pipe[1]                  : EndpointID=2  Direction=IN   ScheduleOffset=0  Type=Interrupt
Pipe[2]                  : EndpointID=3  Direction=OUT  ScheduleOffset=0  Type=Interrupt
Data (HexDump)           : 04 00 00 00 12 01 00 02 00 00 00 08 B4 04 23 08   ..............#.
                           01 01 00 00 00 01 01 01 00 02 00 03 00 00 00 01   ................
                           00 00 00 07 05 81 03 08 00 01 00 00 00 00 07 05   ................
                           82 03 40 00 01 00 00 00 00 07 05 03 03 40 00 01   ..@..........@..
                           00 00 00 00                                       ....

        --------------- Connection Information V2 -------------
Connection Index         : 0x04 (4)
Length                   : 0x10 (16 bytes)
SupportedUsbProtocols    : 0x03
 Usb110                  : 1 (yes)
 Usb200                  : 1 (yes)
 Usb300                  : 0 (no)
 ReservedMBZ             : 0x00
Flags                    : 0x00
 DevIsOpAtSsOrHigher     : 0 (Is not operating at SuperSpeed or higher)
 DevIsSsCapOrHigher      : 0 (Is not SuperSpeed capable or higher)
 DevIsOpAtSsPlusOrHigher : 0 (Is not operating at SuperSpeedPlus or higher)
 DevIsSsPlusCapOrHigher  : 0 (Is not SuperSpeedPlus capable or higher)
 ReservedMBZ             : 0x00
Data (HexDump)           : 04 00 00 00 10 00 00 00 03 00 00 00 00 00 00 00   ................

    ---------------------- Device Descriptor ----------------------
bLength                  : 0x12 (18 bytes)
bDescriptorType          : 0x01 (Device Descriptor)
bcdUSB                   : 0x200 (USB Version 2.00)
bDeviceClass             : 0x00 (defined by the interface descriptors)
bDeviceSubClass          : 0x00
bDeviceProtocol          : 0x00
bMaxPacketSize0          : 0x08 (8 bytes)
idVendor                 : 0x04B4 (Cypress Semiconductor)
idProduct                : 0x0823
bcdDevice                : 0x0101
iManufacturer            : 0x00 (No String Descriptor)
iProduct                 : 0x00 (No String Descriptor)
iSerialNumber            : 0x00 (No String Descriptor)
bNumConfigurations       : 0x01 (1 Configuration)
Data (HexDump)           : 12 01 00 02 00 00 00 08 B4 04 23 08 01 01 00 00   ..........#.....
                           00 01                                             ..

    ------------------ Configuration Descriptor -------------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x02 (Configuration Descriptor)
wTotalLength             : 0x0042 (66 bytes)
bNumInterfaces           : 0x02 (2 Interfaces)
bConfigurationValue      : 0x01 (Configuration 1)
iConfiguration           : 0x02 (String Descriptor 2)
 Language 0x0409         : "Game_Keyboard"
bmAttributes             : 0xA0
 D7: Reserved, set 1     : 0x01
 D6: Self Powered        : 0x00 (no)
 D5: Remote Wakeup       : 0x01 (yes)
 D4..0: Reserved, set 0  : 0x00
MaxPower                 : 0x32 (100 mA)
Data (HexDump)           : 09 02 42 00 02 01 02 A0 32 09 04 00 00 01 03 01   ..B.....2.......
                           01 02 09 21 11 01 00 01 22 3F 00 07 05 81 03 08   ...!...."?......
                           00 01 09 04 01 00 02 03 01 02 04 09 21 11 01 00   ............!...
                           01 22 B0 00 07 05 82 03 40 00 01 07 05 03 03 40   ."......@......@
                           00 01                                             ..

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

        ------------------- HID Descriptor --------------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x21 (HID Descriptor)
bcdHID                   : 0x0111 (HID Version 1.11)
bCountryCode             : 0x00 (00 = not localized)
bNumDescriptors          : 0x01
Data (HexDump)           : 09 21 11 01 00 01 22 3F 00                        .!...."?.
Descriptor 1:
bDescriptorType          : 0x22 (Class=Report)
wDescriptorLength        : 0x003F (63 bytes)
Error reading descriptor : ERROR_CRC

        ----------------- 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
bAlternateSetting        : 0x00
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x03 (HID - Human Interface Device)
bInterfaceSubClass       : 0x01 (Boot Interface)
bInterfaceProtocol       : 0x02 (Mouse)
iInterface               : 0x04 (String Descriptor 4)
 Language 0x0409         : "Function_Device"
Data (HexDump)           : 09 04 01 00 02 03 01 02 04                        .........

        ------------------- HID Descriptor --------------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x21 (HID Descriptor)
bcdHID                   : 0x0111 (HID Version 1.11)
bCountryCode             : 0x00 (00 = not localized)
bNumDescriptors          : 0x01
Data (HexDump)           : 09 21 11 01 00 01 22 B0 00                        .!...."..
Descriptor 1:
bDescriptorType          : 0x22 (Class=Report)
wDescriptorLength        : 0x00B0 (176 bytes)
Error reading descriptor : ERROR_CRC

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

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

    ----------------- Device Qualifier Descriptor -----------------
Error                    : ERROR_CRC

      -------------------- 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 2 ------
bLength                  : 0x1C (28 bytes)
bDescriptorType          : 0x03 (String Descriptor)
Language 0x0409          : "Game_Keyboard"
Data (HexDump)           : 1C 03 47 00 61 00 6D 00 65 00 5F 00 4B 00 65 00   ..G.a.m.e._.K.e.
                           79 00 62 00 6F 00 61 00 72 00 64 00               y.b.o.a.r.d.
             ------ String Descriptor 4 ------
bLength                  : 0x20 (32 bytes)
bDescriptorType          : 0x03 (String Descriptor)
Language 0x0409          : "Function_Device"
Data (HexDump)           : 20 03 46 00 75 00 6E 00 63 00 74 00 69 00 6F 00    .F.u.n.c.t.i.o.
                           6E 00 5F 00 44 00 65 00 76 00 69 00 63 00 65 00   n._.D.e.v.i.c.e.
@tmk
Copy link
Author

tmk commented Dec 28, 2020

Output of lsusb;

Bus 002 Device 011: ID 04b4:0823 Cypress Semiconductor Corp.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x04b4 Cypress Semiconductor Corp.
  idProduct          0x0823
  bcdDevice            1.01
  iManufacturer           0
  iProduct                0
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0042
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          2 Game_Keyboard
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              100mA
    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              2 Game_Keyboard
        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     0x0008  1x 8 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              4 Function_Device
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     176
         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
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1

hid_listen:

aiting for device:
Listening:
usb_state: 20
usb_state: 40
usb_state: 50
usb_state: 51
host.Task: 2334
usb_state: 90
speed: full

@tmk
Copy link
Author

tmk commented Dec 29, 2020

Confirmed that this problem was fixed at:
tmk/tmk_keyboard@2b74203

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment