Connecting Pico to Teensy 4.1 USB host through USB hub crashes, except for one specific hub and certain ports

Teensy 4.1 with following script (Visual Studio Code, PlatformIO extension): plugging in Pico 2W directly to USB host works fine.
With an USB hub between Teensy and Pico, the Teensy always crashes with three different USB hub brands. A fourth brand makes the Teensy crash when plugging Pico in one specific port, except when it had been plugged in another port of the same hub before. It does not matter if myusb.Task(); is called. It is not power related because the same behaviour happens when the Pico is externally powered and the 5V line in the USB cable is cut. Commenting out USBSerial userial(myusb); makes the problem disappear, so it is a software issue. Connecting other devices (including Arduino Uno) to the Teensy through any USB hub works fine. I also tried changing VID/PID/manufacturer/product information on the Pico, but behaviour is the same. I added the watchdog for quick debugging, obviously leaving it out still makes the Teensy crash. Any thoughts?

C++:
#include "USBHost_t36.h"
#include <Watchdog_t4.h>
USBHost myusb;
USBHub hub1(myusb);
USBSerial userial(myusb);
WDT_T4<WDT1> wdt;
void setup()
{
    pinMode(LED_BUILTIN, OUTPUT);
    myusb.begin();
    wdt.begin({.timeout = 2});
}
void loop()
{
    myusb.Task(); // commenting this out does not change crash behaviour
    wdt.feed();
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    delay(100);
}


2025-11-18 11.20.14-1.jpg
 
Can you test with Arduino IDE and Teensyduino 1.60 beta 5, without any watchdog stuff?

In other words, does the crash happen when it's only compiled using libraries that ship with Teensyduino, and using the "known quantity" of Arduino IDE? Even if you never use Arduino IDE, this is so simple to just add that beta URL to File > Prefs, then install Teensyduino from Boards Manager, copy your code in without the watchdog stuff, and see if the problem still happens.

If the problem is reproducible with Arduino IDE, can you give me some more detail about the 3 specific hubs and what program needs to be loaded onto the Pi Pico to exactly recreate the test?
 
Might require multiple hub objects, as some hubs with more than maybe 4 ports, are made internally with multiple hubs. Also don’t remember if serial objects require HID objects. Also don’t remember if Pico connects at full speed or high speed. you might try the larger buffer version.

also try turning on debug stuff in the usb host header file
 
Thanks Paul. Well, the behaviour with your beta in Arduino (without watchdog stuff) is exactly the same. The Pi Pico 2W has just the blink program, and it does not matter if it actually opens the Serial or not, behaviour is the same.

The four specific hubs:
"Cerulian Technology 4 Port UBS 2.0 Foldable Hub": serial works if plugged in port 2, 3 or 4, but not when plugged in port 1 unless it had been plugged in another port before.
"Sharkoon 3-port USB 3.0 Aluminium hub + RJ45 Ethernet adapter": never works
"DeLock 62534 USB 3.0 External Hub 4 Port": never works
"Vina International Holdings Ltd. HUB-316 (4-port USB 2.0)": never works

@KurtE: Two hubs are not needed. I tried it before and also have more extensive test scripts showing which devices are connected/disconnected. I have not yet tried to turn debug stuff on.
 
With debug stuff on, first connecting the Cerulian hub and then the Pico 2W on its first port:


port change: 10001803
connect
begin reset
port change: 18001205
port enabled
end recovery
new_Device: 480 Mbit/sec
new_Pipe
enumeration:
enumeration:
enumeration:
Device Descriptor:
12 01 00 02 09 00 01 40 E3 05 08 06 37 85 00 01 00 01
VendorID = 05E3, ProductID = 0608, Version = 8537
Class/Subclass/Protocol = 9(Hub) / 0 / 1(Single-TT)
Number of Configurations = 1
enumeration:
enumeration:
Product: USB2.0 Hub
enumeration:
Config data length = 25
enumeration:
Configuration Descriptor:
09 02 19 00 01 01 00 E0 32
NumInterfaces = 1
ConfigurationValue = 1
09 04 00 00 01 09 00 00 00
Interface = 0
Number of endpoints = 1
Class/Subclass/Protocol = 9(Hub) / 0 / 0
07 05 81 03 01 00 0C
Endpoint = 1 IN
Type = Interrupt
Max Size = 1
Polling Interval = 12
enumeration:
USBHub memory usage = 960
USBHub claim_device this=20003220
found possible interface, altsetting=0
number of interfaces found = 1
USBHub control callback
09 29 04 E0 00 32 64 00 FF 00 00 00 00 00 00 00
Hub ports = 4
USBHub control callback
USBHub control callback
USBHub control callback
USBHub control callback
power turned on to all ports
device addr = 1
new_Pipe
allocate_interrupt_pipe_bandwidth
ep interval = 12
interval = 256
best_bandwidth = 2, at offset = 0
pipe cap1 = F0012101
HUB Callback (member)
status = 2
getstatus, port = 1
USBHub control callback
01 01 01 00
New Port Status
status=10101 port=1
state=0
Device is present:
Has Power
USBHub control callback
Port Status Cleared, port=1
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
status=101 port=1
state=2
Device is present:
Has Power
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
status=101 port=1
state=3
Device is present:
Has Power
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
status=101 port=1
state=4
Device is present:
Has Power
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
status=101 port=1
state=5
Device is present:
Has Power
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
status=101 port=1
state=6
Device is present:
Has Power
sending reset
send_setreset
USBHub control callback
unhandled setup, message = 40323
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 0
HUB Callback (member)
status = 2
getstatus, port = 1
USBHub control callback
03 01 10 00
New Port Status
status=100103 port=1
state=7
Device is present:
Enabled, speed = 12 Mbit/sec
Has Power
USBHub control callback
unhandled setup, message = 140123
timer event (25000 us): Hello, I'm resettimer, this = 20003220, timer = 20003554
port_doing_reset = 1
PORT_RECOVERY
new_Device: 12 Mbit/sec
new_Pipe
enumeration:
enumeration:
ERROR Followup
remove from followup list
stray halted 200030E0
qtd: 20003960, token=80120180, next=200030E0
qtd: 200030E0, token=80008080, next=200039E0
dummy halt: 200039E0
enumeration:
Device Descriptor:
12 01 00 02 EF 02 01 40 32 09 04 00 00 01 09 00 00 00
VendorID = 0932, ProductID = 0004, Version = 0100
Class/Subclass/Protocol = 239 / 2 / 1
Number of Configurations = 0
remain on followup list
remain on followup list
remain on followup list
remain on followup list
ERROR Followup
remain on followup list
remove from followup list
stray halted 20003120
qtd: 20003920, token=87FC0180, next=20003120
qtd: 20003120, token=80008080, next=20003160
dummy halt: 20003160
enumeration:
remain on followup list
remain on followup list
remain on followup list
remain on followup list
ERROR Followup
remain on followup list
remain on followup list
remove from followup list
stray halted 200030E0
qtd: 200038E0, token=80090180, next=200030E0
qtd: 200030E0, token=80008080, next=200039E0
dummy halt: 200039E0
enumeration:
Config data length = 512
remain on followup list
remain on followup list
remain on followup list
remain on followup list
ERROR Followup
remain on followup list
remain on followup list
remain on followup list
remove from followup list
stray halted 20003120
qtd: 200038A0, token=82000180, next=20003120
qtd: 20003120, token=80008080, next=20003160
dummy halt: 20003160
enumeration:
Configuration Descriptor:
09 00 00 02 EF 02 01 40 32
error: config must type 2
remain on followup list
remain on followup list
remain on followup list
ERROR Followup
remain on followup list
remain on followup list
remain on followup list
remain on followup list
remove from followup list
stray halted 200030E0
qtd: 200030E0, token=80008180, next=200039E0
dummy halt: 200039E0
enumeration:
USBSerial(64)claim this=20003760
vid=932, pid=4, bDeviceClass = 239, bDeviceSubClass = 2, bDeviceProtocol = 1
09 04 00 00 01 09 00 00 00 07 05 81 03 01 00 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Descriptor 4 = INTERFACE
USBSerial(64)claim this=20003760
vid=932, pid=4, bDeviceClass = 239, bDeviceSubClass = 2, bDeviceProtocol = 1
09 04 00 00 01 09 00 00 00 07 05 81 03 01 00 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Descriptor 5 = ENDPOINT
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
Descriptor 0 = ???
 
Last edited:
If I plug the Pico 2W in the 2nd port of the same USB hub, the Teensy does not crash. I get the following debug output (near the end I am unplugging the Pico 2W from the hub):

