문제:

문제:

블루투스 장치(예: wiimote)를 내 컴퓨터에 연결하고 를 통해 systemd의 모든 장치 장치를 나열하면 systemctl list-units -t device장치 장치가 로 표시됩니다 sys-subsystem-bluetooth-devices-hci0:ID.device.

문제:

systemd 서비스를 특정 블루투스 장치 장치(예: wiimote)에 바인딩하고 싶습니다. 따라서 이름에 대한 아이디어가 필요합니다. 그만큼ID두 개의 Arch Linux 시스템에서는 다릅니다.

질문:

  • 이 장치를 할당한 사람IDs를 블루투스 시스템 장치 장치에 연결합니까?
  • ID정적 켜짐하나시스템 및 시스템 업데이트 중에서 해당 장치에 서비스를 안전하게 바인딩합니까? 즉, 이 서비스는 동일한 유형의 Bluetooth 장치를 연결할 때만 트리거됩니까?
  • 이것을 변경/영향을 줄 수 있나요?ID?

시도:

나는ID다음의 udev 규칙을 사용하여Arch 위키의 설명. 내가 얻은 것 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) 원하는 결과를 얻지 못합니다.

관련 정보