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?
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).
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?
[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-22.214.171.124-0-gd89840b36573
[Thu Jan 20 04:03:17 2022] Backport generated by backports.git v126.96.36.199
[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
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.
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.