Problem:

Problem:

Wenn ich ein Bluetooth-Gerät (z. B. eine Wiimote) an meinen Computer anschließe und alle Geräteeinheiten von systemd über aufliste systemctl list-units -t device, wird die Geräteeinheit als angezeigt sys-subsystem-bluetooth-devices-hci0:ID.device.

Problem:

Ich möchte einen systemd-Dienst an ein bestimmtes Bluetooth-Gerät (z. B. Wiimote) binden. Daher brauche ich eine Idee für den Namen. DieAUSWEISunterscheidet sich auf zwei Arch-Linux-Maschinen.

Fragen:

  • Wer vergibt diese GeräteAUSWEISs zu Bluetooth-Systemd-Geräteeinheiten?
  • Ist derAUSWEISstatisch aufeinsSystem und zwischen Systemaktualisierungen und ist es daher sicher, Dienste an diese Geräteeinheit zu binden, d. h. wird dieser Dienst nur beim Verbinden mit einem Bluetooth-Gerät desselben Typs ausgelöst?
  • Kann ich das ändern/beeinflussenAUSWEIS?

Versuche:

Ich habe versucht, dieAUSWEISmit einer udev-Regel, die diesem folgtBeschreibung im Arch-Wiki. Über udevadm info -a -p $(udevadm info -q path -n /dev/hidraw4 )habe ich bekommen:

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==""

Nicht alle KERNEL(S)Einträge sind auf zwei Systemen gleich. Ich habe daher versucht, die udev-Regel anzuwenden:

SUBSYSTEMS=="hid", DRIVERS=="wiimote", TAG+="systemd", SYMLINK+="wii"

Es entsteht dadurch aber keine zusätzliche Geräteeinheit.

Antwort1

Sie müssen hinzufügen:

ENV{SYSTEMD_ALIAS}="/dev/wii"

(was SYMLINK+="wii"erstellt wird) zu Ihrer Udev-Regel.

Nach der Pfadnormalisierung ergibt sich dev-wii.device.

(NB: Das klingt so einfach, aber ich habe mehrere Stunden gebraucht, um darauf zu kommen, also tue ich es auf keinen Fall als einfache Frage ab! Ich habe für meine eigenen Zwecke damit gekämpft und bin in der Hoffnung, eine Lösung für mich selbst zu finden, auf Ihre Frage gestoßen.)

Wenn Ihre udev-Regel auf mehrere Zeilen aufgeteilt ist und die Umbrüche mit maskiert sind \, müssen Sie außerdem sicherstellen, dass die Datei mit einer leeren Zeile endet. Andernfalls scheint sie von udev analysiert zu werden (es ist nicht so, als ob das EOFZeichen irgendwie maskiert wäre), erzielt aber nicht das gewünschte Ergebnis.

verwandte Informationen