Bluetooth 장치(예: Wiimote)를 내 컴퓨터에 연결하고 systemd를 통해 모든 장치 단위를 나열하면 systemctl list-units -t device
장치 단위가 로 표시됩니다 sys-subsystem-bluetooth-devices-hci0:ID.device
.
질문:
systemd 서비스를 특정 블루투스 장치 장치(예: Wiimote)에 바인딩하고 싶습니다. 그래서 이름에 대한 아이디어가 필요했습니다. 이것ID두 개의 Arch Linux 시스템에는 차이점이 있습니다.
질문:
- 이 장치를 할당하는 사람IDBluetooth 시스템 장치 장치에 연결되어 있습니까?
- ~이다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
) 예상된 결과는 없습니다.