Teensy 3.6 USB Host support

@LERAY - hard to say. Each type of device installed and in many cases each device that works is one that a few of us went through and had to reverse engineer to figure out what it is and how to support it.

As I don't have one of those displays, it will probably take some guessing and work on your end... First off, need to figure out what this device registers as when you plug it in...
In many cases like this, I use a Linux box of some type. Sometimes my secondary PC running Ubuntu, sometimes an RPI or the like... And then I dump out everything, I can about the device. Plus I also capture what output there is when you plug it into T3.6 (or T4). I then also turn on debug...

Some of these steps are shown in several of the posts about this library, including: https://forum.pjrc.com/threads/49358-T3-6-USB-Host-Bluetooth?p=204854&viewfull=1#post204854

And when I say turn on debug printing, you do that by editing the usbhost_t36.h file and uncomment the line: //#define USBHOST_PRINT_DEBUG
 
Thanks, Kurt.
Concerning the screens, I think that any standard HDMI or VGA touchscreen have the same problem.
Except the Buydisplay 10' which is another kind of low cost display with flat ribbon.
I uncomment the #define.
Here are the results :

DEBUG OUTPUT WITH LG 17MB15' Touchscreen or with other USB touchscreen (not running):

USB Host Testing
960
sizeof Device = 36
sizeof Pipe = 96
sizeof Transfer = 64
power up USBHS PHY
reset waited 5
USBHS_ASYNCLISTADDR = 0
USBHS_PERIODICLISTBASE = 1FFF6000
periodictable = 1FFF6000


DEBUG OUTPUT WITH 10' BUYDISPLAY (Running correctly):
HID: 0 - 01 19 10 D5 14 00 00 00
begin, usage=10000
type= 62
min= 0
max= 1
reportcount=1
usage count=255
Input, total bits=1
usage = 90001 data = 1
begin, usage=10000
type= 62
min= 0
max= 10000
reportcount=2
usage count=2
Input, total bits=32
usage = 10030 data = 4121
usage = 10031 data = 5333
Mouse: buttons = 1, mouseX = 4121, mouseY = 5333, wheel = 0, wheelH = 0
HID: 0 - 01 19 10 C4 14 00 00 00
begin, usage=10000
type= 62
min= 0
max= 1
reportcount=1
usage count=255
Input, total bits=1
usage = 90001 data = 1
begin, usage=10000
type= 62
min= 0
max= 10000
reportcount=2
usage count=2
Input, total bits=32
usage = 10030 data = 4121
usage = 10031 data = 5316
Mouse: buttons = 1, mouseX = 4121, mouseY = 5316, wheel = 0, wheelH = 0
HID: 0 - 01 19 10 C4 14 00 00 00
begin, usage=10000
type= 62
min= 0
max= 1
reportcount=1
usage count=255
Input, total bits=1
usage = 90001 data = 1
begin, usage=10000
type= 62
min= 0
max= 10000
reportcount=2
usage count=2
Input, total bits=32
usage = 10030 data = 4121
usage = 10031 data = 5316
Mouse: buttons = 1, mouseX = 4121, mouseY = 5316, wheel = 0, wheelH = 0
HID: 0 - 00 19 10 C4 14 00 00 00
begin, usage=10000
type= 62
min= 0
max= 1
reportcount=1
usage count=255
Input, total bits=1
usage = 90001 data = 0
begin, usage=10000
type= 62
min= 0
max= 10000
reportcount=2
usage count=2
Input, total bits=32
usage = 10030 data = 4121
usage = 10031 data = 5316
Mouse: buttons = 0, mouseX = 4121, mouseY = 5316, wheel = 0, wheelH = 0
 
Thanks, Kurt
Concerning the screens, I think that except the low cost 10' Buydisplay screen which is running fine, all standard HDMI or VGA Touchscreens have the same problem.
I uncommented the # define as you suggested :

Here are the results :
DEBUG OUTPUT WITH LG 17MB15' Touchscreen or with other USB touchscreen (not running):

