The Qualcomm QCC744M Evaluation Kit (EVK) is a microcontroller development board built around the QCC744-2 SoC — a tri-radio chipset integrating 1x1 Wi-Fi 6, Bluetooth 5.4, and IEEE 802.15.4 (Thread and Zigbee-ready), powered by Qualcomm’s first connectivity platform built around a RISC-V core. The 32-bit RV32IMAFCP MCU runs at up to 325 MHz with FPU and DSP support. The QCC744M module includes 4 MB of PSRAM and an external 8 MB flash chip, and is based on the Bouffalo Lab BL61x/BL618 chipset lineage.Edge Impulse supports the QCC744M EVK through a dedicated Zephyr firmware, so you can sample sensor data, build models, and run trained machine learning models directly on the device. The Edge Impulse firmware for this development board is open source and hosted on GitHub: edgeimpulse/firmware-qc-qcc744m-evk.
The QCC744M EVK is supported upstream in the Zephyr RTOS as the qcc744m_evk board (board qualifier bl618m05q2i). For board-level details, pin mappings, and console configuration, see the Zephyr qcc744m_evk board documentation.Edge Impulse integration is provided by our Edge Impulse SDK for Zephyr module. This module is pulled in automatically as a west module by the QCC744M EVK firmware manifest, and provides the on-device inferencing SDK together with the Kconfig options that enable it in your build.
The EVK has two USB-C ports, and they are not interchangeable:
The left USB-C connects to the on-board CH347 USB-to-UART/JTAG bridge. It enumerates as two serial ports (listed as wch.cn devices, for example /dev/tty.usbmodem… on macOS) and carries both the serial console and the flashing UART. Use this port for everything in this guide.
The right USB-C is the QCC744’s native USB, which is only active once application firmware brings it up. It does not present a serial port at rest and is not used for flashing.
Connect the left USB-C to your computer; the on-board power LED confirms the board is powered.
The CH347 bridge signals reach the SoC through the J3 header (UART / DTR1 / JTAG selects), and the SoC is powered through the jumpers along the board edge:
Keep the UART jumpers on J3 fitted — they carry the console and flashing UART between the bridge and the SoC.
The DTR1 select on J3 ties the bridge’s DTR line to the SoC boot pin (GPIO2). Fitting it lets the flashing tool pull the board into download mode automatically (see Troubleshooting).
The power jumpers at the board edge must be fitted for the SoC to receive power.
The BOOT button holds the boot strap (GPIO2) high and the RESET button resets the SoC — together they put the board into UART download mode (see Flashing the firmware).
Initialize a west workspace from the firmware repository and pull in Zephyr, the Edge Impulse SDK for Zephyr module, and all dependencies:
west init -m https://github.com/edgeimpulse/firmware-qc-qcc744m-evk qcc744m-workspacecd qcc744m-workspace/firmware-qc-qcc744m-evkwest update
2
Add your model
In Edge Impulse Studio, go to Deployment, select the Zephyr library deployment option, and click Build. Extract the downloaded .zip into the model/ folder so that it contains model-parameters/, tflite-model/, and the model CMakeLists.txt.
3
Build
west build -b qcc744m_evk
The application binary is generated at build/zephyr/zephyr.bin.
The QCC744M firmware includes a flashing script for programming the board over UART.
1
Enter flash mode
Hold the BOOT button (left), press and release RESET (right), then release BOOT. The board is now in UART flash (ISP) mode.
QCC744M EVK BOOT (left) and RESET (right) buttons
2
Flash the firmware
Flash the bootloader and application image the first time:
./flash.sh --allboot2
The bootloader only needs to be flashed once per board. For subsequent application updates, use:
./flash.sh
3
Boot the firmware
Press RESET to boot into the Edge Impulse firmware.
Prefer a GUI? Qualcomm’s Windows-only QConn Flash utility from the Qualcomm QCC74x SDK is an alternative. Enter flash mode as above, flash the bootloader once to 0x0, then flash zephyr.bin to 0x2000.
The firmware exposes a serial console on UART0 at 115200 baud (8 data bits, no parity, 1 stop bit) over the onboard USB-serial converter. You can drive it directly with the Edge Impulse CLI or with any serial terminal.
To run your impulse, open a serial connection to the board and issue one of the following AT commands, or use the Edge Impulse CLI:
Command
Description
AT+RUNIMPULSE
Run the impulse once
AT+RUNIMPULSECONT
Run the impulse continuously
AT+RUNIMPULSEDEBUG
Run the impulse with debug output
b
Stop an active inference run
edge-impulse-run-impulse
You can also use the Arduino Modulino Buttons board:
Button
Action
A
Toggle inference
B
Toggle the data forwarder
C
Cycle between the IMU and ADC
The Arduino Modulino Pixels board provides the corresponding status feedback:
State
Colour
Idle
Green
Inference running
Yellow
Data forwarder using the IMU
Blue
Data forwarder using the ADC
Magenta
Button A starts or stops inference, while the serial interface exposes the same workflow through AT+RUNIMPULSE, AT+RUNIMPULSECONT, AT+RUNIMPULSEDEBUG, and b to stop an active inference run.
The firmware can stream raw IMU or ADC samples over serial at a fixed frequency (CONFIG_SAMPLING_FREQUENCY_HZ, 50 Hz by default) so you can capture training data with the Edge Impulse data forwarder. Use the Modulino Buttons board to cycle between the IMU and ADC source. The Modulino Pixels board indicates the active source: blue for IMU data and magenta for ADC data.
1
Enter data forwarder mode
Press button B on the Arduino Modulino Buttons board, or send AT+STARTDATAFWD over the serial connection. Press button B again, or send AT+STOPDATAFWD, to exit.
2
Start the data forwarder
edge-impulse-data-forwarder
Follow the prompts to log in, select your project, and name the sensor axes. You can then collect samples from the Data acquisition page in Studio.
The qcc744m-evk: Continuous motion recognition public project is a complete example built from IMU data captured through the data forwarder — a spectral-features and classifier impulse that recognizes movement gestures. Clone it into your own account to start from a working impulse.
The qcc744m-evk Continuous motion recognition sample project in Edge Impulse Studio
Use the left USB-C (the CH347 bridge), not the right (native USB) port. On macOS the bridge appears as two wch.cnusbmodem devices; the console and flashing UART is one of the two — if one does not respond, use the other.
Flashing prints resp: FL and 'handshake failed'
The SoC booted its application instead of entering ROM download mode — the boot strap (GPIO2) was not held at reset. Confirm you are flashing over the correct port (the bridge exposes two serial ports; try the other one), and make sure the programmer can drive BOOT: fit the DTR1 select on J3, or hold the BOOT button while tapping RESET.
The data forwarder shows 'No valid sensor readings received from device'
The board must be running the Edge Impulse firmware and actively streaming. Flash the firmware, then send AT+STARTDATAFWD to enter data-forwarder mode before starting edge-impulse-data-forwarder. If auto-detection still fails, pass the rate explicitly with --frequency 50.