BLEデバイスをRaspberry pi 3 Bに接続する

私はこれがこの質問がされたのは初めてではないことを知っています、しかし私が1週間の間に私ができることすべてを試みた後に、私はまだ問題を抱えています。 私はBLEデバイスに私のラズベリーパイに接続しようとしています。スキャンすることはできますが、接続することはできません。

The last explanation I have followed was this github issue: https://github.com/ukBaz/python-bluezero/issues/30

そして、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 -->

  


$ 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)

ご協力ありがとうございました

Constantin Chabirandの回答に合わせて編集

$ systemctl status bluetooth
    ● bluetooth.service - Bluetooth service
       Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled)
       Active: active (running) since Tue 2017-01-17 21:17:07 UTC; 1min 51s ago
         Docs: man:bluetoothd(8)
     Main PID: 587 (bluetoothd)
      Status: "Running"
       CGroup: /system.slice/bluetooth.service
               └─587 /usr/libexec/bluetooth/bluetoothd --experimental


$ bluetoothctl
    [NEW] Controller B8:27:EB:FD:93:2B raspberrypi [default]
    [bluetooth]# scan on
    Discovery started
    ....

    [bluetooth]# scan off
    [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

編集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
1
私は他のデバイスで試しましたが、接続は毎回失敗しました。そして "info XX:XX:XX:XX:XX"は私に正しい情報を与えてくれます(少なくとも私には奇妙なことは何もありません)私はまた他のRPIを試してみました、それは同じ結果です:s
追加された 著者 Xavier Bauquet,
この時点では、BLEデバイスが接続を許可していないか、bluezがrpiで機能していません。 bluetoothctlを使って他の機器に接続しようとしましたか?うまくいきましたか。 "info XX:XX:XX:XX:XX"はあなたのデバイスに関する正しい情報を返しますか?
追加された 著者 Constantin Chabirand,

4 答え

Constantin Chabirandさん、ありがとうございました。私はそれを機能させるためにさらにいくつかのコマンドラインが必要でした、そして私は私の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

それでおしまい。どうもありがとうございました。

3
追加された

bashコマンド systemctl status bluetooth の結果は何ですか?

bluetoothctl を起動できますか(シェルに入力するだけ)

私はまたBLEデバイスに接続するためにラズベリーパイ3を使用し、私はパッチを必要としません。 bluez5.43でフレッシュインストールを開始し、私が書いた2つのコマンドの結果を投稿する


UPDATE

インストールのために私はそれを私ができる最も簡単な方法でやった。 INSTALLファイルの「このパッケージをコンパイルする最も簡単な方法は次のとおりです」のセクションに従いました。

 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デバイスに正常に接続しましたか?スマートフォンのような?ガット属性を読み取ることができるアプリケーションがあります。

UPDATE 2

私は物を取り除かなかった。残りの上にbluez5.43を取り付けただけです。走ったとき bluetoothctl -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]

ご覧のとおり、まだ古いバージョンがインストールされています。

1
追加された
ご回答ありがとうございます。あなたが求めた結果を追加しました。すべての考えがうまくいっているように見えますが、関係はうまくいきません。私はパッチなしで他のインストールを試すつもりです。インストールを説明するリンクがありますか。
追加された 著者 Xavier Bauquet,
新しいバージョンをインストールする前にbluezをアンインストールしましたか?
追加された 著者 Xavier Bauquet,
はい、一緒に接続するいくつかのデバイスとアプリがあります。私はあなたの簡単な解決策を試しています。
追加された 著者 Xavier Bauquet,

スクリプトからbluetoothctlを使用する場合、デフォルトのbluez-5.23のバグを回避するためにbluez-5.43をインストールする必要がありました。

おそらくバイナリバージョンを一気にインストールすることもできますが、私の経験では他の依存関係に遭遇することがよくあります。

私はUbuntu-16.04でも同じ問題を抱えており、それを修正するためにUbuntu-Zestyのdeb-srcパッケージを使用しました。これは単なるDebianパッケージなので、私はこれをRaspberry piでも使用しましたが、USB-bluetoothドングルを使用しているときはうまく機能しました。シリアル回線を介して接続されているそのブルートゥースコントローラを持っているRPI-3でこれを機能させるには、.. /issue/30パッチもインストールする必要があります。

こうすることの利点は、Raspbianが新しいbluezバージョンを含むようになれば、ここで行うことに置き換わることです。さらにraspbianシステムを入手した場合は、生成された.debパッケージをインストールするだけで済みます。

これは私がしたことです(ハンズフリー):

#!/bin/bash
sudo apt-get install devscripts debhelper dh-autoreconf flex bison libdbus-glib-1-dev libglib2.0-dev  libcap-ng-dev libudev-dev l
ibreadline-dev libical-dev check dh-systemd libebook1.2-dev

wget https://launchpad.net/ubuntu/+archive/primary/+files/bluez_5.43.orig.tar.xz
wget https://launchpad.net/ubuntu/+archive/primary/+files/bluez_5.43-0ubuntu1.debian.tar.xz
wget https://launchpad.net/ubuntu/+archive/primary/+files/bluez_5.43-0ubuntu1.dsc

tar xf bluez_5.43.orig.tar.xz
cd bluez-5.43
tar xf ../bluez_5.43-0ubuntu1.debian.tar.xz
# install patches relevant for rpi-3 bluetooth
. /etc/os-release
if [ $ID = raspbian ]; then
    wget https://gist.github.com/pelwell/c8230c48ea24698527cd/archive/3b07a1eb296862da889609a84f8e10b299b7442d.zip
    cd debian/patches
    unzip ../../3b07a1eb296862da889609a84f8e10b299b7442d.zip
    for i in c8230c48ea24698527cd-3b07a1eb296862da889609a84f8e10b299b7442d/*;do
        mv $i .
        basename $i >> series
    done
    rmdir c8230c48ea24698527cd-3b07a1eb296862da889609a84f8e10b299b7442d
    cd ../..
fi
# end of Raspian related patches
debchange --local=~lorenzen 'Backport to Xenial'
debuild -b -j4
cd ..
sudo dpkg -i *.deb

This would should work under other Debian derived systems too, https://askubuntu.com/a/884062/655086

1
追加された

私は、BLEデバイスをRaspberry Pi 3内蔵のBluetoothに接続して再生するという同じ問題に直面しました。まず第一に、私は以下のウェブページのおかげで bluetoothctl のツールをどのようにプレイし制御するかを学びました。

[https://mcuoneclipse.com/2016/12/19/tutorial-ble-pairing-the-raspberry-pi-3-model-b-with-hexiwear/][1]

このチュートリアルでは、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

Raspberry Pi 3の内蔵BLEとArduino Bleの間のブルートゥース接続を完全に意識している人がいるなら、あなたの知識を共有してください。 ;)

0
追加された