BLE trên Linux (WIP)¶
Bluetooth Low Energy là lựa chọn phổ biến cho node gần gateway hoặc điện thoại. Trang này tập trung vào phía Linux: BlueZ, HCI và cách đọc dữ liệu từ node. So sánh với các công nghệ khác xem So sánh công nghệ kết nối.
Kiến trúc BLE¶
TODO
- Controller và host, giao tiếp qua HCI
- GAP: vai trò central / peripheral, advertising, scanning, connection
- GATT: service, characteristic, descriptor, UUID; notify và indicate
- PHY 1M, 2M, Coded (long range)
BlueZ¶
TODO
bluetoothd, D-Bus API (org.bluez),bluetoothctl- Driver:
hci_uart,btusb, firmware cho chip combo Wi-Fi/BT - Device tree cho BT qua UART (serdev)
Thực hành¶
TODO
- Scan và kết nối bằng
bluetoothctl, đọc characteristic - Đọc dữ liệu advertising của cảm biến (beacon) mà không cần kết nối
- Lập trình qua D-Bus (Python
dbus-next,bleak)
Debug¶
TODO
btmon,btmgmt,hcitool(đã cũ)- Bắt gói bằng sniffer (nRF Sniffer + Wireshark)
Nâng cao¶
TODO
- BLE Mesh
- Bảo mật: pairing (LE Secure Connections), bonding
- Cùng tồn tại với Wi-Fi trên chip combo