USB Host Testing
960
sizeof Device = 36
sizeof Pipe = 96
sizeof Transfer = 64
power up USBHS PHY
reset waited 5
USBHS_ASYNCLISTADDR = 0
USBHS_PERIODICLISTBASE = 1FFF6000
periodictable = 1FFF6000


DEBUG OUTPUT WITH 10' BUYDISPLAY (Running correctly):
HID: 0 - 01 19 10 D5 14 00 00 00
begin, usage=10000
type= 62
min= 0
max= 1
reportcount=1
usage count=255
Input, total bits=1
usage = 90001 data = 1
begin, usage=10000
type= 62
min= 0
max= 10000
reportcount=2
usage count=2
Input, total bits=32
usage = 10030 data = 4121
usage = 10031 data = 5333
Mouse: buttons = 1, mouseX = 4121, mouseY = 5333, wheel = 0, wheelH = 0
HID: 0 - 01 19 10 C4 14 00 00 00
begin, usage=10000
type= 62
min= 0
max= 1
reportcount=1
usage count=255
Input, total bits=1
usage = 90001 data = 1
begin, usage=10000
type= 62
min= 0
max= 10000
reportcount=2
usage count=2
Input, total bits=32
usage = 10030 data = 4121
usage = 10031 data = 5316
Mouse: buttons = 1, mouseX = 4121, mouseY = 5316, wheel = 0, wheelH = 0
HID: 0 - 01 19 10 C4 14 00 00 00
begin, usage=10000
type= 62
min= 0
max= 1
reportcount=1
usage count=255
Input, total bits=1
usage = 90001 data = 1
begin, usage=10000
type= 62
min= 0
max= 10000
reportcount=2
usage count=2
Input, total bits=32
usage = 10030 data = 4121
usage = 10031 data = 5316
Mouse: buttons = 1, mouseX = 4121, mouseY = 5316, wheel = 0, wheelH = 0
HID: 0 - 00 19 10 C4 14 00 00 00
begin, usage=10000
type= 62
min= 0
max= 1
reportcount=1
usage count=255
Input, total bits=1
usage = 90001 data = 0
begin, usage=10000
type= 62
min= 0
max= 10000
reportcount=2
usage count=2
Input, total bits=32
usage = 10030 data = 4121
usage = 10031 data = 5316
Mouse: buttons = 0, mouseX = 4121, mouseY = 5316, wheel = 0, wheelH = 0
 
Sorry, I am not seeing the data I would expect...

With the debug turned on, I would expect some of the information about the device being plugged in, plus information on enumeration, ...

For example I used the mouse sketch as it is setup with lots of devices defined, including a few HUB objects and the like.

On a T3.6, I built and ran it and plugged in a Saleae Logic Analyzer. Ut was the nearest USB device to me that I know we don't support.

And when I startup the sketch and then plug it in, I get output like:
Code:
USB Host Testing
960
sizeof Device = 36
sizeof Pipe = 96
sizeof Transfer = 64
power up USBHS PHY
 reset waited 5
USBHS_ASYNCLISTADDR = 0
USBHS_PERIODICLISTBASE = 1FFF6000
periodictable = 1FFF6000
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 FF FF FF 40 A9 21 04 10 00 00 00 00 00 01 
    VendorID = 21A9, ProductID = 1004, Version = 0000
    Class/Subclass/Protocol = 255 / 255 / 255
    Number of Configurations = 1
