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

K-Type enters flashing mode when using Ultimaker Cura #379

Closed
gabfv opened this issue Dec 20, 2019 · 5 comments
Closed

K-Type enters flashing mode when using Ultimaker Cura #379

gabfv opened this issue Dec 20, 2019 · 5 comments

Comments

@gabfv
Copy link

gabfv commented Dec 20, 2019

  • Device:
    K-Type (Massdrop November 2017)

  • Firmware Origin:
    Web configurator

  • OS:
    Windows 10 Pro

  • Version:

Information for device Keyboard - K-Type PixelMap USB (VID=0x308F PID=0x0011):

Connection Information:

Device current bus speed: FullSpeed
Device supports USB 1.1 specification
Device supports USB 2.0 specification
Device address: 0x0004
Current configuration value: 0x00
Number of open pipes: 0

Device Descriptor:

0x12 bLength
0x01 bDescriptorType
0x0200 bcdUSB
0x00 bDeviceClass
0x00 bDeviceSubClass
0x00 bDeviceProtocol
0x40 bMaxPacketSize0 (64 bytes)
0x308F idVendor
0x0011 idProduct
0x048B bcdDevice
0x01 iManufacturer
0x02 iProduct
0x03 iSerialNumber
0x01 bNumConfigurations

Configuration Descriptor:

0x09 bLength
0x02 bDescriptorType
0x00CF wTotalLength (207 bytes)
0x07 bNumInterfaces
0x01 bConfigurationValue
0x04 iConfiguration
0xA0 bmAttributes (Bus-powered Device, Remote-Wakeup)
0xFA bMaxPower (500 mA)

Interface Descriptor:

0x09 bLength
0x04 bDescriptorType
0x00 bInterfaceNumber
0x00 bAlternateSetting
0x01 bNumEndPoints
0x03 bInterfaceClass (Human Interface Device Class)
0x01 bInterfaceSubClass
0x01 bInterfaceProtocol
0x05 iInterface

HID Descriptor:

0x09 bLength
0x21 bDescriptorType
0x0111 bcdHID
0x00 bCountryCode
0x01 bNumDescriptors
0x22 bDescriptorType (Report descriptor)
0x0044 bDescriptorLength

Endpoint Descriptor:

0x07 bLength
0x05 bDescriptorType
0x81 bEndpointAddress (IN endpoint 1)
0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data)
0x0008 wMaxPacketSize (1 x 8 bytes)
0x01 bInterval (1 frames)

Interface Descriptor:

0x09 bLength
0x04 bDescriptorType
0x01 bInterfaceNumber
0x00 bAlternateSetting
0x01 bNumEndPoints
0x03 bInterfaceClass (Human Interface Device Class)
0x00 bInterfaceSubClass
0x01 bInterfaceProtocol
0x06 iInterface

HID Descriptor:

0x09 bLength
0x21 bDescriptorType
0x0111 bcdHID
0x00 bCountryCode
0x01 bNumDescriptors
0x22 bDescriptorType (Report descriptor)
0x005F bDescriptorLength

Endpoint Descriptor:

0x07 bLength
0x05 bDescriptorType
0x82 bEndpointAddress (IN endpoint 2)
0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data)
0x0040 wMaxPacketSize (1 x 64 bytes)
0x01 bInterval (1 frames)

Interface Descriptor:

0x09 bLength
0x04 bDescriptorType
0x02 bInterfaceNumber
0x00 bAlternateSetting
0x01 bNumEndPoints
0x03 bInterfaceClass (Human Interface Device Class)
0x00 bInterfaceSubClass
0x00 bInterfaceProtocol
0x07 iInterface

HID Descriptor:

0x09 bLength
0x21 bDescriptorType
0x0111 bcdHID
0x00 bCountryCode
0x01 bNumDescriptors
0x22 bDescriptorType (Report descriptor)
0x0027 bDescriptorLength

Endpoint Descriptor:

0x07 bLength
0x05 bDescriptorType
0x83 bEndpointAddress (IN endpoint 3)
0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data)
0x0008 wMaxPacketSize (1 x 8 bytes)
0x01 bInterval (1 frames)

Interface Association Descriptor:

0x08 bLength
0x0B bDescriptorType
0x03 bFirstInterface
0x02 bInterfaceCount
0x02 bFunctionClass (Communication Device Class)
0x02 bFunctionSubClass (Abstract Control Model - ACM)
0x01 bFunctionProtocol (ITU-T V.250)
0x00 iFunction

Interface Descriptor:

0x09 bLength
0x04 bDescriptorType
0x03 bInterfaceNumber
0x00 bAlternateSetting
0x01 bNumEndPoints
0x02 bInterfaceClass (Communication Device Class)
0x02 bInterfaceSubClass (Abstract Control Model - ACM)
0x01 bInterfaceProtocol (ITU-T V.250)
0x08 iInterface

CDC Header Functional Descriptor:

0x05 bFunctionalLength
0x24 bDescriptorType
0x00 bDescriptorSubtype
0x0110 bcdCDC

CDC Call Management Functional Descriptor:

0x05 bFunctionalLength
0x24 bDescriptorType
0x01 bDescriptorSubtype
0x01 bmCapabilities
0x04 bDataInterface

CDC Abstract Control Management Functional Descriptor:

0x04 bFunctionalLength
0x24 bDescriptorType
0x02 bDescriptorSubtype
0x06 bmCapabilities

CDC Union Functional Descriptor:

0x05 bFunctionalLength
0x24 bDescriptorType
0x06 bDescriptorSubtype
0x03 bControlInterface
0x04 bSubordinateInterface(0)

Endpoint Descriptor:

