Skip to content

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