enumeration:
Config data length = 171
enumeration:
Configuration Descriptor:
  09 02 AB 00 01 01 00 80 32 
    NumInterfaces = 1
    ConfigurationValue = 1
  09 04 00 00 00 FF FF FF 00 
    Interface = 0
    Number of endpoints = 0
    Class/Subclass/Protocol = 255 / 255 / 255
  09 04 00 01 06 FF FF FF 00 
    Interface = 0
    Number of endpoints = 6
    Class/Subclass/Protocol = 255 / 255 / 255
  07 05 01 02 00 02 00 
    Endpoint = 1 OUT
    Type = Bulk
    Max Size = 512
    Polling Interval = 0
  07 05 81 02 00 02 00 
    Endpoint = 1 IN
    Type = Bulk
    Max Size = 512
    Polling Interval = 0
  07 05 02 02 00 02 00 
    Endpoint = 2 OUT
    Type = Bulk
    Max Size = 512
    Polling Interval = 0
  07 05 04 02 00 02 00 
    Endpoint = 4 OUT
    Type = Bulk
    Max Size = 512
    Polling Interval = 0
  07 05 86 02 00 02 00 
    Endpoint = 6 IN
    Type = Bulk
    Max Size = 512
    Polling Interval = 0
  07 05 88 02 00 02 00 
    Endpoint = 8 IN
    Type = Bulk
    Max Size = 512
    Polling Interval = 0
  09 04 00 02 06 FF FF FF 00 
    Interface = 0
    Number of endpoints = 6
    Class/Subclass/Protocol = 255 / 255 / 255
  07 05 01 03 40 00 01 
    Endpoint = 1 OUT
    Type = Interrupt
    Max Size = 64
    Polling Interval = 1
  07 05 81 03 40 00 01 
    Endpoint = 1 IN
    Type = Interrupt
    Max Size = 64
    Polling Interval = 1
  07 05 02 03 00 02 01 
    Endpoint = 2 OUT
    Type = Interrupt
    Max Size = 512
    Polling Interval = 1
  07 05 04 02 00 02 00 
    Endpoint = 4 OUT
    Type = Bulk
    Max Size = 512
    Polling Interval = 0
  07 05 86 03 00 02 01 
    Endpoint = 6 IN
    Type = Interrupt
    Max Size = 512
    Polling Interval = 1
  07 05 88 02 00 02 00 
    Endpoint = 8 IN
    Type = Bulk
    Max Size = 512
    Polling Interval = 0
  09 04 00 03 06 FF FF FF 00 
    Interface = 0
    Number of endpoints = 6
    Class/Subclass/Protocol = 255 / 255 / 255
  07 05 01 03 40 00 01 
    Endpoint = 1 OUT
    Type = Interrupt
    Max Size = 64
    Polling Interval = 1
  07 05 81 03 40 00 01 
    Endpoint = 1 IN
    Type = Interrupt
    Max Size = 64
    Polling Interval = 1
  07 05 02 01 00 02 01 
    Endpoint = 2 OUT
    Type = Isochronous
    Max Size = 512
    Polling Interval = 1
  07 05 04 02 00 02 00 
    Endpoint = 4 OUT
    Type = Bulk
    Max Size = 512
    Polling Interval = 0
  07 05 86 01 00 02 01 
    Endpoint = 6 IN
    Type = Isochronous
    Max Size = 512
    Polling Interval = 1
  07 05 88 02 00 02 00 
    Endpoint = 8 IN
    Type = Bulk
    Max Size = 512
    Polling Interval = 0
