블루투스를 통해 Bose 헤드폰을 연결할 때 트리거되는 udev 규칙을 작성하고 싶습니다.
udevadm monitor --kernel --property
헤드셋을 실행 하고 연결하면 다음과 같은 결과가 나타납니다.
KERNEL[2226.084251] add /devices/virtual/input/input22 (input)
ACTION=add
DEVPATH=/devices/virtual/input/input22
SUBSYSTEM=input
PRODUCT=5/9e/4020/452
NAME="Słuchawencje (AVRCP)"
PHYS="00:0d:f0:bf:f7:df"
PROP=0
EV=100007
KEY=2fc800 145200000000 0 10300 49e800000c00 e16800000000f f810000010000ffc
REL=0
MODALIAS=input:b0005v009Ep4020e0452-e0,1,2,14,k71,72,73,8A,8B,A3,A5,A6,A7,A8,AB,AE,C8,C9,D0,161,164,166,16A,16C,18B,18E,18F,190,191,192,193,195,ramlsfw
SEQNUM=3814
하지만 이름과 제품을 실행하면 udevadm info --attribute-walk --path=/devices/virtual/input/input22
존재하지 않습니다.
looking at device '/devices/virtual/input/input22':
KERNEL=="input22"
SUBSYSTEM=="input"
DRIVER==""
ATTR{uniq}==""
ATTR{phys}=="00:0d:f0:bf:f7:df"
ATTR{properties}=="0"
왜? udev 규칙에서 NAME/PRODUCT를 사용할 수 없는 이유는 무엇입니까?
내 무선 스피커와 같은 다른 블루투스 장치의 경우 udev가 약간 더 나은 성능을 발휘합니다. 이것은 udevadm monitor --kernel --property
내 무선 스피커의 출력입니다.
KERNEL[2635.676303] add /devices/virtual/input/input23 (input)
ACTION=add
DEVPATH=/devices/virtual/input/input23
SUBSYSTEM=input
PRODUCT=5/0/0/0
NAME="JBL GO 2 (AVRCP)"
PHYS="00:0d:f0:bf:f7:df"
PROP=0
EV=100007
KEY=2fc800 145200000000 0 10300 49e800000c00 e16800000000f f810000010000ffc
REL=0
MODALIAS=input:b0005v0000p0000e0000-e0,1,2,14,k71,72,73,8A,8B,A3,A5,A6,A7,A8,AB,AE,C8,C9,D0,161,164,166,16A,16C,18B,18E,18F,190,191,192,193,195,ramlsfw
SEQNUM=3834
그리고 udevadm info --attribute-walk --path=/devices/virtual/input/input23
인쇄하세요:
looking at device '/devices/virtual/input/input23':
KERNEL=="input23"
SUBSYSTEM=="input"
DRIVER==""
ATTR{name}=="JBL GO 2 (AVRCP)"
ATTR{properties}=="0"
ATTR{uniq}==""
ATTR{phys}=="00:0d:f0:bf:f7:df"
제품은 아직 존재하지 않지만 적어도 이름은 존재합니다.
답변1
규칙의 장치 속성을 일치시키려면 다음 예를 사용해야 합니다.
ENV{PRODUCT}
너무 많이기본 속성. 나머지는 기기별로 다르며, ENV{PROPERTY}는 이를 참조하는 방법입니다.