如何更改蓝牙设备类别

如何更改蓝牙设备类别

我正在尝试将我宣传的蓝牙设备类别从计算机更改为运行 ubuntu 12.04 的手机。我下载了 bluez 源代码并编辑了 main.conf 文件以更改行

Class = 0x000100 

到别的东西。我用

Class = 0x0c025a 

然后我运行 make && make install。我认为这没问题,因为/etc/bluetooth/main.conf文件已根据我的更改进行了更新。

现在的问题是,当我真正尝试连接到设备时

hcitool cc <bdaddr>

我发现我仍在使用 Class0x000100而不是 来宣传自己0x0c025a

我缺少什么才能使这些更改生效?

答案1

首先,找到您的接口名称:

hciconfig

它应该给你接口的名称,例如hci0

假设显示你的界面类:

hciconfig hci0 class

这应该会显示您的设备类别。

最后,以超级用户权限:

sudo hciconfig hci0 class 000408

应该设置您的设备的新类别。

具有十六进制和二进制表示的蓝牙类的有用参考可以在这里找到: http://www.question-defense.com/tools/class-of-device-bluetooth-cod-list-in-binary-and-hex

答案2

BlueZhostname插件会覆盖中的NameClass设置/etc/bluetooth/main.conf。请按照以下步骤指定蓝牙设备类别 (CoD):

  1. hostname通过修改 来跳过启动蓝牙守护进程时加载插件的过程/lib/systemd/system/bluetooth.service。例如:

    sudo sed -i 's/bluetoothd/bluetoothd \-\-noplugin=hostname/g' /lib/systemd/system/bluetooth.service
    

或者,您可以使用 指定包含列表--plugin=<plugins>。请参阅bluetoothd(8)https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/plugins

  1. 在常规部分中编辑/etc/bluetooth/main.conf并指定。如果您想要除以下内容之外的其他内容,请指定:ClassNameBlueZ X.YZ

    [General]
    Class = 0x1c0420
    Name = UbuntuCarAudio
    
  2. 重新启动或重启蓝牙服务以使更改生效:

    sudo systemctl daemon-reload
    sudo service bluetooth restart
    
  3. hciconfig -a通过运行或来验证更改echo 'show' | bluetoothctlhciconfig -a将显示解码的设备类别 (CoD) 信息:

    Name: 'UbuntuCarAudio'
    Class: 0x1c0420
    Service Classes: Rendering, Capturing, Object Transfer
    Device Class: Audio/Video, Car Audio
    

答案3

您需要在 /etc/bluetooth/main.conf 文件中更改类名。

Class = 0x00041C

然后重启蓝牙服务

sudo service bluetooth restart

然后从顶部面板图标关闭蓝牙并将其打开。

相关内容