enumeration:
USBHub memory usage = 960
USBHub claim_device this=1FFF3580
USBHub memory usage = 960
USBHub claim_device this=1FFF2580
KeyboardController claim this=1FFF2020
KeyboardController claim this=1FFF22C0
HIDParser claim this=1FFF4660
HIDParser claim this=1FFF2940
HIDParser claim this=1FFF2F60
HIDParser claim this=1FFF4C80
HIDParser claim this=1FFF3940
JoystickController claim this=1FFF5420
BluetoothController claim this=1FFF3FC0
Descriptor 4 = INTERFACE
KeyboardController claim this=1FFF2020
09 04 00 00 00 FF FF FF 00 09 04 00 01 06 FF FF FF 00 07 05 01 02 00 02 00 07 05 81 02 00 02 00 07 05 02 02 00 02 00 07 05 04 02 00 02 00 07 05 86 02 00 02 00 07 05 88 02 00 02 00 09 04 00 02 06 FF FF FF 00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 03 00 02 01 07 05 04 02 00 02 00 07 05 86 03 00 02 01 07 05 88 02 00 02 00 09 04 00 03 06 FF FF FF 00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 01 00 02 01 07 05 04 02 00 02 00 07 05 86 01 00 02 01 07 05 88 02 00 02 00 
KeyboardController claim this=1FFF22C0
09 04 00 00 00 FF FF FF 00 09 04 00 01 06 FF FF FF 00 07 05 01 02 00 02 00 07 05 81 02 00 02 00 07 05 02 02 00 02 00 07 05 04 02 00 02 00 07 05 86 02 00 02 00 07 05 88 02 00 02 00 09 04 00 02 06 FF FF FF 00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 03 00 02 01 07 05 04 02 00 02 00 07 05 86 03 00 02 01 07 05 88 02 00 02 00 09 04 00 03 06 FF FF FF 00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 01 00 02 01 07 05 04 02 00 02 00 07 05 86 01 00 02 01 07 05 88 02 00 02 00 
HIDParser claim this=1FFF4660
HIDParser claim this=1FFF2940
HIDParser claim this=1FFF2F60
HIDParser claim this=1FFF4C80
HIDParser claim this=1FFF3940
JoystickController claim this=1FFF5420
09 04 00 00 00 FF FF FF 00 09 04 00 01 06 FF FF FF 00 07 05 01 02 00 02 00 07 05 81 02 00 02 00 07 05 02 02 00 02 00 07 05 04 02 00 02 00 07 05 86 02 00 02 00 07 05 88 02 00 02 00 09 04 00 02 06 FF FF FF 00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 03 00 02 01 07 05 04 02 00 02 00 07 05 86 03 00 02 01 07 05 88 02 00 02 00 09 04 00 03 06 FF FF FF 00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 01 00 02 01 07 05 04 02 00 02 00 07 05 86 01 00 02 01 07 05 88 02 00 02 00 
Jtype=0
BluetoothController claim this=1FFF3FC0
Descriptor 4 = INTERFACE
KeyboardController claim this=1FFF2020
09 04 00 01 06 FF FF FF 00 07 05 01 02 00 02 00 07 05 81 02 00 02 00 07 05 02 02 00 02 00 07 05 04 02 00 02 00 07 05 86 02 00 02 00 07 05 88 02 00 02 00 09 04 00 02 06 FF FF FF 00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 03 00 02 01 07 05 04 02 00 02 00 07 05 86 03 00 02 01 07 05 88 02 00 02 00 09 04 00 03 06 FF FF FF 00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 01 00 02 01 07 05 04 02 00 02 00 07 05 86 01 00 02 01 07 05 88 02 00 02 00 
KeyboardController claim this=1FFF22C0
09 04 00 01 06 FF FF FF 00 07 05 01 02 00 02 00 07 05 81 02 00 02 00 07 05 02 02 00 02 00 07 05 04 02 00 02 00 07 05 86 02 00 02 00 07 05 88 02 00 02 00 09 04 00 02 06 FF FF FF 00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 03 00 02 01 07 05 04 02 00 02 00 07 05 86 03 00 02 01 07 05 88 02 00 02 00 09 04 00 03 06 FF FF FF 00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 01 00 02 01 07 05 04 02 00 02 00 07 05 86 01 00 02 01 07 05 88 02 00 02 00 
HIDParser claim this=1FFF4660
HIDParser claim this=1FFF2940
HIDParser claim this=1FFF2F60
HIDParser claim this=1FFF4C80
HIDParser claim this=1FFF3940
JoystickController claim this=1FFF5420
09 04 00 01 06 FF FF FF 00 07 05 01 02 00 02 00 07 05 81 02 00 02 00 07 05 02 02 00 02 00 07 05 04 02 00 02 00 07 05 86 02 00 02 00 07 05 88 02 00 02 00 09 04 00 02 06 FF FF FF 00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 03 00 02 01 07 05 04 02 00 02 00 07 05 86 03 00 02 01 07 05 88 02 00 02 00 09 04 00 03 06 FF FF FF 00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 01 00 02 01 07 05 04 02 00 02 00 07 05 86 01 00 02 01 07 05 88 02 00 02 00 
Jtype=0
BluetoothController claim this=1FFF3FC0
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
Descriptor 4 = INTERFACE
KeyboardController claim this=1FFF2020
09 04 00 02 06 FF FF FF 00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 03 00 02 01 07 05 04 02 00 02 00 07 05 86 03 00 02 01 07 05 88 02 00 02 00 09 04 00 03 06 FF FF FF 00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 01 00 02 01 07 05 04 02 00 02 00 07 05 86 01 00 02 01 07 05 88 02 00 02 00 
KeyboardController claim this=1FFF22C0
09 04 00 02 06 FF FF FF 00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 03 00 02 01 07 05 04 02 00 02 00 07 05 86 03 00 02 01 07 05 88 02 00 02 00 09 04 00 03 06 FF FF FF 00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 01 00 02 01 07 05 04 02 00 02 00 07 05 86 01 00 02 01 07 05 88 02 00 02 00 
HIDParser claim this=1FFF4660
HIDParser claim this=1FFF2940
HIDParser claim this=1FFF2F60
HIDParser claim this=1FFF4C80
HIDParser claim this=1FFF3940
JoystickController claim this=1FFF5420
09 04 00 02 06 FF FF FF 00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 03 00 02 01 07 05 04 02 00 02 00 07 05 86 03 00 02 01 07 05 88 02 00 02 00 09 04 00 03 06 FF FF FF 00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 01 00 02 01 07 05 04 02 00 02 00 07 05 86 01 00 02 01 07 05 88 02 00 02 00 
Jtype=0
BluetoothController claim this=1FFF3FC0
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
Descriptor 4 = INTERFACE
KeyboardController claim this=1FFF2020
09 04 00 03 06 FF FF FF 00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 01 00 02 01 07 05 04 02 00 02 00 07 05 86 01 00 02 01 07 05 88 02 00 02 00 
KeyboardController claim this=1FFF22C0
09 04 00 03 06 FF FF FF 00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 01 00 02 01 07 05 04 02 00 02 00 07 05 86 01 00 02 01 07 05 88 02 00 02 00 
HIDParser claim this=1FFF4660
HIDParser claim this=1FFF2940
HIDParser claim this=1FFF2F60
HIDParser claim this=1FFF4C80
HIDParser claim this=1FFF3940
JoystickController claim this=1FFF5420
09 04 00 03 06 FF FF FF 00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 01 00 02 01 07 05 04 02 00 02 00 07 05 86 01 00 02 01 07 05 88 02 00 02 00 
Jtype=0
BluetoothController claim this=1FFF3FC0
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
Descriptor 5 = ENDPOINT
So you might try it again. Try using the mouse example sketch and see if it gives some details like this.
 
