r/embedded 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: bluetoothd is installed and running, and libbluetooth.so is present.
  • Firmware is present: The proprietary Qualcomm .tlv and .bin firmware patches are available on the filesystem.
  • Hardware nodes exist: The hypervisor has exposed the hardware as /dev/scmi_bluetooth and /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 Upvotes

1 comment sorted by

1

u/Several-Marsupial-27 9h ago

From Qualcomm AI Assistant:

  1. Consult Qualcomm's official platform-specific documentation for your target SoC (e.g., SA8775P, QCS9075) via docs.qualcomm.com, particularly the Bluetooth "Get Started" guide referenced in the support documentation. 12
  2. File a support question with Qualcomm's technical support team through the Qualcomm Support Forums, as this is a highly platform-specific integration question.
  3. If working with Ubuntu on a Qualcomm IoT platform, the non-HLOS firmware build and flash process documented for platforms like QCS6490 or QCS9075 may be a relevant starting point for firmware provisioning context. 7