
私は National Instruments USB<->GPIB ブリッジを持っています。これは、使用可能になるのに特別な手順が必要な USB ボードです。私は と の 2 つのカーネル モジュールを提供する linux_gpib パッケージをインストールしています。gpib_common
またni_usb_gpib
、gpib_config
GPIB バス上の機器と通信する前に、ツールを実行する必要があります。問題は、ボードを USB に接続してから、gpib_config
コマンドが有効になるまでに、内部初期化のために約 2 秒かかることです。そのため、私は次の99-gpib.rules
udev ルールで完璧に機能します。
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="3923", ATTR{idProduct}=="709b", RUN+="/bin/sh -c '/usr/bin/sleep 2; /usr/sbin/gpib_config --minor 0'"
KERNEL=="gpib[0-9]*", MODE="0660", GROUP="gpib"
問題は、ホスト システムが起動して実行されているときにボードを接続した場合にのみ機能することです。ドングルを接続した状態で再起動すると、両方のカーネル モジュールがロードされていることを確認できますが、ボードは使用できず、gpib_config
ツールが実行されなかったことを意味します。手動で実行すると、完全に機能します。
再起動のシナリオの方が現実的であるため、システムの実行中にプラグを差し込むよりも、起動時に udev がこれを実行するための正しい方法が必要です。もちろん、ボードが差し込まれ、カーネル モジュールがロードされているかどうかを確認し、ロード プロセス中にツールを実行する init スクリプトをいくつか作成することはできますが、これはハードウェアを処理するものであるため、udev の仕事だと思います。何かアイデアはありますか?
答え1
問題はRUNを実行するudevにあります前に対応するモジュールがロードされないため、gpib_config
ボードの構成に失敗します。回避策は、システム起動時に udev が起動する前にモジュールをロードすることです。実際の解決策ではないと思います。