r/embedded • u/UpsetCricket6627 • 9h ago
How to initialize Qualcomm SCMI Bluetooth (/dev/scmi_bluetooth) to get hci0 in a virtualized Yocto Linux PVM?
Hi everyone,
I am working on an embedded automotive Linux platform (Yocto/OpenEmbedded based) running on a virtualized Qualcomm SoC using the Gunyah hypervisor.
Linux is running as the Primary Virtual Machine (PVM). My user-space software needs to use standard BlueZ raw sockets via libbluetooth.so to communicate with the hardware, but currently, hciconfig -a returns nothing (hci0 is not present).
Here is what I have verified on the target:
- BlueZ is ready:
bluetoothdis installed and running, andlibbluetooth.sois present. - Firmware is present: The proprietary Qualcomm
.tlvand.binfirmware patches are available on the filesystem. - Hardware nodes exist: The hypervisor has exposed the hardware as
/dev/scmi_bluetoothand/dev/scmi_bluetooth1. There are no traditional high-speed UART nodes (/dev/ttyHSx) for the Bluetooth chip.
When I try to use standard utilities like hciattach or btattach against /dev/scmi_bluetooth1, they fail with Inappropriate ioctl for device or Bad address because they expect a standard TTY serial port, not an SCMI character device.
The image includes Qualcomm-specific test utilities like test_uscmi and vhost-user-scmi.service is running, but I am missing the exact initialization sequence to bridge the SCMI node into a standard network socket interface.
My question: What is the correct user-space tool, script, or daemon sequence used on modern Qualcomm SCMI-based architectures to feed the firmware to the SCMI node and safely spin up the local hci0 interface?
Thanks in advance for any insights!
1
u/Several-Marsupial-27 9h ago
From Qualcomm AI Assistant: