visudoblog gửi vào
- 13374 lượt xem
Tính năng của một thiết bị bluetooth phụ thuộc vào thông số cấu hình được khai báo trên mạch thu/ phát tín hiệu; việc tùy chỉnh các thông số này trên phần cứng/ phần mềm sẽ giúp quá trình truyền tải giữa các thiết bị đạt hiệu năng tốt nhất cho từng mục đích sử dụng trên thực tế. Mã nguồn BlueZ được cài đặt trên nền Yocto Linux cho phép người dùng Intel Edison tùy biến mạnh mẽ các thông số bluetooth một cách dễ dàng thông qua các tập tin cấu hình.
1. Tổng quan về Bluetooth profile
Để sử dụng công nghệ không dây Bluetooth, các thiết bị phải có khả năng tự định danh thông qua các khai báo mà nhà sản xuất gán sẵn vào phần cứng. Bluetooth profile là một loạt các định nghĩa được mô tả nhằm thông báo với các thiết bị khác các tính năng mà nó hỗ trợ trong phạm vi phần cứng có thể thực hiện (ví dụ: tai nghe bluetooth, bàn phím/ chuột bluetooth, ...)
Một số thuật ngữ
- Bluetooth Basic Rate/Enhanced Data Rate (BR/EDR): được sử dụng phiên bản Bluetooth 2.0/2.1
- Bluetooth with low energy (LE): được sử dụng phiên bản Bluetooth 4.0/4.1/4.2
- Device Identification Profile (DI): cho phép nhà sản xuất, người dùng điều chỉnh, bổ sung các thông tin định danh, tính chất của thiết bị Bluetooth.
Kiến trúc Bluetooth
Kiến trúc lõi của tiêu chuẩn Bluetooth bao gồm nhiều thành phần khác nhau và phân thành ba nhóm Bluetooth Apps, Bluetooth hosts và Bluetooth controllers. Để hiểu rõ thêm về tính năng của từng thành phần, bạn có thể truy cập tài liệu công bố chính thức tại trang web Bluetooth core specification .
Hình: Kiến trúc lõi tiêu chuẩn Bluetooth
Thành phần mà tôi sẽ đề cập chính trong bài viết này là Generic Access Profile - GAP thực hiện quản lý vai trò của thiết bị (roles), thủ tục (procerdures) và chế độ (modes) trong việc truyền tải dữ liệu, rà quét thiết bị, thiết lập/ quản lý kết nối, thống nhất các mức độ bảo mật. Các thông tin này bắt buộc phải được khai báo trong các thiết bị BLE.
Hình: Bluetooth profiles
Hình: Sơ đồ tương quan giữa Device ID profile và Service Discovery Protocol trong GAP
Hình: BLE protocol stack
Hình: Sơ đồ kết nối các phiên bản Bluetooth
Hình: Một số kiến trúc phần cứng dựa theo tiêu chuẩn Bluetooth
2. Tùy chỉnh thông tin định danh thiết bị (DI)
Sau khi xác định được vị trí của DI trong kiến trúc Bluetooth, người dùng có thể thực hiện điều chỉnh các tham số trong cấu hình Edison nhằm đạt được mục tiêu tùy biến định danh thiết bị. Các profile khác mà BlueZ hỗ trợ người dùng được cập nhật tại trang chính của dự án http://www.bluez.org/profiles/
Để thực hiện thay đổi DI của thiết bị, người dùng chỉnh sửa tập tin /etc/blutooth/main.conf, thông số cần thay đổi là DeviceID = bluetooth:1234:5678:abcd
- VendorID Source: có thể thiết lập giá trị là Bluetooth hoặc USB.
- VendorID: 16bits dữ liệu định danh nhà sản xuất. Người dùng có thể tham khảo danh mục các nhà sản xuất đã đăng ký mã định danh thiết bị Bluetooth tại Bluetooth company identifiers và cho USB tại The USB ID Repository
- ProductID: 16bits dữ liệu dịnh đạnh mã sản phẩm.
- Version: 16bits dữ liệu định danh phiên bản.
Giá trị mặc định được thiết lập trên Edison có ý nghĩa như sau:
- VendorID Source: USB
- VendorID: 0x1D6B (Linux Foundation)
- ProductID: 0x0246 (BlueZ)
- Version: 0x0525 (5.37)
root@VisudoBlog:~# rfkill unblock bluetooth root@VisudoBlog:~# bluetoothctl [NEW] Controller 98:4F:EE:04:21:A5 VisudoBlog [default] [bluetooth]# show Controller 98:4F:EE:04:21:A5 Name: VisudoBlog Alias: VisudoBlog Class: 0x6c0110 .... Modalias: usb:v1D6Bp0246d0525 Discovering: no
3. Thay đổi Bluetooth MAC address
Trên mỗi thiết bị Intel Edison, một dãy địa chỉ Bluetooth MAC duy nhất sẽ được định danh bởi nhà sản xuất. Để thực hiện thay dổi giá trị MAC, bạn cần thực hiện mount thư mục /factory và chỉnh sửa tập tin /factory/bluettoh_address, sau đó tiến hành khởi động lại thiết bị reboot để xem sự thay đổi.
Kiểm tra thư mục /factory sử dụng lệnh df -h
root@VisudoBlog:~# df -h Filesystem Size Used Avail Use% Mounted on /dev/root 1.4G 1011M 318M 77% / ..... /dev/mmcblk0p10 1.3G 7.5M 1.3G 1% /home tmpfs 481M 6.1M 474M 2% /var/volatile /dev/mmcblk0p5 1003K 19K 913K 3% /factory .....
Kiểm tra thư mục /factory sử dụng lệnh mount -v | grep factory
root@VisudoBlog:~# mount -v | grep factory /dev/mmcblk0p5 on /factory type ext4 (ro,nosuid,nodev,noatime,discard,noauto_da_alloc)
Thực hiện mount thư mục /factory và chỉnh sử Bluetooth MAC address.
root@VisudoBlog:~# mount -o remount,rw /dev/mmcblk0p5 /factory root@VisudoBlog:~# vi /factory/bluetooth_address root@VisudoBlog:~# reboot