usbhost_t36 with FTDI device - can't be seen

cedd

Member
Hi All

Trying to connect to a UHF wireless microphone receiver. It has a USB port that connects to some PC software. It appears as a USB Serial port (FTDI).
I've previously managed to run a trace on this port and reverse engineer the protocol. By connecting to the TTL serial lines on the processor side of the USB chip i've been able to read data from it using an Arduino, so I know I can talk to the thing in some way. I'd now like to do it via USB.

The long term plan is to have 8 receivers connected to a Teensy via a USB hub and interrogate each one in turn for its' data.

I've succesfully got the usb cable connected to my Teensy 4.1 and using the Serial example sketch (usb host viewer won't compile for some reason) am able to see some test devices (a usb to serial converter I have, and a 4 port hub). However when I connect the receiver, nothing is seen at all.
Have tried changing the baud rate (57600 is what I was communicating with when I was going TTL direct to the processoe, but i've tried multiple).

I'm running Device Monitoring Studio, which is a free USB monitoring tool. It has given me the following information;

Connection Information
Port: 2
Speed: Full Speed
Device address: 4
Open pipes: 2
Connection status: Device connected

Device Descriptor
USB version: 2.0
Device class: 0x0 - (Defined at Interface level)
Device subclass: 0x0 - Unknown
Device protocol: 0x0 - Unknown
Control pipe max size: 8 bytes
Vendor ID: 0x304 (Unknown)
Product ID: 0xc719 (Unknown)
Product version: 6.0
Manufacturer: BBM
Product: Trantec Systems receiver
Serial Number: 38EJDAC5



descriptors[0] = "Configuration Descriptor"
bLength = 9
bDescriptorType = USB_CONFIGURATION_DESCRIPTOR_TYPE (2)
wTotalLength = 32
bNumInterfaces = 1
bConfigurationValue = 1
iConfiguration = 0
Reserved = 0
SupportsRemoteWakeup = 0
SelfPowered = 1
PoweredByBus = 1
MaxPower = 0x2d -> 90 mA

descriptors[1] = "Interface Descriptor"
bLength = 9
bDescriptorType = USB_INTERFACE_DESCRIPTOR_TYPE (4)
bInterfaceNumber = 0
bAlternateSetting = 0
bNumEndpoints = 2
bInterfaceClass = UsbVendorSpecific (255)
bInterfaceSubClass = 255
bInterfaceProtocol = 255
iInterface = 2

descriptors[2] = "Endpoint Descriptor"
bLength = 7
bDescriptorType = USB_ENDPOINT_DESCRIPTOR_TYPE (5)
bEndpointAddress = 1
Reserved = 0
Direction = Input
type = Bulk (2)
reserved = 0
wMaxPacketSize = 64
bInterval = 0

descriptors[3] = "Endpoint Descriptor"
bLength = 7
bDescriptorType = USB_ENDPOINT_DESCRIPTOR_TYPE (5)
bEndpointAddress = 2
Reserved = 0
Direction = Output
type = Bulk (2)
reserved = 0
wMaxPacketSize = 64
bInterval = 0


Looking on the PCB, the usb chip is a FTDI FT232RL.

Can anybody shed any light on this and how I might get it working?
 
That VID/PID is unknown, by your USB sniffer program as well as looking for it online...

You might try editing the USBHost Serial code, and at the start is a table of VID/PID, mapping it to what type of serial device it is.

You might try adding it, like:
{0x304 , 0xc719 , USBSerialBase::FTDI, 0},

And see if it is happy or not.
 
You beauty!!! It now sees one of the receivers absolutely fine.
What it can't do at the minute is see more than one at a time, via a hub. I can see them each individually but if I plug them both in it only sees the first one.
It'll be something simple. I'm only just feeling my way around these examples.

I have another thing to consider, assuming I get multiple ones working. I need to be able to write to and read from them individually, and have control of the order in which I do that. The receivers are installed in an order in a rack and I need to use their data in that order (data from receiver 1 in the rack goes in to array number 1 etc.). When I get their USB data from this sketch I only see that the serial numbers are different. I either need to address them by the physical port they're plugged in to the hub on (I can work out the physical order of the sockets on the hub and just connect them in that order). Is it possible to do that? To essentially go "send xyz to the device on hub1, socket 1. Then read from it".

Edit to add, sussed the multiple receivers issue. Now successfully seeing both of them. Now to do something useful with them!
 
Last edited:
Back
Top