Whistling Birds Gauntlet Darts guide

Software and configuration

Install, update, and configure the Whistling Birds firmware.

This page covers the firmware and configuration file on the CIRCUITPY drive. Come here when a new version is released, when you want to change settings, or when you need to reflash after a problem.

This page covers installing or updating the Whistling Birds firmware and configuring the settings on the CIRCUITPY drive. Come here when a new version is released, when you want to change settings, or when you need to reflash after a problem.

Update Firmware

The prop runs CircuitPython on the Adafruit RP2040 Prop-Maker Feather. Installing or updating takes two steps: flash the CircuitPython runtime bundled in the release package, then copy the firmware files to the board. The steps are the same on Windows, Mac, and Linux.

Flash CircuitPython

  1. Use the bundled runtime first. The release package includes a tested CircuitPython 10.1.4 .uf2 in Software/circuitpython-runtime/. If you only have the source repository and not the packaged release ZIP, download the board-specific runtime from circuitpython.org/board/adafruit_feather_rp2040_prop_maker.
  2. Enter bootloader mode. Connect the board via USB-C. Hold BOOT/BOOTSEL, press and release RESET, then release BOOT. The RPI-RP2 drive appears.
  3. Flash the runtime. Copy the .uf2 file to RPI-RP2. The board reboots and reappears as CIRCUITPY.

Copy project files

Whether this is a fresh install or an update, the project files go to the root of the CIRCUITPY drive.

In the release package, open Software/whistling-birds-firmware/ and copy that folder's contents to CIRCUITPY.

  1. Back up anything you want to keep. If updating and you've customized config.py or replaced any files in Audio/, copy them off CIRCUITPY first so you can restore them after the wipe.
  2. Clear the drive. Select all files on CIRCUITPY and delete them. Confirm permanent deletion if prompted. This guarantees that nothing from the previous version carries forward.
  3. Open the firmware folder. In the extracted release package, open Software/whistling-birds-firmware/.
  4. Copy the new files. Copy everything inside Software/whistling-birds-firmware/ and paste it to the root of CIRCUITPY. Files must end up at the root level, not inside a subfolder.
  5. Restore your customizations. If you backed up config.py, compare it with the new version and carry your settings forward. New releases may add settings; always start from the new template and copy your values in.
  6. Wait for the transfer to finish. CircuitPython drives write slowly. Do not eject or unplug until the copy is complete.
Troubleshooting file copy issues
  • Drive disappears mid-copy: The board rebooted during the transfer. Re-enter bootloader, reflash CircuitPython, then retry.
  • Copied the folder instead of its contents: Open Software/whistling-birds-firmware/ and move the files inside it to the drive root. code.py must be at the top level or the firmware will not start.

Configure Settings

Open config.py at the root of the CIRCUITPY drive in any text editor. Changes take effect on the next power cycle. The full reference of config.py settings (defaults, ranges, and what each one controls) is documented in the Operation guide's config.py settings table. Many of these settings can also be changed on-device via the Configuration Mode menu.

  1. Choose dart and afterburner colors. Set DART_TIP_COLOR and AFTERBURNER_COLOR to any color name listed in lib/neopixel_control.py. Colors can also be changed on the device using the configuration menu.
  2. Review SALVO_SIZES. The default [0, 1, 4, 12] is just an example. Edit the list to any sequence of values from 0–12, in any order, and repeat values if you want some salvo sizes to appear more than once while cycling.
  3. Save and verify. Save config.py. The board restarts automatically after a few seconds. A blue startup flash confirms the updated configuration loaded.

Verify Boot

After copying files or saving a config change, the board reboots and runs the firmware automatically. Watch the LED on the center of the microcontroller.