Bluetooth経由で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を使用できないのはなぜですか?
私のワイヤレススピーカーのような他のBluetoothデバイスの場合、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}はこれを参照する方法です。