It appears like it is not detecting an USB device.

I believe you said it was a HDMI display? Is it plugged into something that generates HDMI? Does it have/need external power? Is that external power connected and turned on?

What happens if you plug it into a PC in the current state? Does the Device Manager detect it?

Again I can only throw darts...
 
I tried with a VGA LG 15" Touchscreen and a VGA-HDMI display ASUS VT207
Same result. Nothing after :
periodictable 1FFF6000

But if I connect these screens to a standard USB/PC port, the mouse of the PC is running correctly.
 
Not sure what else to try.

Again if you plug in your working monitor, does it show any data similar to what I showed:
USB Host Testing
Code:
960
sizeof Device = 36
sizeof Pipe = 96
sizeof Transfer = 64
power up USBHS PHY
 reset waited 5
USBHS_ASYNCLISTADDR = 0
USBHS_PERIODICLISTBASE = 1FFF6000
periodictable = 1FFF6000
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 FF FF FF 40 A9 21 04 10 00 00 00 00 00 01 
    VendorID = 21A9, ProductID = 1004, Version = 0000
    Class/Subclass/Protocol = 255 / 255 / 255
    Number of Configurations = 1
enumeration:
Like Port change...

What version of the software/Arduino/Teensyduino are you using?
The data I am showing is the current released stuff, which I verified is identical to that in the current beta release of Teensyduino on 1.8.12...
Are you running it? And/or do you have another version in your (sketch folders)\libraries\usbhost_t36 ?

