udevでルールを割り当てるのに問題があります。
私は2つを持っていますFTDI232私のボードにインストールされたチップ(合計3つがありますが、今はそのうちの2つに興味があります)、カーネルはドライバを介してチップを管理します。ftdi_sio、名前を付けてくださいttyUS0そしてttyUSB1名前を指定するためにこのルールを適用しています。USBS1そしてUSBS2:
KERNELS=="1-2.1" KERNEL=="ttyUSB0" ATTR{idVendor}=="0403" ATTR{idProduct}=="6001" SUBSYSTEMS=="usb" NAME="usbS1"
KERNELS=="1-2.2" KERNEL=="ttyUSB1" ATTR{idVendor}=="0403" ATTR{idProduct}=="6001" SUBSYSTEMS=="usb" NAME="usbS2"
の情報に基づいて情報
[ 4.676116] usb 1-2.1: new full-speed USB device number 3 using ehci-omap
[ 4.811920] usb 1-2.1: New USB device found, idVendor=0403, idProduct=6001
[ 4.819244] usb 1-2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 4.826965] usb 1-2.1: Product: FT232R USB UART
[ 4.831726] usb 1-2.1: Manufacturer: FTDI
[ 4.835968] usb 1-2.1: SerialNumber: A101XRTT
[ 4.963256] usb 1-2.2: new full-speed USB device number 4 using ehci-omap
[ 5.102355] usb 1-2.2: New USB device found, idVendor=0403, idProduct=6001
[ 5.109649] usb 1-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 5.117370] usb 1-2.2: Product: FT232R USB UART
[ 5.122161] usb 1-2.2: Manufacturer: FTDI
[ 5.126403] usb 1-2.2: SerialNumber: A101XRTQ
...
[ 16.839935] usbserial: USB Serial support registered for FTDI USB Serial Device
[ 16.848327] ftdi_sio 1-2.1:1.0: FTDI USB Serial Device converter detected
[ 16.856781] usb 1-2.1: Detected FT232RL
[ 16.977935] usb 1-2.1: FTDI USB Serial Device converter now attached to ttyUSB0
[ 16.986785] ftdi_sio 1-2.2:1.0: FTDI USB Serial Device converter detected
[ 16.994720] usb 1-2.2: Detected FT232RL
[ 17.099914] usb 1-2.2: FTDI USB Serial Device converter now attached to ttyUSB1
[ 17.108581] ftdi_sio 1-2.7:1.0: FTDI USB Serial Device converter detected
[ 17.116485] usb 1-2.7: Detected FT232RL
[ 17.165710] i2c 2-005c: Driver mt9v032 requests probe deferral
[ 17.187561] twl4030_madc 48070000.i2c:twl@48:madc: clk disabled, enabling
[ 17.228759] usb 1-2.7: FTDI USB Serial Device converter now attached to ttyUSB2
しかし、これはうまくいきません。理由はわかりません。
以前のシステム(カーネル2.6.34)では、次の規則が適用されました。
KERNELS=="2-2.1" SUBSYSTEMS=="usb" NAME="usbS1"
KERNELS=="2-2.2" SUBSYSTEMS=="usb" NAME="usbS2"
このシステムでは正常に動作しましたが、現在開発中のシステムでは機能しませんでした(もちろんカーネルパラメータが変更されました)。
私のルールファイルにどのような問題がありますか?
答え1
次のいずれかです。
- ルールでは、これらのデバイスをカーネル名(KERNEL =)として直接参照し、カーネルがデバイスを呼び出さない可能性があるため、ルールは
ttyUSB?
適用されません。 udev
ルールを作成したファイルを読み取れないか、読み取れません。udev
ttyUSB?
同じデバイスのルールを上書きし、そのデバイスに名前を適用する他のルールがすでにあります。
だから私はあなたに提案します...
- 以下を確認してください。カーネル名あなたのデバイスは本当に
ttyUSB?
udev
ルールを上書きできる他のルールによって、同じデバイスに異なる名前の変更があることを確認してください。- 新しいルールが実際にロードされていることを確認し
udev
(可能であれば別のデバイスを使用してテスト)、udev
新しいルールを含むファイルを読み取ることができることを確認するか、ルールを既存のルールファイルに入れてルールを読み取ることができるかどうかをテストします。
答え2
デバッグを支援するために、rootではなく次のことを行うことができます。
udevadm monitor
次に、デバイスを接続してudevに表示されるイベントを確認します。ルールがadd
複数のイベントと一致することを確認できます。
デバイス名を次のパスに変換できます。
udevadm info -q path -n /dev/ttyUSB0
次に、この出力パスを
udevadm test <path>
udevが読んでいるファイルとそれらが従う規則を追跡します。実際にはコマンドなどを実行しないので、プロンプトだけです。
答え3
これが私が解決した方法です。
KERNELS=="1-2.1", SUBSYSTEMS=="usb", ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", SYMLINK+="usbS0"
KERNELS=="1-2.2", SUBSYSTEMS=="usb", ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", SYMLINK+="usbS1"
KERNELS=="1-2.7", SUBSYSTEMS=="usb", ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", SYMLINK+="usbS3"
コンマとSYMLINKディレクティブを使用すると機能します。