Bluetoothデバイス(Wiimoteなど)をマイコンピュータに接続し、systemdを介してすべてのデバイスユニットを一覧表示すると、デバイスユニットがと表示されsystemctl list-units -t device
ますsys-subsystem-bluetooth-devices-hci0:ID.device
。
質問:
systemdサービスを特定のBluetoothデバイスデバイス(Wiimoteなど)にバインドしたいと思います。だから名前のアイデアが必要でした。これID2つのArch Linuxシステムには違いがあります。
質問:
- このデバイスを割り当てる人IDBluetoothシステムデバイスデバイスに接続されていますか?
- ~であるID静的開放一つシステムとシステムアップデートの間でサービスをそのデバイスデバイスにバインドするのは安全ですか?つまり、同じタイプのBluetoothデバイスが接続されている場合にのみサービスがトリガーされますか?
- これを変更/影響を与えることができますか?ID?
努力する:
私は変更しようとしていますID次の udev ルールに従ってください。Arch Wikiの説明。これでudevadm info -a -p $(udevadm info -q path -n /dev/hidraw4 )
私は次のようになります。
looking at device '/devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/bluetooth/hci0/hci0:256/0005:057E:0330.000C/hidraw/hidraw4':
KERNEL=="hidraw4"
SUBSYSTEM=="hidraw"
DRIVER==""
looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/bluetooth/hci0/hci0:256/0005:057E:0330.000C':
KERNELS=="0005:057E:0330.000C"
SUBSYSTEMS=="hid"
DRIVERS=="wiimote"
ATTRS{country}=="00"
ATTRS{devtype}=="gen20"
ATTRS{extension}=="none"
looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/bluetooth/hci0/hci0:256':
KERNELS=="hci0:256"
SUBSYSTEMS=="bluetooth"
DRIVERS==""
すべての項目は両方のシステムで異なりますKERNEL(S)
。だからudevルールを適用してみました。
SUBSYSTEMS=="hid", DRIVERS=="wiimote", TAG+="systemd", SYMLINK+="wii"
ただし、これにより追加の装置ユニットが生成されません。
答え1
以下を追加する必要があります。
ENV{SYSTEMD_ALIAS}="/dev/wii"
(これはまさにSYMLINK+="wii"
udevルールを作成することです。)
パス正規化後の結果はですdev-wii.device
。
(注:簡単に見えますが、それを見つけるのに数時間かかりましたので、決して簡単な質問ではないと思います! 。私のため)。
接線的に、udevルールが複数行に分割されると、区切り線がエスケープされ、ファイルが\
空白行で終わっていることを確認する必要があります。そうでなければ、udevによって解析されているように見えますが(文字が何とかエスケープされるのとは異なりますEOF
)、予想される結果はありません。