ttyUSBXデバイスをUSBシリアルデバイスに接続する方法

ttyUSBXデバイスをUSBシリアルデバイスに接続する方法

オプションドライバがUSB IDと正確に一致し、デバイスドライバをロードします。例えば

# lsusb
Bus 001 Device 002: ID 19d2:0031 ONDA Communication S.p.A. ZTE MF636
Bus 001 Device 003: ID 12d1:14ac Huawei Technologies Co., Ltd.

また、ハードウェアを管理するためのttyUSBXデバイスを作成します。

crw-rw---- 1 root uucp 188, 0 Jul  4 13:48 /dev/ttyUSB0
crw-rw---- 1 root uucp 188, 1 Jul  4 13:49 /dev/ttyUSB1
crw-rw---- 1 root uucp 188, 2 Jul  4 13:35 /dev/ttyUSB2
crw-rw---- 1 root uucp 188, 3 Jul  4 13:37 /dev/ttyUSB3
crw-rw---- 1 root uucp 188, 4 Jul  4 13:37 /dev/ttyUSB4
crw-rw---- 1 root uucp 188, 5 Jul  4 13:37 /dev/ttyUSB5
crw-rw---- 1 root uucp 188, 6 Jul  4 13:37 /dev/ttyUSB6
crw-rw---- 1 root uucp 188, 7 Jul  4 13:37 /dev/ttyUSB7

しかし、複数のUSBシリアルデバイスがあり、どのttyUSBがどのUSBIDに対応するかを知りたいです。前任者。 /dev/ttyUSB1 -> 19d2:0031

この情報をどこで入手できるかご存知ですか?

答え1

デバイスが/dev/serial/by-id/に登録されていることを確認できます。

ls -l /dev/serial/by-id

これらの名前は一貫している必要があり、正しいttyUSBxを指す必要があります(symlink)。

答え2

sysfs ファイルシステムを見てください。私のUSBシリアルポートの例:

$ lsusb
Bus 003 Device 016: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
$ ls -l /sys/bus/usb-serial/devices
lrwxrwxrwx 1 root root 0 Jul  4 17:37 ttyUSB0 -> ../../../devices/pci0000:00/0000:00:1c.0/0000:02:00.0/usb3/3-1/3-1:1.0/ttyUSB0
$ $ grep PRODUCT= /sys/bus/usb-serial/devices/ttyUSB0/../uevent
PRODUCT=67b/2303/300

ご覧のとおり、私のコンピュータttyUSB0にマッピングされています。067b:2303探索する価値がある他の場所は次のとおりです/sys/class/tty/。シンボリックリンクに注意してください。

答え3

私は一度エマルジョン

/etc/udev/rules.d/50-usb.rules に書き込みます。

SUBSYSTEM=="tty", ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0031", SYMLINK+="ONDA"
SUBSYSTEM=="tty", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14ac", SYMLINK+="HUAWEI"

最後まで。再起動。

これで/dev/ONDAONDAデバイスにアクセスできます。

root以外のユーザーがそれを使用できるようにするには、以下を追加します。

, MODE="0666"

各行の終わりまで。

答え4

次のコマンドは、19d2:0016に関連付けられているttyUSBデバイス名のリストを提供します(これはZTE MF831 LTEスティックの「モデムモード」IDであり、ユーザーによって異なる場合があります)。

    for i in $(find -L /sys/bus/usb/devices/ -maxdepth 2 -name "ttyUSB*"); do
        egrep -i "v19d2p0016(.*)in02" $i/../modalias >/dev/null && echo "/dev/${i##*/}"
    done

これは、シンボリックリンクを含むファイル名がttyUSB *の/sys/bus/usb/devicesのファイルのリストを繰り返します。結果からmodaliasというファイルを検索し、ベンダーID "v" "19d2"と製品ID "p" 0016を含む文字列を見つけます。出力が一致すると、USB名の前に「/dev/」が付いた文字列が再表示されます。私が知っている限り、最初または通常最後(最も大きい数字)はZTEデバイスのモデムポートです。結果を/tmp/のファイルに反映し、それに応じてhead -n1またはtail -n1行を使用できます。ハブがある場合は、最大深さを増やす必要があります。

これは最もエレガントな方法ではありませんが、ほとんどすべてのLinuxバリアントで動作します。

関連情報