主题 : 友善之臂目前基于4412的板子都不支持蓝牙 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 69672
精华: 0
发帖: 13
金钱: 65 两
威望: 13 点
综合积分: 26 分
注册时间: 2012-05-09
最后登录: 2015-07-29
楼主  发表于: 2014-10-23 10:47

 友善之臂目前基于4412的板子都不支持蓝牙

友善之臂目前基于4412的板子都不支持蓝牙,但蓝牙是很通用、很重要的一个功能。

我这两天着手解决这个问题,刚开始以为是Linux内核没有将蓝牙功能编译进去,但是最终发现其实该编译的都已经编译,让我有点失落,事情变复杂了。

运行BlueZ的hciconfig工具,出现如下提示:

Can't open HCI socket.: Address family not supported by protocol.


这个提示说明,蓝牙相关的socket family(PF_BLUETOOTH)没有注册。

相关的注册应该是在net/bluetooth/af_bluetooth.c中的bt_init进行的,相关代码如下:
复制代码
  1. static struct net_proto_family bt_sock_family_ops = {
  2. .owner = THIS_MODULE,
  3. .family = PF_BLUETOOTH,
  4. .create = bt_sock_create,
  5. };
  6. static int __init bt_init(void)
  7. {
  8. int err;
  9. BT_INFO("Core ver %s", VERSION);
  10. err = bt_sysfs_init();
  11. if (err < 0)
  12. return err;
  13. err = sock_register(&bt_sock_family_ops);
  14. if (err < 0) {
  15. bt_sysfs_cleanup();
  16. return err;
  17. }
  18. ...
  19. subsys_initcall(bt_init);


经过调试,发现bt_init根本没有被调用,但是bt_init应该在内核初始化的时候就被调用的。这样的问题,我一时也就无法解决了。

不知道大家有没有发现并解决这个问题,也请友善的工程师能给予帮助。
级别: 新手上路
UID: 15410
精华: 0
发帖: 10
金钱: 55 两
威望: 11 点
综合积分: 20 分
注册时间: 2010-03-04
最后登录: 2014-10-23
1楼  发表于: 2014-10-23 10:54
试了一下,果然有这样的问题,期待官方应答。。。。。