2017-01-17 22 views
0

Я знаю, что этот вопрос задавался не в первый раз, но после того, как я пробовал каждую неделю, я все еще испытываю проблемы. Я пытаюсь подключиться к моим устройствам малины к устройствам BLE. Я могу сканировать их, но не подключаюсь к ним.Соедините устройства BLE с малиной pi 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) 

Спасибо за вашу помощь

Edit для ответа 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 

Edit 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 не разрешает подключение или bluez не работает на вашем rpi. Вы пытались подключиться к другому устройству с помощью bluetoothctl? Это сработало? «Информация XX: XX: XX: XX: XX» возвращает правильную информацию о вашем устройстве? –

+0

Я пробовал работать с другими устройствами, и подключение не выполнялось каждый раз. И «info XX: XX: XX: XX: XX» дает мне правильные сведения (по крайней мере, ничего странного по мне). Я также пробовал с другим rpi, и это тот же результат: s –

ответ

3

Спасибо Константину Чабиранду, я заставил его работать. Мне понадобилось еще несколько команд, чтобы заставить его работать, и мне нужно было изменить частоту рекламы моего устройства BLE (мне все равно нужно сделать некоторые тесты).

Вот точные команды, которые я использовал, чтобы установить Bluez на моем rpi3 и подключить к 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 

Вот так. В очередной раз благодарим за помощь.

1

Что является результатом команды bash Состояние системы bluetooth?

Вы можете начать bluetoothctl (просто введите его в свою оболочку)?

Я также использую малиновый pi 3 для подключения к устройствам BLE, и мне не нужен патч. Начать новую установку с 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 atrributes.

UPDATE 2

Я не удаляла вещь. Просто установите bluez5.43 поверх остальных. Когда я запускаю bluetoothctl -v он возвращает: 5.43.

Когда я бегу склонный список --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] 

Как вы можете видеть, что я до сих пор установлена ​​старая версия.

+0

Благодарим вас за ответ. Я добавил результаты, которые вы просили. Кажется, что кажется, что все работает хорошо, но не соединение. Я попробую другую установку без патча. У вас есть ссылка, объясняющая установку, которую вы сделали? –

+0

Вы удалили bluez перед установкой новой версии? –

+0

Да, у меня есть несколько устройств и приложений, которые соединяются вместе. Я пытаюсь с вашим простым решением. –

1

Мне нужно было установить bluez-5.43, чтобы обойти ошибки в bluez-5.23 по умолчанию при использовании bluetoothctl из скриптов.

Возможно, вы можете установить двоичную версию с сайта, но мой опыт в том, что вы часто запускаете другие зависимости.

У меня была такая же проблема в Ubuntu-16.04, и я использовал пакет deb-src от Ubuntu-Zesty, чтобы исправить это. Поскольку это всего лишь пакет debian, я использовал это на малине pi тоже, отлично работал при использовании USB-bluetooth-ключа. Чтобы сделать эту работу на RPI-3, у которой есть контроллер bluetooth, подключенный через последовательную линию, вам также нужно установить патчи ../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

я столкнулся с той же проблемой, что с Onnecting и играть BLE устройств с малиной 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 

Если есть кто-то, кто в полной мере осознает создания Bluetooth соединения между Raspberry Pi 3 встроенных BLE с Arduino Бле, пожалуйста, поделитесь своими знаниями. ;)