Development

Pico ASHA is developed in C++ (with a bit of C) using the Pico SDK.

The build system is CMake, as that is what the SDK uses.

Compile firmware

Download pico-sdk 2.1.1, using the provided instructions.

Create an environment variable called PICO_SDK_PATH that points to the downloaded SDK location.

As of SDK 2.1.1, the BT firmware does not properly support Data Length Extensions (DLE). Fortunately the upstream driver has now merged the fixed firmware. Navigate to the Pico SDK directory and run

cd lib/cyw43-driver
git fetch
git checkut 7f422fef4ea5bff7285fb78340d3f28f5461cff2
cd ../..
git add lib/cyw43-driver
git commit -m "Update cyw43-driver for DLE fix"

Unfortunately the version of TinyUSB included in Pico SDK 2.1.1 has a bug that prevents USB audio from working. An open PR has a fix, for convenience this fix is supplied as a patch in patches/tinyusb-v0.18-uac2-fix.patch. cd to the lib/tinyusb directory and git apply the patch.

Build pico-asha

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DPICO_BOARD=pico_w ..
cmake --build .

Compile GUI

A basic Qt GUI has been developed. You will need Qt6 development libraries (including qtserialport) available so that cmake can find it.

cd gui
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .

Note

Linux users will most likely need to belong to the dialout group to gain serial port permissions.