2014-12-22

Raspberry Pi 安裝 BlueZ 支援藍牙 BLE 功能

阿舍在 Raspberry Pi 上用的 Linux 發行版本是 Raspbian,而 BlueZ 套件是可以直接用 apt-get 安裝的,不過,這樣安裝的版本有點舊,是 4.99 版哩!距離 BlueZ 最新版的 5.26 版是差有好一段距離了哩 ! 但是,如果只是要用 Raspberry Pi  來連結像是鍵盤和滑鼠之類的藍牙裝置的話,用 apt-get 來安裝的 BlueZ 版本就會夠用了,可是,阿舍想要玩的東西,是需要用到 BLE (Bluetooth low energy ) 功能的,所以,就會需要自己來安裝新版的 BlueZ 囉 !


不是所有4.0 的 USB 藍牙都有支援 BLE 的

安裝的方式不難,就是要花一點時間的,還有請依序照阿舍下面的序順來執行,不要偷懶或跳過,不然,編譯不成功,就麻煩了哩 !  而如果真的沒有成功,那就從頭再一步一步來一次囉 ! ...

1. 安裝相關套件
如果有遇到 D-Bus >= 1.6 is required 的問題,就是下面的第二個套件沒安裝的原故哩 ! .. 

sudo apt-get install libusb-dev

sudo apt-get install libdbus-1-dev

sudo apt-get install libglib2.0-dev --fix-missing

sudo apt-get install libudev-dev

sudo apt-get install libical-dev

sudo apt-get install libreadline-dev


2. 下載 BlueZ 原始程式碼
本來阿舍是安裝最新版的  BlueZ,不過,無奈最新版的 BlueZ 會用到一個 Raspbian 目前還不支援的套件版本,所以,最後,阿舍就建議大家安裝阿舍試過可以在 Raspbian 上成功編譯的,同時,也是網路上最多人有安裝成功的 BlueZ 5.18 版哩 !

wget https://www.kernel.org/pub/linux/bluetooth/bluez-5.18.tar.xz


3. 解開下載的檔案
解開後,會有個 bluez-5.18 的資料夾。

tar xvf bluez-5.18.tar.xz


4. 開始編譯和安裝

cd bluez-5.18

sudo gunzip bluez-5.18.tar.gz

sudo tar xvf bluez-5.18.tar

cd bluez-5.18

sudo ./configure --disable-systemd

sudo make (下完這個指令後,就可以先去做別的事了,因為,要跑一段時間哩 ! )

sudo make install


5. 重開機

sudo reboot


6. 啟用藍牙 USB

sudo hciconfig hci0 up


7. 搜尋 BLE 裝置
有掃並出現裝置的位址 ( 6 組數字組成的位址  ) 就可以按 Ctrl-C 結束,不用等它自己跑完 ...

sudo hcitool lescan

8. 連接 BLE 裝置
用上面查到的位址來做連線

sudo hcitool lecc  99:99:99:99:99:99  (請改掉)

9. gatttool 工具
如果你需要用到 gotttool 工具來連到 BLE 裝置的話,這個 gatttool 工具是放在 bluez-5.18 的 attrib 資料夾裡,需要常用的話,可以用下面這行指令把它搬到 /usr/local/bin,下次可以直接打 gatttool  指令就可以用了哩 !

cp attrib/gatttool /usr/local/bin/

阿舍的操作範例

另外,不知道有沒有人和阿舍一樣,會問說,什麼時候把藍牙 USB 給插到 Raspberry Pi 才對呢 ? 阿舍是從下載和編譯 BlueZ 前,就插著的,等安裝好重開時再插,也是沒有差的哩 !


推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

18 則留言 :

匿名 提到...

不好意思,由於是藍牙應用的新手
能不能請問一下,使用hcitool與gatttool來連接設備的差別在哪邊?
謝謝

Arthur 提到...

Hello,

請參考阿舍寫的下面這一篇 ...

http://www.arthurtoday.com/2014/12/bluetooth-low-energy-development-tool-for-node-golang-python.html

匿名 提到...

你好,不好意思,因為我現在遇到一個問題是
我可以透過gatttool成功連接藍牙4.0模組,但卻無法透過hcitool連接到模組
請問這樣問題是出在哪邊?
如果這樣的話,有甚麼方法可以傳送字串給模組嗎?
抱歉 問題有點多 可以的話再麻煩解答一下 謝謝

Arthur 提到...

Hello,

阿舍感覺上你要連結的那個裝置可能是像 iBeacon 的 BLE 裝置,只能透過 BLE 的方式讀取資料,不接受一般的藍牙傳輸方式,所以,才會無法用 hcitool 來寫入哩 !

供參囉 ! ...

匿名 提到...

版主你好 謝謝你的回答
我發現問題後,現在我可以透過hcitool來連接了
上述的方法好像是透過gatttool來寫值給handle
那請問要如何傳送字串(英文字串)給模組?
謝謝

Arthur 提到...

Hello,

請參考 ...

http://www.arthurtoday.com/2014/12/bluetooth-low-energy-development-tool-for-node-golang-python.html

crtt 提到...

版主您好...我想請教一下....我也是用raspbian 上的bluez 4.99, 他裡內就有gatttool了, 不知跟您提到的bluez 5.18 gatttool有什麼不同呢? 再者我用bluez 4.99的gatttool, 與在iphone 6上裝一個叫LightBlue的app, 用lescan掃描可以掃的到, 但gatttool建連線, 就是連不起來, 不知是什麼原因造成的耶。

Unknown 提到...

你好,我是個小小初學者多多包涵,照著您的教學做到步驟4後,""sudo gunzip bluez-5.18.tar.gz""

""sudo tar xvf bluez-5.18.tar"",這兩行程式不知道為什麼都讀不到,懇求解答。

Arthur 提到...

Hello crtt,

阿舍記得的是,BlueZ 是 5.X 版後才有支援 BLE 功能,4.X 好像不太行皊樣子哩 ! ...

供參囉 ... ^^=

Arthur 提到...

Hello Achun,

請問錯誤訊息是什麼 ? ...

Unknown 提到...

你好,輸入""sudo tar xvf bluez-5.18.tar"" 的錯誤訊息是

gzip: bluez-5.18.tar.gz: No such file or directory

另一個也這樣

Unknown 提到...

且確定有進去到那個藍芽的資料夾路徑

Arthur 提到...

Hello,

就訊息看來,應該是找不到 bluez-5.18.tar.gz 這個檔案,請問資料夾裡有什麼檔案 ?

Unknown 提到...

我也是

cd bluez-5.18

sudo gunzip bluez-5.18.tar.gz

sudo tar xvf bluez-5.18.tar

在cd bluez-5.18中沒看到這兩個檔案QQ

Unknown 提到...

請問有推薦使用哪一款 藍芽 ?usb

Arthur 提到...

Hello,

阿舍是找產品上有寫,支援 V4.0 並有支援 BLE ( Bluetooth Low Energy ) 或「低功耗技術」的藍芽 USB ..

供參囉 ! ... ^^=

水瓶裡的瑜 提到...

您好~我用pi3上內建的藍芽 一對多連接藍芽4.0裝置是可以辦得到的嗎?

Arthur 提到...

Hello,

阿舍沒試過,但是,阿舍查了一下,應該是沒問題 (可能需要切換 Channel),不過,如果是要同一種裝置連結很多個的話,那就比較麻煩哩 ...

供參囉 ! ... ^^=

張貼留言

歡迎留言提問和討論 .... 😁