2017-01-17 17 views
0

この質問は初めてではありませんが、私が1週間中にできることすべてを試した後、まだ問題があります。 私はBLEデバイスに自分のラズベリーパイに接続しようとしています。私はそれらをスキャンすることはできますが、それらに接続することはできません。BLEデバイスとラズベリーのパイ3 B

私が続いている最後の説明は、このgithubの問題だった: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 --> 
<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) 

は、シンプルなソリューションを再インストールした後コンスタンティン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 
+0

この時点で、BLEデバイスは接続を許可していないか、またはあなたのrpiでbluezが動作していません。 bluetoothctlを使用して別のデバイスに接続しようとしましたか?それは動作しましたか? 「情報XX:XX:XX:XX:XX」は、デバイスに関する正しい情報を返しますか? –

+0

他のデバイスで試してみたところ、毎回接続が失敗しました。そして、「情報XX:XX:XX:XX:XX」は私に正しい情報を与えます(少なくとも私によれば何も変わりません)。私も他のrpiで試しましたが、同じ結果です:s –

答えて

3

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

それだ:ここで

は、私は私のrpi3上のbluezをインストールし、BLEデバイスに接続するために使用される正確なコマンドです。あなたの助けをもう一度ありがとう。

1

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

bluetoothctl(あなたのシェルに入力するだけです)できますか?

また、BLEデバイスに接続するためにラズベリーパイ3を使用しています。パッチは必要ありません。 bluez5.43と新鮮をインストールし、私はそれを私ができる最も簡単な方法をしたインストールの場合


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デバイスに接続していません:私は、「このパッケージをコンパイルする最も簡単な方法がある」続きますか?スマートフォンのように? gattの属性を読むことができるアプリケーションがあります。

UPDATE 2

私はものを削除しませんでした。単に残りの部分の上にbluez5.43をインストールしました。私が走るとき bluetoothctl -vそれは返します:5.43。

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] 

あなたは、私はまだ古いバージョンがインストールされている見ることができるように:

私はaptのリストを実行が自動的にインストールされている次のパッケージを見ることができるである--installed。

+0

あなたの答えをありがとう。私はあなたが求めた結果を加えました。すべての考えがうまくいくように見えますが、つながりはありません。私はパッチなしで他のインストールを試してみるつもりです。あなたが行ったインストールを説明するリンクがありますか? –

+0

新しいバージョンをインストールする前にbluezをアンインストールしましたか? –

+0

はい、私は一緒に接続する複数のデバイスとアプリケーションを持っています。私はあなたの簡単な解決策を試しています。 –

1

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

あなたはたぶんストレッチからバイナリバージョンをインストールすることができますが、私の経験では他の依存関係を頻繁に実行することがあります。

私はUbuntu-16.04で同じ問題を抱え、それを修正するためにUbuntu-Zestyのdeb-srcパッケージを使用しました。これはちょうどデビアンパッケージなので、私はこれを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 

これはあまりにも他のDebian派生のシステムの下で動作するはずです、 https://askubuntu.com/a/884062/655086

0

私は同じ問題に直面したC Bluetoothを内蔵したRaspberry Pi 3搭載のBLEデバイスの接続と再生。まず、以下のWebページで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 

内蔵のBLE Arduinoのブレとラズベリーパイ3との間を接続するブルートゥースを作成するための完全に認識している誰もがあれば、あなたの知識を共有してください。 ;)

関連する問題