Raspberry Pi 的應用 - 用 Bluetooth 來分享 iPhone 的 3G/4G 行動網路

by 5月 24, 2015 3 意見                

在實作完 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 撰文。

Heracles Jam,江湖人稱「海公公」

IT 技術家 - 創站部落客

一個常用 Windows、慣用 macOS、愛用 Linux 的 3C 阿宅
現職 MIS / 業界講師 / 資訊顧問 / 部落客

3 則留言 :

  1. 事前準備

    Raspberry Pi Model B / B+,Model A / A+ 請自行加上 USB 網路卡。

    是usb Bluetooth卡?

    回覆刪除
    回覆
    1. 哈哈~~~
      你說的對,我真的寫錯了.... XD
      的確是 Bluetooth USB Dongle 才對,感謝你的指正。

      刪除
  2. 您好! 請教一下raspberry pi完成藍芽網路接收後, 要如何再實作轉發為wifi熱點

    回覆刪除