From 1b7b9826ef887db329a43a731808fb52f33305d7 Mon Sep 17 00:00:00 2001 From: MrKevinWeiss Date: Thu, 31 Aug 2023 11:44:21 +0200 Subject: [PATCH] doc(READEME): update FAQs --- README.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 61430d0..ed1555e 100644 --- a/README.md +++ b/README.md @@ -295,13 +295,15 @@ design constraints. High-end boards might support more devices than budget ones. In practice, while the USB standard allows many devices, real-world constraints like power, bandwidth, and hardware often reduce this number. -We recommend using powered USB hubs. +Powered USB hubs solve the power problem. +Some dev kits take up lots of bandwidth resources (such as atmel based boards or the newer nrf dev kits). +[This is due to isochronous bandwidth reservations.](https://www.thegoodpenguin.co.uk/blog/understanding-why-usb-isochronous-bandwidth-errors-occur/) +Some testing shows a USB controller can be saturated with as few as 7 boards. -We also found that the development kits use around 7 or 8 endpoints, though -having multiple controllers can solve this issue. +Otherwise, there is a limit of not only endpoints but also from the `xHCI` allowing a maximum of 32 in most cases. +This can be achieved with ESP32 dev kits since they don't take much bandwidth. -Some specific USB hubs have been running into bandwidth issues, balancing -"high bandwidth" boards can help. +Extra USB controller hardware can help with these issues but at some point either the server needs to become more "distributed" or boards should be remotely removed via hub power control and only a fraction of boards would be active at a given moment. ## License