モデムのUdevルールファイルが機能しません。

モデムのUdevルールファイルが機能しません。

私はSMSを送信するためにモデムを使用していますが、モデムには16個のttyUSB0ポートがありますttyUSB15udevデバイス名を指定するルールを作成し、AMPMポート名をPort1、、Port2...で指定する必要がありますPort16

lsusbポートとコマンドの出力を表示します。udevadmttyUSB0

kk@kk:~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 004: ID 0461:4d22 Primax Electronics, Ltd
Bus 001 Device 015: ID 0409:005a NEC Corp. HighSpeed Hub
Bus 001 Device 016: ID 0403:6011 Future Technology Devices International, Ltd FT4232H Quad HS USB-UART/FIFO IC
Bus 003 Device 003: ID 413c:2003 Dell Computer Corp. Keyboard
Bus 001 Device 017: ID 0403:6011 Future Technology Devices International, Ltd FT4232H Quad HS USB-UART/FIFO IC
Bus 001 Device 018: ID 0403:6011 Future Technology Devices International, Ltd FT4232H Quad HS USB-UART/FIFO IC
Bus 001 Device 019: ID 0403:6011 Future Technology Devices International, Ltd FT4232H Quad HS USB-UART/FIFO IC
kk@kk:~$

kk@kk:~$ udevadm info -q all -n /dev/ttyUSB0
P: /devices/pci0000:00/0000:00:1a.7/usb1/1-3/1-3.1/1-3.1:1.0/ttyUSB0/tty/ttyUSB0
N: ttyUSB0
S: serial/by-id/usb-FTDI_Quad_RS232-HS-if00-port0
S: serial/by-path/pci-0000:00:1a.7-usb-0:3.1:1.0-port0
E: DEVLINKS=/dev/serial/by-id/usb-FTDI_Quad_RS232-HS-if00-port0 /dev/serial/by-path/pci-0000:00:1a.7-usb-0:3.1:1.0-port0
E: DEVNAME=/dev/ttyUSB0
E: DEVPATH=/devices/pci0000:00/0000:00:1a.7/usb1/1-3/1-3.1/1-3.1:1.0/ttyUSB0/tty/ttyUSB0
E: ID_BUS=usb
E: ID_MM_CANDIDATE=1
E: ID_MODEL=Quad_RS232-HS
E: ID_MODEL_ENC=Quad\x20RS232-HS
E: ID_MODEL_FROM_DATABASE=FT4232H Quad HS USB-UART/FIFO IC
E: ID_MODEL_ID=6011
E: ID_PATH=pci-0000:00:1a.7-usb-0:3.1:1.0
E: ID_PATH_TAG=pci-0000_00_1a_7-usb-0_3_1_1_0
E: ID_REVISION=0800
E: ID_SERIAL=FTDI_Quad_RS232-HS
E: ID_TYPE=generic
E: ID_USB_DRIVER=ftdi_sio
E: ID_USB_INTERFACES=:ffffff:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=FTDI
E: ID_VENDOR_ENC=FTDI
E: ID_VENDOR_FROM_DATABASE=Future Technology Devices International, Ltd
E: ID_VENDOR_ID=0403
E: MAJOR=188
E: MINOR=0
E: SUBSYSTEM=tty
E: UDEV_LOG=3
E: USEC_INITIALIZED=7668235100

udev私はルールに従うことはできません。

SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-15]*", ATTRS{idVendor}=="0403", ATTRS{product}=="6011", NAME=="AMPM" , SYMLINK=="AMPM", GROUP="tty", MODE="0660"

ベストアンサー1

ちょっと待ってください。わかりました。 2つ:

  1. ATTRS{product}=="6011"ATTRS{idProduct}=="6011"その不在はidそれを破るでしょう。このタイプミスを避けるためにコピーして貼り付けてくださいudevadm info --attribute-walk
  2. あなたのスキーマが間違っていますKERNEL=="ttyUSB[0-9]*"。これは(非常に限られた)正規表現なので、[0-15]*「0〜1または5のすべての文字、数に関係なく繰り返されます」を意味します。

SYMLINK+=また、リンクを維持する代わりにSYMLINK==他のリンクを使用することもできます。そうですね。SUBSYSTEMS=="usb"製品/サプライヤーと一致する必要があります。

AMPMデバイスに番号を付けるには、udevこの番号を入力する必要があります。残念ながら、これはusb-serialデバイス自体ではなくデバイスの一部ですusb。したがって、%s{port_number}/のみ使用することはできません$attr{port_number}。代わりに、60-persistent-serial.rules新しいバージョンのトリックを借りて、udev次のようにします。

SUBSYSTEMS=="usb-serial", ENV{.LOCAL_PORT_NUM}="$attr{port_number}"
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", SYMLINK+="AMPM$env{.LOCAL_PORT_NUM}"

以前のバージョンではudev使用する必要があります。%E{…}$env{…}

またはudev十分に新しい場合は、以下を使用してください/dev/serial/by-id

$ ls -l /dev/serial/by-id/
total 0
lrwxrwxrwx 1 root root 13 Jan  4 06:02 usb-067b_2303-if00-port0 -> ../../ttyUSB0

ベンダー/製品コードとすべてのポートを表示する必要があります。

おすすめ記事