web-dev-qa-db-ja.com

Debian 9でのFTDI接続の数に制限はありますか?

Debian 9ボックスがあり、デバイスの1つを接続すると、そのUARTはlsusbls /sys/bus/usb-serial/devices/の出力の両方に表示されます。

2を付けると、常に2番目のものが表示されます。

ただし、2より大きい数値の場合、lsusbまたはusb-serial/devices/に新しいエントリは表示されません。また、ランダムなようです。3番目のデバイスが表示される場合と、表示されない場合があります。

この動作は、3つの異なるブランドのUSBハブで同じです。 MacOSでこれらのデバイスを接続してみたところ、同様の動作が得られました。

現在、私のlsusbは次のようになっています(わかりやすくするために、他のハブとデバイスは省略されています)。

... snip
Bus 001 Device 042: ID 0403:6014 Future Technology Devices International, Ltd FT232H Single HS USB-UART/FIFO IC
Bus 001 Device 040: ID 0403:6014 Future Technology Devices International, Ltd FT232H Single HS USB-UART/FIFO IC
Bus 001 Device 036: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 039: ID 10c4:ea71 Cygnal Integrated Products, Inc.
Bus 001 Device 037: ID 0403:6014 Future Technology Devices International, Ltd FT232H Single HS USB-UART/FIFO IC
... snip 

追加のデバイスが表示されないようにするシステム設定はありますか?

3
hoosierEE

はい

これは、マザーボードで使用されているIntelxHCIチップセットの制限です。

具体的には、これらのチップのほとんどは「デバイス」の数を32に制限しています。しかし、カメラのような単一の物理的なものは、複数の「デバイス」としてUSBコントローラーチップに表示される場合があります。さらに、各ハブは少なくとも1つの「デバイス」としてカウントされるため、予想よりもはるかに早くこの制限に簡単に遭遇する可能性があります。

私の場合、各FTDIチップは4つのデバイスとして表示されると思いますが、何らかの理由でxHCIチップの最大数は16であるため、2番目または3番目の物理デバイスをケーブルで接続すると使い果たされます。

dmesgからわかるように:

[4173630.423513] usb 1-1.2.3-port3: couldn't allocate usb_device
[4173630.430741] xhci_hcd 0000:00:0f.0: Error while assigning device slot ID
[4173630.437521] xhci_hcd 0000:00:0f.0: Max number of devices this xHCI Host supports is 16.

私がこれまでに見つけた解決策は、本質的に次のように要約されます。

  1. 専用のPCIUSBコントローラーを追加 詳細はこちら
  2. 可能であればehciにダウングレードして、USB 2.0を強制し、したがって128デバイスの制限 ここで説明

私の場合、新しいサーバーをehciにダウングレードすることはできなかったので、古いレガシーサーバーのUSB2.0ポートをUSBインターフェイスとして使用してみます。おそらく「より良い」USB3.0にこの制限があることは非常に苛立たしいことでした。

1
hoosierEE