如何根据 udev 规则知道 a2dp 设备是否已连接

如何根据 udev 规则知道 a2dp 设备是否已连接

我试图确定每次蓝牙连接时是否有 a2dp 接收器连接到我的系统。我使用以下规则:

ACTION=="add", SUBSYSTEM=="bluetooth", RUN+="/bin/sh -c '/home/myuser/on-connect-bluetooth.sh'"
ACTION=="remove", SUBSYSTEM=="bluetooth", RUN+="/bin/sh -c '/home/myuser/on-connect-bluetooth.sh'"

我想过使用pactl,但根据这个答案它只能由用户访问,而 udev 则不能。有人提到了 DBUS,但我不清楚如何通过简单的 shell 来利用它,而无需深入研究内核 API...

通过 udev 规则我知道了 devpath,/sys/devices/但其中的信息似乎很少。

如何知道蓝牙连接/断开事件时是否存在 a2dp 接收器?

答案1

一种可能的解决方案是:尽管不完美,因为依赖于需要安装和维护的第三方工具,但是:

bluetoothctl info | grep 0000110d-0000-1000-8000-00805f9b34fb

0000110d-0000-1000-8000-00805f9b34fb是 a2dp UID。

相关内容