The USB HOST support in Teensyduino 3.6 has been fantastic, testing has gone well with a few MIDI devices and keyboards so far.
I picked up a new USB 48-key Mechanical Keyboard (https://www.amazon.com/Koolertron-Single-Handed-Programmable-Mechanical-Keyboard/dp/B076LRJ528), it's connecting but fails after the first Key Press with ERROR Followup no matter which initial key is pressed.
Teensyduino 3.6 (180 Mhz)/Loader 1.45
Arduino 1.88
USBHost_t36/blob/master/examples/Test/Test.ino
I've enabled USBHOST_PRINT_DEBUG in USBHost_t36.h and captured connecting, keypress and disconnect. I'm hoping the log picks what the problem could be, happy to make any code changes to get this keyboard working.
I picked up a new USB 48-key Mechanical Keyboard (https://www.amazon.com/Koolertron-Single-Handed-Programmable-Mechanical-Keyboard/dp/B076LRJ528), it's connecting but fails after the first Key Press with ERROR Followup no matter which initial key is pressed.
Teensyduino 3.6 (180 Mhz)/Loader 1.45
Arduino 1.88
USBHost_t36/blob/master/examples/Test/Test.ino
I've enabled USBHOST_PRINT_DEBUG in USBHost_t36.h and captured connecting, keypress and disconnect. I'm hoping the log picks what the problem could be, happy to make any code changes to get this keyboard working.
Code:
USB Host Testing
sizeof Device = 36
sizeof Pipe = 96
sizeof Transfer = 64
power up USBHS PHY
port change: 10001803
connect
begin reset
port change: 10001805
port enabled
end recovery
new_Device: 12 Mbit/sec
new_Pipe
enumeration:
enumeration:
enumeration:
Device Descriptor:
12 01 00 02 00 00 00 08 B4 04 18 08 10 60 01 02 03 01
VendorID = 04B4, ProductID = 0818, Version = 6010
Class/Subclass/Protocol = 0 / 0 / 0
Number of Configurations = 1
enumeration:
enumeration:
Manufacturer: LingYao ShangHai
enumeration:
Product: Thumb Keyboard
enumeration:
Serial Number: 000000000000
enumeration:
Config data length = 59
enumeration:
Configuration Descriptor:
09 02 3B 00 02 01 00 80 32
NumInterfaces = 2
ConfigurationValue = 1
09 04 00 00 01 03 01 01 04
Interface = 0
Number of endpoints = 1
Class/Subclass/Protocol = 3(HID) / 1(Boot) / 1(Keyboard)
09 21 11 01 21 01 22 3F 00
HID, 1 report descriptor
07 05 81 03 12 00 0A
Endpoint = 1 IN
Type = Interrupt
Max Size = 18
Polling Interval = 10
09 04 01 00 01 03 01 02 05
Interface = 1
Number of endpoints = 1
Class/Subclass/Protocol = 3(HID) / 1(Boot) / 2(Mouse)
09 21 11 01 21 01 22 32 00
HID, 1 report descriptor
07 05 82 03 08 00 02
Endpoint = 2 IN
Type = Interrupt
Max Size = 8
Polling Interval = 2
enumeration:
USBHub memory usage = 960
USBHub claim_device this=1FFF8700
KeyboardController claim this=1FFFA540
KeyboardController claim this=1FFFA7C0
KeyboardController claim this=1FFFAA40
Descriptor 4 = INTERFACE
KeyboardController claim this=1FFFA540
ep = 81
packet size = 18
polling interval = 10
new_Pipe
allocate_interrupt_pipe_bandwidth
best_bandwidth = 3, at offset = 0, shift= 0
Descriptor 33 = HID
Descriptor 5 = ENDPOINT
Descriptor 4 = INTERFACE
KeyboardController claim this=1FFFA7C0
KeyboardController claim this=1FFFAA40
MIDIDevice claim this=1FFF94C0
len = 25
Descriptor 33 = HID
Descriptor 5 = ENDPOINT
control callback (keyboard)
mesg = B21
KeyboardController Callback (member)
KB Data: 00 00 00 5C 00 00 00 00
press, key=92
unicode = 216
key '⸮' 216
key ⸮
ERROR Followup
port change: 1C00100A
disconnect
disconnect_Device:
USBDriver (available_drivers) list: 1FFF8700 -> 1FFFA7C0 -> 1FFFAA40 -> 1FFF94C0
USBDriver (dev->drivers) list: 1FFFA540
disconnect driver 1FFFA540
USBDriver (available_drivers) list: 1FFFA540 -> 1FFF8700 -> 1FFFA7C0 -> 1FFFAA40 -> 1FFF94C0
delete_Pipe 1FFF9920
Free transfers
* 536855680 * remove * defer free until QH
Free transfers attached to QH
* 536855680
* 536844992
* Delete Pipe completed
delete_Pipe 1FFFC400
shut down async schedule
Free transfers
Free transfers attached to QH
* 536855744
* Delete Pipe completed
removed Device_t from devlist
disable