Problema:

Problema:

Cuando conecto un dispositivo bluetooth (por ejemplo, un wiimote) a mi máquina y enumero todas las unidades de dispositivo de systemd a través de systemctl list-units -t device, la unidad del dispositivo aparece como sys-subsystem-bluetooth-devices-hci0:ID.device.

Problema:

Quiero vincular un servicio systemd a una unidad de dispositivo bluetooth específica (por ejemplo, wiimote). Por tanto, necesitaré una idea sobre el nombre. ElIDENTIFICACIÓNdifiere en dos máquinas Arch Linux.

Preguntas:

  • ¿Quién asigna estos dispositivos?IDENTIFICACIÓN¿A unidades de dispositivos con sistema bluetooth?
  • Es elIDENTIFICACIÓNestática encendidaunosistema y entre las actualizaciones del sistema y, por lo tanto, ¿es seguro vincular los servicios a esa unidad de dispositivo? Es decir, ¿este servicio solo se activará al conectar un dispositivo Bluetooth del mismo tipo?
  • ¿Puedo cambiar/influir en esto?IDENTIFICACIÓN?

Intentos:

Intenté cambiar elIDENTIFICACIÓNcon una regla udev siguiendo estodescripción en la wiki de Arch. Vía udevadm info -a -p $(udevadm info -q path -n /dev/hidraw4 )tengo:

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

No todas KERNEL(S)las entradas son iguales en dos sistemas. Por tanto, intenté aplicar la regla udev:

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

Pero eso no crea ninguna unidad de dispositivo adicional.

Respuesta1

Necesitas agregar:

ENV{SYSTEMD_ALIAS}="/dev/wii"

(que es lo que SYMLINK+="wii"crea) a tu regla udev.

Después de la normalización de la ruta, esto da como resultado dev-wii.device.

(NB: esto suena muy simple, pero me tomó algunas horas llegar a ella, ¡así que de ninguna manera la descarto como una pregunta fácil! Luché con ella para mis propios propósitos y encontré su pregunta con la esperanza de una solución para mí mismo.)

Tangencialmente, si su regla udev se divide en varias líneas y los saltos escaparon con \, también debe asegurarse de que el archivo termine con una línea vacía. De lo contrario, parece que udev lo analiza (no es que el EOFpersonaje haya escapado de alguna manera) pero no logra el resultado deseado.

información relacionada