Teensy 4.0 USB Host Issues

Status
Not open for further replies.

Sandwich

Member
Hey there!

I've been working on making a MIDI hub and things have been going really well so far. I've got the Teensy talking to PC through USB, and a bunch of incoming and outgoing DIN ports all talking to each other. My last task is to get the USB Host working so that I can plug a hub into it and plug MIDI controllers into the hub. However, this is where I'm getting stuck. My code wasn't working, so I decided to just go to example code and I can't get that working either. I'm using the Examples/Examples for teensy 4.0/USBHost_t36/serial/MIDI/InputExamples sketch to keep things easy while I troubleshoot.

My Teensy has the VIN/VUSB separated. I have a live 5v rail supplying voltage to the Teensy's VIN and also this new additional USB port. I soldered wires to the D- and D+ pads directly below the existing Teensy USB port (on the bottom side of the board). The 5v, D-, D+, GND are all wired into a female USB A port (in that order when looking at the rear of the port), and a midi instrument is plugged into it. When I run the sketch I get the "USB Host InputFunctions example" message in the serial monitor, but no messages from keyon, keyoff, etc...

I just had a thought and am wondering if I fried anything by supplying 5v, however I don't think usb will run without it so I imagine the D- and D+ are 5v tolerant... I hope. I've also tried supplying 3v with no luck. I really hope I can figure this out with some help, though, I'm so close to completing the project!

Thanks for any advice!

Edit: Also, I've selected Serial + MIDI as the USB Type
 
I have a live 5v rail supplying voltage to the Teensy's VIN and also this new additional USB port. I soldered wires to the D- and D+ pads directly below the existing Teensy USB port (on the bottom side of the board). The 5v, D-, D+, GND are all wired into a female USB A port (in that order when looking at the rear of the port), and a midi instrument is plugged into it. When I run the sketch I get the "USB Host InputFunctions example" message in the serial monitor, but no messages from keyon, keyoff, etc...

Just a quick sanity check... You didn't mention the USB cable GND to Teensy GND connection. The grounds need to be all connected together, Teensy, USB host cable, and the external power.
 
Correct, 5v rail's GND is connected to power supply, Teensy, and the new USB. Probably not the best picture, but the 5v rail is the top one, USB port is at the top left, yellow wire is D- and orange is D+...

gkOPbmM_d.jpg
 
Those wires might not be cable of 480 Mbit/sec speed. Usually you would need to cut the end off a real USB cable and use its wires, or keep the wires from Teensy 4.0 to the USB connector very short and close to each other or tightly twisted together.

Try uncommenting this line in ehci.cpp in the USBHost_t36 lib:

Code:
	//USBHS_PORTSC1 |= USBHS_PORTSC_PFSC; // force 12 Mbit/sec

In the current version, it's at line #262.
 
Code:
	//USBHS_PORTSC1 |= USBHS_PORTSC_PFSC; // force 12 Mbit/sec

Uncommenting that line (both with the previous line uncommented or commented out) produces the compiling error:

Code:
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\USBHost_t36\ehci.cpp: In static member function 'static void USBHost::begin()':

C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\USBHost_t36\ehci.cpp:262:19: error: 'USBHS_PORTSC_PFSC' was not declared in this scope

  USBHS_PORTSC1 |= USBHS_PORTSC_PFSC; // force 12 Mbit/sec

I think I have half a butchered USB cable I can try to solder in later today.
 
Oh, opps, looks like the define for Teensy 4.0 is missing from utility/imxrt_usbhs.h

Add this line to that file:

Code:
#define USBHS_PORTSC_PFSC      USB_PORTSC1_PFSC
 
I've switched over to using a USB cable section and in the process realized there was issues with my wiring, I either had a bad example or was too tired and wired wrong. I've got everything hooked up and soldered together and now the Teensy can see my MIDI controller messages. Now it's just getting all that working with the existing MIDI Hub code and I'm good. Thank you for the help Paul, everyone here really appreciates all the time you spend solving issues. Even this issue you solved unintentionally by suggesting the wire might be the issue which quickly lead me correcting my wiring issues.

Edit: Also, for future reference, adding in the #define to the .h file did fix the compiling error for low speed USB.
 
Status
Not open for further replies.
Back
Top