Raspberry pi 将BLE设备与Raspberry pi 3 B连接

Raspberry pi 将BLE设备与Raspberry pi 3 B连接,raspberry-pi,bluetooth-lowenergy,raspberry-pi3,bluez,Raspberry Pi,Bluetooth Lowenergy,Raspberry Pi3,Bluez,我知道这不是第一次有人问这个问题,但在一周的时间里,我尝试了所有我能做的事情之后,我仍然有问题。 我正在尝试连接我的Raspberry pi到BLE设备。我可以扫描它们,但无法连接到它们 我遵循的最后一个解释是github问题: 下面是我尝试更新bluez并使此连接工作的所有命令 ###Install RASPBIAN JESSIE LITE 2017-01-11-raspbian-jessie-lite.img ###Updates $ sudo apt-get update $ sud

我知道这不是第一次有人问这个问题,但在一周的时间里,我尝试了所有我能做的事情之后,我仍然有问题。 我正在尝试连接我的Raspberry pi到BLE设备。我可以扫描它们,但无法连接到它们

我遵循的最后一个解释是github问题:

下面是我尝试更新bluez并使此连接工作的所有命令

###Install RASPBIAN JESSIE LITE 
2017-01-11-raspbian-jessie-lite.img

###Updates
$ sudo apt-get update

$ sudo apt-get upgrade

###Add libs
$ sudo apt-get install bluetooth  bluez-tools build-essential autoconf glib2.0 libglib2.0-dev libdbus-1-dev libudev-dev libical-dev libreadline-dev git

###Get bluez-5.43
$ wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.43.tar.xz

$ tar xf bluez-5.43.tar.xz

$ cd bluez-5.43

###Patch bluez
$ wget https://gist.github.com/pelwell/c8230c48ea24698527cd/archive/3b07a1eb296862da889609a84f8e10b299b7442d.zip

$ unzip 3b07a1eb296862da889609a84f8e10b299b7442d.zip

