USBオーディオデバイスがQEMUを通過したいです。 udevルールを作成しましたが、うまくいきません。この問題をデバッグする方法を知りたいです。
SUBSYSTEM=="usb", ATTRS{idVendor}=="0d8c", ATTRS{idProduct}=="8808", MODE="0666"
答え1
これが私がついに問題を分離した方法です。 Udevは、USBホストコントローラからデバイス自体まで、デバイス属性階層の規則仕様を確認します。これらのさまざまなノードには、udevルールで指定できる属性セットがあります。
観察ルールの実行を表示するには、次のコマンドを使用します。
udevadm control --log-priority=debug
journalctl -f
udevを再ロードしてデバイスを再インストールしてもログにルールが表示されない場合は、ファイル名の形式がudevが期待する形式であることを確認してください:99-name.rules
udev イベントを表示するには、次のコマンドを使用します。
udevadm monitor --environment
特定のデバイスのプロパティを表示するには、次のコマンドを使用します。
udevadm info -q all -a /path/to/device/as/seen/in/aformentioned/logs
以下のように、一連の属性ブロックが表示されます。
looking at device '/devices/...':
KERNEL=="event3"
SUBSYSTEM=="input"
DRIVER==""
looking at parent device '/devices/...':
KERNELS=="input23"
SUBSYSTEMS=="input"
DRIVERS==""
ATTRS{name}=="Speed Dragon USB Advanced Audio Device"
ATTRS{phys}=="usb-0000:00:14.0-5/input3"
ATTRS{properties}=="0"
ATTRS{uniq}==""
looking at parent device '/devices/...':
KERNELS=="1-5"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{authorized}=="1"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{bConfigurationValue}=="1"
ATTRS{bDeviceClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bMaxPacketSize0}=="16"
ATTRS{bMaxPower}=="100mA"
ATTRS{bNumConfigurations}=="1"
ATTRS{bNumInterfaces}==" 4"
ATTRS{bcdDevice}=="0100"
ATTRS{bmAttributes}=="80"
ATTRS{busnum}=="1"
ATTRS{configuration}==""
ATTRS{devnum}=="11"
ATTRS{devpath}=="5"
ATTRS{idProduct}=="8808"
ATTRS{idVendor}=="0d8c"
ATTRS{ltm_capable}=="no"
ATTRS{manufacturer}=="Speed Dragon"
ATTRS{maxchild}=="0"
ATTRS{product}=="USB Advanced Audio Device"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="removable"
ATTRS{speed}=="12"
ATTRS{urbnum}=="7861"
ATTRS{version}==" 2.00"
私のデバイスを最後のブロックと一致させ、ついにudevルールをSUBSYSTEMS=="usb"
代わりに指定する必要があることに気づきましたSUBSYSTEM=="usb"
。これは悲しい発見でした。
正しいルールが指定されたら、次のようにします。
無効または無効な属性は自動的に無視されます。。
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0d8c", ATTRS{idProduct}=="8808", MODE="0666"
Udevは次のように再ロードされます。
sudo udevadm control --reload-rules
デバイスが切断/接続されると、正しい権限が登録されます。