If so maybe see if it is up to date with current stuff?

Other things I might try would be, to plug the touch screen into a USB Hub that is connected to the Teensy USB port... If you have one, might try a powered hub... And again see if anything shows up.
 
DEBUG with teh BUYDISPLAY SCREEN 10' HDMI and VGA
DUMP DEBUG :


USB Host Testing
960
sizeof Device = 36
sizeof Pipe = 96
sizeof Transfer = 64
power up USBHS PHY
reset waited 5
USBHS_ASYNCLISTADDR = 0
USBHS_PERIODICLISTBASE = 1FFF6000
periodictable = 1FFF6000
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 00 00 00 40 83 04 10 57 00 02 01 02 03 01
VendorID = 0483, ProductID = 5710, Version = 0200
Class/Subclass/Protocol = 0 / 0 / 0
Number of Configurations = 1
enumeration:
enumeration:
Manufacturer: waveshare

_______________________________________________________________________
After waveshare, there are special caracters, and copy/paste ignores the rest.
I notice there are some differences between your listing and this one.
(12 Mbits/s for example)
 
@LERAY - just a quick followup... So far I don't see any obvious way to help here...

Again I am not sure exactly how you have it hooked up: When you say:
But if I connect these screens to a standard USB/PC port, the mouse of the PC is running correctly.
Is the Screen running with HDMI hooked up to that PC, or just the USB? Does it work if only the USB connected?
When you say the mouse on the PC is working... Are you saying the normal mouse is working? Or are you saying that touching the display works like a mouse on the system?

Did you try with HUB on the Teensy?

I would doubt it, but is it a USB3 device? Once clue would be if the plug in connector was blue?

Did you try connecting to a linux box like RPI? If so again would help to see what information the linux kernel says about the device.

Again just trying to get an idea of why it is not being seen at all and hoping to see if we might get an idea of what is going on.
 
Thanks, Kurt,
Indeed, when the USB port of the touchscreen is connected to a real PC, the mouse moves on the PC screen following the touch of the touchscreen. Even if there is no video in the touchscreen input.
I connect the TEENSY USB Host port tof the touchscreen directly, without HUB. USB port of the LG and ASUS touchscreens are standard 2.0 USB ports.

My program is running fine with the Buydisplay touchscreen, even with no video in the screen input.
I have been testing with a complete program I wrote for the Techtoy HDMI video board.
The mouse program is a subpart of this program, for testing more easily the touch control. And to isolate the problem.

I have developped lots of software under WINDOWSXX and VUSUAL C++ since years, and has never time to invest and waste time in Linux. And re-write all my graphics 2D and 3D libraries nor my MIDI organ libraries ! (I regret it of couse !).
I am a 3D computer graphics pionneer. And built the first 3D real time Z-BUFFER machine.

Combined with the Techtoys video board, the TEENSY would be a fantastic general purpose platform. Which could replace PC and his boring OSs (WINDOWS or LINUX or BEEOS, etc...) which are unusefull for many real time embedded industrial uses. ARDUINO and TEENSYDUINO is a remarkable tool which allows avoiding the use of OS.
Best regards,
Pscal Leray

Web site :
pascal.leray.free.fr/index_en.html
 
Here is the detailed infos concerning the LG USB Touchscreen. Extracted thanks to the USBdeview.exe software which outputs all USB infos :
Maybe this could help ?

