Why am I limited to ~10-20 usb devices?
I am trying to hook up 27 USB device to an Intel NUC running CentOS 7 but no matter what I do the system can never see more than 20. I have tried multiple models of NUCs and even tried adding an extra mPCIe USB controller card to one, I tried a 1U server with an Intel Xeon and an extra PCIe USB controller card, and even tried a Mac Mini. The Mac Mini was able to recognize the most devices at 20 but this is still shy of what we need. The extra USB controller cards made no difference in the number of devices the system recognized. The 27 devices are spread across 3 powered 10 port hubs. Does anyone know why the systems would not be able to see all of the USB devices since even with the hubs it is still way under the 127 USB spec limit?
Thanks for the help!
linux centos usb
migrated from serverfault.com Aug 29 '15 at 22:21
This question came from our site for system and network administrators.
|
show 7 more comments
I am trying to hook up 27 USB device to an Intel NUC running CentOS 7 but no matter what I do the system can never see more than 20. I have tried multiple models of NUCs and even tried adding an extra mPCIe USB controller card to one, I tried a 1U server with an Intel Xeon and an extra PCIe USB controller card, and even tried a Mac Mini. The Mac Mini was able to recognize the most devices at 20 but this is still shy of what we need. The extra USB controller cards made no difference in the number of devices the system recognized. The 27 devices are spread across 3 powered 10 port hubs. Does anyone know why the systems would not be able to see all of the USB devices since even with the hubs it is still way under the 127 USB spec limit?
Thanks for the help!
linux centos usb
migrated from serverfault.com Aug 29 '15 at 22:21
This question came from our site for system and network administrators.
doeslsusb -t
show all the devices, or can you see where the missing ones should be? Are all the devices the same, eg serial port?
– meuh
Aug 28 '15 at 18:01
I just ranlsusb -t
and, no, the devices are no showing. I can tell where they should be but they are not there. And, yes, all the devices are the same.
– HowsItStack
Aug 28 '15 at 18:29
Perhaps the total isochronous bandwidth needed for the devices exceeds that available at the host. I dont know how you can check for this. Are there any errors in /var/log/messages or some similar file.
– meuh
Aug 28 '15 at 19:03
What are the devices you're trying to use and what do you want to do with them ?
– André Borie
Aug 28 '15 at 19:27
1
@PeterCordes I've personally tried it on a local Ethernet network without success, so I doubt it'll be reliable or even work. Multiple machines would be better and not violate any standards (USB wasn't designed to be used over IP and it expects very low latencies)
– André Borie
Aug 29 '15 at 23:36
|
show 7 more comments
I am trying to hook up 27 USB device to an Intel NUC running CentOS 7 but no matter what I do the system can never see more than 20. I have tried multiple models of NUCs and even tried adding an extra mPCIe USB controller card to one, I tried a 1U server with an Intel Xeon and an extra PCIe USB controller card, and even tried a Mac Mini. The Mac Mini was able to recognize the most devices at 20 but this is still shy of what we need. The extra USB controller cards made no difference in the number of devices the system recognized. The 27 devices are spread across 3 powered 10 port hubs. Does anyone know why the systems would not be able to see all of the USB devices since even with the hubs it is still way under the 127 USB spec limit?
Thanks for the help!
linux centos usb
I am trying to hook up 27 USB device to an Intel NUC running CentOS 7 but no matter what I do the system can never see more than 20. I have tried multiple models of NUCs and even tried adding an extra mPCIe USB controller card to one, I tried a 1U server with an Intel Xeon and an extra PCIe USB controller card, and even tried a Mac Mini. The Mac Mini was able to recognize the most devices at 20 but this is still shy of what we need. The extra USB controller cards made no difference in the number of devices the system recognized. The 27 devices are spread across 3 powered 10 port hubs. Does anyone know why the systems would not be able to see all of the USB devices since even with the hubs it is still way under the 127 USB spec limit?
Thanks for the help!
linux centos usb
linux centos usb
asked Aug 28 '15 at 17:44
HowsItStack
migrated from serverfault.com Aug 29 '15 at 22:21
This question came from our site for system and network administrators.
migrated from serverfault.com Aug 29 '15 at 22:21
This question came from our site for system and network administrators.
doeslsusb -t
show all the devices, or can you see where the missing ones should be? Are all the devices the same, eg serial port?
– meuh
Aug 28 '15 at 18:01
I just ranlsusb -t
and, no, the devices are no showing. I can tell where they should be but they are not there. And, yes, all the devices are the same.
– HowsItStack
Aug 28 '15 at 18:29
Perhaps the total isochronous bandwidth needed for the devices exceeds that available at the host. I dont know how you can check for this. Are there any errors in /var/log/messages or some similar file.
– meuh
Aug 28 '15 at 19:03
What are the devices you're trying to use and what do you want to do with them ?
– André Borie
Aug 28 '15 at 19:27
1
@PeterCordes I've personally tried it on a local Ethernet network without success, so I doubt it'll be reliable or even work. Multiple machines would be better and not violate any standards (USB wasn't designed to be used over IP and it expects very low latencies)
– André Borie
Aug 29 '15 at 23:36
|
show 7 more comments
doeslsusb -t
show all the devices, or can you see where the missing ones should be? Are all the devices the same, eg serial port?
– meuh
Aug 28 '15 at 18:01
I just ranlsusb -t
and, no, the devices are no showing. I can tell where they should be but they are not there. And, yes, all the devices are the same.
– HowsItStack
Aug 28 '15 at 18:29
Perhaps the total isochronous bandwidth needed for the devices exceeds that available at the host. I dont know how you can check for this. Are there any errors in /var/log/messages or some similar file.
– meuh
Aug 28 '15 at 19:03
What are the devices you're trying to use and what do you want to do with them ?
– André Borie
Aug 28 '15 at 19:27
1
@PeterCordes I've personally tried it on a local Ethernet network without success, so I doubt it'll be reliable or even work. Multiple machines would be better and not violate any standards (USB wasn't designed to be used over IP and it expects very low latencies)
– André Borie
Aug 29 '15 at 23:36
does
lsusb -t
show all the devices, or can you see where the missing ones should be? Are all the devices the same, eg serial port?– meuh
Aug 28 '15 at 18:01
does
lsusb -t
show all the devices, or can you see where the missing ones should be? Are all the devices the same, eg serial port?– meuh
Aug 28 '15 at 18:01
I just ran
lsusb -t
and, no, the devices are no showing. I can tell where they should be but they are not there. And, yes, all the devices are the same.– HowsItStack
Aug 28 '15 at 18:29
I just ran
lsusb -t
and, no, the devices are no showing. I can tell where they should be but they are not there. And, yes, all the devices are the same.– HowsItStack
Aug 28 '15 at 18:29
Perhaps the total isochronous bandwidth needed for the devices exceeds that available at the host. I dont know how you can check for this. Are there any errors in /var/log/messages or some similar file.
– meuh
Aug 28 '15 at 19:03
Perhaps the total isochronous bandwidth needed for the devices exceeds that available at the host. I dont know how you can check for this. Are there any errors in /var/log/messages or some similar file.
– meuh
Aug 28 '15 at 19:03
What are the devices you're trying to use and what do you want to do with them ?
– André Borie
Aug 28 '15 at 19:27
What are the devices you're trying to use and what do you want to do with them ?
– André Borie
Aug 28 '15 at 19:27
1
1
@PeterCordes I've personally tried it on a local Ethernet network without success, so I doubt it'll be reliable or even work. Multiple machines would be better and not violate any standards (USB wasn't designed to be used over IP and it expects very low latencies)
– André Borie
Aug 29 '15 at 23:36
@PeterCordes I've personally tried it on a local Ethernet network without success, so I doubt it'll be reliable or even work. Multiple machines would be better and not violate any standards (USB wasn't designed to be used over IP and it expects very low latencies)
– André Borie
Aug 29 '15 at 23:36
|
show 7 more comments
2 Answers
2
active
oldest
votes
Many devices at once is at least supposed to work, according to his LJ article about making a serial console remote-access server. Limits of up to 127 USB devices (including hubs) per controller are mentioned (i.e. per pair of ports).
Maybe Linux has problems reaching that USB-imposed limit. Probably the kernel log has something interesting to say, so hopefully you can post what you find there at some point.
If you need a workaround, you could export the USB ports over the network. Then you could use multiple computers without modifying your software. It's obviously not ideal, since it means more hardware, more power consumption, and more complexity. The usbip sourceforge project looks abandoned, but there's still an Ubuntu package for it. I guess the code made it into mainline Linux (2.6.28), and the user-space tools haven't needed updating. See also this askubuntu question about it. This may or may not work well, depending on your devices and whether the drivers for them can handle the much higher latency of a network round trip. See André Borie's reply to my comment on the question.
Using this might run into the same per-host limits on number of USB devices. If so, that tells you it's nothing to do with the low-level drivers, and instead is a bit higher up in Linux's USB stack.
If you were using USB storage devices, you could use nbd
to export block devices.
add a comment |
I dealt with this problem too and it took me a while to find the real problem and solutions. It's a long page, so you can go read it there http://marc.merlins.org/perso/linux/post_2018-12-20_Getting-Around-USB3-xhci-32-Device-Limit-Max-number-of-devices-this-xHCI-host-supports-is-32.html
Basically, it boils down to these things
1) there is a 96 endpoint limit with USB3 (which translates to 32 devices only)
2) you lose further endpoints due to hubs, using a USB2 cable to a USB3 hub gives you a few slots back
3) more generally you should disable USB3 if you can do without it (remove the USB3 kernel driver, or easier if you can, disable USB3 in your bios)
4) if you cannot disable USB3, get a USB2 only PCIe card and that one will truly give you 120 devices or so.
Further resources:
https://www.spinics.net/lists/linux-usb/msg175224.html
https://forums.intel.com/s/question/0D50P00004905stSAA/hardware-limitations-on-usb-endpoints-xhci?language=en_US
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f226345%2fwhy-am-i-limited-to-10-20-usb-devices%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Many devices at once is at least supposed to work, according to his LJ article about making a serial console remote-access server. Limits of up to 127 USB devices (including hubs) per controller are mentioned (i.e. per pair of ports).
Maybe Linux has problems reaching that USB-imposed limit. Probably the kernel log has something interesting to say, so hopefully you can post what you find there at some point.
If you need a workaround, you could export the USB ports over the network. Then you could use multiple computers without modifying your software. It's obviously not ideal, since it means more hardware, more power consumption, and more complexity. The usbip sourceforge project looks abandoned, but there's still an Ubuntu package for it. I guess the code made it into mainline Linux (2.6.28), and the user-space tools haven't needed updating. See also this askubuntu question about it. This may or may not work well, depending on your devices and whether the drivers for them can handle the much higher latency of a network round trip. See André Borie's reply to my comment on the question.
Using this might run into the same per-host limits on number of USB devices. If so, that tells you it's nothing to do with the low-level drivers, and instead is a bit higher up in Linux's USB stack.
If you were using USB storage devices, you could use nbd
to export block devices.
add a comment |
Many devices at once is at least supposed to work, according to his LJ article about making a serial console remote-access server. Limits of up to 127 USB devices (including hubs) per controller are mentioned (i.e. per pair of ports).
Maybe Linux has problems reaching that USB-imposed limit. Probably the kernel log has something interesting to say, so hopefully you can post what you find there at some point.
If you need a workaround, you could export the USB ports over the network. Then you could use multiple computers without modifying your software. It's obviously not ideal, since it means more hardware, more power consumption, and more complexity. The usbip sourceforge project looks abandoned, but there's still an Ubuntu package for it. I guess the code made it into mainline Linux (2.6.28), and the user-space tools haven't needed updating. See also this askubuntu question about it. This may or may not work well, depending on your devices and whether the drivers for them can handle the much higher latency of a network round trip. See André Borie's reply to my comment on the question.
Using this might run into the same per-host limits on number of USB devices. If so, that tells you it's nothing to do with the low-level drivers, and instead is a bit higher up in Linux's USB stack.
If you were using USB storage devices, you could use nbd
to export block devices.
add a comment |
Many devices at once is at least supposed to work, according to his LJ article about making a serial console remote-access server. Limits of up to 127 USB devices (including hubs) per controller are mentioned (i.e. per pair of ports).
Maybe Linux has problems reaching that USB-imposed limit. Probably the kernel log has something interesting to say, so hopefully you can post what you find there at some point.
If you need a workaround, you could export the USB ports over the network. Then you could use multiple computers without modifying your software. It's obviously not ideal, since it means more hardware, more power consumption, and more complexity. The usbip sourceforge project looks abandoned, but there's still an Ubuntu package for it. I guess the code made it into mainline Linux (2.6.28), and the user-space tools haven't needed updating. See also this askubuntu question about it. This may or may not work well, depending on your devices and whether the drivers for them can handle the much higher latency of a network round trip. See André Borie's reply to my comment on the question.
Using this might run into the same per-host limits on number of USB devices. If so, that tells you it's nothing to do with the low-level drivers, and instead is a bit higher up in Linux's USB stack.
If you were using USB storage devices, you could use nbd
to export block devices.
Many devices at once is at least supposed to work, according to his LJ article about making a serial console remote-access server. Limits of up to 127 USB devices (including hubs) per controller are mentioned (i.e. per pair of ports).
Maybe Linux has problems reaching that USB-imposed limit. Probably the kernel log has something interesting to say, so hopefully you can post what you find there at some point.
If you need a workaround, you could export the USB ports over the network. Then you could use multiple computers without modifying your software. It's obviously not ideal, since it means more hardware, more power consumption, and more complexity. The usbip sourceforge project looks abandoned, but there's still an Ubuntu package for it. I guess the code made it into mainline Linux (2.6.28), and the user-space tools haven't needed updating. See also this askubuntu question about it. This may or may not work well, depending on your devices and whether the drivers for them can handle the much higher latency of a network round trip. See André Borie's reply to my comment on the question.
Using this might run into the same per-host limits on number of USB devices. If so, that tells you it's nothing to do with the low-level drivers, and instead is a bit higher up in Linux's USB stack.
If you were using USB storage devices, you could use nbd
to export block devices.
edited Apr 13 '17 at 12:22
Community♦
1
1
answered Aug 29 '15 at 23:27
Peter CordesPeter Cordes
4,2331432
4,2331432
add a comment |
add a comment |
I dealt with this problem too and it took me a while to find the real problem and solutions. It's a long page, so you can go read it there http://marc.merlins.org/perso/linux/post_2018-12-20_Getting-Around-USB3-xhci-32-Device-Limit-Max-number-of-devices-this-xHCI-host-supports-is-32.html
Basically, it boils down to these things
1) there is a 96 endpoint limit with USB3 (which translates to 32 devices only)
2) you lose further endpoints due to hubs, using a USB2 cable to a USB3 hub gives you a few slots back
3) more generally you should disable USB3 if you can do without it (remove the USB3 kernel driver, or easier if you can, disable USB3 in your bios)
4) if you cannot disable USB3, get a USB2 only PCIe card and that one will truly give you 120 devices or so.
Further resources:
https://www.spinics.net/lists/linux-usb/msg175224.html
https://forums.intel.com/s/question/0D50P00004905stSAA/hardware-limitations-on-usb-endpoints-xhci?language=en_US
add a comment |
I dealt with this problem too and it took me a while to find the real problem and solutions. It's a long page, so you can go read it there http://marc.merlins.org/perso/linux/post_2018-12-20_Getting-Around-USB3-xhci-32-Device-Limit-Max-number-of-devices-this-xHCI-host-supports-is-32.html
Basically, it boils down to these things
1) there is a 96 endpoint limit with USB3 (which translates to 32 devices only)
2) you lose further endpoints due to hubs, using a USB2 cable to a USB3 hub gives you a few slots back
3) more generally you should disable USB3 if you can do without it (remove the USB3 kernel driver, or easier if you can, disable USB3 in your bios)
4) if you cannot disable USB3, get a USB2 only PCIe card and that one will truly give you 120 devices or so.
Further resources:
https://www.spinics.net/lists/linux-usb/msg175224.html
https://forums.intel.com/s/question/0D50P00004905stSAA/hardware-limitations-on-usb-endpoints-xhci?language=en_US
add a comment |
I dealt with this problem too and it took me a while to find the real problem and solutions. It's a long page, so you can go read it there http://marc.merlins.org/perso/linux/post_2018-12-20_Getting-Around-USB3-xhci-32-Device-Limit-Max-number-of-devices-this-xHCI-host-supports-is-32.html
Basically, it boils down to these things
1) there is a 96 endpoint limit with USB3 (which translates to 32 devices only)
2) you lose further endpoints due to hubs, using a USB2 cable to a USB3 hub gives you a few slots back
3) more generally you should disable USB3 if you can do without it (remove the USB3 kernel driver, or easier if you can, disable USB3 in your bios)
4) if you cannot disable USB3, get a USB2 only PCIe card and that one will truly give you 120 devices or so.
Further resources:
https://www.spinics.net/lists/linux-usb/msg175224.html
https://forums.intel.com/s/question/0D50P00004905stSAA/hardware-limitations-on-usb-endpoints-xhci?language=en_US
I dealt with this problem too and it took me a while to find the real problem and solutions. It's a long page, so you can go read it there http://marc.merlins.org/perso/linux/post_2018-12-20_Getting-Around-USB3-xhci-32-Device-Limit-Max-number-of-devices-this-xHCI-host-supports-is-32.html
Basically, it boils down to these things
1) there is a 96 endpoint limit with USB3 (which translates to 32 devices only)
2) you lose further endpoints due to hubs, using a USB2 cable to a USB3 hub gives you a few slots back
3) more generally you should disable USB3 if you can do without it (remove the USB3 kernel driver, or easier if you can, disable USB3 in your bios)
4) if you cannot disable USB3, get a USB2 only PCIe card and that one will truly give you 120 devices or so.
Further resources:
https://www.spinics.net/lists/linux-usb/msg175224.html
https://forums.intel.com/s/question/0D50P00004905stSAA/hardware-limitations-on-usb-endpoints-xhci?language=en_US
answered 24 mins ago
Marc MerlinMarc Merlin
41642
41642
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f226345%2fwhy-am-i-limited-to-10-20-usb-devices%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
does
lsusb -t
show all the devices, or can you see where the missing ones should be? Are all the devices the same, eg serial port?– meuh
Aug 28 '15 at 18:01
I just ran
lsusb -t
and, no, the devices are no showing. I can tell where they should be but they are not there. And, yes, all the devices are the same.– HowsItStack
Aug 28 '15 at 18:29
Perhaps the total isochronous bandwidth needed for the devices exceeds that available at the host. I dont know how you can check for this. Are there any errors in /var/log/messages or some similar file.
– meuh
Aug 28 '15 at 19:03
What are the devices you're trying to use and what do you want to do with them ?
– André Borie
Aug 28 '15 at 19:27
1
@PeterCordes I've personally tried it on a local Ethernet network without success, so I doubt it'll be reliable or even work. Multiple machines would be better and not violate any standards (USB wasn't designed to be used over IP and it expects very low latencies)
– André Borie
Aug 29 '15 at 23:36