USB bandwidth problems using ST60 WIFI Adapter

Hi all!
I’m using jetson nano on a custom board, and I have two USB hubs, the first one is connected to USB2 and the other one to USB 3.
I have 2 cameras ( MJPEG 640480, and H264 19201080) and the ST60 WIFI Adapter connected to the USB3 hub, and another 2 cameras (same as before) connected to the USB2 hub (according to board schematics).

When I try to open them all I get the No space left on device (28) error.
When I unplug the wifi adapter and connect to the internet through an ethernet cable(connected to the same hub with a USB adapter), everything seems to work.
I can assume that the Wifi driver allocates more USB bandwidth than is needed and I have no space left.

Is anyone familiar with this device or this driver and can help me figure out what could be the problem?

Thanks.

No space left on device sounds more like disk space instead of memory. Does this issue happen if we use wifi adapters along?
I mean no camera gets involved.

I decided that this is a bandwidth problem because of this thread:

Does this issue happen if we use wifi adapters along?
I mean no camera gets involved

No, I can run 3 cameras but when I run the fourth, I get that message.

Ok, so wifi is not related to this issue. It probably same as below.

Thanks.
I’ve read that, but I can use the 4 cameras and a USB-based ethernet connection everything works.
So what can be the reason?

I think it is obvious to say WIFI adapter is also sharing the usb bandwidth…

Thanks for the replay.
I of course know that, but why is the Wifi adapter consumes more USB bandwidth than the Ethrnet cable?

Hi,

The onboard ethernet is on pcie bus but not usb.

Hi,
the ethernet cable is connected via USB adapter.

Yes, the message “no space left on device” is just a really bad error message which occurs when there is not enough bandwidth. Sadly, it could also be from no “other space” left, e.g., I would expect the same message from the disk being full (check “df -H -t ext4”). If this is a case of not enough bandwidth, then all you can do is move a camera to another USB root HUB…that particular root HUB is at its limits. An example of another root HUB (in this case) probably mandates a PCIe card (which a dev kit can’t handle).

I would think that this is a case of just too many devices needing a minimum bandwidth, and they all sum together (including overhead) such that the hardware just cannot handle those devices in those modes.

Is the WiFi in excess of gigabit speed? If not, then perhaps you could attach a WiFi router to the wired ethernet (which would provide WiFi through the wired and reduce USB root HUB traffic).

Can we clarify if custom board is related to this? Do you have nano devkit to validate this?

Also, is your wifi adapter running as usb3 device or usb2?

Thanks.
Is it possible that the wifi adapter allocated too much much bandwidth that it doesn’t need?
Is there a way to check it? Because according to usbtop, the bandwidth that actually goes through is really small and meaningless.

It’s a custom board that I didn’t make, I just need to set up the software.
According to the schematics, it supposes to be on the USB3 hub, but is there a way to check it on the OS? How can I do it?
Thanks!

Check the dmesg after you connect the wifi adapters. The log will tell you it is a high-speed or super speed device.

It says it’s a high speed device:

[Thu Jan 20 04:03:16 2022] tegra-xusb-padctl 7009f000.xusb_padctl: power on UTMI pads 2
[Thu Jan 20 04:03:17 2022] usb 1-3: reset high-speed USB device number 3 using tegra-xusb
[Thu Jan 20 04:03:17 2022] usb 1-3.2: new high-speed USB device number 7 using tegra-xusb
[Thu Jan 20 04:03:17 2022] usb 1-3.2: New USB device found, idVendor=1286, idProduct=2052
[Thu Jan 20 04:03:17 2022] usb 1-3.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[Thu Jan 20 04:03:17 2022] usb 1-3.2: Product: Marvell Wireless Device
[Thu Jan 20 04:03:17 2022] usb 1-3.2: Manufacturer: Marvell
[Thu Jan 20 04:03:17 2022] usb 1-3.2: SerialNumber: 0000000000000000
[Thu Jan 20 04:03:17 2022] compat: loading out-of-tree module taints kernel.
[Thu Jan 20 04:03:17 2022] Loading modules backported from Summit Linux version LRD-REL-8.6.0.12-0-gd89840b36573
[Thu Jan 20 04:03:17 2022] Backport generated by backports.git v8.6.0.12
[Thu Jan 20 04:03:17 2022] PMU_EN GPIO not configured
[Thu Jan 20 04:03:17 2022] ieee80211 phy0: priv->pcmd_buf = ffffffc0df23c000
[Thu Jan 20 04:03:17 2022] ieee80211 phy0: lrdmwl: found firmware image <lrdmwl/88W8997_usb.bin>
[Thu Jan 20 04:03:17 2022] ieee80211 phy0: start to download FW…
[Thu Jan 20 04:03:17 2022] ieee80211 phy0: info: FW download over, size 378808 bytes, ret 0
[Thu Jan 20 04:03:17 2022] ieee80211 phy0: Firmware download complete, port will reset with new interface…
[Thu Jan 20 04:03:17 2022] lrdmwl_usb: probe of 1-3.2:1.0 failed with error -115
[Thu Jan 20 04:03:17 2022] usbcore: registered new interface driver lrdmwl_usb
[Thu Jan 20 04:03:19 2022] usb 1-3.2: USB disconnect, device number 7
[Thu Jan 20 04:03:19 2022] tegra-xusb-padctl 7009f000.xusb_padctl: power down UTMI pad 2
[Thu Jan 20 04:03:19 2022] usb 1-3: usb_suspend_both: status 0

Ok, just found out that maybe the port is not defined as USB3, but it’s connected to the jestons’ USB3 port.
Do you know what can be the reason?

I cannot tell your custom board design. But jetson’s usb3 port is always coupled with usb2 port.

Thus, it is normal that device is enumerated as high speed. If running as high speed device doesn’t meet your expectation, then please move to devkit to debug. We really cannot debug over the custom board.

Ok, thank you very much.
Just if you can explain to me what do you mean by usb3 port is always coupled with usb2 port?
Thank you!

This is hardware design. We don’t support a usb3 port that does not have usb2 pins come along with.

The device is probably not capable of using any other bandwidth than what it allocated (changing the bandwidth the device wants is not an option). However, you have enough devices that I think your USB just can’t handle everything at once. A USB3 HUB simply adds more load to the root HUB. It is a bit like a power cord adapter where you can plug 10 appliances into a single wall socket…if they are all low power LED reading lights, then it won’t matter, but if they are all large refrigerators, then it will fail and the only option is to find another wall plug.

Btw, older USB2 root HUBs have the ability to handle slower speed devices in the hardware of that HUB. A tree view of “lsusb -t” would show a version 1.1 device (e.g., a mouse) as still routed to that USB2 root HUB. USB3 tends to not have the legacy support, but will instead have support for rerouting a slower device to another root HUB (where that root HUB handles USB2 or slower). A device which is not USB3, or else is forced to slow below USB3 speeds, and which is connected to a USB3-capable socket, would show up under the tree view of “lsusb -t” as going to a USB2 root HUB. USB3 root HUBs which handle USB2 or slower more or less do not exist.

1 Like