Hi everyone,
for a project I need to control a few different systems with the host serial of teensy.
Among these systems I will have to be able to control another Teensy with a Hub.
I soldered a usb connector to the USB host pins of my master teensy. And can recognize successfully some commercial USB thermometers and hubs.
I am using the library USBHost_t36 with the exemple USBHost_t36/Test/SerialTest.ino
If I plug a hub and my thermometer (which send the line #CT periodically before I unplug it in my test). The program recognize it without any problem.
But when I try to plug another Teensy to my USB host nothing happen. (same thing with the HUB or without).
I digged a bit in the code and uncommented the line :
//#define USBHOST_PRINT_DEBUG in USBHost_t36.h to get a bit more informations. When I plug the teensy I get:
For comparison if I do the same with the termometer I get that:
It looks like some descriptors (Descriptor 36 = ???) are not recognized and the program just loop trying to get the missing informations.
If someone has an idea how to proceed from here it would be helpful.
Thanks
Alex
for a project I need to control a few different systems with the host serial of teensy.
Among these systems I will have to be able to control another Teensy with a Hub.
I soldered a usb connector to the USB host pins of my master teensy. And can recognize successfully some commercial USB thermometers and hubs.
I am using the library USBHost_t36 with the exemple USBHost_t36/Test/SerialTest.ino
If I plug a hub and my thermometer (which send the line #CT periodically before I unplug it in my test). The program recognize it without any problem.
Code:
USB Host Testing - Serial
*** Device Hub1 1a40:101 - connected ***
product: USB 2.0 Hub
*** Device Hub2 1a40:101 - connected ***
product: USB 2.0 Hub
#CT
#CT
#CT
*** Device USerial 483:5740 - connected ***
manufacturer: STMicroelectronics
product: STM32 Virtual COM Port
Serial: CT000
#CT
#CT
#CT
#CT
*** Device USerial - disconnected ***
But when I try to plug another Teensy to my USB host nothing happen. (same thing with the HUB or without).
I digged a bit in the code and uncommented the line :
//#define USBHOST_PRINT_DEBUG in USBHost_t36.h to get a bit more informations. When I plug the teensy I get:
Code:
USB Host Testing - Serial
USB2 PLL running
reset waited 6
USBHS_ASYNCLISTADDR = 0
USBHS_PERIODICLISTBASE = 20005000
periodictable = 20005000
port change: 10001803
connect
port change: 1C001002
disconnect
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 02 00 00 40 C0 16 83 04 80 02 01 02 03 01
VendorID = 16C0, ProductID = 0483, Version = 0280
Class/Subclass/Protocol = 2 / 0 / 0
Number of Configurations = 1
enumeration:
enumeration:
Manufacturer: Teensyduino
enumeration:
Product: USB Serial
enumeration:
Serial Number: 8823250
enumeration:
Config data length = 67
enumeration:
Configuration Descriptor:
09 02 43 00 02 01 00 C0 32
NumInterfaces = 2
ConfigurationValue = 1
09 04 00 00 01 02 02 01 00
Interface = 0
Number of endpoints = 1
Class/Subclass/Protocol = 2 / 2 / 1
05 24 00 10 01
05 24 01 01 01
04 24 02 06
05 24 06 00 01
07 05 82 03 10 00 05
Endpoint = 2 IN
Type = Interrupt
Max Size = 16
Polling Interval = 5
09 04 01 00 02 0A 00 00 00
Interface = 1
Number of endpoints = 2
Class/Subclass/Protocol = 10 / 0 / 0
07 05 03 02 00 02 00
Endpoint = 3 OUT
Type = Bulk
Max Size = 512
Polling Interval = 0
07 05 84 02 00 02 00
Endpoint = 4 IN
Type = Bulk
Max Size = 512
Polling Interval = 0
enumeration:
USBHub memory usage = 960
USBHub claim_device this=20003C40
USBHub memory usage = 960
USBHub claim_device this=20003880
HIDParser claim this=20002C40
HIDParser claim this=20003260
HIDParser claim this=200046C0
USBSerial claim this=20004080
vid=16C0, pid=483, bDeviceClass = 2, bDeviceSubClass = 0, bDeviceProtocol = 0
09 04 00 00 01 02 02 01 00 05 24 00 10 01 05 24 01 01 01 04 24 02 06 05 24 06 00 01 07 05 82 03 10 00 05 09 04 01 00 02 0A 00 00 00 07 05 03 02 00 02 00 07 05 84 02 00 02 00
Interface is Serial
CS_INTERFACE - subtype: 0 10 1 - Header Functional Descriptor
CS_INTERFACE - subtype: 1 1 1 - Call Management Functional
CS_INTERFACE - subtype: 2 6 - Abstract Control Management
CS_INTERFACE - subtype: 6 0 1 - union Functional
Interface: 1
Endpoint: 3
tx_size = 512
Endpoint: 84
rx_size = 512
exited loop rx:4, tx:3
Descriptor 4 = INTERFACE
HIDParser claim this=20002C40
HIDParser claim this=20003260
HIDParser claim this=200046C0
USBSerial claim this=20004080
vid=16C0, pid=483, bDeviceClass = 2, bDeviceSubClass = 0, bDeviceProtocol = 0
09 04 00 00 01 02 02 01 00 05 24 00 10 01 05 24 01 01 01 04 24 02 06 05 24 06 00 01 07 05 82 03 10 00 05 09 04 01 00 02 0A 00 00 00 07 05 03 02 00 02 00 07 05 84 02 00 02 00
Descriptor 36 = ???
Descriptor 36 = ???
Descriptor 36 = ???
Descriptor 36 = ???
Descriptor 5 = ENDPOINT
Descriptor 4 = INTERFACE
HIDParser claim this=20002C40
HIDParser claim this=20003260
HIDParser claim this=200046C0
USBSerial claim this=20004080
vid=16C0, pid=483, bDeviceClass = 2, bDeviceSubClass = 0, bDeviceProtocol = 0
09 04 01 00 02 0A 00 00 00 07 05 03 02 00 02 00 07 05 84 02 00 02 00
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
For comparison if I do the same with the termometer I get that:
Code:
USB Host Testing - Serial
USB2 PLL running
reset waited 6
USBHS_ASYNCLISTADDR = 0
USBHS_PERIODICLISTBASE = 20005000
periodictable = 20005000
port change: 10001803
connect
port change: 1C001002
disconnect
port change: 10001803
connect
begin reset
port change: 10001005
port enabled
end recovery
new_Device: 12 Mbit/sec
new_Pipe
enumeration:
enumeration:
enumeration:
Device Descriptor:
12 01 00 02 02 00 00 40 83 04 40 57 00 02 01 02 03 01
VendorID = 0483, ProductID = 5740, Version = 0200
Class/Subclass/Protocol = 2 / 0 / 0
Number of Configurations = 1
enumeration:
enumeration:
Manufacturer: STMicroelectronics
enumeration:
Product: STM32 Virtual COM Port
enumeration:
Serial Number: CT00001
enumeration:
Config data length = 67
enumeration:
Configuration Descriptor:
09 02 43 00 02 01 00 C0 FA
NumInterfaces = 2
ConfigurationValue = 1
09 04 00 00 01 02 02 01 00
Interface = 0
Number of endpoints = 1
Class/Subclass/Protocol = 2 / 2 / 1
05 24 00 10 01
05 24 01 00 01
04 24 02 02
05 24 06 00 01
07 05 82 03 08 00 FF
Endpoint = 2 IN
Type = Interrupt
Max Size = 8
Polling Interval = 255
09 04 01 00 02 0A 00 00 00
Interface = 1
Number of endpoints = 2
Class/Subclass/Protocol = 10 / 0 / 0
07 05 03 02 40 00 00
Endpoint = 3 OUT
Type = Bulk
Max Size = 64
Polling Interval = 0
07 05 81 02 40 00 00
Endpoint = 1 IN
Type = Bulk
Max Size = 64
Polling Interval = 0
enumeration:
USBHub memory usage = 960
USBHub claim_device this=20003C40
USBHub memory usage = 960
USBHub claim_device this=20003880
HIDParser claim this=20002C40
HIDParser claim this=20003260
HIDParser claim this=200046C0
USBSerial claim this=20004080
vid=483, pid=5740, bDeviceClass = 2, bDeviceSubClass = 0, bDeviceProtocol = 0
09 04 00 00 01 02 02 01 00 05 24 00 10 01 05 24 01 00 01 04 24 02 02 05 24 06 00 01 07 05 82 03 08 00 FF 09 04 01 00 02 0A 00 00 00 07 05 03 02 40 00 00 07 05 81 02 40 00 00
Interface is Serial
CS_INTERFACE - subtype: 0 10 1 - Header Functional Descriptor
CS_INTERFACE - subtype: 1 0 1 - Call Management Functional
CS_INTERFACE - subtype: 2 2 - Abstract Control Management
CS_INTERFACE - subtype: 6 0 1 - union Functional
Interface: 1
Endpoint: 3
tx_size = 64
Endpoint: 81
rx_size = 64
exited loop rx:1, tx:3
rx buffer size:196
tx buffer size:196
new_Pipe
new_Pipe
Control - CDCACM DTR...
*** Device USERIAL1 483:5740 - connected ***
manufacturer: STMicroelectronics
product: STM32 Virtual COM Port
Serial: CT000
control callback (serial) 6
CDCACM setup: 00 C2 01 00 00 00 08
control callback (serial) 4
Control - 0x21,0x22, 0x3
control callback (serial) 0
rx token: 803B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 3B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 803B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 3B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 803B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 3B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 803B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 3B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 803B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 3B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 803B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 3B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 803B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 3B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 803B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 3B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 803B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 3B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 803B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 3B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 803B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 3B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 803B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 3B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 803B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 3B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 803B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 3B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
rx token: 803B8100 transfer length: 64 len:5 - 23 43
rx: 23 43 54 0D 0A
#CT
It looks like some descriptors (Descriptor 36 = ???) are not recognized and the program just loop trying to get the missing informations.
If someone has an idea how to proceed from here it would be helpful.
Thanks
Alex