ATTRS {serial}を追加した後、udevルールが機能しなくなるのはなぜですか?


0

USBポート修正udevルールが機能しない理由や、udevルールに関する他のいくつかの投稿の中でudevルールが機能しない理由など、他のスレッドを見て問題を解決しようとしていましたが、チェックした投稿はありませんこの問題が発生している理由を見つけるのに役立ちます。

bInterfaceNumberを使用したudevルールが機能しないという問題は、私が抱えている問題と非常によく似ていますが、本質的には同じですが、2013年以来答えがなく、今では忘れられていると思います。

完全に機能する次のルールがあります。

SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="mos7840", ATTRS{port_number}=="0", SYMLINK+="USB-RS232-0", MODE="0777"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="mos7840", ATTRS{port_number}=="1", SYMLINK+="USB-RS232-1", MODE="0777"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="ftdi_sio", ATTRS{port_number}=="0", SYMLINK+="USB-TTL-0", MODE="0777"

問題は、同じ2つのデバイスがあり、2つの属性の違いはシリアル番号だけであり、同じVID / PIDも持っているため、ATTRS {serial}をルールに追加して終了する必要があることです。次のものを持つ:

SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="mos7840", ATTRS{port_number}=="0", SYMLINK+="USB-RS232-0", MODE="0777"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="mos7840", ATTRS{port_number}=="1", SYMLINK+="USB-RS232-1", MODE="0777"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="ftdi_sio", ATTRS{port_number}=="0", ATTRS{serial}=="AFYS1HLQ", SYMLINK+="USB-TTL-0", MODE="0777"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="ftdi_sio", ATTRS{port_number}=="0", ATTRS{serial}=="FTV8IUSR", SYMLINK+="USB-TTL-1", MODE="0777"

したがって、最後の2つのルールにATTRS {serial}を追加すると、両方が機能しなくなります。

どうしてこれなの?

ありがとう!!


チェックインした/sysudevadm info -a、それら(または親デバイス)実際にserialその正確なコンテンツで名前が付けられたファイルを持っているか?
荒廃

@grawityはい私はチェックしました、それは両方のデバイスの正確な情報です
-m4l490n

1
あるport_numberserial同じデバイスディレクトリには? ATTRSツリーを検索しますが、ツリー内の同じレベルですべての一致を実行するという点で、少し驚きです。
トビーSpeight

@TobySpeight同じディレクトリからの属性のみを含めるようにルールを変更しましたが、それでも機能しますが、ルールの最初のセットは機能し、同じディレクトリにはありません。それはなぜですか?
m4l490n

回答:


1

重要な情報は、udev(7)manページ(my emhpasis)のこの段落にあります。

ATTRS{filename}

syspath属性値が一致するデバイスのdevpathを上方に検索します。複数のATTRS一致が指定されている場合、それらはすべて同じデバイス上で一致する必要があります。指定した一致値自体に末尾の空白が含まれていない限り、属性値の末尾の空白は無視されます。

したがって、複数のATTRSルールがある場合(同じように)、一致するすべてのプロパティ(ファイル名)は同じデバイスディレクトリに存在する必要があります。

これは、SUBSYSTEMSor DRIVERSルールに一致するデバイスと同じである必要はありません。


わかりましたので、私のルールが複数のATTRS {filename}に基づいている場合、これらはすべて同じディレクトリにある必要があります。「port_number」と「serial」が同じディレクトリにないため、ルールが失敗したため、これは理にかなっています。しかし、1つのディレクトリからのみATTRSを含めるように変更すると、ルールは機能しました。ありがとう!!
m4l490n
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.