udevはルールを適用しません

udevはルールを適用しません

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

次のいずれかです。

  1. ルールでは、これらのデバイスをカーネル名(KERNEL =)として直接参照し、カーネルがデバイスを呼び出さない可能性があるため、ルールはttyUSB?適用されません。
  2. udevルールを作成したファイルを読み取れないか、読み取れません。
  3. udevttyUSB?同じデバイスのルールを上書きし、そのデバイスに名前を適用する他のルールがすでにあります。

だから私はあなたに提案します...

  • 以下を確認してください。カーネル名あなたのデバイスは本当に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ディレクティブを使用すると機能します。

関連情報