I am happy to share my progress for the three-week bonding period for the AGL Bluetooth and audio integration project.
Status#
Status: Completed
Timeline: May 1, 2026 to May 24, 2026
Progress#
-
Environment setup:
- Successfully deployed and configured AGL 21.90.0,
vimba, on Raspberry Pi 5. - Configured remote debugging over SSH for D-Bus and Helvum.
- Set up Visual Studio remote debugging for the Flutter app.
obexctlwas not installed by default, so I manually installed and verifiedobexctlv5.72 within the AGL image.
- Successfully deployed and configured AGL 21.90.0,
-
Bluetooth profile validation: validated A2DP, AVRCP, HFP, MAP, and PBAP through D-Bus inspection with D-Spy and
busctl, plusbluetoothctlandobexctl. -
Master branch status:
org.pipewire.Telephonyis unavailable because the current PipeWire version is v1.0.9. - Blog Setup: finalized the project blog structure and integration guides for the Bluetooth validation workflow.
Next Step#
-
Next step: begin implementation of
org.bluez.Agent1to enable robust pairing workflows withinbluez_native_comms.
Bluetooth guides#
- Verify BlueZ Stack: profile index for implemented and prepared BlueZ validation workflows.
- Profile GAP: adapter power, discovery, pairing, trust, removal, and discoverable mode.
- Profile A2DP: media audio connection, BlueZ media transport state, and PipeWire routing checks.
- Profile HFP: hands-free call control through the available telephony stack.
-
Profile PBAP: phone book access through BlueZ OBEX and
obexctl. -
Profile MAP: message access through BlueZ OBEX and
obexctl. -
Install OBEX on Yocto: add
obexctland the BlueZ OBEX daemon to an AGL/Yocto image. - Remote D-Bus Inspection: inspect a target system D-Bus from a host PC.
- Remote PipeWire Inspection: inspect the target PipeWire graph from a host PC with Helvum.
References#
- BlueZ native library: jwinarske/bluez_native
- FOSDEM 2025 talk: Adopting BlueZ in production: challenges and caveats