$ git apply  -v c8230c48ea24698527cd-3b07a1eb296862da889609a84f8e10b299b7442d/*

###Install bluez
$ ./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --enable-experimental --enable-maintainer-mode

$ make -j 4 && sudo make install

### Add to /etc/dbus-1/system.d/bluetooth.conf 
<!-- allow users of bluetooth group to communicate -->
<policy group="bluetooth">
  <allow send_destination="org.bluez"/>
</policy>

$ sudo usermod -G bluetooth -a $USER

$ sudo sed -i '/^ExecStart.*bluetoothd\s*$/ s/$/ --experimental/' /lib/systemd/system/bluetooth.service

$ sudo systemctl daemon-reload

$ sudo service bluetooth restart

$ service bluetooth status

$ sudo reboot

$ sudo hcitool lescan
       LE Scan ...
       XX:XX:XX:XX:XX:XX (name)

$ gatttool -b XX:XX:XX:XX:XX:XX -I
       [XX:XX:XX:XX:XX:XX][LE]> connect
       Attempting to connect to XX:XX:XX:XX:XX:XX
       Error: connect error: Transport endpoint is not connected (107)


$ gatttool -b XX:XX:XX:XX:XX:XX -t random -I
       [XX:XX:XX:XX:XX:XX][LE]> connect
       Attempting to connect to XX:XX:XX:XX:XX:XX
       Error: connect error: Connection refused (111)
编辑2

使用简单解决方案重新安装后:

$ bluetoothctl -v
    5.43

$ systemctl status bluetooth 
    ● bluetooth.service - Bluetooth service
       Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled)
       Active: active (running) since Wed 2017-01-18 15:46:53 UTC; 3min 37s ago
         Docs: man:bluetoothd(8)
     Main PID: 586 (bluetoothd)
       Status: "Running"
       CGroup: /system.slice/bluetooth.service
               └─586 /usr/local/libexec/bluetooth/bluetoothd --experimental

$ sudo bluetoothctl
    [bluetooth]# connect XX:XX:XX:XX:XX:XX
    Attempting to connect to XX:XX:XX:XX:XX:XX
    Failed to connect: org.bluez.Error.Failed

bash命令的结果是什么

你能启动bluetoothctl(只需在shell中键入它)吗

我也使用树莓皮3连接到BLE设备,我不需要补丁。使用bluez5.43重新安装,并发布我编写的两个命令的结果


更新

对于安装,我尽可能用最简单的方法来完成。我遵循了安装文件中的“编译此包的最简单方法是:”部分,即:

 wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.43.tar.xz

 tar xf bluez-5.43.tar.xz

 cd bluez-5.43.tar.xz

./configure

 make 

 make install
您是否使用其他设备成功连接到您的BLE设备?像智能手机?有一些应用程序可以读取gatt的声明

更新2

我什么也没拿走。只在其余部分的顶部安装了bluez5.43。当我跑的时候 蓝牙CTL-v返回值:5.43

当我运行apt list--installed时,可以看到以下自动安装的软件包:

bluez/stable,now 5.23-2+rpi2 armhf [installed,automatic]
bluez-firmware/stable,now 1.2-3+rpi1 all [installed,automatic]
bluez-obexd/stable,now 5.23-2+rpi2 armhf [installed,automatic]
bluez-tools/stable,now 0.2.0~20140808-3 armhf [installed]

正如你所看到的,我仍然安装了旧版本

bash命令的结果是什么

你能启动bluetoothctl(只需在shell中键入它)吗

我也使用树莓皮3连接到BLE设备,我不需要补丁。使用bluez5.43重新安装,并发布我编写的两个命令的结果


更新

对于安装,我尽可能用最简单的方法来完成。我遵循了安装文件中的“编译此包的最简单方法是:”部分,即:

 wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.43.tar.xz

 tar xf bluez-5.43.tar.xz

 cd bluez-5.43.tar.xz

./configure

 make 

 make install
您是否使用其他设备成功连接到您的BLE设备?像智能手机?有一些应用程序可以读取gatt的声明

更新2

我什么也没拿走。只在其余部分的顶部安装了bluez5.43。当我跑的时候 蓝牙CTL-v返回值:5.43

当我运行apt list--installed时,可以看到以下自动安装的软件包:

bluez/stable,now 5.23-2+rpi2 armhf [installed,automatic]
bluez-firmware/stable,now 1.2-3+rpi1 all [installed,automatic]
bluez-obexd/stable,now 5.23-2+rpi2 armhf [installed,automatic]
bluez-tools/stable,now 0.2.0~20140808-3 armhf [installed]

正如你所看到的,我仍然安装了旧版本

感谢康斯坦丁·查比兰德,我成功了。我需要更多的命令行来让它工作,我需要改变我的BLE设备的广告频率(我仍然需要做一些测试)

以下是我在rpi3上安装bluez并连接到BLE设备时使用的确切命令:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install -y libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev

wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.43.tar.xz
tar xf bluez-5.43.tar.xz
cd bluez-5.43/

./configure
make
sudo make install
sudo reboot

# check version
bluetoothctl -v

sudo nano /lib/systemd/system/bluetooth.service
        # Add --experimental to this lane 
        ExecStart=/usr/local/libexec/bluetooth/bluetoothd --experimental

sudo systemctl daemon-reload
sudo systemctl restart bluetooth
sudo hciconfig hci0 up
sudo reboot

sudo usermod -G bluetooth -a pi
sudo reboot

就这样。再次感谢您的帮助。

感谢康斯坦丁·夏比兰,我让它成功了。我需要更多的命令行来让它工作,我需要改变我的BLE设备的广告频率(我仍然需要做一些测试)

以下是我在rpi3上安装bluez并连接到BLE设备时使用的确切命令:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install -y libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev

wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.43.tar.xz
tar xf bluez-5.43.tar.xz
cd bluez-5.43/

./configure
make
sudo make install
sudo reboot

# check version
bluetoothctl -v

sudo nano /lib/systemd/system/bluetooth.service
        # Add --experimental to this lane 
        ExecStart=/usr/local/libexec/bluetooth/bluetoothd --experimental

sudo systemctl daemon-reload
sudo systemctl restart bluetooth
sudo hciconfig hci0 up
sudo reboot

sudo usermod -G bluetooth -a pi
sudo reboot

就这样。再次感谢您的帮助。

我需要安装bluez-5.43,以便在使用脚本中的bluetoothctl时绕过默认bluez-5.23中的错误

您可能可以从stretch安装二进制版本,但我的经验是,您经常会遇到其他依赖项

我在Ubuntu-16.04下也遇到了同样的问题,我使用了ubuntuzesty的debsrc包来解决这个问题。由于这只是一个debian软件包,我也在Raspberry pi上使用了它,在使用USB蓝牙加密狗时效果很好。要在RPI-3上实现这一点,您还需要安装../issue/30修补程序。RPI-3的蓝牙控制器通过串行线连接

这样做的好处是,一旦你的Raspbian将包含一个更新的bluez版本,它将取代我们在这里所做的,如果你有更多的Raspbian系统,你当然只需要安装生成的.deb包

这就是我所做的(免提):

这在其他Debian派生系统下也可以工作,

我需要安装bluez-5.43,以便在使用脚本中的bluetoothctl时绕过默认bluez-5.23中的错误

您可能可以从stretch安装二进制版本,但我的经验是,您经常会遇到其他依赖项

我在Ubuntu-16.04下也遇到了同样的问题,我使用了ubuntuzesty的debsrc包来解决这个问题。由于这只是一个debian软件包,我也在Raspberry pi上使用了它,在使用USB蓝牙加密狗时效果很好。要在RPI-3上实现这一点,您还需要安装../issue/30修补程序。RPI-3的蓝牙控制器通过串行线连接

这样做的好处是,一旦你的Raspbian将包含一个更新的bluez版本,它将取代我们在这里所做的,如果你有更多的Raspbian系统,你当然只需要安装生成的.deb包

这就是我所做的(免提):

这在其他Debian派生系统下也可以工作,

我面临着与使用Raspberry Pi 3内置蓝牙连接和播放可移动设备相同的问题。首先,通过下面的网页,我学会了如何玩和控制bluetoothctl工具

[

在本教程中,成功连接BLE设备后,可以使用要使用的属性

例如,如果您想使用Bluetooth UART TX或RX的属性,您只需输入以下命令,然后读取或写入该属性的特征值

list-attributes 00:34:40:0A:00:4E 
select-attribute /org/bluez/hci0/dev_00_32_40_08_00_12/service0026/char0027
read 
write
如果有人完全了解创建蓝牙连接betwe