ベリーパイデバイスポート番号バインド


Projectは最近、複数のarduino、シリアルUSB、ワイヤレスマウスなど、1台のベリーパイが複数のデバイスに接続されているという気まずい問題に直面しました.物理的にUSBが足りないので、USB hubを1つだけ使えばいいです.しかし、Linuxは挿入順にデバイスを番号付けしています.例えば、ttyUSB 0、ttyUSB 1、ttyACM 0、ttyACM 1などです.再起動するたびにデバイスが番号に対応しない場合があり、コードにデバイスのポート番号を固定することはできません.そのため、デバイスのポート番号を固定する方法を考えなければなりません.筆者はネット上の関連資料をまとめたが、まだ詳しく書かれていることに気づいたので、具体的な使い方を簡単にまとめると、原理は余計なことではない.

1.単一設備のポート番号を固定する


【適用状況】:あるデバイスに適用された後、そのIDは他のデバイスとは異なり、一意である.
【問合せID】:
lsusb

いくつかのUSBデバイスの情報が表示されるはずです.
Bus 001 Device 010: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light   
Bus 001 Device 005: ID 0bda:5411 Realtek Semiconductor Corp.    
Bus 001 Device 008: ID 24ae:1100     
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Device 010を例にとると、そのIDは:10 c 4:ea 60
【修正書類】:
sudo nano /etc/udev/rules.d/99-com.rules

後に追加:
KERNEL=="ttyUSB*",ATTRS{idVendor}=="10c4",ATTRS{idProduct}=="ea60", MODE:=“0777”, SYMLINK+="device0"

ここで、device 0は名前を変更したデバイスであり、その後、device 0に直接アクセスすればよい.すなわち、その後に電源を入れると、IDが10 c 4:ea 60のデバイスがttyUSB 0またはttyUSB 1に割り当てられていても、常にdevice 0を介してアクセスすることができる.
【挿抜再起動】:ファイルの最後の行を追加した後、実行する:
sudo /etc/init.d/udev restart

USBデバイスを挿抜する
【再訪問】:再訪問:
ls -l /dev |grep ttyUSB

リダイレクトされた情報が表示されます.その後、コードに直接/dev/device 0にアクセスすると、デバイスにアクセスできます.

2.同一IDの複数台の機器ポート番号固定


【適用例】複数の同じデバイス、例えば複数のarduinoは、ttyACM 0およびttyACM 1に割り当てられ、第1の方法でIDが同じであることが分かった.
【問合せ】:
ls -l /sys/class/tty

次のように印刷されます.
ttyACM0'/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.1/1-2.1:1.0/':
ttyACM1'/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.2/1-2.2:1.0':

最後の1-2.1と1-2.2には違いがあることがわかりました
【修正書類】:
sudo nano /etc/udev/rules.d/99-com.rules

後に追加:
KERNEL=="ttyACM*",KERNELS=="1-2.1",MODE:=“0777”, SYMLINK+="device1"
KERNEL=="ttyACM*",KERNELS=="1-2.1",MODE:=“0777”, SYMLINK+="device2"

このうちdevice 1とdevice 2は、arduinoの名前を2つ変更したデバイスであり、理屈は同じです.
【挿抜再起動】:ファイルの最後の行を追加した後、実行する:
sudo /etc/init.d/udev restart

USBデバイスを挿抜する
【再訪問】:再訪問:
ls -l /dev |grep ttyACM

リダイレクトされた情報が表示されます.その後、コードに直接/dev/device 1および/dev/device 2にアクセスすると、デバイスにアクセスできます.

3.参考資料


[1]http://blog.csdn.net/qq_33662195/article/details/71185063 [2]http://blog.csdn.net/zuoxi4621/article/details/75173536