web-dev-qa-db-ja.com

udevルールは、USBデバイスを修正場所に強制するために適切に機能していないようです

USBデバイスを/dev/の固定フォルダーに強制するudevルールを作成しました(1つは/dev/video1へのウェブカメラで、もう1つは/dev/video0へのフレームグラバーです)デフォルトでは、フレームグラバーの後にウェブカメラをコンピューターに接続します(これまでのところ)が、システムを再起動すると(まだ接続されている状態で)ウェブカメラは/dev/video0とフレームグラバーに割り当てられます。 /dev/video1

25-video-devices.rules/etc/udev/rules.d/に入れてudevルールをリロードし、udevサービスを再起動しますが、システムを再起動した後でも結果は同じです...

SUBSYSTEMS=="usb", ATTRS{idVendor}=="5555", ATTRS{idProduct}=="3500", NAME:="video0", OPTIONS:="link_priority=100"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="0843", NAME:="video1"

Udevルールが適切に機能しないか、何か間違ったことをしているか、何かを見逃していますか?

それで私を助けてもらえますか?

p.s:lsusbを使用してベンダーIDと製品IDを取得しました

2
Sina Sh

man 7 udev (私による強調表示)から:

カーネルは通常、検出の順序に基づいて予測できないデバイス名を割り当てます。 […]デバイスノードの名前はudevでは変更できません。追加のシンボリックリンクのみを作成できます。

つまり、/dev/video0または/dev/video1を確実に使用することはできないと思います。代わりに、安定したシンボリックリンクを作成して使用する必要があります。代わりに、次のようなものが機能する場合があります。

KERNEL=="video*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="5555", ATTRS{idProduct}=="3500", SYMLINK+="myframegrabber"
KERNEL=="video*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="0843", SYMLINK+="mywebcam"

次に、アプリケーションで/dev/mywebcam/dev/myframegrabberを使用します。

ところで、最近 同様の答え で言及したように:

Video4linuxがすでに安定したデバイス名を提供している可能性があります。これについては、ディレクトリ/dev/v4l/by-id/および/dev/v4l/by-path/を確認してください。

3
Chriki