Modernizing Haiku's Bluetooth Stack: HCI Completion and HID Profile Implementation
Haiku's Bluetooth stack currently implements only a basic subset of general Bluetooth functionality. At first during testing with an Android phone, the local device was visible, but the pairing process fails entirely because Haiku does not understand modern Bluetooth events. The pairing process silently failed because the stack drops unsolicited Secure Simple Pairing (SSP) requests. The system was dropping modern discovery packets because the Inquiry subsystem lacked Extended Inquiry Result (EIR) support. Although recently the SSP and EIR issues have had recent patches from GSoC candidates, still there’re several issues in bluetooth pairing and connection that needs handling including: the pairing button doesn't make any action, not showing the pairing number when getting pairing requests from the phone, and lacking persistent remote device information. Hence, many other modern HCI events and commands still need handling. The primary motivation of this project is to modernize Haiku’s Core Bluetooth stack to match 2.X and later to improve the existing code's compatibility with newer devices. By resolving these foundational HCI drops, the stack can finally be used for more than just basic pairing attempts, paving the way for functional Bluetooth HID, audio, or file transfer profiles. This project modernizes the stack by Completing the remaining HCI commands and events, Adding persistent Link Key storage to preserve pairing devices after reboot, Implementing the Service Discovery Protocol (SDP), and Delivering a full Human Interface Device (HID) profile with a working input_server add-on.
Project details
Technologies
Not listed in the archive