以编程方式启用/禁用蓝牙配置文件

时间:2016-10-05 05:40:25

标签: python linux bluetooth a2dp hfp

我使用USB /蓝牙适配器(blueZ)5.4在Raspberry Pi 3上运行Rasbian Jessie Lite。

/etc/bluetooth/main.conf具有Class = 0x0c0408。 我有一个Qt5应用程序,它启用蓝牙设备并接受任何传入的配对请求。

我可以成功从智能手机连接到所有已启用的蓝牙配置文件:A2DP和HFP。

现在我想让用户选择应该启用哪个配置文件。因此,我正在寻找一种启用/禁用即时A2DP和HFP的方法。从C ++,bash或python脚本开始就可以。

我无法更改Class值,因为我无法重启蓝牙服务 - 我必须继续运行GATT服务器。

有没有想过?

1 个答案:

答案 0 :(得分:2)

可以使用sdptool命令在Bluez中启用和禁用任何配置文件/服务。如果您想启用任何配置文件/服务,您可以使用:

sdptool add A2SRC

以同样的方式禁用您可以使用的任何服务/配置文件:

sdptool del A2SRC

可以使用sdptool

的帮助找到更多信息
    sdptool - SDP tool v5.37
Usage:
    sdptool [options] <command> [command parameters]
Options:
    -h      Display help
    -i      Specify source interface
Commands:
    search      Search for a service
    browse      Browse all available services
    records     Request all records
    add         Add local service
    del         Delete local service
    get         Get local service
    setattr     Set/Add attribute to a SDP record
    setseq      Set/Add attribute sequence to a SDP record

Services:
    DID SP DUN LAN FAX OPUSH FTP PRINT HS HSAG HF HFAG SAP PBAP MAP 
    NAP GN PANU HCRP HID KEYB WIIMOTE CIP CTP A2SRC A2SNK AVRCT AVRTG 
    UDIUE UDITE SEMCHLA SR1 SYNCML SYNCMLSERV ACTIVESYNC HOTSYNC 
    PALMOS NOKID PCSUITE NFTP NSYNCML NGAGE APPLE IAP ISYNC GATT 

现在,您可以启用和禁用任何配置文件/服务。

转到第二个问题,如何远程让智能手机用户启用和禁用配置文件。这可以通过蓝牙中的串口配置文件(SPP)实现。只是为了向您介绍,SPP是通过蓝牙进行串行端口仿真。它基于RFcomm协议,可与A2DP和HFP并行使用。

所以这里的想法是创建从智能手机到RSP的SPP连接,然后发送命令以启用和禁用配置文件。可以使用Bluez提供的rfcomm命令从命令行使用SPP。有关如何使用该命令的更多信息,请访问:

  

https://unix.stackexchange.com/questions/92255/how-do-i-connect-and-send-data-to-a-bluetooth-serial-port-on-linux

如果您需要进一步澄清,请告诉我。