DEVICE NAME LG TS2009F-USB
DESCRIPTION Périphérique d'interface utilisateur USB
DEVICE TYPE HID (Human Interface Device)
POWER 100 mA
CONNCETED Yes
Safe To Unplug Yes
Disabled No
USB Hub No
Create Date 09/08/2019 10:10:04
Last Plug/unplug Date 07/04/2020 13:09:22
Vendor Id 16fd
Product Id d091
Firmware Revision 4.04
USB Class 03
USB SubClass 01
USB Protocal 02
Hub/Port Hub 3, Port 1
Computer Name LLLLORG
Parentid Prefix 6&e83ded&0
Service Name HidUsb
Service Description Pilote de classe HID Microsoft
Driver Filename hidusb.sys
Device Class HIDClass
Device Mfg (Périphériques système standard)
USB Version 1.10
Driver Description Périphérique d'interface utilisateur USB
Driver Version 5.1.2600.5512
Driver InfSection HID_Inst
Driver InfPath input.inf
Instance ID USB\Vid_16fd&Pid_d091\5&3b5b077f&0&1
Capabilities Removable, SurpriseRemovalOK

The USB port is operating even without video input.
 
Again not sure what the difference is...

If it were me, I would try to turn on more debug stuff to see if anything jumps out.
Example in the file ehci.cpp - look at USBHost::isr();
There is a #if 0 at the start of it. Change that to #if 1
And see if anything prints when you plus in that device.

And again if you have not tried it, maybe connect a USB hub to the T3.6 and then plug in the monitor and see if anything shows up.
 
Thanks.
I tried to connect a HUB but the red lights of the Hub are off. (ON as usual on any PC). Maybe it's void, but maybe the 5V supply current of the TEENSY USB host is unsufficient ?
Or maybe one can don't care of it ?

I tried the if(1)
but I got no output more after the :
periodictable = 1FFF6000
 
I assume when you plugged in the HUB to the T3.6, that you received some additional information in the debug output?

I wonder about some real basic question. I wonder if there is a chance that it might be as simple as a bad connection?

That is, I just ried plugging in a HUB I often use for debugging stuff and it did not work this time... The LEDS did not come on...

Then I went back to my box of USB cables and pulled out a different one and it worked.

For some reason the other USB cable did not make good connections with the USB adapter I was using on this board...
 
If it was only a simple connection problem, my program would'nt run with one display(as the Buydisplay10") and not with other displays.
I tried both with and without HUB, and the result is the same :
Running fine with Buydisplay
Not running on other displays.


Maybe the Buydisplay touchscreen outputs more 5V power than the LG or ACER screens and the TEENSY host HUB :
Because the HUB don't highlights with TEENSy 3.6 USB Host and Highlight RED with any standard PC.
My HUB is a 4 ports Hub.(TNB model)
 
Again why I mention it, is because you say that the hub did not light up... I have not seen pictures of your setup or setups so not sure if for example do some or all of these displays have their own USB extension cable or do they require you to use your own cable? Do they all use the same cable or do some of them have different USB connections which require different USB extension cables?

As I mentioned the first USB cable I used to hub was one of those older connectors (not like the bigger UNO ones) but like the ones used on Teensy 2s... With the first one again light did not stay on and nothing much in debug terminal. But when I plugged it in using a different cable. It works.
And you see more like:
Code:
USB Host Testing
960
sizeof Device = 36
sizeof Pipe = 96
sizeof Transfer = 64
power up USBHS PHY
 reset waited 5
USBHS_ASYNCLISTADDR = 0
USBHS_PERIODICLISTBASE = 1FFF6000
periodictable = 1FFF6000
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 98 32 00 01 00 01 
    VendorID = 05E3, ProductID = 0608, Version = 3298
    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=1FFF3580
found possible interface, altsetting=0
number of interfaces found = 1
*** Device Hub1 5e3:608 - connected ***
 product: USB2.0 Hub
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
And then if I plug something like mouse in it you see more stuff...
So again it feels like it is seeing nothing?
 
I've typically used powered Hubs - to make sure it had power - especially when using HDD's needing more power. The powered Amazon Basics hub on my desk doesn't have lights so I can't test with that.

With the 480 Mbps USB on USBHost cables do have higher standards for function than the 12 Mbps devices.
 
I tried with a simple mouse, but the output monitor stops at :
periodictable = 1FFF6000

Nothing after
 
