Firmware and source code for the CackalackyBadgy from CackalackyCon 2025
The source code has been released! (07 Apr 2026) — Almost a full year after the con. Better late than never.
Now that CackalackyCon 2025 is over, we'll post the developers version of the firmware that was used for debugging and testing as well as more information about the badge and capabilities.
At opening ceremony, everyone was directed to read the manual. Sadly, very few did.
Pre-built binaries are available in the firmware/ directory:
firmware/firmware.bin— badge firmwarefirmware/littlefs.bin— LittleFS filesystem image
Flash both with:
esptool -b 921600 --chip esp8266 write_flash 0x0 firmware/firmware.bin 1048576 firmware/littlefs.binAll you need is Docker and a USB connection to the badge. Docker handles PlatformIO, esptool, and clang-tidy — no local installs required.
Note: The script auto-detects
/dev/ttyACM0or/dev/ttyUSB0. On Linux you may need to add yourself to thedialoutgroup (sudo usermod -aG dialout $USER) or install udev rules for USB flashing to work.
Run this once from the repo root (also use it to rebuild after Dockerfile changes):
scripts/rebuild_docker.shThen open a shell inside the container:
docker exec -it esp32-dev bashBefore flashing: hold the Boot button while plugging the badge into USB to put it in flash mode.
repo # cd into the repo at /code/cacka
pio_build_all # build firmware image + LittleFS
pio_flash # flash firmware + LittleFS to the badgeOther useful aliases available inside the container:
| Alias | Command |
|---|---|
repo |
cd /code/cacka |
pio_build |
pio run -v |
pio_build_littlefs |
pio run --target buildfs --jobs 30 |
pio_build_all |
build firmware + LittleFS |
clean_build |
clean, then build firmware + LittleFS |
pio_flash |
flash firmware + LittleFS via esptool |
pio_monitor |
pio device monitor (9600 baud) |
repo
mkdir -p build && cd build
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..
# lint a specific file
clang-tidy /code/cacka/src/specific_file.cpp -p /code/cacka/build --config-file=/code/cacka/.clang-tidy
# auto-fix
clang-tidy /code/cacka/src/specific_file.cpp -p /code/cacka/build --config-file=/code/cacka/.clang-tidy -fix -fix-errorsNote: Ignore
'c_types.h' file not founderrors — these come from the ESP8266 Arduino core and are not real issues.
-
Generate documentation — run from the repo root:
./scripts/make_docs.sh
-
Browse documentation — starts a local web server:
./scripts/run_document_webserver.sh
Then open
http://localhost:8000in your browser.
Connect at 9600 baud (pio_monitor inside the container, or pio device monitor natively).
Help — List available commands
Status — Show progress and current state
Helloworld — Example of how to use commands
su <word> — Become a badge admin
PartnerStats — Print your CyberPartner stats
The su password can be found in the source.
Delprog — Delete all badge progress
ResetNetwork — Reset WiFi and MQTT settings
SetWiFiSSID — Set WiFi SSID
SetWiFiPass — Set WiFi password
SetMQTTServer — Set MQTT server address
SetMQTTPort — Set MQTT port
SetMQTTUser — Set MQTT username
SetMQTTPass — Set MQTT password
SaveNetwork — Save network config (restart required)
Restart — Restart the badge
Solid colors: Pink Red Green Blue Yellow White
Patterns: Chase Confetti Popo Rainbow Strobe Surge SC
Have questions about the badge? Join the CackalackyCon Discord and ask in #hhv-aka-thebadge.
CackalackyCon is a hacker con based in the Carolinas — come hang out, learn things, and pick up next year's badge.
