Nghe đồn giới IoT muốn ứng dụng Bluetooth LE nhưng gặp khó.
Quay đi quay lại thì mình thấy thư viện về Bluetooth có độ hoàn thiện nhất là BlueZ. Khó ở đây là thư viện này được tạo ra với mục đích dành cho viết ứng dụng Linux, vì nó dùng event loop của GLib ở trỏng. GLib là một trong những thành phần lõi của bộ GTK, bộ toolkit dành cho lập trình giao diện đồ họa của Linux. Đã thế nó còn dùng D-Bus nữa chứ. D-Bus là một đường giao tiếp chung, cho phép các ứng dụng desktop giao tiếp với nhau. Sau đây là ví dụ về ứng dụng của D-Bus: Vào thời mà Yahoo Messenger còn phổ biến, dân Linux thường chat Yahoo bằng một phần mềm "nhiều trong một" tên là Pidgin (ngoài Yahoo ra, còn có thể chat cùng lúc với Google Hangout, Facebook Messenger). Phần mềm này có khả năng thú vị là nhận biết khi nào máy bạn đang có mạng, rớt mạng để hiện chỉ thị tương ứng (trạng thái màu xám, các avatar bạn bè bị phủ màu xám). Khi có mạng trở lại thì phần mềm này sẽ tự đổi trạng thái, tự đăng nhập vào các dịch vụ chat và cập nhật danh sách bạn bè. Để nhận biết tình trạng mạng, nó không chơi trò cơ bắp là liên tục kết nối đại vào server nào đấy. Thay vì vậy nó trao đổi với một phần mềm khác tên là NetworkManager. Khi rớt mạng hoặc có mạng, NetworkManager sẽ thông báo trên đường D-Bus và các phần mềm khác "đăng ký" vào D-Bus sẽ nhận được tin.
Đối với những người cần dùng thiết bị USB-3G (như cục D-Com 3G của Viettel chẳng hạn), trên Linux cũng có một phần mềm tên là ModemManager, chạy ngầm để khai thác thiết bị này, ví dụ như chọn sóng của nhà mạng nào, nhập username, password để quay số vào nhà mạng đó, bật sang chế độ data, gửi tin nhắn SMS v.v. ModemManager cũng cho phép giao tiếp qua D-Bus. Chẳng hạn khi cắm thiết bị vào thì danh mục của Network Manager sẽ xuất hiện mục để kết nối mạng 3G, hoặc bạn có thể viết ứng dụng riêng để gửi tin nhắn SMS, lấy các danh bạ lưu trong SIM, tất cả bằng việc giao tiếp với ModemManager qua D-Bus.
Kể ra mới thấy, thực sự thì Linux rất tân tiến. Mảng Linux desktop có vẻ bị lãng quên, khi mảng sôi động nhất trong giới làm nghề với Linux là mảng server, web app, nhưng lại có nhiều đóng góp quan trọng. Giới khai thác Docker container cũng đang manh nha xây dựng một đường bus cho các container thông báo cho nhau, kiểu kiểu như D-Bus của Linux desktop. Nói tới Docker mới nhớ, cho tới lúc mình viết bài này thì "container" vẫn là "độc quyền" của Linux khi mà 2 HĐH phổ biến, kiếm tiền nhiều hơn là Windows và MacOS X vẫn chưa có trò đó. Thậm chí trên Linux còn có khá nhiều implementation của container mà Docker chỉ là một cái tên (lần đầu tiên mình đụng vào một Linux container là cách đây 7 năm, với OpenVZ, chỉ là "đụng" vào thôi chứ không cài đặt, sắp tới thì mình muốn thử một implementation khác là systemd-nspawn).
Bài này còn là một ví dụ nữa cho thấy giới công nghệ Việt Nam đã bị một lỗ hổng lớn thế nào khi không đầu tư vào Linux.