We use both USB ports on the T20 in our own board design (Which is based on the Toradex development board). One of the USB ports is used to connect to a PC using RNDIS or ActiveSync, I think that port is referred to as “host” in the documentation. The other USB port is used to connect a USB flash drive to the T20, I think that port is referred to as “client” or “OTG”.
My question is about these registry settings:
[HKLM\Drivers\Builtin\USBEHCI1]
HighSpeed = dword:1 ;default=1 -> High Speed (BSP V1.1 and higher)
[HKLM\Drivers\Builtin\USBEHCI3]
HighSpeed = dword:1 ;default=1 -> High Speed (BSP V1.1 and higher)
[HKLM\Drivers\Builtin\USBFN]
HighSpeed = dword:1 ;default=1 -> High Speed (BSP V1.1 and higher)
Can I control the USB speed separately on the two ports? For example, if I set [HKLM\Drivers\Builtin\USBEHCI3\HighSpeed] to 1 and set [HKLM\Drivers\Builtin\USBEHCI1\HighSpeed] to 0 then will that allow the USB connection to the PC to run at high speed while limiting the USB connection to the USB flash drive to full speed? Or do those two registry entries not map directly to the two USB ports like this?
The hardware design of our board may support higher speed USB on one port but not the other, so I’d like to enable high speed on just one port rather than both.
I tried an experiment where I measured the performance of both the USB connection from the T20 to the PC, and from the T20 to a USB drive. I found that the performance was unaffected by changing those three registry settings from 1 to 0.
The USB connection to the PC was always reported as High Speed by the PC and I measured the performance as 150 MBits/sec in both cases. This is too fast for Full Speed and so it probably means the USB really was in High Speed mode.
The read performance from the USB drive to the T20 with a large file was 7 MBits/sec in both cases, which is consistent with Full Speed USB.
It seems to me that these registry settings are not have an effect on my T20, which is confusing.
When you use a USB drive a Colibri T20 acts as a host. In case of RNDIS Colibri T20 acts as a device. So to change a speed of USB connection to the PC you should use
[HKLM\Drivers\Builtin\USBOTG/UsbFn]
HighSpeed = dword:0
Thanks @alex.tx, that clears up my confusion. When I set [HKLM\Drivers\Builtin\USBOTG\UsbFn\HighSpeed] to 0 the USB connection to my PC was reported as “Full Speed” and when I measured it’s performance I found it to be 8.2 Mbps, which is consistent with the 12 Mbps spec minus the “10-15% overhead of the USB protocol”.
This means that the USB connection to the PC has been running at “High Speed” for all the years that we have been using the T20, apparently without issue. We have had problems when the T20 acts as a host to connect a USB drive and needed to set that USB connection to “Full Speed” to make it work reliably. Our recent board designs do support High Speed for the USB drive and I was trying to make sure that if I adjusted the registry entries to allow High Speed access as a host that I didn’t disturb the set-up for USB client operation. Now it’s all clear.