port change: 10001803
connect
begin reset
port change: 18001205
port enabled
end recovery
new_Device: 480 Mbit/sec
new_Pipe
enumeration:
enumeration:
enumeration:
Device Descriptor:
12 01 00 02 09 00 01 40 E3 05 08 06 37 85 00 01 00 01
VendorID = 05E3, ProductID = 0608, Version = 8537
Class/Subclass/Protocol = 9(Hub) / 0 / 1(Single-TT)
Number of Configurations = 1
enumeration:
enumeration:
Product: USB2.0 Hub
enumeration:
Config data length = 25
enumeration:
Configuration Descriptor:
09 02 19 00 01 01 00 E0 32
NumInterfaces = 1
ConfigurationValue = 1
09 04 00 00 01 09 00 00 00
Interface = 0
Number of endpoints = 1
Class/Subclass/Protocol = 9(Hub) / 0 / 0
07 05 81 03 01 00 0C
Endpoint = 1 IN
Type = Interrupt
Max Size = 1
Polling Interval = 12
enumeration:
USBHub memory usage = 960
USBHub claim_device this=20003220
found possible interface, altsetting=0
number of interfaces found = 1
USBHub control callback
09 29 04 E0 00 32 64 00 FF 00 00 00 00 00 00 00
Hub ports = 4
USBHub control callback
USBHub control callback
USBHub control callback
USBHub control callback
power turned on to all ports
device addr = 1
new_Pipe
allocate_interrupt_pipe_bandwidth
ep interval = 12
interval = 256
best_bandwidth = 2, at offset = 0
pipe cap1 = F0012101
HUB Callback (member)
status = 4
getstatus, port = 2
USBHub control callback
01 01 01 00
New Port Status
status=10101 port=2
state=0
Device is present:
Has Power
USBHub control callback
Port Status Cleared, port=2
timer event (20000 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 4
getstatus, port = 2
USBHub control callback
01 01 00 00
New Port Status
status=101 port=2
state=2
Device is present:
Has Power
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 4
getstatus, port = 2
USBHub control callback
01 01 00 00
New Port Status
status=101 port=2
state=3
Device is present:
Has Power
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 4
getstatus, port = 2
USBHub control callback
01 01 00 00
New Port Status
status=101 port=2
state=4
Device is present:
Has Power
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 4
getstatus, port = 2
USBHub control callback
01 01 00 00
New Port Status
status=101 port=2
state=5
Device is present:
Has Power
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 4
getstatus, port = 2
USBHub control callback
01 01 00 00
New Port Status
status=101 port=2
state=6
Device is present:
Has Power
sending reset
send_setreset
USBHub control callback
unhandled setup, message = 40323
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 0
HUB Callback (member)
status = 4
getstatus, port = 2
USBHub control callback
03 01 10 00
New Port Status
status=100103 port=2
state=7
Device is present:
Enabled, speed = 12 Mbit/sec
Has Power
USBHub control callback
unhandled setup, message = 140123
timer event (25000 us): Hello, I'm resettimer, this = 20003220, timer = 20003554
port_doing_reset = 2
PORT_RECOVERY
new_Device: 12 Mbit/sec
new_Pipe
enumeration:
enumeration:
enumeration:
Device Descriptor:
12 01 00 02 EF 02 01 40 8A 2E 0F F0 00 01 02 03 04 01
VendorID = 2E8A, ProductID = F00F, Version = 0100
Class/Subclass/Protocol = 239 / 2 / 1
Number of Configurations = 1
enumeration:
enumeration:
Manufacturer: Raspberry Pi
enumeration:
Product: Pico 2W
enumeration:
Serial Number: B088AF394B852405
enumeration:
Config data length = 75
enumeration:
Configuration Descriptor:
09 02 4B 00 02 01 00 A0 7D
NumInterfaces = 2
ConfigurationValue = 1
08 0B 00 02 02 02 00 00
Interface Association = 0 through 1
Class / Subclass / Protocol = 2 / 2 / 0
09 04 00 00 01 02 02 00 01
Interface = 0
Number of endpoints = 1
Class/Subclass/Protocol = 2 / 2 / 0
05 24 00 20 01
05 24 01 00 01
04 24 02 06
05 24 06 00 01
07 05 81 03 08 00 10
Endpoint = 1 IN
Type = Interrupt
Max Size = 8
Polling Interval = 16
09 04 01 00 02 0A 00 00 00
Interface = 1
Number of endpoints = 2
Class/Subclass/Protocol = 10 / 0 / 0
07 05 01 02 40 00 00
Endpoint = 1 OUT
Type = Bulk
Max Size = 64
Polling Interval = 0
07 05 82 02 40 00 00
Endpoint = 2 IN
Type = Bulk
Max Size = 64
Polling Interval = 0
enumeration:
USBSerial(64)claim this=20003760
vid=2E8A, pid=F00F, bDeviceClass = 239, bDeviceSubClass = 2, bDeviceProtocol = 1
08 0B 00 02 02 02 00 00 09 04 00 00 01 02 02 00 01 05 24 00 20 01 05 24 01 00 01 04 24 02 06 05 24 06 00 01 07 05 81 03 08 00 10 09 04 01 00 02 0A 00 00 00 07 05 01 02 40 00 00 07 05 82 02 40 00 00
Descriptor 11 = IAD
Descriptor 4 = INTERFACE
USBSerial(64)claim this=20003760
vid=2E8A, pid=F00F, bDeviceClass = 239, bDeviceSubClass = 2, bDeviceProtocol = 1
09 04 00 00 01 02 02 00 01 05 24 00 20 01 05 24 01 00 01 04 24 02 06 05 24 06 00 01 07 05 81 03 08 00 10 09 04 01 00 02 0A 00 00 00 07 05 01 02 40 00 00 07 05 82 02 40 00 00
Descriptor 36 = ???
Descriptor 36 = ???
Descriptor 36 = ???
Descriptor 36 = ???
Descriptor 5 = ENDPOINT
Descriptor 4 = INTERFACE
USBSerial(64)claim this=20003760
vid=2E8A, pid=F00F, bDeviceClass = 239, bDeviceSubClass = 2, bDeviceProtocol = 1
09 04 01 00 02 0A 00 00 00 07 05 01 02 40 00 00 07 05 82 02 40 00 00
len = 23
USBSerial, rxep=2(64), txep=1(64)
rx buffer size:196
tx buffer size:196
new_Pipe
new_Pipe
Control - CDCACM LINE_CODING
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
control callback (serial) 4
Control - 0x21,0x22, 0x3
control callback (serial) 0
rx token: 80008100 transfer length: 64 len:64 - 77 61
rx: 77 61 79 70 6F 69 6E 74 20 30 2C 20 50 49 44 20 30 20 6C 65 66 74 20 6D 6F 74 6F 72 3A 20 30 2E 30 30 20 6D 20 72 61 74 65 3A 20 2D 30 2E 30 30 30 30 30 30 65 2B 30 30 20 74 6F 74 61 6C 3A 20
rx token: 198100 transfer length: 64 len:39 - 30 2E
rx: 30 2E 30 30 30 30 30 30 65 2B 30 30 20 6C 65 66 74 20 64 65 72 69 76 61 74 69 76 65 3A 20 30 2E 30 30 20 6D 2F 73 0A
rx token: 80008100 transfer length: 64 len:64 - 77 61
rx: 77 61 79 70 6F 69 6E 74 20 30 2C 20 50 49 44 20 30 20 6C 65 66 74 20 6D 6F 74 6F 72 3A 20 30 2E 30 30 20 6D 20 72 61 74 65 3A 20 2D 30 2E 30 30 30 30 30 30 65 2B 30 30 20 74 6F 74 61 6C 3A 20
rx token: 198100 transfer length: 64 len:39 - 30 2E
rx: 30 2E 30 30 30 30 30 30 65 2B 30 30 20 6C 65 66 74 20 64 65 72 69 76 61 74 69 76 65 3A 20 30 2E 30 30 20 6D 2F 73 0A
rx token: 80008100 transfer length: 64 len:64 - 77 61
rx: 77 61 79 70 6F 69 6E 74 20 30 2C 20 50 49 44 20 30 20 6C 65 66 74 20 6D 6F 74 6F 72 3A 20 30 2E 30 30 20 6D 20 72 61 74 65 3A 20 2D 30 2E 30 30 30 30 30 30 65 2B 30 30 20 74 6F 74 61 6C 3A 20
rx token: 198100 transfer length: 64 len:39 - 30 2E
rx: 30 2E 30 30 30 30 30 30 65 2B 30 30 20 6C 65 66 74 20 64 65 72 69 76 61 74 69 76 65 3A 20 30 2E 30 30 20 6D 2F 73 0A
rx token: 80008100 transfer length: 64 len:64 - 77 61
rx: 77 61 79 70 6F 69 6E 74 20 30 2C 20 50 49 44 20 30 20 6C 65 66 74 20 6D 6F 74 6F 72 3A 20 30 2E 30 30 20 6D 20 72 61 74 65 3A 20 2D 30 2E 30 30 30 30 30 30 65 2B 30 30 20 74 6F 74 61 6C 3A 20
rx token: 198100 transfer length: 64 len:39 - 30 2E
rx: 30 2E 30 30 30 30 30 30 65 2B 30 30 20 6C 65 66 74 20 64 65 72 69 76 61 74 69 76 65 3A 20 30 2E 30 30 20 6D 2F 73 0A
rx token: 80008100 transfer length: 64 len:64 - 77 61
rx: 77 61 79 70 6F 69 6E 74 20 30 2C 20 50 49 44 20 30 20 6C 65 66 74 20 6D 6F 74 6F 72 3A 20 30 2E 30 30 20 6D 20 72 61 74 65 3A 20 2D 30 2E 30 30 30 30 30 30 65 2B 30 30 20 74 6F 74 61 6C 3A 20
rx token: 198100 transfer length: 64 len:39 - 30 2E
rx: 30 2E 30 30 30 30 30 30 65 2B 30 30 20 6C 65 66 74 20 64 65 72 69 76 61 74 69 76 65 3A 20 30 2E 30 30 20 6D 2F 73 0A
HUB Callback (member)
status = 4
getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
HUB Callback (member)
status = 4
deferred getstatus, port = 2
port change: 1C00100A
disconnect
disconnect_Device:
USBDriver (available_drivers) list: (empty
USBDriver (dev->drivers) list: 20003220
disconnect driver 20003220
disconnect_Device:
USBDriver (available_drivers) list: (empty
USBDriver (dev->drivers) list: 20003760
disconnect driver 20003760
USBDriver (available_drivers) list: 20003760
delete_Pipe 20003780
remove QH from async schedule
Free transfers
* 536883488 * remove * free
* 536885536 * remove * defer free until QH
* 536883616
* 536885728
* 536885472
Free transfers attached to QH
* 536885536
* 536885600
* Delete Pipe completed
delete_Pipe 200033A0
remove QH from async schedule
Free transfers
* 536883616
* 536885728
* 536885472
Free transfers attached to QH
* 536883552
* Delete Pipe completed
delete_Pipe 200037E0
remove QH from async schedule
Free transfers
* 536883616
* 536885728 * remove * free
* 536885472
Free transfers attached to QH
* 536885408
* Delete Pipe completed
removed Device_t from devlist
USBDriver (available_drivers) list: 20003220 -> 20003760
delete_Pipe 20003840
Free transfers
* 536884416 * remove * free
Free transfers attached to QH
* 536885664
* Delete Pipe completed
delete_Pipe 20003080
shut down async schedule
Free transfers
* 536883616 * remove * defer free until QH
* 536885472 * remove * free
Free transfers attached to QH
* 536883616
* 536885728
* 536883552
* 536885600
* 536885536
* 536883488
* 536885792
* 536884352
* 536884288
* 536884224
* Delete Pipe completed
removed Device_t from devlist
disable
 
We can see in enumeration.cpp that an infinite loop occurs on line 350 if the variable "desclen" equals zero. This apparently corresponds to a malformed descriptor or a bug somewhere. I do not have sufficient knowledge about USB protocols to investigate this further.
 
I've added this to my list of issues in need of investigation.

I'm hoping you can take an extra moment to give me the exact code running on Teensy and the Pi Pico, even if it is "trivial". I ask this because many times before I've spent a lot of time trying and failing to reproduce a problem when the exact code wasn't provided.

The Teensy side looks pretty simple, just delete the watchdog stuff so it'll built on Arduino IDE with only Teensyduino installed. But even if very simple, I want to specifically ask you to reply with a direct copy & paste of the exact code you used with Arduino IDE.

Likewise on the Pi Pico, even if "any program" will do, please give me something very specific that lets me test with the Pi Pico running the exact same code as you used.
 
Last edited:
Teensy 4.1:
C++:
#include "USBHost_t36.h"
USBHost myusb;
USBHub hub1(myusb);
USBSerial userial(myusb);
void setup()
{
    pinMode(LED_BUILTIN, OUTPUT);
    myusb.begin();
}
void loop()
{
    myusb.Task(); // commenting this out does not change crash behaviour
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    delay(100);
}

Pico 2W:
C++:
void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    delay(100);
}

Both programmed with Arduino IDE 2.3.5. The Teensy 4.1 using v0.60.5, and the Pico 2W using 5.3.0
Thanks for looking into it and have a nice day!
 
I can confirm that something odd is going on. I added a few more USBHub objects to the Teensy code, as suggested by @KurtE in post #3, but the problem persists. I don't have a Pico 2W to hand, so this is with a first-gen Pico.

Some logs, with timestamps on the lines in case timing is important. firstly plugging just the Pico in (which works OK, as described):
22:09:39.402 -> port change: 10001803
22:09:39.402 -> connect
22:09:39.402 -> port change: 1C001002
22:09:39.402 -> disconnect
22:09:39.402 -> port change: 10001803
22:09:39.402 -> connect
22:09:39.497 -> begin reset
22:09:39.545 -> port change: 10001805
22:09:39.545 -> port enabled
22:09:39.593 -> end recovery
22:09:39.593 -> new_Device: 12 Mbit/sec
22:09:39.593 -> new_Pipe
22:09:39.593 -> enumeration:
22:09:39.593 -> enumeration:
22:09:39.593 -> enumeration:
22:09:39.593 -> Device Descriptor:
22:09:39.593 -> 12 01 00 02 EF 02 01 40 8A 2E 0A 00 00 01 02 03 04 01
22:09:39.593 -> VendorID = 2E8A, ProductID = 000A, Version = 0100
22:09:39.593 -> Class/Subclass/Protocol = 239 / 2 / 1
22:09:39.593 -> Number of Configurations = 1
22:09:39.593 -> enumeration:
22:09:39.593 -> enumeration:
22:09:39.593 -> Manufacturer: Raspberry Pi
22:09:39.593 -> enumeration:
22:09:39.593 -> Product: Pico
22:09:39.593 -> enumeration:
22:09:39.593 -> Serial Number: E6613852832A8F2B
22:09:39.593 -> enumeration:
22:09:39.593 -> Config data length = 75
22:09:39.593 -> enumeration:
22:09:39.593 -> Configuration Descriptor:
22:09:39.593 -> 09 02 4B 00 02 01 00 A0 7D
22:09:39.593 -> NumInterfaces = 2
22:09:39.593 -> ConfigurationValue = 1
22:09:39.593 -> 08 0B 00 02 02 02 00 00
22:09:39.593 -> Interface Association = 0 through 1
22:09:39.593 -> Class / Subclass / Protocol = 2 / 2 / 0
22:09:39.593 -> 09 04 00 00 01 02 02 00 01
22:09:39.593 -> Interface = 0
22:09:39.593 -> Number of endpoints = 1
22:09:39.593 -> Class/Subclass/Protocol = 2 / 2 / 0
22:09:39.593 -> 05 24 00 20 01
22:09:39.593 -> 05 24 01 00 01
22:09:39.593 -> 04 24 02 06
22:09:39.593 -> 05 24 06 00 01
22:09:39.593 -> 07 05 81 03 08 00 10
22:09:39.593 -> Endpoint = 1 IN
22:09:39.593 -> Type = Interrupt
22:09:39.593 -> Max Size = 8
22:09:39.593 -> Polling Interval = 16
22:09:39.593 -> 09 04 01 00 02 0A 00 00 00
22:09:39.593 -> Interface = 1
22:09:39.593 -> Number of endpoints = 2
22:09:39.593 -> Class/Subclass/Protocol = 10 / 0 / 0
22:09:39.593 -> 07 05 01 02 40 00 00
22:09:39.593 -> Endpoint = 1 OUT
22:09:39.593 -> Type = Bulk
22:09:39.593 -> Max Size = 64
22:09:39.593 -> Polling Interval = 0
22:09:39.593 -> 07 05 82 02 40 00 00
22:09:39.593 -> Endpoint = 2 IN
22:09:39.593 -> Type = Bulk
22:09:39.593 -> Max Size = 64
22:09:39.593 -> Polling Interval = 0
22:09:40.412 -> enumeration:
22:09:40.412 -> USBHub memory usage = 960
22:09:40.412 -> USBHub claim_device this=20003220
22:09:40.412 -> USBHub memory usage = 960
22:09:40.412 -> USBHub claim_device this=200035E0
22:09:40.412 -> USBHub memory usage = 960
22:09:40.412 -> USBHub claim_device this=200039A0
22:09:40.412 -> USBHub memory usage = 960
22:09:40.412 -> USBHub claim_device this=20003D60
22:09:40.412 -> USBSerial(64)claim this=200042A0
22:09:40.412 -> vid=2E8A, pid=A, bDeviceClass = 239, bDeviceSubClass = 2, bDeviceProtocol = 1
22:09:40.412 -> 08 0B 00 02 02 02 00 00 09 04 00 00 01 02 02 00 01 05 24 00 20 01 05 24 01 00 01 04 24 02 06 05 24 06 00 01 07 05 81 03 08 00 10 09 04 01 00 02 0A 00 00 00 07 05 01 02 40 00 00 07 05 82 02 40 00 00
22:09:40.412 -> Descriptor 11 = IAD
22:09:40.412 -> Descriptor 4 = INTERFACE
22:09:40.412 -> USBSerial(64)claim this=200042A0
22:09:40.412 -> vid=2E8A, pid=A, bDeviceClass = 239, bDeviceSubClass = 2, bDeviceProtocol = 1
22:09:40.412 -> 09 04 00 00 01 02 02 00 01 05 24 00 20 01 05 24 01 00 01 04 24 02 06 05 24 06 00 01 07 05 81 03 08 00 10 09 04 01 00 02 0A 00 00 00 07 05 01 02 40 00 00 07 05 82 02 40 00 00
22:09:40.412 -> Descriptor 36 = ???
22:09:40.412 -> Descriptor 36 = ???
22:09:40.412 -> Descriptor 36 = ???
22:09:40.412 -> Descriptor 36 = ???
22:09:40.412 -> Descriptor 5 = ENDPOINT
22:09:40.412 -> Descriptor 4 = INTERFACE
22:09:40.412 -> USBSerial(64)claim this=200042A0
22:09:40.412 -> vid=2E8A, pid=A, bDeviceClass = 239, bDeviceSubClass = 2, bDeviceProtocol = 1
22:09:40.412 -> 09 04 01 00 02 0A 00 00 00 07 05 01 02 40 00 00 07 05 82 02 40 00 00
22:09:40.412 -> len = 23
22:09:40.412 -> USBSerial, rxep=2(64), txep=1(64)
22:09:40.412 -> rx buffer size:196
22:09:40.412 -> tx buffer size:196
22:09:40.412 -> new_Pipe
22:09:40.412 -> new_Pipe
22:09:40.412 -> Control - CDCACM LINE_CODING
22:09:40.412 -> Descriptor 5 = ENDPOINT
22:09:40.412 -> Descriptor 5 = ENDPOINT
22:09:40.412 -> control callback (serial) 4
22:09:40.412 -> Control - 0x21,0x22, 0x3
22:09:40.412 -> control callback (serial) 0

Now plugging in first the hub, then the Pi Pico into port 2 of the hub:
*** Hub plugged in ***

22:14:05.001 -> port change: 10001803
22:14:05.001 -> connect
22:14:05.098 -> begin reset
22:14:05.146 -> port change: 18001205
22:14:05.146 -> port enabled
22:14:05.146 -> end recovery
22:14:05.146 -> new_Device: 480 Mbit/sec
22:14:05.146 -> new_Pipe
22:14:05.146 -> enumeration:
22:14:05.146 -> enumeration:
22:14:05.146 -> enumeration:
22:14:05.146 -> Device Descriptor:
22:14:05.146 -> 12 01 10 02 09 00 01 40 09 21 11 28 70 90 01 02 00 01
22:14:05.146 -> VendorID = 2109, ProductID = 2811, Version = 9070
22:14:05.146 -> Class/Subclass/Protocol = 9(Hub) / 0 / 1(Single-TT)
22:14:05.146 -> Number of Configurations = 1
22:14:05.146 -> enumeration:
22:14:05.146 -> enumeration:
22:14:05.146 -> Manufacturer: VIA Labs, Inc.
22:14:05.146 -> enumeration:
22:14:05.146 -> Product: USB2.0 Hub
22:14:05.146 -> enumeration:
22:14:05.146 -> Config data length = 25
22:14:05.146 -> enumeration:
22:14:05.146 -> Configuration Descriptor:
22:14:05.146 -> 09 02 19 00 01 01 00 E0 00
22:14:05.146 -> NumInterfaces = 1
22:14:05.146 -> ConfigurationValue = 1
22:14:05.146 -> 09 04 00 00 01 09 00 00 00
22:14:05.146 -> Interface = 0
22:14:05.146 -> Number of endpoints = 1
22:14:05.146 -> Class/Subclass/Protocol = 9(Hub) / 0 / 0
22:14:05.146 -> 07 05 81 03 01 00 0C
22:14:05.146 -> Endpoint = 1 IN
22:14:05.146 -> Type = Interrupt
22:14:05.146 -> Max Size = 1
22:14:05.146 -> Polling Interval = 12
22:14:05.146 -> enumeration:
22:14:05.146 -> USBHub memory usage = 960
22:14:05.146 -> USBHub claim_device this=20003220
22:14:05.146 -> found possible interface, altsetting=0
22:14:05.146 -> number of interfaces found = 1
22:14:05.146 -> USBHub control callback
22:14:05.146 -> 09 29 04 E9 01 32 64 00 FF 00 00 00 00 00 00 00
22:14:05.146 -> Hub ports = 4
22:14:05.146 -> USBHub control callback
22:14:05.146 -> USBHub control callback
22:14:05.146 -> USBHub control callback
22:14:05.194 -> USBHub control callback
22:14:05.194 -> power turned on to all ports
22:14:05.194 -> device addr = 1
22:14:05.194 -> new_Pipe
22:14:05.194 -> allocate_interrupt_pipe_bandwidth
22:14:05.194 -> ep interval = 12
22:14:05.194 -> interval = 256
22:14:05.194 -> best_bandwidth = 2, at offset = 0
22:14:05.194 -> pipe cap1 = F0012101

*** Pi Pico plugged in ***

22:14:23.298 -> HUB Callback (member)
22:14:23.298 -> status = 4
22:14:23.298 -> getstatus, port = 2
22:14:23.298 -> USBHub control callback
22:14:23.298 -> 01 01 01 00
22:14:23.298 -> New Port Status
22:14:23.298 -> status=10101 port=2
22:14:23.298 -> state=0
22:14:23.298 -> Device is present:
22:14:23.298 -> Has Power
22:14:23.298 -> USBHub control callback
22:14:23.298 -> Port Status Cleared, port=2
22:14:23.345 -> timer event (20000 us): Debounce Timer, this = 20003220, timer = 20003538
22:14:23.345 -> ports in use bitmask = 4
22:14:23.345 -> getstatus, port = 2
22:14:23.345 -> USBHub control callback
22:14:23.345 -> 01 01 00 00
22:14:23.345 -> New Port Status
22:14:23.345 -> status=101 port=2
22:14:23.345 -> state=2
22:14:23.345 -> Device is present:
22:14:23.345 -> Has Power
22:14:23.345 -> timer event (20000 us): Debounce Timer, this = 20003220, timer = 20003538
22:14:23.345 -> ports in use bitmask = 4
22:14:23.345 -> getstatus, port = 2
22:14:23.345 -> USBHub control callback
22:14:23.345 -> 01 01 00 00
22:14:23.345 -> New Port Status
22:14:23.345 -> status=101 port=2
22:14:23.345 -> state=3
22:14:23.345 -> Device is present:
22:14:23.345 -> Has Power
22:14:23.345 -> timer event (20000 us): Debounce Timer, this = 20003220, timer = 20003538
22:14:23.345 -> ports in use bitmask = 4
22:14:23.345 -> getstatus, port = 2
22:14:23.345 -> USBHub control callback
22:14:23.345 -> 01 01 00 00
22:14:23.345 -> New Port Status
22:14:23.345 -> status=101 port=2
22:14:23.345 -> state=4
22:14:23.345 -> Device is present:
22:14:23.345 -> Has Power
22:14:23.394 -> timer event (20000 us): Debounce Timer, this = 20003220, timer = 20003538
22:14:23.394 -> ports in use bitmask = 4
22:14:23.394 -> getstatus, port = 2
22:14:23.394 -> USBHub control callback
22:14:23.394 -> 01 01 00 00
22:14:23.394 -> New Port Status
22:14:23.394 -> status=101 port=2
22:14:23.394 -> state=5
22:14:23.394 -> Device is present:
22:14:23.394 -> Has Power
22:14:23.394 -> timer event (20000 us): Debounce Timer, this = 20003220, timer = 20003538
22:14:23.394 -> ports in use bitmask = 4
22:14:23.394 -> getstatus, port = 2
22:14:23.394 -> USBHub control callback
22:14:23.394 -> 01 01 00 00
22:14:23.394 -> New Port Status
22:14:23.394 -> status=101 port=2
22:14:23.394 -> state=6
22:14:23.394 -> Device is present:
22:14:23.394 -> Has Power
22:14:23.394 -> sending reset
22:14:23.394 -> send_setreset
22:14:23.394 -> USBHub control callback
22:14:23.394 -> unhandled setup, message = 40323
22:14:23.441 -> timer event (20000 us): Debounce Timer, this = 20003220, timer = 20003538
22:14:23.441 -> ports in use bitmask = 0
22:14:23.441 -> HUB Callback (member)
22:14:23.441 -> status = 4
22:14:23.441 -> getstatus, port = 2
22:14:23.441 -> USBHub control callback
22:14:23.441 -> 03 01 10 00
22:14:23.441 -> New Port Status
22:14:23.441 -> status=100103 port=2
22:14:23.441 -> state=7
22:14:23.441 -> Device is present:
22:14:23.441 -> Enabled, speed = 12 Mbit/sec
22:14:23.441 -> Has Power
22:14:23.441 -> USBHub control callback
22:14:23.441 -> unhandled setup, message = 140123
22:14:23.441 -> timer event (24999 us): Hello, I'm resettimer, this = 20003220, timer = 20003554
22:14:23.441 -> port_doing_reset = 2
22:14:23.441 -> PORT_RECOVERY
22:14:23.441 -> new_Device: 12 Mbit/sec
22:14:23.441 -> new_Pipe
22:14:23.441 -> enumeration:
22:14:23.441 -> enumeration:
22:14:23.441 -> ERROR Followup
22:14:23.441 -> remove from followup list
22:14:23.441 -> stray halted 20003160
22:14:23.441 -> qtd: 200044A0, token=80120180, next=20003160
22:14:23.441 -> qtd: 20003160, token=80008080, next=20004520
22:14:23.441 -> dummy halt: 20004520
22:14:23.441 -> enumeration:
22:14:23.441 -> Device Descriptor:
22:14:23.441 -> 12 01 00 02 EF 02 01 40 00 09 04 00 00 01 09 00 00 00
22:14:23.441 -> VendorID = 0900, ProductID = 0004, Version = 0100
22:14:23.441 -> Class/Subclass/Protocol = 239 / 2 / 1
22:14:23.441 -> Number of Configurations = 0
22:14:23.441 -> remain on followup list
22:14:23.441 -> remain on followup list
22:14:23.441 -> remain on followup list
22:14:23.441 -> remain on followup list
22:14:23.441 -> ERROR Followup
22:14:23.441 -> remain on followup list
22:14:23.441 -> remove from followup list
22:14:23.441 -> stray halted 200030E0
22:14:23.441 -> qtd: 20004460, token=87FC0180, next=200030E0
22:14:23.441 -> qtd: 200030E0, token=80008080, next=20004560
22:14:23.441 -> dummy halt: 20004560
22:14:23.441 -> enumeration:
22:14:23.441 -> remain on followup list
22:14:23.441 -> remain on followup list
22:14:23.441 -> remain on followup list
22:14:23.441 -> remain on followup list
22:14:23.441 -> ERROR Followup
22:14:23.441 -> remain on followup list
22:14:23.441 -> remain on followup list
22:14:23.441 -> remove from followup list
22:14:23.441 -> stray halted 20003160
22:14:23.441 -> qtd: 20004420, token=80090180, next=20003160
22:14:23.441 -> qtd: 20003160, token=80008080, next=20004520
22:14:23.441 -> dummy halt: 20004520
22:14:23.441 -> enumeration:
22:14:23.441 -> Config data length = 512
22:14:23.441 -> remain on followup list
22:14:23.441 -> remain on followup list
22:14:23.441 -> remain on followup list
22:14:23.441 -> remain on followup list
22:14:23.441 -> ERROR Followup
22:14:23.441 -> remain on followup list
22:14:23.441 -> remain on followup list
22:14:23.441 -> remain on followup list
22:14:23.441 -> remove from followup list
22:14:23.441 -> stray halted 200030E0
22:14:23.441 -> qtd: 200043E0, token=82000180, next=200030E0
22:14:23.441 -> qtd: 200030E0, token=80008080, next=20004560
22:14:23.441 -> dummy halt: 20004560
22:14:23.441 -> enumeration:
22:14:23.441 -> Configuration Descriptor:
22:14:23.441 -> 09 00 00 02 EF 02 01 40 00
22:14:23.441 -> error: config must type 2
22:14:23.441 -> remain on followup list
22:14:23.441 -> remain on followup list
22:14:23.441 -> remain on followup list
22:14:23.441 -> ERROR Followup
22:14:23.441 -> remain on followup list
22:14:23.441 -> remain on followup list
22:14:23.441 -> remain on followup list
22:14:23.441 -> remain on followup list
22:14:23.441 -> remove from followup list
22:14:23.441 -> stray halted 20003160
22:14:23.441 -> qtd: 20003160, token=80008180, next=20004520
22:14:23.441 -> dummy halt: 20004520
22:14:23.441 -> enumeration:
22:14:23.441 -> USBHub memory usage = 960
22:14:23.441 -> USBHub claim_device this=200035E0
22:14:23.441 -> USBHub memory usage = 960
22:14:23.441 -> USBHub claim_device this=200039A0
22:14:23.441 -> USBHub memory usage = 960
22:14:23.441 -> USBHub claim_device this=20003D60
22:14:23.441 -> USBSerial(64)claim this=200042A0
22:14:23.441 -> vid=900, pid=4, bDeviceClass = 239, bDeviceSubClass = 2, bDeviceProtocol = 1
22:14:23.441 -> 09 04 00 00 01 09 00 00 00 07 05 81 03 01 00 0C 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
22:14:26.469 -> Descriptor 4 = INTERFACE
22:14:26.469 -> USBSerial(64)claim this=200042A0
22:14:26.469 -> vid=900, pid=4, bDeviceClass = 239, bDeviceSubClass = 2, bDeviceProtocol = 1
22:14:26.469 -> 09 04 00 00 01 09 00 00 00 07 05 81 03 01 00 0C 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
22:14:26.469 -> Descriptor 5 = ENDPOINT
22:14:26.469 -> Descriptor 32 = ???
22:14:26.469 -> Descriptor 32 = ???
22:14:26.469 -> Descriptor 32 = ???
22:14:26.469 -> Descriptor 32 = ???
22:14:26.469 -> Descriptor 32 = ???
22:14:26.469 -> Descriptor 32 = ???
22:14:26.469 -> Descriptor 32 = ???
22:14:26.469 -> Descriptor 32 = ???
22:14:26.469 -> Descriptor 32 = ???
22:14:26.469 -> Descriptor 32 = ???
22:14:26.469 -> Descriptor 32 = ???
22:14:26.469 -> Descriptor 32 = ???
22:14:26.469 -> Descriptor 32 = ???
22:14:26.469 -> Descriptor 32 = ???
22:14:26.469 -> Descriptor 32 = ???
22:14:26.469 -> Descrip

Hub information, as acquired by USB Device Tree Viewer v4.5.1
=========================== USB Port2 ===========================

Connection Status : 0x01 (Device is connected)
Port Chain : 3-2
Properties : 0x01

IsUserConnectable : yes
PortIsDebugCapable : no
PortHasMultiCompanions : no
PortConnectorIsTypeC : no
ConnectionIndex : 0x02 (Port 2)
CompanionIndex : 0

CompanionHubSymLnk : USB#ROOT_HUB30#4&33bdac5d&0&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}
CompanionPortNumber : 0x13 (Port 19)
-> CompanionPortChain : 3-19

========================== Summary =========================
Vendor ID : 0x2109 (VIA Labs, Inc.)
Product ID : 0x2811
Manufacturer String : "VIA Labs, Inc. "
Product String : "USB2.0 Hub "
Serial : ---
USB Version : 2.1 (480 Mbit/s)
Port maximum Speed : High-Speed (Companion Port 3-19 is doing the SuperSpeed)
Device maximum Speed : High-Speed (Companion Hub at 3-19 is doing the SuperSpeed)
Device Connection Speed : High-Speed
Self powered : yes
Demanded Current : 0 mA
Used Endpoints : 2

========================== USB Hub =========================

Hub Symbolic Link : USB#VID_2109&PID_2811#5&19813bca&0&2#{f18a0e88-c30c-11d0-8815-00a0c906bed8}

+++++++++++++++++ Device Information ++++++++++++++++++
Device Description : Generic USB Hub
Device Path : \\?\USB#VID_2109&PID_2811#5&19813bca&0&2#{f18a0e88-c30c-11d0-8815-00a0c906bed8} (GUID_DEVINTERFACE_USB_HUB)
Kernel Name : \Device\USBPDO-19
Device ID : USB\VID_2109&PID_2811\5&19813BCA&0&2
Hardware IDs : USB\VID_2109&PID_2811&REV_9070 USB\VID_2109&PID_2811
Driver KeyName : {36fc9e60-c465-11cf-8056-444553540000}\0024 (GUID_DEVCLASS_USB)
Driver : \SystemRoot\System32\drivers\UsbHub3.sys (Version: 10.0.26100.7019 Date: 2025-11-11 Company: Microsoft Corporation)
Driver Inf : C:\WINDOWS\inf\usbhub3.inf
Legacy BusType : PNPBus
Class : USB
Class GUID : {36fc9e60-c465-11cf-8056-444553540000} (GUID_DEVCLASS_USB)
Service : USBHUB3
Enumerator : USB
Location Info : Port_#0002.Hub_#0002
Address : 2
Location IDs : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(2), ACPI(_SB_)#ACPI(PCI0)#ACPI(XHC_)#ACPI(RHUB)#ACPI(HS02)
Container ID : {6970202d-1e44-4cde-8f73-78ec5964eca7}
Manufacturer Info : (Standard USB HUBs)
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
EnhancedPowerMgmtEnabled : 0
IdleInWorkingState : 1
Power State : D0 (supported: D0, D1, D2, D3, wake from D0, wake from D1, wake from D2)

+++++++++++++++++ Registry USB Flags +++++++++++++++++
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\210928119070

osvc : REG_BINARY 00 00

------------------- USB Hub Descriptor -----------------
bDescriptorLength : 0x09 (9 bytes)
bDescriptorType : 0x29 (Hub Descriptor)
bNumberOfPorts : 0x04 (4 Ports)
wHubCharacteristics : 0x01E9

Power switching : Individual
Compound device : No
Over-current protection : Individual
TT Think Time : At most 32 FS bit times
Port Indicators : Supported
bPowerOnToPowerGood : 0x32 (100 ms)
bHubControlCurrent : 0x64 (100 mA)
DeviceRemovable : 0x00

Bit 0 : 0 (reserved, any value)
Bit 1 : 0 (Device at Port 1 is removable)
Bit 2 : 0 (Device at Port 2 is removable)
Bit 3 : 0 (Device at Port 3 is removable)
Bit 4 : 0 (Device at Port 4 is removable)
Bit 5 : 0 (unused, must be 0)
Bit 6 : 0 (unused, must be 0)
Bit 7 : 0 (unused, must be 0)
PowerControlMask : 0xFF
Data (HexDump) : 09 29 04 E9 01 32 64 00 FF .)...2d..
HubIsBusPowered : 0x00 (Self Powered)

---------------- Extended USB Hub Descriptor ---------------
HubType : 0x02 (Usb20Hub - hub descriptor is defined in USB 2.0 and 1.1 specifications)
HighestPortNumber : 0x04 (Port 4 is the highest)
UsbHubDescriptor : identical with "USB Hub Descriptor" shown above
Data (HexDump) : 09 29 04 E9 01 32 64 00 FF .)...2d..

