質問:

質問:

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)、予想される結果はありません。

関連情報