藍牙技術日益普及,應用場景廣泛。然而,在開發過程中,開發者常常遇到各類問題。這些問題可能來自於硬體的不穩定性、軟體版本的不兼容性、環境干擾等。準確識別問題的根源並找到有效的解決方案,是開發過程中的關鍵之一。
常見的不確定性問題
連線不穩定:藍牙裝置之間的連線容易受到外界干擾,如其他無線訊號、物理障礙物。
配對問題:不同裝置之間的藍牙配對過程可能出現失敗,導致無法建立連線。
資料傳輸錯誤:藍牙封包在傳輸過程中可能出現遺失或損壞,導致資料不完整或錯誤。
相容性問題:不同版本的藍牙協議之間可能存在不兼容問題,影響裝置的互操作性。
問題解析方法
在程式開發過程中,設備間可能會出現訊號異常問題,如傳輸速度受限、資料遺漏、無法連線或資料長度超出藍牙規範等。由於藍牙訊號以光速傳播於空中,無法透過導線直接檢測,需特定軟硬體來捕捉與分析訊號。
為快速定位並解決問題,Nordic 提供與 Wireshark 結合的韌體,可燒錄至 Raytac MDBT50Q-CX-40 Dongle,透過 USB 在電腦接收與分析空中的藍牙訊號。以下介紹如何設定該 Dongle 及環境配置。
Dongle FW燒錄
1. 到下列網址下載nRF Sniffer for Bluetooth LE並解壓縮:https://www.nordicsemi.com/Products/Development-tools/nRF-Sniffer-for-Bluetooth-LE
2. 在解壓縮的目錄中我們可以找到sniffer_nrf52840dongle_nrf52840_4.1.1.hex;我們需要燒錄這個Firmware到MDBT50Q-CX-40。
3. 按住MDBT50Q-CX-40 Dongle按鍵後插入PC USB插槽,當LED亮起時即進入bootloader,在此模式我們可以用nRF Programmer來燒錄。
4. 開啟nRF Programmer依下圖的方式操作即可將Firmware燒錄到Dongle中:
– 選擇要燒錄程式的裝置:
– MDBT50Q-CX-40 Dongle進入open bootloader時所產生的裝置名稱:
– 將要燒錄的Firmware檔案加入到programmer中:
– 選擇要燒錄的Firmware – sniffer_nrf52840dongle_nrf52840_4.1.1.hex:
按Write鍵即可將Firmware燒錄到MDBT50Q-CX-40中:
再按SELECT DEVICE可以看到Dongle名稱已變成nRF Sniffer for Bluetooth即已燒錄成功:
Wireshark軟體環搭建步驟
1. 到下列網址下載nRF-Util並安裝:
https://www.nordicsemi.com/Products/Development-tools/nRF-Util
2. 安裝完成後在命令提示字元視窗中使用nrfutil list查看有沒有ble-sniffer的項目,如果沒有可以使用下列的命令安裝:nrfutil install ble-sniffer
3. 到下列網址下載Wireshark並安裝:
https://www.wireshark.org/download.html
4. 安裝完成後依下列設定:Help → About Wireshark → Folders
5. 從Personal Extcap path的Location字串開啟extcap目錄:
6. 將之前下載nrf_sniffer_for_bluetooth_le_4.1.1\extcap中的檔案複製到Wireshark\extcap中,關閉Wireshark應用程式,並重新開啟:
7. 可以看到dongle的interface左邊有一個可設定的圖示出現:
8. Edit → Configuration Profiles → Import → From Directory → 選取nrf_sniffer_for_bluetooth_le_4.1.1\Profile_nRF_Sniffer_Bluetooth_LE目錄後按選擇資料夾:
9. Profile已被匯入,按確定鍵: