在實作完 Raspberry Pi 的應用 - 透過 iPhone 的傳輸線,分享 3G/4G 行動網路 之後,有朋友問到:「iPhone 有三種個人熱點的分享方式耶,Wi-Fi 很耗電就別提了,傳輸線的分享方式已經成功了,那是不是把 Bluetooth 的分享方式也實作一下呢?」
OK!沒問題,就讓我們來實作吧。
事前準備
- Raspberry Pi Model A / A+ B / B+。
- USB 藍牙接收器。
- Raspbian 作業系統。
- iPhone,不需要越獄 (JB / JailBreak),這次是用 iPhone 5 + iOS 7.12。
- 3G / 4G 門號必須已申辦行動上網。
開始配對
確定 Bluetooth Dongle 是否已被正確的偵測及驅動。
lsusb
安裝 Bluetooth 套件及工具。
sudo apt-get -y install bluetooth bluez bluez-utils bluez-compat
掃瞄附近的藍牙裝置,這邊可以看到 iPhone 的 Bluetooth 位址是「30:10:E4:3B:00:1B」。
hcitool scan
由於配對程式的設定不適合在 iPhone 運作,我們調整一下內容,細節可以參閱 Pilla 技術宅 - [RPI2] 修改/usr/bin/bluez-simple-agent 改成 DisplayYesNo 才可以配對?。
sudo sed -i 's/KeyboardDisplay/DisplayYesNo/g' /usr/bin/bluez-simple-agent
也就是將 /usr/bin/bluez-simple-agent 裡的「KeyboardDisplay」改成「DisplayYesNo」。
啟動 iPhone 的藍牙。
開始配對驗證,停在 Confirm passkey 時,請輸入「yes」確認與 iPhone 配對。
sudo bluez-simple-agent hci0 30:10:E4:3B:00:1B
iPhone 上也會顯示配對的對話框,按「配對」。
儲存配對紀錄到信任清單裡。
sudo bluez-test-device trusted 30:10:E4:3B:00:1B yes
如果設定有問題,或是想重新配對,可以用這行指令將它從信任清單裡刪除。
sudo bluez-test-device remove 30:10:E4:3B:00:1B
別忘了 iPhone 上的配對紀錄也要刪除。
與 iPhone 建立連線
配對成功之後,就可以啟動 iPhone 的個人熱點了。
在網路介面設定檔裡,最後一行加入 Bluetooth 網路卡的設定。
sudo bash -c "echo 'iface bnep0 inet dhcp' >> /etc/network/interfaces"
Raspbain 2015-05-05 版起,系統改用 dhcpcd 服務來處理 DHCP Client 的工作,請將「iface eth1 inet dhcp」改成「iface eth1 inet manual」,否則會造成 eth0 拿不到 IP。
建立與 iPhone 熱點的 PAN (Personal Area Network) 連線。
sudo pand -role PANU --persist 30 -c 30:10:E4:3B:00:1B
iPhone 上也會顯示有用戶端的連線。
這樣就大功告成了。
ifconfig bnep0
異常排除
- hcitool scan 一直掃瞄不到?
通常是因為剛把藍牙打開,iPhone 的藍牙訊號還來不及開始廣播,請多點耐心,等它一下下囉。
- 「Authentication Failed、Authentication Rejected、Page Timeout」又是怎麼回事?
常見的情形有:iPhone 進入休眠模式,忘了開機,藍牙沒打開,藍牙位址打錯,沒按「配對」。
- 加入信任清單的時候,出現下列的訊息?
這是因為配對紀錄已經被刪除了,當然沒辦法加入信任清單,重新配對一次即可。
系列文章
參考資料
圖片來源
更新紀錄
- 2015/05/24 撰文。
事前準備
回覆刪除Raspberry Pi Model B / B+,Model A / A+ 請自行加上 USB 網路卡。
是usb Bluetooth卡?
哈哈~~~
刪除你說的對,我真的寫錯了.... XD
的確是 Bluetooth USB Dongle 才對,感謝你的指正。
您好! 請教一下raspberry pi完成藍芽網路接收後, 要如何再實作轉發為wifi熱點
回覆刪除