----------------- USB Hub Capabilities ----------------
HubIs2xCapable : 1 (Is 2.x capable)
Data (HexDump) : 01 00 00 00 ....

--------------- USB Hub Capabilities Ex ---------------
HighSpeedCapable : 1 (Yes)
HighSpeed : 1 (Yes)
MultiTtCapable : 0 (No)
HubIsMultiTt : 0 (No)
ArmedWakeOnConnect : 0 (No)
IsBusPowered : 0 (No)
IsRoot : 0 (No)
Data (HexDump) : 03 00 00 00 ....

---------------- Connection Information ---------------
Connection Index : 0x02 (Port 2)
Connection Status : 0x01 (DeviceConnected)
Current Config Value : 0x01 (Configuration 1)
Device Address : 0x3A (58)
Is Hub : 0x01 (yes)
Device Bus Speed : 0x02 (High-Speed)
Number of open Pipes : 0x01 (1 pipe to data endpoints)
Pipe[0] : EndpointID=1 Direction=IN ScheduleOffset=0 Type=Interrupt wMaxPacketSize=0x1 bInterval=12 -> 1040 Bits/ms = 130000 Bytes/s
Data (HexDump) : 02 00 00 00 12 01 10 02 09 00 01 40 09 21 11 28 ...........@.!.(
70 90 01 02 00 01 01 02 01 3A 00 01 00 00 00 01 p........:......
00 00 00 07 05 81 03 01 00 0C 00 00 00 00 ..............

--------------- Connection Information V2 -------------
Connection Index : 0x02 (2)
Length : 0x10 (16 bytes)
SupportedUsbProtocols : 0x03

Usb110 : 1 (yes, port supports USB 1.1)
Usb200 : 1 (yes, port supports USB 2.0)
Usb300 : 0 (no, port not supports USB 3.0) -> but Companion Port 3-19 does
ReservedMBZ : 0x00
Flags : 0x02

DevIsOpAtSsOrHigher : 0 (Device is not operating at SuperSpeed or higher)
DevIsSsCapOrHigher : 1 (Device is SuperSpeed capable or higher)
DevIsOpAtSsPlusOrHigher : 0 (Device is not operating at SuperSpeedPlus or higher)
DevIsSsPlusCapOrHigher : 0 (Device is not SuperSpeedPlus capable or higher)
ReservedMBZ : 0x00
Data (HexDump) : 02 00 00 00 10 00 00 00 03 00 00 00 02 00 00 00 ................

---------------------- Device Descriptor ----------------------
bLength : 0x12 (18 bytes)
bDescriptorType : 0x01 (Device Descriptor)
bcdUSB : 0x210 (USB Version 2.1)
bDeviceClass : 0x09 (Hub)
bDeviceSubClass : 0x00
bDeviceProtocol : 0x01 (Hi-speed hub with single TT)
bMaxPacketSize0 : 0x40 (64 bytes)
idVendor : 0x2109 (VIA Labs, Inc.)
idProduct : 0x2811
bcdDevice : 0x9070
iManufacturer : 0x01 (String Descriptor 1)

Language 0x0409 : "VIA Labs, Inc. "
iProduct : 0x02 (String Descriptor 2)

Language 0x0409 : "USB2.0 Hub "
iSerialNumber : 0x00 (No String Descriptor)
bNumConfigurations : 0x01 (1 Configuration)
Data (HexDump) : 12 01 10 02 09 00 01 40 09 21 11 28 70 90 01 02 .......@.!.(p...
00 01 ..

------------------ Configuration Descriptor -------------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x02 (Configuration Descriptor)
wTotalLength : 0x0019 (25 bytes)
bNumInterfaces : 0x01 (1 Interface)
bConfigurationValue : 0x01 (Configuration 1)
iConfiguration : 0x00 (No String Descriptor)
bmAttributes : 0xE0

D7: Reserved, set 1 : 0x01
D6: Self Powered : 0x01 (yes)
D5: Remote Wakeup : 0x01 (yes)
D4..0: Reserved, set 0 : 0x00
MaxPower : 0x00 (0 mA)
Data (HexDump) : 09 02 19 00 01 01 00 E0 00 09 04 00 00 01 09 00 ................
00 00 07 05 81 03 01 00 0C .........

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

----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x81 (Direction=IN EndpointID=1)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0001

Bits 15..13 : 0x00 (reserved, must be zero)
Bits 12..11 : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
Bits 10..0 : 0x01 (1 byte per packet)
bInterval : 0x0C (2048 microframes -> 256 ms)
Data (HexDump) : 07 05 81 03 01 00 0C .......

--------- Device Qualifier Descriptor (for Full-Speed) --------
bLength : 0x0A (10 bytes)
bDescriptorType : 0x06 (Device_qualifier Descriptor)
bcdUSB : 0x210 (USB Version 2.1)
bDeviceClass : 0x09 (Hub)
bDeviceSubClass : 0x00
bDeviceProtocol : 0x00 (Hi-speed hub without TT)
bMaxPacketSize0 : 0x40 (64 Bytes)
bNumConfigurations : 0x01 (1 other-speed configuration)
bReserved : 0x00
Data (HexDump) : 0A 06 10 02 09 00 00 40 01 00 .......@..

------------ Other Speed Configuration Descriptor -------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x07 (Other_speed_configuration Descriptor)
wTotalLength : 0x0019 (25 bytes)
bNumInterfaces : 0x01 (1 Interface)
bConfigurationValue : 0x01 (Configuration 1)
iConfiguration : 0x00 (No String Descriptor)
bmAttributes : 0xE0

D7: Reserved, set 1 : 0x01
D6: Self Powered : 0x01 (yes)
D5: Remote Wakeup : 0x01 (yes)
D4..0: Reserved, set 0 : 0x00
MaxPower : 0x32 (100 mA)
Data (HexDump) : 09 07 19 00 01 01 00 E0 32 09 04 00 00 01 09 00 ........2.......
00 00 07 05 81 03 01 00 FF .........

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

----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x81 (Direction=IN EndpointID=1)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0001 (1 byte)
bInterval : 0xFF (255 ms)
Data (HexDump) : 07 05 81 03 01 00 FF .......

---------- Binary Object Store (BOS) Descriptor -----------
bLength : 0x05 (5 bytes)
bDescriptorType : 0x0F (Binary Object Store)
wTotalLength : 0x002A (42 bytes)
bNumDeviceCaps : 0x03
Data (HexDump) : 05 0F 2A 00 03 ..*..

------------- USB 2.0 Extension Descriptor ------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x10 (Device Capability Descriptor)
bDevCapabilityType : 0x02 (USB 2.0 Extension)
bmAttributes : 0x02

LPMCapable : 1 (Link Power Management protocol is supported)
BESLAndAlternateHIRD : 0 (BESL & Alternate HIRD definitions are not supported)
BaselineBESLValid : 0 (not valid)
DeepBESLValid : 0 (not valid)
BaselineBESL : 0
DeepBESL : 0
Data (HexDump) : 07 10 02 02 00 00 00 .......

----- SuperSpeed USB Device Capability Descriptor -----
bLength : 0x0A (10 bytes)
bDescriptorType : 0x10 (Device Capability Descriptor)
bDevCapabilityType : 0x03 (SuperSpeed USB Device Capability)
bmAttributes : 0x00

Bit 0 Reserved : 0x00
Bit 1 LTM Capable : 0x00 (no)
Bit 7:2 Reserved : 0x00
wSpeedsSupported : 0x0E (Full-Speed, High-Speed, SuperSpeed)
bFunctionalitySupport : 0x01 (lowest speed with all the functionality is 'Full-Speed')
bU1DevExitLat : 0x04 (less than 4 µs)
wU2DevExitLat : 0x00E7 (less than 231 µs)
Data (HexDump) : 0A 10 03 00 0E 00 01 04 E7 00 ..........

--------- Container ID Capability Descriptor ----------
bLength : 0x14 (20 bytes)
bDescriptorType : 0x10 (Device Capability Descriptor)
bDevCapabilityType : 0x04 (Container ID Capability)
bReserved : 0x00
Container ID (UUID) : 6970202D-1E44-4CDE-8F73-78EC5964ECA7
Data (HexDump) : 14 10 04 00 2D 20 70 69 44 1E DE 4C 8F 73 78 EC ....- piD..L.sx.
59 64 EC A7 Yd..

-------------------- 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 : 0x30 (48 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language 0x0409 : "VIA Labs, Inc. " *!*CAUTION trailing space characters
Data (HexDump) : 30 03 56 00 49 00 41 00 20 00 4C 00 61 00 62 00 0.V.I.A. .L.a.b.
73 00 2C 00 20 00 49 00 6E 00 63 00 2E 00 20 00 s.,. .I.n.c... .
20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 . . . . . . . .
------ String Descriptor 2 ------
bLength : 0x30 (48 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language 0x0409 : "USB2.0 Hub " *!*CAUTION trailing space characters
Data (HexDump) : 30 03 55 00 53 00 42 00 32 00 2E 00 30 00 20 00 0.U.S.B.2...0. .
48 00 75 00 62 00 20 00 20 00 20 00 20 00 20 00 H.u.b. . . . . .
20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 . . . . . . . .

And for the Pi Pico:
=========================== USB Port2 ===========================

Connection Status : 0x01 (Device is connected)
Port Chain : 3-2-2
Properties : 0x01

IsUserConnectable : yes
PortIsDebugCapable : no
PortHasMultiCompanions : no
PortConnectorIsTypeC : no
ConnectionIndex : 0x02 (Port 2)
CompanionIndex : 0

CompanionHubSymLnk : USB#VID_2109&PID_8110#5&19813bca&0&19#{f18a0e88-c30c-11d0-8815-00a0c906bed8}
CompanionPortNumber : 0x02 (Port 2)
-> CompanionPortChain : 3-19-2

========================== Summary =========================
Vendor ID : 0x2E8A (Raspberry Pi (Trading) Limited)
Product ID : 0x000A
Manufacturer String : "Raspberry Pi"
Product String : "Pico"
Serial : "E6613852832A8F2B"
USB Version : 2.0 (but 12 Mbit/s FullSpeed only)
Port maximum Speed : High-Speed (Companion Port 3-19-2 is doing the SuperSpeed)
Device maximum Speed : Full-Speed
Device Connection Speed : Full-Speed
Self powered : no
Demanded Current : 250 mA
Used Endpoints : 4

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

+++++++++++++++++ Device Information ++++++++++++++++++
Device Description : USB Composite Device
Device Path : \\?\USB#VID_2E8A&PID_000A#E6613852832A8F2B#{a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE)
Kernel Name : \Device\USBPDO-20
Device ID : USB\VID_2E8A&PID_000A\E6613852832A8F2B
Hardware IDs : USB\VID_2E8A&PID_000A&REV_0100 USB\VID_2E8A&PID_000A
Driver KeyName : {36fc9e60-c465-11cf-8056-444553540000}\0020 (GUID_DEVCLASS_USB)
Driver : \SystemRoot\System32\drivers\usbccgp.sys (Version: 10.0.26100.7019 Date: 2025-11-11 Company: Microsoft Corporation)
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_#0002.Hub_#0005
Address : 2
Location IDs : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(2)#USB(2), ACPI(_SB_)#ACPI(PCI0)#ACPI(XHC_)#ACPI(RHUB)#ACPI(HS02)#USB(2)
Container ID : {615e83ac-dcb2-55c8-aedf-77e739ee2eaa}
Manufacturer Info : (Standard USB Host Controller)
Capabilities : 0x94 (Removable, UniqueID, SurpriseRemovalOK)
Status : 0x0180600A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER)
Problem Code : 0
Address : 2
EnhancedPowerMgmtEnabled : 0
Power State : D0 (supported: D0, D1, D2, D3, wake from D0, wake from D1, wake from D2)

+++++++++++++++++ Registry USB Flags +++++++++++++++++
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\2E8A000A0100

osvc : REG_BINARY 00 00

---------------- Connection Information ---------------
Connection Index : 0x02 (Port 2)
Connection Status : 0x01 (DeviceConnected)
Current Config Value : 0x01 (Configuration 1)
Device Address : 0x3B (59)
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 wMaxPacketSize=0x8 bInterval=16 -> 196 Bits/ms = 24500 Bytes/s
Pipe[1] : EndpointID=1 Direction=OUT ScheduleOffset=0 Type=Bulk wMaxPacketSize=0x40 bInterval=0
Pipe[2] : EndpointID=2 Direction=IN ScheduleOffset=0 Type=Bulk wMaxPacketSize=0x40 bInterval=0
Data (HexDump) : 02 00 00 00 12 01 00 02 EF 02 01 40 8A 2E 0A 00 ...........@....
00 01 02 03 04 01 01 01 00 3B 00 03 00 00 00 01 .........;......
00 00 00 07 05 81 03 08 00 10 00 00 00 00 07 05 ................
01 02 40 00 00 00 00 00 00 07 05 82 02 40 00 00 ..@..........@..
00 00 00 00 ....

--------------- Connection Information V2 -------------
Connection Index : 0x02 (2)
Length : 0x10 (16 bytes)
SupportedUsbProtocols : 0x03

Usb110 : 1 (yes, port supports USB 1.1)
Usb200 : 1 (yes, port supports USB 2.0)
Usb300 : 0 (no, port not supports USB 3.0) -> but Companion Port 3-19-2 does
ReservedMBZ : 0x00
Flags : 0x00

DevIsOpAtSsOrHigher : 0 (Device is not operating at SuperSpeed or higher)
DevIsSsCapOrHigher : 0 (Device is not SuperSpeed capable or higher)
DevIsOpAtSsPlusOrHigher : 0 (Device is not operating at SuperSpeedPlus or higher)
DevIsSsPlusCapOrHigher : 0 (Device is not SuperSpeedPlus capable or higher)
ReservedMBZ : 0x00
Data (HexDump) : 02 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.0) -> but device is Full-Speed only
bDeviceClass : 0xEF (Miscellaneous)
bDeviceSubClass : 0x02
bDeviceProtocol : 0x01 (IAD - Interface Association Descriptor)
bMaxPacketSize0 : 0x40 (64 bytes)
idVendor : 0x2E8A (Raspberry Pi (Trading) Limited)
idProduct : 0x000A
bcdDevice : 0x0100
iManufacturer : 0x02 (String Descriptor 2)

Language 0x0409 : "Raspberry Pi"
iProduct : 0x03 (String Descriptor 3)

Language 0x0409 : "Pico"
iSerialNumber : 0x04 (String Descriptor 4)

Language 0x0409 : "E6613852832A8F2B"
bNumConfigurations : 0x01 (1 Configuration)
Data (HexDump) : 12 01 00 02 EF 02 01 40 8A 2E 0A 00 00 01 02 03 .......@........
04 01 ..

------------------ Configuration Descriptor -------------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x02 (Configuration Descriptor)
wTotalLength : 0x004B (75 bytes)
bNumInterfaces : 0x02 (2 Interfaces)
bConfigurationValue : 0x01 (Configuration 1)
iConfiguration : 0x00 (No String Descriptor)
bmAttributes : 0xA0

D7: Reserved, set 1 : 0x01
D6: Self Powered : 0x00 (no)
D5: Remote Wakeup : 0x01 (yes)
D4..0: Reserved, set 0 : 0x00
MaxPower : 0x7D (250 mA)
Data (HexDump) : 09 02 4B 00 02 01 00 A0 7D 08 0B 00 02 02 02 00 ..K.....}.......
00 09 04 00 00 01 02 02 00 01 05 24 00 20 01 05 ...........$. ..
24 01 00 01 04 24 02 06 05 24 06 00 01 07 05 81 $....$...$......
03 08 00 10 09 04 01 00 02 0A 00 00 00 07 05 01 ................
02 40 00 00 07 05 82 02 40 00 00 .@......@..

------------------- IAD Descriptor --------------------
bLength : 0x08 (8 bytes)
bDescriptorType : 0x0B (Interface Association Descriptor)
bFirstInterface : 0x00 (Interface 0)
bInterfaceCount : 0x02 (2 Interfaces)
bFunctionClass : 0x02 (Communications and CDC Control)
bFunctionSubClass : 0x02
bFunctionProtocol : 0x00
iFunction : 0x00 (No String Descriptor)
Data (HexDump) : 08 0B 00 02 02 02 00 00 ........

---------------- Interface Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x00 (Interface 0)
bAlternateSetting : 0x00
bNumEndpoints : 0x01 (1 Endpoint)
bInterfaceClass : 0x02 (Communications and CDC Control)
bInterfaceSubClass : 0x02 (Abstract Control Model)
bInterfaceProtocol : 0x00 (No class specific protocol required)
iInterface : 0x01 (String Descriptor 1)

Language 0x0409 : "Pico Serial"
Data (HexDump) : 09 04 00 00 01 02 02 00 01 .........

-------------- CDC Interface Descriptor ---------------
bFunctionLength : 0x05 (5 bytes)
bDescriptorType : 0x24 (Interface)
bDescriptorSubType : 0x00 (Header Functional Descriptor)
bcdCDC : 0x120 (CDC Version 1.20)
Data (HexDump) : 05 24 00 20 01 .$. .

-------------- CDC Interface Descriptor ---------------
bFunctionLength : 0x05 (5 bytes)
bDescriptorType : 0x24 (Interface)
bDescriptorSubType : 0x01 (Call Management Functional Descriptor)
bmCapabilities : 0x00

D7..2 : 0x00 (Reserved)
D1 : 0x00 (sends/receives call management information only over the Communication Class interface)
D0 : 0x00 (does not handle call management itself)
bDataInterface : 0x01
Data (HexDump) : 05 24 01 00 01 .$...

-------------- CDC Interface Descriptor ---------------
bFunctionLength : 0x04 (4 bytes)
bDescriptorType : 0x24 (Interface)
bDescriptorSubType : 0x02 (Abstract Control Management Functional Descriptor)
bmCapabilities : 0x06

D7..4 : 0x00 (Reserved)
D3 : 0x00 (not supports the notification Network_Connection)
D2 : 0x01 (supports the request Send_Break)
D1 : 0x01 (supports the request combination of Set_Line_Coding, Set_Control_Line_State, Get_Line_Coding, and the notification Serial_State)
D0 : 0x00 (not supports the request combination of Set_Comm_Feature, Clear_Comm_Feature, and Get_Comm_Feature)
Data (HexDump) : 04 24 02 06 .$..

-------------- CDC Interface Descriptor ---------------
bFunctionLength : 0x05 (5 bytes)
bDescriptorType : 0x24 (Interface)
bDescriptorSubType : 0x06 (Union Functional Descriptor)
bControlInterface : 0x00
bSubordinateInterface[0] : 0x01
Data (HexDump) : 05 24 06 00 01 .$...

----------------- 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 : 0x10 (16 ms)
Data (HexDump) : 07 05 81 03 08 00 10 .......

---------------- Interface Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x01 (Interface 1)
bAlternateSetting : 0x00
bNumEndpoints : 0x02 (2 Endpoints)
bInterfaceClass : 0x0A (CDC-Data)
bInterfaceSubClass : 0x00
bInterfaceProtocol : 0x00
iInterface : 0x00 (No String Descriptor)
Data (HexDump) : 09 04 01 00 02 0A 00 00 00 .........

----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x01 (Direction=OUT EndpointID=1)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x00 (ignored)
Data (HexDump) : 07 05 01 02 40 00 00 ....@..

----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x82 (Direction=IN EndpointID=2)
bmAttributes : 0x02 (TransferType=Bulk)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x00 (ignored)
Data (HexDump) : 07 05 82 02 40 00 00 ....@..

----------------- Device Qualifier Descriptor -----------------
Error : ERROR_GEN_FAILURE (because the device is Full-Speed only)

-------------------- 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 : 0x18 (24 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language 0x0409 : "Pico Serial"
Data (HexDump) : 18 03 50 00 69 00 63 00 6F 00 20 00 53 00 65 00 ..P.i.c.o. .S.e.
72 00 69 00 61 00 6C 00 r.i.a.l.
------ String Descriptor 2 ------
bLength : 0x1A (26 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language 0x0409 : "Raspberry Pi"
Data (HexDump) : 1A 03 52 00 61 00 73 00 70 00 62 00 65 00 72 00 ..R.a.s.p.b.e.r.
72 00 79 00 20 00 50 00 69 00 r.y. .P.i.
------ String Descriptor 3 ------
bLength : 0x0A (10 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language 0x0409 : "Pico"
Data (HexDump) : 0A 03 50 00 69 00 63 00 6F 00 ..P.i.c.o.
------ String Descriptor 4 ------
bLength : 0x22 (34 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language 0x0409 : "E6613852832A8F2B"
Data (HexDump) : 22 03 45 00 36 00 36 00 31 00 33 00 38 00 35 00 ".E.6.6.1.3.8.5.
32 00 38 00 33 00 32 00 41 00 38 00 46 00 32 00 2.8.3.2.A.8.F.2.
42 00 B.

Hope some of that proves helpful...
 
Last edited:
Adding:
Code:
  while(!Serial && (millis() < 5000));
to the PICO sketch eliminated the USB HUB errors (or covered up the real problem)🤨
Here is the complete PICO sketch:
Code:
void setup() {
  while(!Serial && (millis() < 5000));
  pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    delay(100);
}
With this addition to the code all three four port hubs which included a powered HUB worked with out issue.
1 passive Belkin 4 port
1 powered Belkin 4 port
1 NoName stackable passive 4 port
Here is the simple s working sketch:
Code:
void setup() {
  while(!Serial && (millis() < 5000));
  pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    delay(100);
}

and the results for all three HUBs with for ports:
Code:
USBHub control callback
Port Status Cleared, port=4
HUB Callback (member)
status = 2
getstatus, port = 1
USBHub control callback
01 01 01 00
New Port Status
  status=10101  port=1
  state=1
  Device is present:
  Has Power
USBHub control callback
Port Status Cleared, port=1
timer event (20000 us): Debounce Timer, this = 2000CAC0, timer = 2000CDD8
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
  status=101  port=1
  state=2
  Device is present:
  Has Power
timer event (19999 us): Debounce Timer, this = 2000CAC0, timer = 2000CDD8
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
  status=101  port=1
  state=3
  Device is present:
  Has Power
timer event (19999 us): Debounce Timer, this = 2000CAC0, timer = 2000CDD8
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
  status=101  port=1
  state=4
  Device is present:
  Has Power
timer event (19999 us): Debounce Timer, this = 2000CAC0, timer = 2000CDD8
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
  status=101  port=1
  state=5
  Device is present:
  Has Power
timer event (19999 us): Debounce Timer, this = 2000CAC0, timer = 2000CDD8
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
  status=101  port=1
  state=6
  Device is present:
  Has Power
sending reset
send_setreset
USBHub control callback
unhandled setup, message = 40323
timer event (19999 us): Debounce Timer, this = 2000CAC0, timer = 2000CDD8
ports in use bitmask = 0
HUB Callback (member)
status = 2
getstatus, port = 1
USBHub control callback
03 01 10 00
New Port Status
  status=100103  port=1
  state=7
  Device is present:
  Enabled, speed = 12 Mbit/sec
  Has Power
USBHub control callback
unhandled setup, message = 140123
timer event (25000 us): Hello, I'm resettimer, this = 2000CAC0, timer = 2000CDF4
port_doing_reset = 1
PORT_RECOVERY
new_Device: 12 Mbit/sec
new_Pipe
enumeration:
enumeration:
enumeration:
Device Descriptor:
  12 01 00 02 02 02 01 40 8A 2E 0A 00 00 01 01 02 03 01
    VendorID = 2E8A, ProductID = 000A, Version = 0100
    Class/Subclass/Protocol = 2 / 2 / 1
    Number of Configurations = 1
enumeration:
enumeration:
Manufacturer: Raspberry Pi
enumeration:
Product: Pico
enumeration:
Serial Number: E6647C74031E8F2E
enumeration:
Config data length = 75
enumeration:
Configuration Descriptor:
  09 02 4B 00 02 01 00 A0 7D
    NumInterfaces = 2
    ConfigurationValue = 1
  08 0B 00 02 02 02 00 00
    Interface Association = 0 through 1
    Class / Subclass / Protocol = 2 / 2 / 0
  09 04 00 00 01 02 02 00 04
    Interface = 0
    Number of endpoints = 1
    Class/Subclass/Protocol = 2 / 2 / 0
  05 24 00 20 01
  05 24 01 00 01
  04 24 02 06
  05 24 06 00 01
  07 05 81 03 08 00 10
    Endpoint = 1 IN
    Type = Interrupt
    Max Size = 8
    Polling Interval = 16
  09 04 01 00 02 0A 00 00 00
    Interface = 1
    Number of endpoints = 2
    Class/Subclass/Protocol = 10 / 0 / 0
  07 05 02 02 40 00 00
    Endpoint = 2 OUT
    Type = Bulk
    Max Size = 64
    Polling Interval = 0
  07 05 82 02 40 00 00
    Endpoint = 2 IN
    Type = Bulk
    Max Size = 64
    Polling Interval = 0
enumeration:
USBHub memory usage = 960
USBHub claim_device this=2000CE80
HIDParser claim this=2000A680
HIDParser claim this=2000ADC0
HIDParser claim this=2000B500
HIDParser claim this=2000BC40
HIDParser claim this=2000C380
Descriptor 11 = IAD
Descriptor 4 = INTERFACE
HIDParser claim this=2000A680
HIDParser claim this=2000ADC0
HIDParser claim this=2000B500
HIDParser claim this=2000BC40
HIDParser claim this=2000C380
Descriptor 36 =  ???
Descriptor 36 =  ???
Descriptor 36 =  ???
Descriptor 36 =  ???
Descriptor 5 = ENDPOINT
Descriptor 4 = INTERFACE
HIDParser claim this=2000A680
HIDParser claim this=2000ADC0
HIDParser claim this=2000B500
HIDParser claim this=2000BC40
HIDParser claim this=2000C380
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
The only things I can see as a possible error is these to lines:
Code:
unhandled setup, message = 40323
unhandled setup, message = 140123
I have no idea what that meens :unsure:
 
Last edited:
Yep, Added 3 for a total of four. That did not fix the problem.
Code:
#include "USBHost_t36.h"
USBHost myusb;
USBHub hub1(myusb);
USBHub hub2(myusb);
USBSerial userial(myusb);
void setup()
{
    pinMode(LED_BUILTIN, OUTPUT);
    myusb.begin();
}
void loop()
{
    myusb.Task(); // commenting this out does not change crash behaviour
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    delay(100);
}
Then tried just 2...
 
@h4yn0nnym0u5e - I think I see your confusion. The tests above were performed using the HIDDeviceInfo sketch and print output to Serial1.
Using the Teensy sketch above with the output to Serial the results are the same except USBSerial is detected and shows up in the output like:
Code:
port change: 10001803
    connect
  begin reset
port change: 18001205
  port enabled
  end recovery
new_Device: 480 Mbit/sec
new_Pipe
enumeration:
enumeration:
enumeration:
Device Descriptor:
  12 01 00 02 09 00 01 40 E3 05 08 06 63 77 00 01 00 01
    VendorID = 05E3, ProductID = 0608, Version = 7763
    Class/Subclass/Protocol = 9(Hub) / 0 / 1(Single-TT)
    Number of Configurations = 1
enumeration:
enumeration:
Product: USB2.0 Hub
enumeration:
Config data length = 25
enumeration:
Configuration Descriptor:
  09 02 19 00 01 01 00 E0 32
    NumInterfaces = 1
    ConfigurationValue = 1
  09 04 00 00 01 09 00 00 00
    Interface = 0
    Number of endpoints = 1
    Class/Subclass/Protocol = 9(Hub) / 0 / 0
  07 05 81 03 01 00 0C
    Endpoint = 1 IN
    Type = Interrupt
    Max Size = 1
    Polling Interval = 12
enumeration:
USBHub memory usage = 960
USBHub claim_device this=20003220
found possible interface, altsetting=0
number of interfaces found = 1
USBHub control callback
09 29 04 E0 00 32 64 00 FF 00 00 00 00 00 00 00
Hub ports = 4
USBHub control callback
USBHub control callback
USBHub control callback
USBHub control callback
power turned on to all ports
device addr = 7
new_Pipe
allocate_interrupt_pipe_bandwidth
  ep interval = 12
  interval = 256
 best_bandwidth = 2, at offset = 0
pipe cap1 = F0012107
HUB Callback (member)
status = 2
getstatus, port = 1
USBHub control callback
01 01 01 00
New Port Status
  status=10101  port=1
  state=0
  Device is present:
  Has Power
USBHub control callback
Port Status Cleared, port=1
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
  status=101  port=1
  state=2
  Device is present:
  Has Power
timer event (19998 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
  status=101  port=1
  state=3
  Device is present:
  Has Power
timer event (19998 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
  status=101  port=1
  state=4
  Device is present:
  Has Power
timer event (19998 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
  status=101  port=1
  state=5
  Device is present:
  Has Power
timer event (19998 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
  status=101  port=1
  state=6
  Device is present:
  Has Power
sending reset
send_setreset
USBHub control callback
unhandled setup, message = 40323
timer event (19998 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 0
HUB Callback (member)
status = 2
getstatus, port = 1
USBHub control callback
03 01 10 00
New Port Status
  status=100103  port=1
  state=7
  Device is present:
  Enabled, speed = 12 Mbit/sec
  Has Power
USBHub control callback
unhandled setup, message = 140123
timer event (24999 us): Hello, I'm resettimer, this = 20003220, timer = 20003554
port_doing_reset = 1
PORT_RECOVERY
new_Device: 12 Mbit/sec
new_Pipe
enumeration:
enumeration:
enumeration:
Device Descriptor:
  12 01 00 02 02 02 01 40 8A 2E 0A 00 00 01 01 02 03 01
    VendorID = 2E8A, ProductID = 000A, Version = 0100
    Class/Subclass/Protocol = 2 / 2 / 1
    Number of Configurations = 1
enumeration:
enumeration:
Manufacturer: Raspberry Pi
enumeration:
Product: Pico
enumeration:
Serial Number: E6647C74031E8F2E
enumeration:
Config data length = 75
enumeration:
Configuration Descriptor:
  09 02 4B 00 02 01 00 A0 7D
    NumInterfaces = 2
    ConfigurationValue = 1
  08 0B 00 02 02 02 00 00
    Interface Association = 0 through 1
    Class / Subclass / Protocol = 2 / 2 / 0
  09 04 00 00 01 02 02 00 04
    Interface = 0
    Number of endpoints = 1
    Class/Subclass/Protocol = 2 / 2 / 0
  05 24 00 20 01
  05 24 01 00 01
  04 24 02 06
  05 24 06 00 01
  07 05 81 03 08 00 10
    Endpoint = 1 IN
    Type = Interrupt
    Max Size = 8
    Polling Interval = 16
  09 04 01 00 02 0A 00 00 00
    Interface = 1
    Number of endpoints = 2
    Class/Subclass/Protocol = 10 / 0 / 0
  07 05 02 02 40 00 00
    Endpoint = 2 OUT
    Type = Bulk
    Max Size = 64
    Polling Interval = 0
  07 05 82 02 40 00 00
    Endpoint = 2 IN
    Type = Bulk
    Max Size = 64
    Polling Interval = 0
enumeration:
USBSerial(64)claim this=20003B20
vid=2E8A, pid=A, bDeviceClass = 2, bDeviceSubClass = 2, bDeviceProtocol = 1
08 0B 00 02 02 02 00 00 09 04 00 00 01 02 02 00 04 05 24 00 20 01 05 24 01 00 01 04 24 02 06 05 24 06 00 01 07 05 81 03 08 00 10 09 04 01 00 02 0A 00 00 00 07 05 02 02 40 00 00 07 05 82 02 40 00 00
USBHub memory usage = 960
USBHub claim_device this=200035E0
Descriptor 11 = IAD
Descriptor 4 = INTERFACE
USBSerial(64)claim this=20003B20
vid=2E8A, pid=A, bDeviceClass = 2, bDeviceSubClass = 2, bDeviceProtocol = 1
09 04 00 00 01 02 02 00 04 05 24 00 20 01 05 24 01 00 01 04 24 02 06 05 24 06 00 01 07 05 81 03 08 00 10 09 04 01 00 02 0A 00 00 00 07 05 02 02 40 00 00 07 05 82 02 40 00 00
Descriptor 36 =  ???
Descriptor 36 =  ???
Descriptor 36 =  ???
Descriptor 36 =  ???
Descriptor 5 = ENDPOINT
Descriptor 4 = INTERFACE
USBSerial(64)claim this=20003B20
vid=2E8A, pid=A, bDeviceClass = 2, bDeviceSubClass = 2, bDeviceProtocol = 1
09 04 01 00 02 0A 00 00 00 07 05 02 02 40 00 00 07 05 82 02 40 00 00
len = 23
USBSerial, rxep=2(64), txep=2(64)
  rx buffer size:196
  tx buffer size:196
new_Pipe
new_Pipe
Control - CDCACM LINE_CODING
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
control callback (serial) 4
Control - 0x21,0x22, 0x3
control callback (serial) 0
This is with the problem port #1
NOTE: As for "Descriptor 36 = ???", ME TOO...
 
Hmmm ... still having problems here. I've updated the Pico code, but I'm finding the Teensy crashes if everything is plugged in at boot time, but not if booted with the hub only, and I add the Pico later. The logs are lightly annotated, plus I've put in a Serial wait and reminder line which says how many USBHub objects I compiled in. Comparing our logs, I don't think it matters if we use OP's test code or HIDDeviceInfo; I'm prepared to be shown to be wrong, though...

Crash log with all plugged in at boot:
Code:
Crash with everything plugged in at boot
========================================
08:29:17.314 -> USB2 PLL running
08:29:17.314 ->  reset waited 6
08:29:17.314 -> USBHS_ASYNCLISTADDR = 0
08:29:17.314 -> USBHS_PERIODICLISTBASE = 20003000
08:29:17.314 -> periodictable = 20003000
08:29:17.314 ->
08:29:17.314 ->  ***** 2 USBHub objects *****
08:29:17.314 ->
08:29:18.634 -> port change: 10001803
08:29:18.634 ->     connect
08:29:18.729 ->   begin reset
08:29:18.777 -> port change: 18001205
08:29:18.777 ->   port enabled
08:29:18.777 ->   end recovery
08:29:18.777 -> new_Device: 480 Mbit/sec
08:29:18.777 -> new_Pipe
08:29:18.777 -> enumeration:
08:29:18.777 -> enumeration:
08:29:18.777 -> enumeration:
08:29:18.777 -> Device Descriptor:
08:29:18.777 ->   12 01 10 02 09 00 01 40 09 21 11 28 70 90 01 02 00 01
08:29:18.777 ->     VendorID = 2109, ProductID = 2811, Version = 9070
08:29:18.777 ->     Class/Subclass/Protocol = 9(Hub) / 0 / 1(Single-TT)
08:29:18.777 ->     Number of Configurations = 1
08:29:18.777 -> enumeration:
08:29:18.777 -> enumeration:
08:29:18.777 -> Manufacturer: VIA Labs, Inc.         
08:29:18.777 -> enumeration:
08:29:18.777 -> Product: USB2.0 Hub             
08:29:18.777 -> enumeration:
08:29:18.777 -> Config data length = 25
08:29:18.777 -> enumeration:
08:29:18.777 -> Configuration Descriptor:
08:29:18.777 ->   09 02 19 00 01 01 00 E0 00
08:29:18.777 ->     NumInterfaces = 1
08:29:18.777 ->     ConfigurationValue = 1
08:29:18.777 ->   09 04 00 00 01 09 00 00 00
08:29:18.777 ->     Interface = 0
08:29:18.777 ->     Number of endpoints = 1
08:29:18.777 ->     Class/Subclass/Protocol = 9(Hub) / 0 / 0
08:29:18.777 ->   07 05 81 03 01 00 0C
08:29:18.777 ->     Endpoint = 1 IN
08:29:18.777 ->     Type = Interrupt
08:29:18.777 ->     Max Size = 1
08:29:18.777 ->     Polling Interval = 12
08:29:18.777 -> enumeration:
08:29:18.777 -> USBHub memory usage = 960
08:29:18.777 -> USBHub claim_device this=20003220
08:29:18.777 -> found possible interface, altsetting=0
08:29:18.777 -> number of interfaces found = 1
08:29:18.777 -> USBHub control callback
08:29:18.777 -> 09 29 04 E9 01 32 64 00 FF 00 00 00 00 00 00 00
08:29:18.777 -> Hub ports = 4
08:29:18.777 -> USBHub control callback
08:29:18.777 -> USBHub control callback
08:29:18.777 -> USBHub control callback
08:29:18.777 -> USBHub control callback
08:29:18.777 -> power turned on to all ports
08:29:18.777 -> device addr = 1
08:29:18.777 -> new_Pipe
08:29:18.777 -> allocate_interrupt_pipe_bandwidth
08:29:18.777 ->   ep interval = 12
08:29:18.777 ->   interval = 256
08:29:18.777 ->  best_bandwidth = 2, at offset = 0
08:29:18.777 -> pipe cap1 = F0012101
08:29:18.920 -> HUB Callback (member)
08:29:18.920 -> status = 4
08:29:18.920 -> getstatus, port = 2
08:29:18.920 -> USBHub control callback
08:29:18.920 -> 01 01 01 00
08:29:18.920 -> New Port Status
08:29:18.920 ->   status=10101  port=2
08:29:18.920 ->   state=0
08:29:18.920 ->   Device is present:
08:29:18.920 ->   Has Power
08:29:18.920 -> USBHub control callback
08:29:18.920 -> Port Status Cleared, port=2
08:29:18.968 -> timer event (20000 us): Debounce Timer, this = 20003220, timer = 20003538
08:29:18.968 -> ports in use bitmask = 4
08:29:18.968 -> getstatus, port = 2
08:29:18.968 -> USBHub control callback
08:29:18.968 -> 01 01 00 00
08:29:18.968 -> New Port Status
08:29:18.968 ->   status=101  port=2
08:29:18.968 ->   state=2
08:29:18.968 ->   Device is present:
08:29:18.968 ->   Has Power
08:29:18.968 -> timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
08:29:18.968 -> ports in use bitmask = 4
08:29:18.968 -> getstatus, port = 2
08:29:18.968 -> USBHub control callback
08:29:18.968 -> 01 01 00 00
08:29:18.968 -> New Port Status
08:29:18.968 ->   status=101  port=2
08:29:18.968 ->   state=3
08:29:18.968 ->   Device is present:
08:29:18.968 ->   Has Power
08:29:18.968 -> timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
08:29:18.968 -> ports in use bitmask = 4
08:29:18.968 -> getstatus, port = 2
08:29:18.968 -> USBHub control callback
08:29:18.968 -> 01 01 00 00
08:29:18.968 -> New Port Status
08:29:18.968 ->   status=101  port=2
08:29:18.968 ->   state=4
08:29:18.968 ->   Device is present:
08:29:18.968 ->   Has Power
08:29:19.015 -> timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
08:29:19.015 -> ports in use bitmask = 4
08:29:19.015 -> getstatus, port = 2
08:29:19.015 -> USBHub control callback
08:29:19.015 -> 01 01 00 00
08:29:19.015 -> New Port Status
08:29:19.015 ->   status=101  port=2
08:29:19.015 ->   state=5
08:29:19.015 ->   Device is present:
08:29:19.015 ->   Has Power
08:29:19.015 -> timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
08:29:19.015 -> ports in use bitmask = 4
08:29:19.015 -> getstatus, port = 2
08:29:19.015 -> USBHub control callback
08:29:19.015 -> 01 01 00 00
08:29:19.015 -> New Port Status
08:29:19.015 ->   status=101  port=2
08:29:19.015 ->   state=6
08:29:19.015 ->   Device is present:
08:29:19.015 ->   Has Power
08:29:19.015 -> sending reset
08:29:19.015 -> send_setreset
08:29:19.063 -> USBHub control callback
08:29:19.063 -> unhandled setup, message = 40323
08:29:19.063 -> timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
08:29:19.063 -> ports in use bitmask = 0
08:29:19.063 -> HUB Callback (member)
08:29:19.063 -> status = 4
08:29:19.063 -> getstatus, port = 2
08:29:19.063 -> USBHub control callback
08:29:19.063 -> 03 01 10 00
08:29:19.063 -> New Port Status
08:29:19.063 ->   status=100103  port=2
08:29:19.063 ->   state=7
08:29:19.063 ->   Device is present:
08:29:19.063 ->   Enabled, speed = 12 Mbit/sec
08:29:19.063 ->   Has Power
08:29:19.063 -> USBHub control callback
08:29:19.063 -> unhandled setup, message = 140123
08:29:19.063 -> timer event (24999 us): Hello, I'm resettimer, this = 20003220, timer = 20003554
08:29:19.063 -> port_doing_reset = 2
08:29:19.063 -> PORT_RECOVERY
08:29:19.063 -> new_Device: 12 Mbit/sec
08:29:19.063 -> new_Pipe
08:29:19.063 -> enumeration:
08:29:19.063 -> enumeration:
08:29:19.063 -> enumeration:
08:29:19.063 -> Device Descriptor:
08:29:19.063 ->   12 01 00 02 EF 02 01 40 8A 2E 0A 00 00 01 02 03 04 01
08:29:19.063 ->     VendorID = 2E8A, ProductID = 000A, Version = 0100
08:29:19.063 ->     Class/Subclass/Protocol = 239 / 2 / 1
08:29:19.063 ->     Number of Configurations = 1
08:29:19.063 -> enumeration:
08:29:19.063 -> enumeration:
08:29:19.063 -> Manufacturer: Raspberry Pi
08:29:19.063 -> enumeration:
08:29:19.063 -> Product: Pico
08:29:19.063 -> enumeration:
08:29:19.063 -> Serial Number: E6613852832A8F2B
08:29:19.063 -> enumeration:
08:29:19.063 -> Config data length = 75
08:29:19.063 -> enumeration:
08:29:19.063 -> Configuration Descriptor:
08:29:19.063 ->   09 02 4B 00 02 01 00 A0 7D
08:29:19.063 ->     NumInterfaces = 2
08:29:19.063 ->     ConfigurationValue = 1
08:29:19.063 ->   08 0B 00 02 02 02 00 00
08:29:19.063 ->     Interface Association = 0 through 1
08:29:19.063 ->     Class / Subclass / Protocol = 2 / 2 / 0
08:29:19.063 ->   09 04 00 00 01 02 02 00 01
08:29:19.063 ->     Interface = 0
08:29:19.063 ->     Number of endpoints = 1
08:29:19.063 ->     Class/Subclass/Protocol = 2 / 2 / 0
08:29:19.063 ->   05 24 00 20 01
08:29:19.063 ->   05 24 01 00 01
08:29:19.063 ->   04 24 02 06
08:29:19.063 ->   05 24 06 00 01
08:29:19.063 ->   07 05 81 03 08 00 10
08:29:19.063 ->     Endpoint = 1 IN
08:29:19.063 ->     Type = Interrupt
08:29:19.063 ->     Max Size = 8
08:29:19.063 ->     Polling Interval = 16
08:29:19.063 ->   09 04 01 00 02 0A 00 00 00
08:29:19.063 ->     Interface = 1
08:29:19.063 ->     Number of endpoints = 2
08:29:19.063 ->     Class/Subclass/Protocol = 10 / 0 / 0
08:29:19.063 ->   07 05 01 02 40 00 00
08:29:19.063 ->     Endpoint = 1 OUT
08:29:19.063 ->     Type = Bulk
08:29:19.063 ->     Max Size = 64
08:29:19.063 ->     Polling Interval = 0
08:29:19.063 ->   07 05 82 02 40 00 00
08:29:19.063 ->     Endpoint = 2 IN
08:29:19.063 ->     Type = Bulk
08:29:19.063 ->     Max Size = 64
08:29:19.063 ->     Polling Interval = 0
08:29:19.873 -> enumeration:
08:29:19.873 -> USBHub memory usage = 960
08:29:19.873 -> USBHub claim_device this=200035E0
08:29:19.873 -> USBSerial(64)claim this=20003B20
08:29:19.873 -> vid=2E8A, pid=A, bDeviceClass = 239, bDeviceSubClass = 2, bDeviceProtocol = 1
08:29:19.873 -> 08 0B 00 02 02 02 00 00 09 04 00 00 01 02 02 00 01 05 24 00 20 01 05 24 01 00 01 04 24 02 06 05 24 06 00 01 07 05 81 03 08 00 10 09 04 01 00 02 0A 00 00 00 07 05 01 02 40 00 00 07 05 82 02 40 00 00
08:29:19.873 -> Descriptor 11 = IAD
08:29:19.873 -> Descriptor 4 = INTERFACE
08:29:19.873 -> USBSerial(64)claim this=20003B20
08:29:19.873 -> vid=2E8A, pid=A, bDeviceClass = 239, bDeviceSubClass = 2, bDeviceProtocol = 1
08:29:19.873 -> 09 04 00 00 01 02 02 00 01 05 24 00 20 01 05 24 01 00 01 04 24 02 06 05 24 06 00 01 07 05 81 03 08 00 10 09 04 01 00 02 0A 00 00 00 07 05 01 02 40 00 00 07 05 82 02 40 00 00
08:29:19.873 -> Descriptor 36 =  ???
08:29:19.873 -> Descriptor 36 =  ???
08:29:19.873 -> Descriptor 36 =  ???
08:29:19.873 -> Descriptor 36 =  ???
08:29:19.873 -> Descriptor 5 = ENDPOINT
08:29:19.873 -> Descriptor 4 = INTERFACE
08:29:19.873 -> USBSerial(64)claim this=20003B20
08:29:19.873 -> vid=2E8A, pid=A, bDeviceClass = 239, bDeviceSubClass = 2, bDeviceProtocol = 1
08:29:19.873 -> 09 04 01 00 02 0A 00 00 00 07 05 01 02 40 00 00 07 05 82 02 40 00 00
08:29:19.873 -> len = 23
08:29:19.873 -> USBSerial, rxep=2(64), txep=1(64)
08:29:19.873 ->   rx buffer size:196
08:29:19.873 ->   tx buffer size:196
08:29:19.873 -> new_Pipe
08:29:19.873 -> new_Pipe
08:29:19.873 -> Control - CDCACM LINE_CODING
08:29:19.873 -> Descriptor 5 = ENDPOINT
08:29:19.873 -> Descriptor 5 = ENDPOINT

*** logs diverge from here on ***

08:29:19.873 -> HUB Callback (member)
08:29:19.873 -> status = 4
08:29:19.873 -> getstatus, port = 2
08:29:19.873 -> ERROR Followup
08:29:19.873 ->     remain on followup list
08:29:19.873 ->     remain on followup list
08:29:19.873 ->     remain on followup list
08:29:19.873 ->     remove from followup list
08:29:19.873 ->     remain on followup list
08:29:19.873 ->     remain on followup list
08:29:19.873 ->     remain on followup list
08:29:19.873 -> USBHub control callback
08:29:19.873 -> 00 01 01 00
08:29:19.873 -> New Port Status
08:29:19.873 ->   status=10100  port=2
08:29:19.873 ->   state=9
08:29:19.873 ->   Has Power
08:29:19.873 -> disconnect_Device:
08:29:19.873 -> USBDriver (available_drivers) list: 200035E0
08:29:19.873 -> USBDriver (dev->drivers) list: 20003B20
08:29:19.873 -> disconnect driver 20003B20
08:29:19.873 -> USBDriver (available_drivers) list: 20003B20 -> 200035E0
08:29:19.873 -> delete_Pipe 20003B40
08:29:19.873 ->   remove QH from async schedule
08:29:19.873 ->   Free transfers
08:29:19.873 ->     * 536886368
08:29:19.873 ->     * 536886432
08:29:19.873 ->     * 536885376
08:29:19.873 ->     * 536883552 * remove * defer free until QH
08:29:19.873 ->     * 536886624 * remove * defer free until QH
08:29:19.873 ->   Free transfers attached to QH
08:29:19.873 ->     * 536883552
08:29:19.873 ->     * 536886624
08:29:19.873 ->     * 536885184
08:29:19.873 -> * Delete Pipe completed
08:29:19.873 -> delete_Pipe 20003760
08:29:19.873 ->   remove QH from async schedule
08:29:19.873 ->   Free transfers
08:29:19.873 ->     * 536886368
08:29:19.873 ->     * 536886432
08:29:19.873 ->     * 536885376
08:29:19.873 ->   Free transfers attached to QH
08:29:19.873 ->     * 536886752
08:29:19.873 -> * Delete Pipe completed
08:29:19.873 -> delete_Pipe 20003BA0
08:29:19.873 ->   remove QH from async schedule
08:29:19.873 ->   Free transfers
08:29:19.873 ->     * 536886368
08:29:19.873 ->     * 536886432 * remove * defer free until QH
08:29:19.873 ->     * 536885376
08:29:19.873 ->   Free transfers attached to QH
08:29:19.873 ->     * 536886368
08:29:19.873 ->     * 536886432
08:29:19.873 ->     * 536886496
08:29:19.873 -> * Delete Pipe completed
08:29:19.873 -> removed Device_t from devlist
08:29:19.873 -> ERROR Followup
08:29:19.873 ->     remain on followup list
08:29:19.873 ->     remain on followup list
08:29:19.873 ->     remain on followup list
08:29:19.873 -> USBHub control callback
08:29:19.873 -> Port Status Cleared, port=2
08:29:21.399 -> HUB Callback (member)
08:29:21.399 -> status = 4
08:29:21.399 -> getstatus, port = 2
08:29:21.399 -> USBHub control callback
08:29:21.399 -> 01 01 01 00
08:29:21.399 -> New Port Status
08:29:21.399 ->   status=10101  port=2
08:29:21.399 ->   state=1
08:29:21.399 ->   Device is present:
08:29:21.399 ->   Has Power
08:29:21.399 -> USBHub control callback
08:29:21.399 -> Port Status Cleared, port=2
08:29:21.399 -> timer event (20000 us): Debounce Timer, this = 20003220, timer = 20003538
08:29:21.399 -> ports in use bitmask = 4
08:29:21.399 -> getstatus, port = 2
08:29:21.399 -> USBHub control callback
08:29:21.399 -> 01 01 01 00
08:29:21.399 -> New Port Status
08:29:21.399 ->   status=10101  port=2
08:29:21.399 ->   state=2
08:29:21.399 ->   Device is present:
08:29:21.399 ->   Has Power
08:29:21.447 -> HUB Callback (member)
08:29:21.447 -> status = 4
08:29:21.447 -> getstatus, port = 2

No crash, Pico plugged in after hub enumerates:
Code:
OK with Pico plugged in after boot
==================================

08:31:39.377 -> USB2 PLL running
08:31:39.377 ->  reset waited 6
08:31:39.377 -> USBHS_ASYNCLISTADDR = 0
08:31:39.377 -> USBHS_PERIODICLISTBASE = 20003000
08:31:39.377 -> periodictable = 20003000
08:31:39.377 ->
08:31:39.377 ->  ***** 2 USBHub objects *****
08:31:39.377 ->
08:31:40.665 -> port change: 10001803
08:31:40.665 ->     connect
08:31:40.761 ->   begin reset
08:31:40.857 -> port change: 18001205
08:31:40.857 ->   port enabled
08:31:40.857 ->   end recovery
08:31:40.857 -> new_Device: 480 Mbit/sec
08:31:40.857 -> new_Pipe
08:31:40.857 -> enumeration:
08:31:40.857 -> enumeration:
08:31:40.857 -> enumeration:
08:31:40.857 -> Device Descriptor:
08:31:40.857 ->   12 01 10 02 09 00 01 40 09 21 11 28 70 90 01 02 00 01
08:31:40.857 ->     VendorID = 2109, ProductID = 2811, Version = 9070
08:31:40.857 ->     Class/Subclass/Protocol = 9(Hub) / 0 / 1(Single-TT)
08:31:40.857 ->     Number of Configurations = 1
08:31:40.857 -> enumeration:
08:31:40.857 -> enumeration:
08:31:40.857 -> Manufacturer: VIA Labs, Inc.         
08:31:40.857 -> enumeration:
08:31:40.857 -> Product: USB2.0 Hub             
08:31:40.857 -> enumeration:
08:31:40.857 -> Config data length = 25
08:31:40.857 -> enumeration:
08:31:40.857 -> Configuration Descriptor:
08:31:40.857 ->   09 02 19 00 01 01 00 E0 00
08:31:40.857 ->     NumInterfaces = 1
08:31:40.857 ->     ConfigurationValue = 1
08:31:40.857 ->   09 04 00 00 01 09 00 00 00
08:31:40.857 ->     Interface = 0
08:31:40.857 ->     Number of endpoints = 1
08:31:40.857 ->     Class/Subclass/Protocol = 9(Hub) / 0 / 0
08:31:40.857 ->   07 05 81 03 01 00 0C
08:31:40.857 ->     Endpoint = 1 IN
08:31:40.857 ->     Type = Interrupt
08:31:40.857 ->     Max Size = 1
08:31:40.857 ->     Polling Interval = 12
08:31:40.857 -> enumeration:
08:31:40.857 -> USBHub memory usage = 960
08:31:40.857 -> USBHub claim_device this=20003220
08:31:40.857 -> found possible interface, altsetting=0
08:31:40.857 -> number of interfaces found = 1
08:31:40.857 -> USBHub control callback
08:31:40.857 -> 09 29 04 E9 01 32 64 00 FF 00 00 00 00 00 00 00
08:31:40.857 -> Hub ports = 4
08:31:40.857 -> USBHub control callback
08:31:40.857 -> USBHub control callback
08:31:40.857 -> USBHub control callback
08:31:40.857 -> USBHub control callback
08:31:40.857 -> power turned on to all ports
08:31:40.857 -> device addr = 1
08:31:40.857 -> new_Pipe
08:31:40.857 -> allocate_interrupt_pipe_bandwidth
08:31:40.857 ->   ep interval = 12
08:31:40.857 ->   interval = 256
08:31:40.857 ->  best_bandwidth = 2, at offset = 0
08:31:40.857 -> pipe cap1 = F0012101

***** Pico plugged in *****

08:31:46.154 -> HUB Callback (member)
08:31:46.154 -> status = 4
08:31:46.154 -> getstatus, port = 2
08:31:46.154 -> USBHub control callback
08:31:46.154 -> 01 01 01 00
08:31:46.154 -> New Port Status
08:31:46.154 ->   status=10101  port=2
08:31:46.154 ->   state=0
08:31:46.154 ->   Device is present:
08:31:46.154 ->   Has Power
08:31:46.154 -> USBHub control callback
08:31:46.154 -> Port Status Cleared, port=2
08:31:46.154 -> timer event (20000 us): Debounce Timer, this = 20003220, timer = 20003538
08:31:46.154 -> ports in use bitmask = 4
08:31:46.154 -> getstatus, port = 2
08:31:46.154 -> USBHub control callback
08:31:46.154 -> 01 01 00 00
08:31:46.154 -> New Port Status
08:31:46.154 ->   status=101  port=2
08:31:46.154 ->   state=2
08:31:46.154 ->   Device is present:
08:31:46.154 ->   Has Power
08:31:46.202 -> timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
08:31:46.202 -> ports in use bitmask = 4
08:31:46.202 -> getstatus, port = 2
08:31:46.202 -> USBHub control callback
08:31:46.202 -> 01 01 00 00
08:31:46.202 -> New Port Status
08:31:46.202 ->   status=101  port=2
08:31:46.202 ->   state=3
08:31:46.202 ->   Device is present:
08:31:46.202 ->   Has Power
08:31:46.202 -> timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
08:31:46.202 -> ports in use bitmask = 4
08:31:46.202 -> getstatus, port = 2
08:31:46.202 -> USBHub control callback
08:31:46.202 -> 01 01 00 00
08:31:46.202 -> New Port Status
08:31:46.202 ->   status=101  port=2
08:31:46.202 ->   state=4
08:31:46.202 ->   Device is present:
08:31:46.202 ->   Has Power
08:31:46.202 -> timer event (20000 us): Debounce Timer, this = 20003220, timer = 20003538
08:31:46.202 -> ports in use bitmask = 4
08:31:46.202 -> getstatus, port = 2
08:31:46.202 -> USBHub control callback
08:31:46.202 -> 01 01 00 00
08:31:46.202 -> New Port Status
08:31:46.202 ->   status=101  port=2
08:31:46.202 ->   state=5
08:31:46.202 ->   Device is present:
08:31:46.202 ->   Has Power
08:31:46.249 -> timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
08:31:46.249 -> ports in use bitmask = 4
08:31:46.249 -> getstatus, port = 2
08:31:46.249 -> USBHub control callback
08:31:46.249 -> 01 01 00 00
08:31:46.249 -> New Port Status
08:31:46.249 ->   status=101  port=2
08:31:46.249 ->   state=6
08:31:46.249 ->   Device is present:
08:31:46.249 ->   Has Power
08:31:46.249 -> sending reset
08:31:46.249 -> send_setreset
08:31:46.249 -> USBHub control callback
08:31:46.249 -> unhandled setup, message = 40323
08:31:46.249 -> timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
08:31:46.249 -> ports in use bitmask = 0
08:31:46.249 -> HUB Callback (member)
08:31:46.249 -> status = 4
08:31:46.249 -> getstatus, port = 2
08:31:46.249 -> USBHub control callback
08:31:46.249 -> 03 01 10 00
08:31:46.249 -> New Port Status
08:31:46.249 ->   status=100103  port=2
08:31:46.249 ->   state=7
08:31:46.249 ->   Device is present:
08:31:46.249 ->   Enabled, speed = 12 Mbit/sec
08:31:46.249 ->   Has Power
08:31:46.249 -> USBHub control callback
08:31:46.249 -> unhandled setup, message = 140123
08:31:46.297 -> timer event (24999 us): Hello, I'm resettimer, this = 20003220, timer = 20003554
08:31:46.297 -> port_doing_reset = 2
08:31:46.297 -> PORT_RECOVERY
08:31:46.297 -> new_Device: 12 Mbit/sec
08:31:46.297 -> new_Pipe
08:31:46.297 -> enumeration:
08:31:46.297 -> enumeration:
08:31:46.297 -> enumeration:
08:31:46.297 -> Device Descriptor:
08:31:46.297 ->   12 01 00 02 EF 02 01 40 8A 2E 0A 00 00 01 02 03 04 01
08:31:46.297 ->     VendorID = 2E8A, ProductID = 000A, Version = 0100
08:31:46.297 ->     Class/Subclass/Protocol = 239 / 2 / 1
08:31:46.297 ->     Number of Configurations = 1
08:31:46.297 -> enumeration:
08:31:46.297 -> enumeration:
08:31:46.297 -> Manufacturer: Raspberry Pi
08:31:46.297 -> enumeration:
08:31:46.297 -> Product: Pico
08:31:46.297 -> enumeration:
08:31:46.297 -> Serial Number: E6613852832A8F2B
08:31:46.297 -> enumeration:
08:31:46.297 -> Config data length = 75
08:31:46.297 -> enumeration:
08:31:46.297 -> Configuration Descriptor:
08:31:46.297 ->   09 02 4B 00 02 01 00 A0 7D
08:31:46.297 ->     NumInterfaces = 2
08:31:46.297 ->     ConfigurationValue = 1
08:31:46.297 ->   08 0B 00 02 02 02 00 00
08:31:46.297 ->     Interface Association = 0 through 1
08:31:46.297 ->     Class / Subclass / Protocol = 2 / 2 / 0
08:31:46.297 ->   09 04 00 00 01 02 02 00 01
08:31:46.297 ->     Interface = 0
08:31:46.297 ->     Number of endpoints = 1
08:31:46.297 ->     Class/Subclass/Protocol = 2 / 2 / 0
08:31:46.297 ->   05 24 00 20 01
08:31:46.297 ->   05 24 01 00 01
08:31:46.297 ->   04 24 02 06
08:31:46.297 ->   05 24 06 00 01
08:31:46.297 ->   07 05 81 03 08 00 10
08:31:46.297 ->     Endpoint = 1 IN
08:31:46.297 ->     Type = Interrupt
08:31:46.297 ->     Max Size = 8
08:31:46.297 ->     Polling Interval = 16
08:31:46.297 ->   09 04 01 00 02 0A 00 00 00
08:31:46.297 ->     Interface = 1
08:31:46.297 ->     Number of endpoints = 2
08:31:46.297 ->     Class/Subclass/Protocol = 10 / 0 / 0
08:31:46.297 ->   07 05 01 02 40 00 00
08:31:46.297 ->     Endpoint = 1 OUT
08:31:46.297 ->     Type = Bulk
08:31:46.297 ->     Max Size = 64
08:31:46.297 ->     Polling Interval = 0
08:31:46.297 ->   07 05 82 02 40 00 00
08:31:46.297 ->     Endpoint = 2 IN
08:31:46.297 ->     Type = Bulk
08:31:46.297 ->     Max Size = 64
08:31:46.297 ->     Polling Interval = 0
08:31:47.111 -> enumeration:
08:31:47.111 -> USBHub memory usage = 960
08:31:47.111 -> USBHub claim_device this=200035E0
08:31:47.111 -> USBSerial(64)claim this=20003B20
08:31:47.111 -> vid=2E8A, pid=A, bDeviceClass = 239, bDeviceSubClass = 2, bDeviceProtocol = 1
08:31:47.111 -> 08 0B 00 02 02 02 00 00 09 04 00 00 01 02 02 00 01 05 24 00 20 01 05 24 01 00 01 04 24 02 06 05 24 06 00 01 07 05 81 03 08 00 10 09 04 01 00 02 0A 00 00 00 07 05 01 02 40 00 00 07 05 82 02 40 00 00
08:31:47.111 -> Descriptor 11 = IAD
08:31:47.111 -> Descriptor 4 = INTERFACE
08:31:47.111 -> USBSerial(64)claim this=20003B20
08:31:47.111 -> vid=2E8A, pid=A, bDeviceClass = 239, bDeviceSubClass = 2, bDeviceProtocol = 1
08:31:47.111 -> 09 04 00 00 01 02 02 00 01 05 24 00 20 01 05 24 01 00 01 04 24 02 06 05 24 06 00 01 07 05 81 03 08 00 10 09 04 01 00 02 0A 00 00 00 07 05 01 02 40 00 00 07 05 82 02 40 00 00
08:31:47.111 -> Descriptor 36 =  ???
08:31:47.111 -> Descriptor 36 =  ???
08:31:47.111 -> Descriptor 36 =  ???
08:31:47.111 -> Descriptor 36 =  ???
08:31:47.111 -> Descriptor 5 = ENDPOINT
08:31:47.111 -> Descriptor 4 = INTERFACE
08:31:47.111 -> USBSerial(64)claim this=20003B20
08:31:47.111 -> vid=2E8A, pid=A, bDeviceClass = 239, bDeviceSubClass = 2, bDeviceProtocol = 1
08:31:47.111 -> 09 04 01 00 02 0A 00 00 00 07 05 01 02 40 00 00 07 05 82 02 40 00 00
08:31:47.111 -> len = 23
08:31:47.111 -> USBSerial, rxep=2(64), txep=1(64)
08:31:47.111 ->   rx buffer size:196
08:31:47.111 ->   tx buffer size:196
08:31:47.111 -> new_Pipe
08:31:47.111 -> new_Pipe
08:31:47.111 -> Control - CDCACM LINE_CODING
08:31:47.111 -> Descriptor 5 = ENDPOINT
08:31:47.111 -> Descriptor 5 = ENDPOINT

08:31:47.111 -> control callback (serial) 4
08:31:47.111 -> Control - 0x21,0x22, 0x3
08:31:47.111 -> control callback (serial) 0
 
The USB Host code is full of race conditions when it comes to handling failed transactions, as soon as you see an ERROR followup it's a big red flag.
It also uses a value of 0 for CERR (infinite retries) in the queue transaction descriptors which can cause undefined behaviour for non-USB 2.0 devices (the pi is not USB 2.0).
 
@h4yn0nnym0u5e - I cannot seem to duplicate the condition you are seeing as shown above. I went through all three of my 4-pot HUBs on all ports powering the Teesny with the HUB and the PICO attached with out any errors. I also only have a PICO not A PICO 2W. Te only condition That I noticed was after powering the Teensy, it took ~6 seconds for the PICO to begin flashing it's LED? Not that familiar with tthe PICO power up sequence.
I'm prepared to be shown to be wrong, though...
Just trying to get the facts ;)
 
I'm trying to reproduce this problem today. I got a brand new Pico 2W. So far I haven't programmed it, I just plugged it into a hub which is plugged into Teensy 4.1's USB host port.

usb_hub_pi_pico.jpg



This is the USBHost_t36 debug output I'm seeing, running the program from msg #9. Teensy's LED keeps blinking. I'm guessing this means I haven't reproduced the problem yet?

Code:
  begin reset
port change: 18001205
  port enabled
  end recovery
new_Device: 480 Mbit/sec
new_Pipe
enumeration:
HUB Callback (member)
status = 2
getstatus, port = 1
USBHub control callback
01 01 01 00
New Port Status
  status=10101  port=1
  state=0
  Device is present:
  Has Power
USBHub control callback
Port Status Cleared, port=1
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
  status=101  port=1
  state=2
  Device is present:
  Has Power
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
  status=101  port=1
  state=3
  Device is present:
  Has Power
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
  status=101  port=1
  state=4
  Device is present:
  Has Power
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
  status=101  port=1
  state=5
  Device is present:
  Has Power
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
  status=101  port=1
  state=6
  Device is present:
  Has Power
sending reset
send_setreset
USBHub control callback
unhandled setup, message = 40323
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 0
HUB Callback (member)
status = 2
getstatus, port = 1
USBHub control callback
03 01 10 00
New Port Status
  status=100103  port=1
  state=7
  Device is present:
  Enabled, speed = 12 Mbit/sec
  Has Power
USBHub control callback
unhandled setup, message = 140123
timer event (24998 us): Hello, I'm resettimer, this = 20003220, timer = 20003554
port_doing_reset = 1
PORT_RECOVERY
new_Device: 12 Mbit/sec
new_Pipe
enumeration:
enumeration:
enumeration:
Device Descriptor:
  12 01 10 02 00 00 00 40 8A 2E 0F 00 00 01 01 02 03 01
    VendorID = 2E8A, ProductID = 000F, Version = 0100
    Class/Subclass/Protocol = 0 / 0 / 0
    Number of Configurations = 1
enumeration:
enumeration:
Manufacturer: Raspberry Pi
enumeration:
Product: RP2350 Boot
enumeration:
Serial Number: 1759F78F20CD5313
enumeration:
Config data length = 55
enumeration:
Configuration Descriptor:
  09 02 37 00 02 01 00 80 19
    NumInterfaces = 2
    ConfigurationValue = 1
  09 04 00 00 02 08 06 50 00
    Interface = 0
    Number of endpoints = 2
    Class/Subclass/Protocol = 8(Mass Storage) / 6(SCSI) / 80(Bulk Only)
  07 05 81 02 40 00 00
    Endpoint = 1 IN
    Type = Bulk
    Max Size = 64
    Polling Interval = 0
  07 05 02 02 40 00 00
    Endpoint = 2 OUT
    Type = Bulk
    Max Size = 64
    Polling Interval = 0
  09 04 01 00 02 FF 00 00 00
    Interface = 1
    Number of endpoints = 2
    Class/Subclass/Protocol = 255 / 0 / 0
  07 05 03 02 40 00 00
    Endpoint = 3 OUT
    Type = Bulk
    Max Size = 64
    Polling Interval = 0
  07 05 84 02 40 00 00
    Endpoint = 4 IN
    Type = Bulk
    Max Size = 64
    Polling Interval = 0
enumeration:
USBSerial(64)claim this=20003760
vid=2E8A, pid=F, bDeviceClass = 0, bDeviceSubClass = 0, bDeviceProtocol = 0
09 04 00 00 02 08 06 50 00 07 05 81 02 40 00 00 07 05 02 02 40 00 00 09 04 01 00 02 FF 00 00 00 07 05 03 02 40 00 00 07 05 84 02 40 00 00
Descriptor 4 = INTERFACE
USBSerial(64)claim this=20003760
vid=2E8A, pid=F, bDeviceClass = 0, bDeviceSubClass = 0, bDeviceProtocol = 0
09 04 00 00 02 08 06 50 00 07 05 81 02 40 00 00 07 05 02 02 40 00 00 09 04 01 00 02 FF 00 00 00 07 05 03 02 40 00 00 07 05 84 02 40 00 00
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
Descriptor 4 = INTERFACE
USBSerial(64)claim this=20003760
vid=2E8A, pid=F, bDeviceClass = 0, bDeviceSubClass = 0, bDeviceProtocol = 0
09 04 01 00 02 FF 00 00 00 07 05 03 02 40 00 00 07 05 84 02 40 00 00
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
 
@Paul - the PICO is programmed with:
Code:
void setup() {
//  while(!Serial && (millis() < 5000)); // Uncomment to fix problem.
  pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    delay(100);
}
I was testing with a RP2040 PICO. I have a PICO 2W on order (RP2350). With the Serial test commented out in the code, USB HUB port one should fail and the PICO LED fail to blink. Un-commenting the Serial test line in the code should fix the problem.

The Teensy 4.1 side is prograamed with:
Code:
#include "USBHost_t36.h"
USBHost myusb;
USBHub hub1(myusb);
USBSerial userial(myusb);
void setup()
{
    pinMode(LED_BUILTIN, OUTPUT);
    myusb.begin();
}
void loop()
{
    myusb.Task(); // commenting this out does not change crash behaviour
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    delay(100);
}
These were taken from @Vincent_Groenhuis post and the PICO code modified to fix the problem.

I'll test my HUBS with the PICO 2W when it arrives...
 
Today I managed to reproduce the problem. I used Arduino IDE 2.3.6 with Pico board package from Earle Philhower version 5.3.0 installed by Boards Manager. Version 5.4.3 is the latest version and default install, but I used 5.3.0 because msg #9 specifies that version.

I loaded the simple program from msg #9 and indeed the green LED near the USB connector on Pico 2W is blinking, after uploading from my PC and also when used with Teensy 4.1 USB host port.

The hub I'm using is Sabrent model HB-UMLS.

This is the debug result I see printed from Teensy 4.1.

Code:
  begin reset
port change: 18001205
  port enabled
  end recovery
new_Device: 480 Mbit/sec
new_Pipe
enumeration:
enumeration:
enumeration:
Device Descriptor:
  12 01 00 02 09 00 01 40 E3 05 08 06 36 85 00 01 00 01
    VendorID = 05E3, ProductID = 0608, Version = 8536
    Class/Subclass/Protocol = 9(Hub) / 0 / 1(Single-TT)
    Number of Configurations = 1
enumeration:
enumeration:
Product: USB2.0 Hub
enumeration:
Config data length = 25
enumeration:
Configuration Descriptor:
  09 02 19 00 01 01 00 E0 32
    NumInterfaces = 1
    ConfigurationValue = 1
  09 04 00 00 01 09 00 00 00
    Interface = 0
    Number of endpoints = 1
    Class/Subclass/Protocol = 9(Hub) / 0 / 0
  07 05 81 03 01 00 0C
    Endpoint = 1 IN
    Type = Interrupt
    Max Size = 1
    Polling Interval = 12
enumeration:
USBHub memory usage = 960
USBHub claim_device this=20003220
found possible interface, altsetting=0
number of interfaces found = 1
USBHub control callback
09 29 04 E0 00 32 64 00 FF 00 00 00 00 00 00 00
Hub ports = 4
USBHub control callback
USBHub control callback
USBHub control callback
USBHub control callback
power turned on to all ports
device addr = 1
new_Pipe
allocate_interrupt_pipe_bandwidth
  ep interval = 12
  interval = 256
 best_bandwidth = 2, at offset = 0
pipe cap1 = F0012101
HUB Callback (member)
status = 2
getstatus, port = 1
USBHub control callback
01 01 01 00
New Port Status
  status=10101  port=1
  state=0
  Device is present:
  Has Power
USBHub control callback
Port Status Cleared, port=1
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
  status=101  port=1
  state=2
  Device is present:
  Has Power
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
  status=101  port=1
  state=3
  Device is present:
  Has Power
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
  status=101  port=1
  state=4
  Device is present:
  Has Power
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
  status=101  port=1
  state=5
  Device is present:
  Has Power
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 2
getstatus, port = 1
USBHub control callback
01 01 00 00
New Port Status
  status=101  port=1
  state=6
  Device is present:
  Has Power
sending reset
send_setreset
USBHub control callback
unhandled setup, message = 40323
timer event (19999 us): Debounce Timer, this = 20003220, timer = 20003538
ports in use bitmask = 0
HUB Callback (member)
status = 2
getstatus, port = 1
USBHub control callback
03 01 10 00
New Port Status
  status=100103  port=1
  state=7
  Device is present:
  Enabled, speed = 12 Mbit/sec
  Has Power
USBHub control callback
unhandled setup, message = 140123
timer event (24998 us): Hello, I'm resettimer, this = 20003220, timer = 20003554
port_doing_reset = 1
PORT_RECOVERY
new_Device: 12 Mbit/sec
new_Pipe
enumeration:
enumeration:
ERROR Followup
    remove from followup list
    stray halted 200030E0
  qtd: 20003960, token=80120180, next=200030E0
  qtd: 200030E0, token=80008080, next=200039E0
  dummy halt: 200039E0
enumeration:
Device Descriptor:
  12 01 00 02 EF 02 01 40 32 09 04 00 00 01 09 00 00 00
    VendorID = 0932, ProductID = 0004, Version = 0100
    Class/Subclass/Protocol = 239 / 2 / 1
    Number of Configurations = 0
    remain on followup list
    remain on followup list
    remain on followup list
    remain on followup list
ERROR Followup
    remain on followup list
    remove from followup list
    stray halted 20003120
  qtd: 20003920, token=87FC0180, next=20003120
  qtd: 20003120, token=80008080, next=20003160
  dummy halt: 20003160
enumeration:
    remain on followup list
    remain on followup list
    remain on followup list
    remain on followup list
ERROR Followup
    remain on followup list
    remain on followup list
    remove from followup list
    stray halted 200030E0
  qtd: 200038E0, token=80090180, next=200030E0
  qtd: 200030E0, token=80008080, next=200039E0
  dummy halt: 200039E0
enumeration:
Config data length = 512
    remain on followup list
    remain on followup list
    remain on followup list
    remain on followup list
ERROR Followup
    remain on followup list
    remain on followup list
    remain on followup list
    remove from followup list
    stray halted 20003120
  qtd: 200038A0, token=82000180, next=20003120
  qtd: 20003120, token=80008080, next=20003160
  dummy halt: 20003160
enumeration:
Configuration Descriptor:
  09 00 00 02 EF 02 01 40 32
error: config must type 2
    remain on followup list
    remain on followup list
    remain on followup list
ERROR Followup
    remain on followup list
    remain on followup list
    remain on followup list
    remain on followup list
    remove from followup list
    stray halted 200030E0
  qtd: 200030E0, token=80008180, next=200039E0
  dummy halt: 200039E0
enumeration:
USBSerial(64)claim this=20003760
vid=932, pid=4, bDeviceClass = 239, bDeviceSubClass = 2, bDeviceProtocol = 1
09 04 00 00 01 09 00 00 00 07 05 81 03 01 00 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Descriptor 4 = INTERFACE
USBSerial(64)claim this=20003760
vid=932, pid=4, bDeviceClass = 239, bDeviceSubClass = 2, bDeviceProtocol = 1
09 04 00 00 01 09 00 00 00 07 05 81 03 01 00 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Descriptor 5 = ENDPOINT
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???
Descriptor 0 =  ???

This message is mainly meant to document which things I used to reproduce the problem, and to confirm I've now got the crash happening on my desk.

My next step will be the set up the protocol analyzer with another computer to view the communication.
 
Back
Top