Device with multiple USB EHCI hosts

Ask questions about Arch Linux ARM. Please search before making a new topic.

Device with multiple USB EHCI hosts

Postby schmidtbag » Tue Jun 27, 2017 4:01 pm

I'm working on this project involving 2x 1080p 30FPS webcams (using the uvcvideo driver), and right now the largest roadblock to my progress is USB bandwidth.

I have tested the cameras on four different systems: An ODROID-U2, an UDOO Quad, a Ryzen 5 desktop, and an Intel Haswell laptop. The first 2 platforms are both ARM based and only have a single EHCI divided among their available ports. I get an error stating there is no memory left on the [video] device when trying to utilize both cameras simultaneously. And yes, I tried doing "rmmod uvcvideo; modprobe uvcvideo quirks=128" in addition to other quirks combinations - it doesn't help. When testing the webcams on the Ryzen build using USB ports from the host controller, the same error occurs. When using ports from separate controllers, they work just fine together. The weird part is the Haswell laptop seems capable of activating both webcams at higher resolutions, even on the same USB bus and without using the uvcvideo quirks. However, I expect this project to be highly portable, so neither the Ryzen or Haswell PCs are an option; I was merely using them to add data to the situation.


Unless someone knows a way to get both webcams to run at their full potential, I've begrudgingly accepted that I'm going to need to use a different device. At the bare minimum, the device needs to have:
* At least two USB EHCI or XHCI controllers (that can be identified through "lsusb -t")
* At least 2 CPU cores with 512MB of RAM, though 4 cores is preferred
* Smaller than an ITX motherboard
* At least one SATA port (not required, but strongly preferred)
* Capable of being passively cooled (again, not required but strongly preferred)
A stereo mic jack would be nice, but that's a low priority.

I do not want to buy another device where all USB ports are hubbed from the same parent controller, seeing as there's basically a 25% chance it'll support my webcams at all, let alone smoothly. I don't care about a GPU or wifi.


I considered getting a Gigabyte GB-BXBT-1900, but that's more power-hungry, expensive, and thick compared to many ARM devices with decent processing power.

Any suggestions?


EDIT:
I heard the UDOO's USB OTG port supports host mode, though I personally was never able to get it to work. If somebody knows a way around that, then great because the UDOO is a great platform for my needs.
schmidtbag
 
Posts: 23
Joined: Sat Nov 02, 2013 8:44 pm

Re: Device with multiple USB EHCI hosts

Postby WarheadsSE » Tue Jun 27, 2017 5:44 pm

ODROID-XU4:
Code: Select all
## ethernet
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=r8152, 5000M
# ?
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
# 2x USB3 exposed
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/2p, 5000M
# 1x USB2 exposed
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/2p, 480M
# ?
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=exynos-ohci/3p, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=exynos-ehci/3p, 480M
Core Developer
Remember: Arch Linux ARM is entirely community donation supported!
WarheadsSE
Developer
 
Posts: 6727
Joined: Mon Oct 18, 2010 2:12 pm

Re: Device with multiple USB EHCI hosts

Postby schmidtbag » Tue Jun 27, 2017 6:03 pm

Interesting - that does [mostly] meet my requirements. There's no SATA port but I don't mind getting a USB 3.0 to SATA converter, which hopefully wouldn't use up any of the 2.0 bandwidth.

However, it is a bit overkill for my needs. I would rather spend less on weaker hardware with a similar USB configuration.
schmidtbag
 
Posts: 23
Joined: Sat Nov 02, 2013 8:44 pm

Re: Device with multiple USB EHCI hosts

Postby WarheadsSE » Wed Jun 28, 2017 12:59 pm

Alright, well, you've also got the GlobalScale/Marvell ESPRESSObin, which

Covers most of your specs, but a lower-clock processor, that happens to be dual A53 (Aarch64) & SATA
Core Developer
Remember: Arch Linux ARM is entirely community donation supported!
WarheadsSE
Developer
 
Posts: 6727
Joined: Mon Oct 18, 2010 2:12 pm

Re: Device with multiple USB EHCI hosts

Postby schmidtbag » Wed Jun 28, 2017 2:55 pm

Hmmmm.... that board is actually a lot more suitable for me. Their block diagram seems to suggest it will work without there being a USB bandwidth issue. The GPIO will also very much come in handy, and I'm intrigued by the potential I can get out of the mini PCIe slot.

My one and only concern with this board is whether the CPU can reliably handle recording (via gstreamer) from both webcams at 1080p@30FPS; if ditching transcoding is necessary to keep up framerates, that's totally fine with me - this is why SATA is nice. The UDOO has a quad core Cortex A9 at 1.2Ghz, and recording from a single camera utilized up to roughly 30% of the CPU without GPU acceleration (though from what I recall, the average was more like 20%). Cortex A53 is 64 bit and to my understanding is overall slightly faster (clock-per-clock) than A9, but this board offers no GPU acceleration. I figure this is going to be a very close call.

If I could get to 1.6GHz+ with a heatsink then I'm definitely sold on this, though it seems there's no official way to overclock the board. Any thoughts?


Also, thanks a lot for the input so far.
schmidtbag
 
Posts: 23
Joined: Sat Nov 02, 2013 8:44 pm


Return to User Questions

Who is online

Users browsing this forum: No registered users and 1 guest