Mur*_*mal 6 unix linux bluetooth linux-device-driver
假设我已将蓝牙耳机成功配对并连接到我的 Linux 系统。
我知道我可以通过bluetoothctl命令检查我的蓝牙设备 MAC ID。
有没有办法在Linux中使用一些命令来控制蓝牙设备的音量?
小智 5
您可以将设备的内部音量设置为特定值,而不是使用 shell 向上或向下递增:
$ bluetoothctl devices | sed "s/:/_/g"
Device A1_B2_C3_D4_E5_F6 Some Headset
Run Code Online (Sandbox Code Playgroud)
$ dbus-send --system --print-reply --dest=org.bluez / org.freedesktop.DBus.ObjectManager.GetManagedObjects | less
Run Code Online (Sandbox Code Playgroud)
less,搜索接口org.bluez.MediaTransport1(按/、键入MediaControl1、按Enter)并记录 的值object path:object path "/org/bluez/hci0/dev_A1_B2_C3_D4_E5_F6/sep1/fd0"
array [
dict entry(
string "org.bluez.MediaTransport1"
Run Code Online (Sandbox Code Playgroud)
您应该在该块的几行下方看到一个名为的属性Volume(如果不存在,则耳机对象不支持直接设置音量):
dict entry(
string "Volume"
variant uint16 90
Run Code Online (Sandbox Code Playgroud)
60):$ dbus-send --system --print-reply --dest=org.bluez /org/bluez/hci0/dev_A1_B2_C3_D4_E5_F6/sep1/fd0 org.freedesktop.DBus.Properties.Get string:"org.bluez.MediaTransport1" string:"Volume" | grep uint16 | awk '{print $3}'
60
Run Code Online (Sandbox Code Playgroud)
$ dbus-send --system --dest=org.bluez /org/bluez/hci0/dev_A1_B2_C3_D4_E5_F6/sep1/fd0 org.freedesktop.DBus.Properties.Set string:"org.bluez.MediaTransport1" string:"Volume" variant:uint16:70
$ dbus-send --system --print-reply --dest=org.bluez /org/bluez/hci0/dev_A1_B2_C3_D4_E5_F6/sep1/fd0 org.freedesktop.DBus.Properties.Get string:"org.bluez.MediaTransport1" string:"Volume" | grep uint16 | awk '{print $3}'
70
Run Code Online (Sandbox Code Playgroud)
在我的设备上,范围似乎是 0-127,其中某些值超过 110 会产生失真。请注意您提供的值以避免损坏。
小智 4
使用此方法,您需要适当的 D-Bus 对象路径来控制要控制的设备。有几种方法可以找到它(例如使用D-Feet),但是一旦有了它,以下命令将调整音量:
dbus-send --print-reply --system --dest=org.bluez /org/bluez/xxxx/yyyy/dev_zz_zz_zz_zz_zz_zz org.bluez.Control.VolumeUp
Run Code Online (Sandbox Code Playgroud)
其中“xxxx”似乎是bluetoothd的PID ,“yyyy”是适配器(如“hci0”),“zz_zz_zz...”表示受控设备(耳机、扬声器等)的MAC地址,用下划线分隔,并将“ VolumeUp ”替换为“ VolumeDown ”以减小音量。
有关正确查找对象路径的更多帮助,请参阅D-Bus文档。除了调节音量之外,若要执行其他操作,请参阅 Bluez API 文档。