I tried to track the code : after println("periodictable =
There is a call to attachInterruptvector which fails with ASUS or LG screens
NO MORE MESSAGE.
Runs correctly with BUYDISPLAY screen !
Thanks for your help.
 
I tried with a simple mouse, but the output monitor stops at :
periodictable = 1FFF6000

Nothing after

Maybe your Teensy 3.6 does not have enough 5V power to give to these USB devices and also run itself? Shortly after printing that message, the TPD3S014 chip is enabled, allowing power to flow to the devices you have connected to Teensy 3.6's USB host port. Stopping at or near that place may be a sign of insufficient power to run.

Usually the USB ports on most PCs can supply 500 mA. Teensy 3.6 needs about 80 mA to run, leaving about 420 mA to give to the USB devices you have connected. Maybe that is not enough for these devices you are using?

Most powered USB hubs also provide 500 mA per port. But if Teensy is plugged into an unpowered hub, you probably have only 100 mA available. That's just barely enough for Teensy 3.6 to run. Trying to also power USB devices connected to Teensy's USB host power will only work if they consume little or no power.

Do you have a 5V power supply rated for 1A or more? If so, perhaps try cutting the VIN-VUSB pads on your Teensy 3.6 and then connect the power supply to VIN & GND.
 
Last edited:
A separate issue is the type of HID. Those touchscreens are very different HID devices than a normal mouse. Windows supports them and allows them to control the mouse cursor on your screen, but the actual HID communication is not a mouse. For USBHost_t36, a new driver will be needed to support the multi-touch protocol.

However, if you are not even getting to the point where the USB device and configuration descriptors are printing to the serial monitor, then some other problem is happening. You should at least see the descriptors and info from every driver as it checks whether it should claim the whole device or the specific HID interface.

Another guess, which seems unlikely, could be the USB configuration descriptor is too large. USBHost_t36 has a fixed size buffer.

Code:
static uint8_t enumbuf[512] __attribute__ ((aligned(16)));

I have seen large descriptors from some of those USB touchscreens, but not more than 512 bytes. Also, if this really was crashing due to this buffer size, I would imagine more of the debug info would print. Since it's stopping so early, my main guess is still insufficient power to run Teensy 3.6 and the USB device you've connected to its USB host port.
 
I tried with a 1A USB power supply. Same problem.
Anyway, I think that the internal USB modules of the touchscreens have there own power supply, as they are inside the screen, supplied by the 220V of the grid via a local supply.
So probably don't need particular local supply from the USB host ?

Probably the LG and ASUS have multitouch protocols not supported by the USBHost-t36 library ?
 
Hello Paul,
As you have a new project TEENSY 5 ?(congratulations !) could you :
-provide contiguous 3x8 bits in right order.[/B] If possible in the same order as the internal registers. (I can't use TEENSY 4 due to the lack of contiguous 8 bits input outputs ! Moreover Not compatible with 3.2 It's really a pity !).
-As the new microprocessor used in TEENSY 4 is very powerfull, one could envisage to develop in C++ on a cross compiled GCC ON this new TEENSY 5 platform :
-Coupled with the TECHTOY video board. In order to provide an HDMI output and a running USB Host interface for touchscreens.
-One could completely avoid PC's for C++ developpers.

As you know perhaps, I purchased hundreds of TEENSY 3.2 for MIDI ORGAN boards.
Lots of Thanks and respect again for all what you are doing !

Pascal

http://pascal.leray.free.fr/web_org/org_en.html
 
Teensy 5 is likely years away. No Cortex M55 chips exist yet. But we are now starting to beta test Teensy 4.1, which is an incremental upgrade from 4.0 for more I/O.


Probably the LG and ASUS have multitouch protocols not supported by the USBHost-t36 library ?

Very difficult to say without seeing their USB descriptor data.

Normally any unsupported device should at least have all its descriptor data printed to the serial monitor, if you've enabled the verbose debug output. Since the program is stopping before any descriptors are printed, something else must be wrong. But I do not know what is causing this problem. I've made 2 guesses, but I'm afraid I can not do more, since I do not have either of those monitors.
 
Back
Top