Hi, I’m the Toradex AI Assistant.
I might make mistakes or occasionally get you wrong. Our support team will step in if needed.
I can help you enable HFP (Hands-Free Profile) for Bluetooth on your Verdin iMX8MP. The issue is that you’re using PulseAudio, but for HFP support on Toradex BSP, you need to use BlueALSA with oFono integration instead(1).
Key Requirements for HFP Support
For HFP to work properly, you need(1):
- Hands-Free Profile (HFP) handled by oFono to use the module as a headset on a call
- BlueALSA backend instead of PulseAudio
- Since BlueALSA does not implement any call features of HFP, oFono support is needed(1)
Solution: Switch from PulseAudio to BlueALSA with oFono
1. Enable oFono in the BlueALSA Recipe
You’ll need to modify the BlueALSA recipe to include oFono support. In your Yocto build, update the bluealsa_git.bb recipe(2):
-PACKAGECONFIG ??= "aplay cli hcitop ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
+PACKAGECONFIG ??= "aplay cli hcitop ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} ofono"
(2)
2. Rebuild Your Image
After modifying the recipe, rebuild your image to include oFono support in BlueALSA(1).
3. Configure BlueALSA Service
Restart the BlueALSA service and grant access to it(1):
# systemctl restart bluealsa.service
(1)
Then edit the D-Bus policy file(1):
+ <policy user="bluealsa">
+ <allow send_destination="org.bluez"/>
+ </policy>
(1)
4. Verify BlueALSA Service Status
Check that the BlueALSA service is running with the correct profiles(1):
# systemctl status bluealsa.service
(1)
You should see something like this indicating both A2DP and HFP profiles are active(1):
● bluealsa.service - BlueALSA service
Loaded: loaded (/lib/systemd/system/bluealsa.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2023-05-16 13:40:04 UTC; 52min ago
Docs: man:bluealsa(8)
Main PID: 758 (bluealsa)
Tasks: 4 (limit: 1670)
Memory: 956.0K
CGroup: /system.slice/bluealsa.service
└─ 758 /usr/bin/bluealsa -p a2dp-source -p a2dp-sink
(1)
5. Check Available Bluetooth Audio Devices
After connecting your Bluetooth headset, verify the available profiles(1):
# bluealsa-aplay -L
(1)
You should see both A2DP and SCO (HFP) profiles listed(1):
bluealsa:SRV=org.bluealsa,DEV=08:CC:27:00:C4:01,PROFILE=a2dp
motorola one hyper, trusted phone, capture
A2DP (SBC): S16_LE 2 channels 44100 Hz
bluealsa:SRV=org.bluealsa,DEV=08:CC:27:00:C4:01,PROFILE=sco
motorola one hyper, trusted phone, playback
SCO (CVSD): S16_LE 1 channel 8000 Hz
bluealsa:SRV=org.bluealsa,DEV=08:CC:27:00:C4:01,PROFILE=sco
motorola one hyper, trusted phone, capture
SCO (CVSD): S16_LE 1 channel 8000 Hz
(1)
Hardware Considerations for Verdin iMX8MP
Your Verdin iMX8MP module includes the AW-CM276NF Wi-Fi/Bluetooth module with dedicated I2S interface for Bluetooth audio(3). The hardware supports the necessary interfaces for HFP functionality.
Why BlueALSA Instead of PulseAudio
BlueALSA is specifically designed to combine the ALSA API with the BlueZ Linux Bluetooth protocol stack, allowing the use of audio devices connected via Bluetooth without needing PipeWire or PulseAudio(1). For HFP support, the oFono integration is essential since BlueALSA alone doesn’t implement call features(1).
This approach should resolve your HFP input/output issues and provide proper hands-free functionality on your Verdin iMX8MP setup.
Best regards, Toradex AI Assistant.
Did you like my answer?

If I answered your question, please tick the “Solution” checkbox.
For follow-up questions to me, please use @ToradexAI in your post.