昨天在ubuntu 15.10 调试A2DP SNK 的时候,执行 sdptool add A2SNK, 发现没任何错误提示,我以为A2SNK写错了, 结果 sdptool add SP, 还是一样的问题。执行 echo $, 输出 255(根据经验应该是 return -1), 应该是没成功了。
权限不够? 加上sudo 还他妈的一样,sdptool del SP, 居然说服务不存在,实在没办法了,下载blueZ 最新5.37 源码编译,非常顺利的产生了 sdptool 文件,执行 sdptool add A2SNK 结果还是一样,跟踪源码, 发现 sdp_connect() 函数返回值是NULL指针,程序直接退出了。
而后发现别的地方调用了 sdp_connect() 会打印出错误提示:
Failed to connect to SDP server on FF:FF:FF:00:00:00
唯独执行add 这个命令的时候没打印, 就直接退出了, SHIT !!!!
根据上面的关键字,搜索,发现不止我一个人有这个问题。
解决方法:
You have to start bluetoothd with --compat flag. I don't know if this is the "Fedora way" of doing it, but I edited /usr/lib/systemd/system/bluetooth.service and included the flag in the ExecStart option.
ExecStart=/usr/libexec/bluetooth/bluetoothd --compat
Then
$ systemctl daemon-reload
$ systemctl restart bluetooth.service
bluetoothd守护程序要执行兼容模式,我试了一下,成功了!
但是没搞明白原因。