web-dev-qa-db-ja.com

デバイスの優先順位を設定する

2つのリモートデバイスがあります。使用したいUSB MCEリモートドングル1つと、使用していない、または使用したくない衛星PCI-Eカードの組み込みデバイス。

起動すると、lircはこれらのデバイスに/dev/lircXデバイスを割り当てます(Xは数字)。このdmesg出力を例にとります:

[...] rc rc0: lirc_dev: driver ir-lirc-codec (saa716x) registered at minor = 0
[...] rc rc1: lirc_dev: driver ir-lirc-codec (mceusb) registered at minor = 1

上記のMCEリモートは/dev/lirc1の下にあります。問題は、次回の起動時に/dev/lirc0になります。これにより、アプリケーションの構成がはるかに困難になります。

次のいずれかが必要です。

  1. Mceusbデバイスを/ dev/lirc0として永久に設定するには、または、
  2. saa716xデバイスのlirc処理を無効にすることで同じことを実現します。これは、TVストリーミング用のビデオも処理する多機能デバイスモジュールであることに注意してください。
    ブラックリストsaa716xはオプションではありません。
  3. どういうわけか、起動後に「正しいものを置く」...私は以前にこれを調べましたが、/dev/lircXがどのモジュールであるかを理解する方法がわかりません。

私は何にでもオープンです。あなたは私が何をしているかを見ることができるはずです。

2
Oli

7.3.3.6。再起動後にデバイスの命名順序がランダムに変更される

これは、Udevが設計上、ueventsを処理し、モジュールを並列にロードするため、予測できない順序で実行されるためです。 これは決して「修正」されることはありません。カーネルデバイス名が安定していることに依存するべきではありません。代わりに、シリアル番号やUdevによってインストールされたさまざまな* _idユーティリティの出力など、デバイスのいくつかの安定した属性に基づいて、シンボリックリンクを安定した名前で作成する独自のルールを作成します。例については、7.4項「デバイスの管理」および7.5項「一般的なネットワーク構成」を参照してください。

ソース:Linux From Scratch:7.3。デバイスとモジュールの処理の概要


  1. ターゲットノードとその親ノードの属性を確認する

    udevadm info -a /dev/lirc1
    
  2. ターゲットノードの環境変数を確認します(ルールの一致に使用できる別のもの)

    udevadm info /dev/lirc1
    
  3. 新しいUDEVルールファイルを作成する

    Sudo nano /etc/udev/rules.d/99-lirc-symlinks.rules

    #2 or only setup link for usb device
    ACTION=="add", KERNEL=="lirc?", ATTRS{idVendor}=="1934", ATTRS{idProduct}=="5168", SYMLINK+="lirc90"
    

    lirc90とにかく到達するのは遠いです。

  4. ルールの再読み込み

    Sudo udevadm control -R
    
  5. イベント要求をトリガーし、USBデバイスを再接続するか、再起動が必要な場合があります。

    Sudo udevadm trigger
    
  6. /dev/lirc90を使用するようにアプリケーションを設定します

注:

  • 同じデバイスにルールを実装するには多くの方法があります。 USBドングル用にもう1つ作成できます。

    ACTION=="add", KERNEL=="lirc?", DRIVERS="mceusb", SYMLINK+="lirc90"
    
  • KERNELSSUBSYSTEMSDRIVERSATTRS devpathを上方向に検索して一致するものを探します。 man udevをご覧ください。

1
user.dz