Releases: stanford-ssi/samwise-flight-software
Vibe Test V6
Note
Feather M4 ground station beacon reception is not that great, RPi 4B is most reliable! Suspect polling rate on smaller boards is not as frequent causing a drop in packets
Tested platforms:
- Flight Software: PiCubed, Pico-Hat
- Ground Station Software: Pico-Hat (pico), Feather M4, RPi 4B
The flight software contains the following behavior:
- samwise_debug.uf2: 5s sleep before initialization (debounce), NO automatic burn_wire (need manual state overwrite command)
- samwise_flight.uf2: 15min sleep before initialization, automatic burn_wire execution immediately after waking up, commands require authentication using the default HMAC passkey (check
/ground_station/config.py)
What's Changed
- Testing/bazel hardware test task by @megargayu in #269
- Add 'megargayu' to allowed GitHub actors by @megargayu in #288
- WIP - changed some instances of cmake by @megargayu in #274
- Verified TBYB flag works as intended by @devYaoYH in #293
- add binary size build action by @megargayu in #292
- Migrated file path filtering into conditional job trigger to allow fo… by @devYaoYH in #294
- Use @claude_doc triggering comment instead to invoke manual documentation updates. by @devYaoYH in #283
- Bump rollup from 4.52.4 to 4.59.0 in /web/visualizer by @dependabot[bot] in #297
- Bump vite from 7.1.9 to 7.3.1 in /web/visualizer by @dependabot[bot] in #298
- [Cleanup] remove old script and migrate .elf path to bazel output by @devYaoYH in #299
- Revised README for RPIcam & MUX by @carter-cochran in #272
- Fixed pico debug probe usage script, run swd_debug.sh by @devYaoYH in #301
- Pull Littlefs-SSI files directly into lib folder and remove submodule by @lc0001coll in #300
- Yiheng/radio pins refactor by @devYaoYH in #295
- Added FSM state transition visualization by @devYaoYH in #296
- Yiheng/gs server by @carter-cochran in #302
- Some fixes to the ground station incoming packet decoding by @devYaoYH in #291
- Added 'beat cal!' into our beacon debug string by @devYaoYH in #305
- changed size checker on github to use .bin instead of .uf2 by @megargayu in #310
- Update FTP cyclic algorithm parameter N from 5 to 256 by @megargayu in #306
- added log_dir command for vizualizer, updated scripts by @megargayu in #309
- Ready for vibe test V5 by @devYaoYH in #311
Full Changelog: dev-v0.2.1...dev-v0.3.0
Range Test v1.1
Warning
Note that the flight binary has a mandatory 15minutes wait before turning on (for regulation compliance)
What's Changed
- Ground station pyscript refactoring by @microbites0 in #235
- Swept CR & SF settings, sweet spot is cr 5 and sf 7, enabled MAX power by @devYaoYH in #281
Full Changelog: dev-v0.2.0...dev-v0.2.1
Range Test v1
Fixed a bunch of issues with the rfm9x driver
- tx_done interrupt signal not correctly set
- rx_done interrupt signal not read properly
- max_power not utilized in FLIGHT mode
- incorrect low_power configuration (previously always set PA_BOOST to high)
- enabled AGC and LDRO in LoRa mode
What's Changed
- in-progress testing mram driver; trying to fix bugs, not working by @megargayu in #257
- Design doc for File Transfer Protocol (FTP) by @megargayu in #233
- updated ftp-docs by @megargayu in #258
- added filesys list files capability by @megargayu in #262
- Bazel build system migration! by @devYaoYH in #259
- Implement FileSystem with tests & FTP headers by @megargayu in #224
- added filesys read operations, cleaned tests by @megargayu in #266
- Change CPM_DOWNLOAD_LOCATION path in CMakeLists.txt by @devYaoYH in #236
- Implement changes to the payload to allow for camera multiplexer compatability, along with programs to allow for easier testing of take_photo and take_vid by @lc0001coll in #270
- Added turning agc on in rfm9x by @QuackWifHat in #219
- Feature/radio ldro by @QuackWifHat in #221
- Remove push trigger paths from C/C++ build workflow by @devYaoYH in #273
- Sonnet 4.5 applied some fixes as suggested by Gemini to our RFM9x radio driver by @devYaoYH in #279
New Contributors
- @lc0001coll made their first contribution in #270
Full Changelog: dev-v0.1.0...dev-v0.2.0
Vibe Test V5
Cutting a new release for VibeTest V5.
Release Highlights
Payload System Integration
- Complete payload software stack integrated into flight repository, including Python-based camera control, SSDV image encoding, and LoRa radio communication (TX/RX)
- Added serial file transfer and packet handling for ground-to-payload communication
- Implemented payload heartbeat monitoring and execution commands
Over-The-Air (OTA) Updates
- Added minimal OTA update example with partition management and dual-image support
- Created partition table configuration for A/B firmware updates
- Demonstrated bootloader integration for remote firmware updates
Core System Improvements
- Multi-MPPT support for independent side panel power management
- FSM update: default transition to burn wire state after initialization in FLIGHT mode
- New string utilities with truncation safety (strcpy_trunc, str_utils.h)
Bug Fixes
- Fixed PING command implementation and packet length handling
- Corrected payload UART communication and heartbeat logic
- Improved error handling in telemetry and beacon tasks
Build & Development Infrastructure
- New build scripts for debug builds (build_debug.sh) and testing (build_tests.sh)
- Enhanced CI/CD with GitHub Actions workflow for automated documentation
- Improved c lint formatter to include payload directory
Ground Station Enhancements
- Dynamic packet encryption support
- Raspberry Pi compatibility improvements with auto-flushing buffers
- Beacon parsing for boot count and message ID extraction
Full Changelog Details
- Redirect FSM to enter burn_wire_state by default after initialization in FLIGHT mode by @devYaoYH in #195
- Testing/radio task by @devYaoYH in #169
- Mppt/multi panel support (Issue #134) by @microbites0 in #182
- everything is already fine, just change docs by @megargayu in #206
- Added auto-flushing of print write buffer when using RPi by @devYaoYH in #193
- replaced strlcpy for compatibility by @megargayu in #201
- fixed snprintf use in PING command by @megargayu in #210
- Added bare sub directory for minimal OTA example demo code by @devYaoYH in #191
- Finally figured out the proper invocation of rom_reboot by @devYaoYH in #214
- Created heartbeat_check function in payload_task.c by @sangeetsatpathy in #189
- Read Boot Count and Message ID from Satellite Beacon by @joeytene in #203
- Add GitHub Actions workflow for documentation and changelog by @carter-cochran in #188
- Added payload software to flight repository by @QuackWifHat in #223
- Added build scripts for convenience by @megargayu in #225
New Contributors
- @sangeetsatpathy made their first contribution in #189
- @joeytene made their first contribution in #203
- @carter-cochran made their first contribution in #188
Full Changelog: dev-v0.0.5...dev-v0.1.0
Vibe Test V4
Vibe Test V4 Release
Overview
Vibe Test V4 introduces significant improvements to radio communications, comprehensive testing infrastructure, ADCS
integration, ground station capabilities, and numerous bug fixes. This release includes 20+ merged pull requests with
contributions across the entire flight software stack.
Changelog
Radio & Communications
- Radio TX Fix (#192): Simplified transmission logic to fix race condition when checking tx_done status
- Beacon Callsign (#181): Added KC3WNY callsign to beacon packets with updated KSY schema
- Transmission Logic: Improved LoRA transmission reliability and packet formatting
Ground Station Enhancements
- Raspberry Pi Compatibility (#190): Made ground station code compatible with RPI GPIO pins
- Debug Mode (#161): Added debug mode capabilities for ground station operations
- Remote Control (#123): Enhanced interactive mode with better packet unpacking and radiohead header stripping
- Command Payload Fixes: Fixed sizing issues on command payloads
Testing Infrastructure
- Test Framework (#155): Added comprehensive local test framework for non-embedded unit testing
- FSM Tests (#158): Added finite state machine tests for running state
- Beacon Task Tests (#164): Added basic harness for radio task testing
- Visualizer: Built satellite test visualizer with task execution logging, event filtering, and timeline view
- CI/CD: Added GitHub Actions workflow for automated test execution
- CTest Integration: Refactored CMakeLists.txt to use ctest for test discovery and execution
ADCS Integration
- ADCS Task (#139): Added ADCS task to running state
- ADCS Telemetry (#128): Implemented new architecture with PiCubed-initiated telemetry
- MRAM Driver (#168): Added MRAM driver for ADCS with proper header includes (#170)
Build System & Development
- PICUBED-DEBUG Build (#194): Added PICUBED-DEBUG configuration and updated CI workflow
- SWD Debug Probe (#184): Added script for SWD loading of SAMWISE binary
- strlcpy Compatibility: Fixed compatibility issues across the codebase
Burn Wire Task
- Persistent Counter (#135): Added persistent counter for burn wire task attempts
- State Management: Added override state for resetting burn wire attempts
- GPIO Improvements: Fixed burn wire GPIO control with proper HIGH/LOW logic and switching delays
Commands & Features
- PING Command (#129): Implemented ping command to check payload status
- Boot Count Logging: Added boot count emission in logs for debugging
Bug Fixes & Improvements
- Device Status GPIO: Moved GPIO initialization earlier in main to properly read RBF pins
- MRAM Header: Fixed MRAM driver header includes
- Beacon Offset: Fixed byte offset issues in beacon packets
- Neopixel: Reduced LED intensity and removed logging neopixel for cleaner logs
- Dependencies: Updated visualizer dependencies (esbuild, vite) via dependabot
Documentation
- Onboarding (#156): Updated ONBOARDING.md with improved installation paths
- Test Infrastructure: Added comprehensive test infrastructure documentation
- Ground Station: Added README for new ground station code usage
Testing Notes
This release has been validated with:
- Automated CI/CD pipeline running all unit tests
- FSM state machine tests
- Radio transmission and beacon task tests
- Ground station RPI compatibility testing
Merged Pull Requests (20+)
#194, #192, #190, #184, #181, #170, #168, #164, #163, #161, #158, #156, #155, #144, #140, #139, #138, #136, #135, #129, #128,
#123
Vibe Test V3
Stable build of debug_v3.
Beacon has more details now and we're checking for RBF pin. Still only a 5s timeout initially.
Added ADCS UART task for telemetry polling in samwise_adcs.uf2
Only telemetry & watchdog task in samwise_telemetry_only.uf2 for isolation & testing. Includes:
- fixed solar charger/faulty status
- mppt stats
- battery voltage & current
No WD version of debug_v3 for verifying Watchdog circuit: samwise_no_watchdog.uf2
Vibe Test V2
2 builds:
- burn_wire_bypass: sets burn_wire to activate as the first task. Retries up to 5 times, 5s intervals. Defaults to running_state afterwards.
- burn_wire_task runs: Light up WHITE | wait 1s | BURN_A for 5s | BURN_B for 5s | wait 4s (loop back)
- debug_v2 with lights! neopixel lights up a different color each task it executes (debugging latest build)
- debug_v2_15min: this version has the full 15min delay which we set during FLIGHT as well
Bringup release v0.0.2
New Bringup uf2 build.
What's Changed
- Drivers/payload uart merge by @QuackWifHat in #70
- feat: integrate TinyCrypt library for packet authentication by @developStorm in #67
- Parallelization for GitHub Build Action by @developStorm in #79
- Update c_lint.yaml by @devYaoYH in #83
- Add MPPT drivers and telemetry_task.c to poll each hardware component. by @devYaoYH in #68
- feat: packet replay protection by @developStorm in #95
- Add minor 5s delay before boot. by @devYaoYH in #90
- Command Processing by @HaileThomas in #99
New Contributors
- @QuackWifHat made their first contribution in #70
- @developStorm made their first contribution in #67
- @HaileThomas made their first contribution in #99
Full Changelog: dev...dev-v0.0.2
Initial Vibe Test Release
Manual release for PICUBED-BRINGUP and PICUBED-DEBUG binaries for vibe test.