NanoPi NEO Air的核版本和蓝牙协议栈(bluez)版本不一致导致的蓝牙无法链接设备

来源:互联网 发布:则么安装vb 编辑:程序博客网 时间:2024/05/02 14:05

一、问题描述

用NanoPi NEO Air做主设备,手表做从设备,两者可以链接握手,但是不能通信。

二、原因

可能的原因是:NanoPi NEO Air是Ubuntu 16.04.1,而它自带的bluez版本低,存在兼容性问题。

三、方案

3.1 安装新版bluez(BlueZ 5.44)

在Ubuntu 16.04.2下编译安装BlueZ 5.43.(文章中写的是bluez 5.43,实际使用bluez 5.44).

BlueZ 5.43 拥有对 BLE 设备更好的兼容性和更少的 Bug,Ubuntu Mate for raspiberry 16.04.2 已经 backport 了这个版本,但是官方居然没有,那没办法了,只能自己编译了。
tar xvf bluez-5.43.tar.xz
cd bluezbluez
sudo apt-get install libusb-dev libdbus-1-dev libglib2.0-dev automake libudev-dev libical-dev libreadline-dev
./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var
make
sudo make install

 
之后应该就可以了。

如果你使用 BLE 类型的蓝牙 4.0 鼠标的话,你可能还需要编辑一些其他的文件:
sudo gedit /etc/bluetooth/main.conf


取出 [Policy] 前面的注释,还有最后一行:
AutoEnable=true
的注释,顺便改成 true。
 
同时删除没什么用的 udev 规则:
sudo rm /lib/udev/rules.d/50-bluetooth-hci-auto-poweron.rules
 重启一下电脑,应该蓝牙类的问题就不会有了。


3.2 更新apt-get 

但是在执行sudo apt-get install libusb-dev libdbus-1-dev libglib2.0-dev automake libudev-dev libical-dev libreadline-dev时出现问题:

以下是另一篇解决方案:

Package has no installation candidate解决方法

今天在安装软件的时候出现了Package has no installation candidate的问题,如:
#  apt-get install <packagename>
Reading package lists... Done
Building dependency tree... Done
Package aptitude is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package <packagename> has no installation candidate


解决方法如下:
# apt-get update
# apt-get upgrade
# apt-get install <packagename>

这样就可以正常使用apt-get了~

在更新apt-get时告知

说明apt-get的代理存在问题,访问ubuntu官网时无法更新其全部内容。


0 0