0x07 bLength
0x05 bDescriptorType
0x84 bEndpointAddress (IN endpoint 4)
0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data)
0x0010 wMaxPacketSize (1 x 16 bytes)
0x40 bInterval (64 frames)

Interface Descriptor:

0x09 bLength
0x04 bDescriptorType
0x04 bInterfaceNumber
0x00 bAlternateSetting
0x02 bNumEndPoints
0x0A bInterfaceClass (CDC Data)
0x00 bInterfaceSubClass
0x00 bInterfaceProtocol
0x09 iInterface

Endpoint Descriptor:

0x07 bLength
0x05 bDescriptorType
0x05 bEndpointAddress (OUT endpoint 5)
0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data)
0x0040 wMaxPacketSize (64 bytes)
0x00 bInterval

Endpoint Descriptor:

0x07 bLength
0x05 bDescriptorType
0x86 bEndpointAddress (IN endpoint 6)
0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data)
0x0040 wMaxPacketSize (64 bytes)
0x00 bInterval

Interface Descriptor:

0x09 bLength
0x04 bDescriptorType
0x05 bInterfaceNumber
0x00 bAlternateSetting
0x01 bNumEndPoints
0x03 bInterfaceClass (Human Interface Device Class)
0x00 bInterfaceSubClass
0x02 bInterfaceProtocol
0x0A iInterface

HID Descriptor:

0x09 bLength
0x21 bDescriptorType
0x0111 bcdHID
0x00 bCountryCode
0x01 bNumDescriptors
0x22 bDescriptorType (Report descriptor)
0x006D bDescriptorLength

Endpoint Descriptor:

0x07 bLength
0x05 bDescriptorType
0x87 bEndpointAddress (IN endpoint 7)
0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data)
0x0008 wMaxPacketSize (1 x 8 bytes)
0x01 bInterval (1 frames)

Interface Descriptor:

0x09 bLength
0x04 bDescriptorType
0x06 bInterfaceNumber
0x00 bAlternateSetting
0x02 bNumEndPoints
0x03 bInterfaceClass (Human Interface Device Class)
0x00 bInterfaceSubClass
0x00 bInterfaceProtocol
0x0B iInterface

HID Descriptor:

0x09 bLength
0x21 bDescriptorType
0x0111 bcdHID
0x00 bCountryCode
0x01 bNumDescriptors
0x22 bDescriptorType (Report descriptor)
0x001C bDescriptorLength

Endpoint Descriptor:

0x07 bLength
0x05 bDescriptorType
0x89 bEndpointAddress (IN endpoint 9)
0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data)
0x0040 wMaxPacketSize (1 x 64 bytes)
0x01 bInterval (1 frames)

Endpoint Descriptor:

0x07 bLength
0x05 bDescriptorType
0x08 bEndpointAddress (OUT endpoint 8)
0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data)
0x0040 wMaxPacketSize (1 x 64 bytes)
0x01 bInterval (1 frames)

Microsoft OS Descriptor is not available. Error code: 0x0000001F

String Descriptor Table

Index LANGID String
0x00 0x0000
0x01 0x0000 "Input Club"
0x02 0x0000 "Keyboard - K-Type PixelMap USB"
0x03 0x0000 "95110000B23500060026401937494E45 - mk20dx256"
0x04 0x0000 "xXXx"
0x05 0x0000 "Boot Keyboard"
0x06 0x0000 "NKRO Keyboard"
0x07 0x0000 "Media Keys"
0x08 0x0000 "Virtual Serial Port - Status"
0x09 0x0000 "Virtual Serial Port - Data"
0x0A 0x0000 "Mouse"
0x0B 0x0000 "RawIO API Interface"


Connection path for device:
USB xHCI Compliant Host Controller
Root Hub
Keyboard - K-Type PixelMap USB (VID=0x308F PID=0x0011) Port: 6

Running on: Windows 10 or greater (Build Version 18362)

Brought to you by TDD v2.12.0, Aug 2 2019, 16:35:05

  • Reproduction Steps:
  1. Install Ultimaker Cura (I am using version 4.4.0).
  2. Launch Ultimaker Cura.
  3. After a short period of time, the keyboard enters flashing mode. Pressing ESC on the keyboard does bring it out of the flashing mode, but eventually, it re-enters flashing mode.
  • Resulting Issue:
    The keyboard is in flashing mode. Pressing ESC on the keyboard does bring it out of flashing mode, but eventually, it re-enters flashing mode shortly after.
@gabfv
Copy link
Author

gabfv commented Dec 20, 2019

I've created an issue with Cura as well, since I did not know whether the issue resides in my keyboard or in Cura.

@haata
Copy link
Member

haata commented Dec 20, 2019

Yeah, the K-Type has a bunch of USB endpoints. Most likely an unexpected USB request is being sent over one of the reserved endpoints which is crashing the keyboard. In some cases the K-Type will reset to flash mode when the firmware crashes. I believe later firmware generally resolves this, but possibly not for all situations.
If you can find out which endpoints are being used by Cura, then I can give more insight and possibly suggest a solution.

@gabfv
Copy link
Author

gabfv commented Dec 21, 2019

Seems like it just probes all serial ports automatically. I've disabled the plugin so this fix the issue I've encountered.

@Ghostkeeper
Copy link

Ghostkeeper commented Dec 23, 2019

Cura has an open feature request regarding this: Ultimaker/Cura#3449

The bug lies in Cura as far as I'm concerned. Cura will probe all serial ports using a command "M105". If the device responds with a valid temperature response like Marlin does, then it'll add a USB printing output device and allow printing via USB. That's not really nice behaviour from Cura.

@gabfv
Copy link
Author

gabfv commented Dec 23, 2019

Thanks, I'll close this issue since it lies in Cura.

@gabfv gabfv closed this as completed Dec 23, 2019
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

3 participants