Repository navigation
Releases: shadohead/launchlab
Release list
LaunchLab Mini firmware 0.13.5
Firmware 0.13.5
Runtime: 0.13.5-sticks3-idle-adc-pm · M5StickS3 K150 · ESP32-S3.
- Filtered movement keeps a shake-woken device awake during handling; 30 seconds without renewed activity returns an unused wake to sleep.
- RESTING pauses ADC sampling after stillness and resumes on movement or a button. The shared sensor supply stays powered.
- CPU power management uses 40–80 MHz with an 80 MHz acquisition lock and automatic light sleep disabled.
- Battery readings are filtered, idle display work is reduced, and PM1 reads use checked wake/retry handling.
- Optical startup/rearm recovery handles weak background signals and bounded slowdown tails.
- Saved Top/Sidecar mounting and a guarded Wipe all flow are included.
Both saved sensor profiles, the 1,000 RPM launch floor, history, themes, effects, optional sound and USB backup/restore remain supported. Ordinary updates write only the application at 0x10000; first install and intentional rollback retain their separate confirmation flows.
The shipping application is the exact installed and read-back image. Source is frozen in source/ and the compiled-source ZIP. See build context.
Verification: 39 ASan/UBSan native suites, 15 production-code harnesses, 70 updater tests, 1,291 artifact checksums, target compilation and stack budgets passed.
LaunchLab Mini firmware 0.12.2
LaunchLab Mini 0.12.2
October 11, 2026.
Runtime: 0.12.2-sticks3-flip-colors for M5StickS3 K150, ESP32-S3 with 8 MB flash and 8 MB OPI PSRAM.
Release identity: 0.12.2-sticks3-recovery.
One application supports the saved QRE1113 and TCRT5000 profiles.
Changes
The learned optical swing-ring index now resets with its count after detector discontinuity and history-checkpoint recovery.
Generated regressions demonstrate that a stale ring position could miss an initial short burst or confirm subsidiary marks at a falsely higher rate.
Single Turn startup now retains a completed, qualified predecessor peak while a uniquely fastest latest arrival is still being checked.
This prevents a qualifying detected launch from producing a zero Single Turn value when that latest arrival is rejected.
The latest arrival still passes the existing delayed optical check, and a valid faster interval can supersede the predecessor.
The isolated extra-mark guard, genuine acceleration coverage, saved profile thresholds, paired launch boundaries, 50 kS/s acquisition and history/settings formats are retained.
Ten themes, five personal-best effects, Random/Off, optional sound, neutral branding and the expanded main layout are unchanged.
Flip Off uses mounted rotation 2, and Flip On uses native rotation 0.
Saved switch values are preserved; updating from a pre-0.12.1 application rotates existing choices 180 degrees, so change Flip if your mount needs the other orientation.
The owner identified a soldering issue as the cause of the intermittent high and missed readings.
The two software corrections are supported independently by generated optical regressions and are not presented as proof of that physical diagnosis.
The withdrawn 0.12.1 release remains preserved with its original source and assets; it is not offered in the updater's version list.
Application and source
Application: 808,144 bytes at 0x10000.
SHA-256: 9548c322ae1f7383641e62ec5b81f7a2f54777c05034f8c5aac47a40b4f25b49.
Compiled source: 49 inputs, source-set SHA-256 4cba14781316dbff76c3314ff3b26420a99a3c7c39be6e70c99f4a3266be61e6.
The production inputs differ from the tested production predecessor only in the runtime version string.
The release ships the exact compiled bytes, without adding the private diagnostic patch.
Support images match the previous public installation layout.
The source ZIP includes licenses, pinned build context and synthetic tests, including historical paired-estimator baselines.
Private practice recordings, backups, serial logs, readbacks and ELF debug output are excluded.
Validation and limits
The public source passed 31 ASan/UBSan native suites and nine production harnesses.
Pinned M5 compilation and stack checks passed, with an 800-byte loop frame within the 1536-byte loop and 2560-byte other-frame budgets.
The same-source private recorded-data checks retain 18 confirmed configurations and 12 diagnostic-only configurations.
Final recorded results and launch boundaries remain unchanged; startup alternative peaks and update counters intentionally differ where a qualified predecessor is retained.
These recordings are not a calibrated shaft-speed oracle and are not distributed.
Both software corrections were also exercised in the related installed diagnostic build.
Complete application readback and portable-backup retention passed, and observed registrations matched metric, history and UI delivery.
Device install pending: the exact production 0.12.2 application has not been flashed or read back.
Physical first install, browser write, personal-best/Random sequencing, calibrated RPM and endurance remain unqualified.
Optically indistinguishable genuine transients and split marks, terminal subdivisions without a return interval, and already corroborated intervals retain the pulse guard's bounded limitations.
Earlier diagnostic waveform cases remain unqualified.
Installation
Use Update existing LaunchLab for an app-only upgrade through the USB updater or Beywatch updater.
The updater checks the complete installed application, refuses accidental downgrades and skips an identical image.
Known earlier private builds are recognized by their exact application identity; their binaries are not distributed.
An intentional same-version repair or rollback still requires backup and deliberate Repair / rollback.
The first-install ZIP uses the established four-image map: bootloader 0x0, partitions 0x8000, boot support 0xe000, application 0x10000.
All earlier published image bytes remain available.
Firmware 0.12.1: pulse guard, effects and accent colors
Superseded by 0.12.2, October 11, 2026: The owner identified a soldering issue behind the reported intermittent field readings. Firmware 0.12.2 is now the recommended release and includes the separately tested optical recovery and Single Turn startup corrections. This 0.12.1 release remains a historical withdrawn prerelease; its original assets and source are unchanged.
Earlier withdrawal and release record
Under investigation, October 11, 2026: The owner reported renewed unusually high RPM readings and missed readings after the initial positive check. Further rollout is paused while the sensor input and detection behavior are investigated. The assets below are preserved as the exact tested build; the earlier scoped acceptance does not establish resolution of these symptoms.
LaunchLab Mini 0.12.1
October 11, 2026.
Runtime: 0.12.1-sticks3-flip-colors for M5StickS3 K150, ESP32-S3 with 8 MB flash and 8 MB OPI PSRAM.
One application supports the saved QRE1113 and TCRT5000 profiles.
What changed
The single-turn peak estimator now discounts an isolated, unconfirmed extra optical mark when its following intervals return to the preceding revolution cadence.
The reproduced generated notch now reports the expected optical fundamental instead of a false high peak.
Confirmed faster motion and valid final-turn peaks remain supported.
Optical acquisition thresholds, three-turn launch confirmation, boundaries and persistent formats retain their existing behavior.
Ten saved accent themes are available: Pegasus Cyan, Wolf Mint, Wizard Gold, Meteor Purple, Golem Green, Phoenix Red, Cobalt Blue, Shark Pink, Valkyrie White and Tyranno Orange.
The original four persistent theme IDs and RGB565 colors remain compatible.
Flip Off uses mounted rotation 2, and Flip On uses native rotation 0.
The saved switch value is retained, so an existing screen rotates 180 degrees after updating; change Flip if your mount needs the other orientation.
The main screen removes the product heading, raises the RPM readout, enlarges the live level and retains the original small status text.
Personal-best celebrations offer Orbit, Flames, Sparkles, Shockwave and Lightning, plus Random and Off.
Random avoids repeating the last celebration actually shown.
The Best effect editor previews a draft once; B cycles, A applies and hold B cancels.
Optional Sound Off, Low or High plays a matching clip with the first displayed effect frame; a new pull or closing the editor cancels queued or playing audio.
Sound defaults to Off.
The internal display canvas and NVS orphan cleanup are retained.
Optical sampling remains 50 kS/s at an 80 MHz CPU setting.
Exact application and source
Application: 808064 bytes, SHA-256 a13d590f11c3c8e8f8ab84a0b8ebd8d69761cf1046e2a0f9fd1d9c162d01ad41, address 0x10000.
Compiled source: 49 inputs, source-set SHA-256 5015e71d8eedd68ed68747539e5624e86267d857c115f79f3aede84bda08f9f1.
The publication ships the exact owner-tested bytes without rebuilding.
The support images match the previously published installation layout.
The source ZIP includes licenses, pinned build context and synthetic tests, including both historical paired-estimator baselines.
Private practice recordings, backups, serial logs, readbacks and ELF debug output are excluded.
Validation and limits
The public source passed 28 ASan/UBSan native suites and nine production harnesses.
The recorded-data runner passed 21 contract tests.
The private corpus contains 12 recordings across 28 configurations: 18 confirmed configurations passed twice, while ten remain diagnostic.
Recorded input hashes, three-turn control rows and final RPM values remained unchanged.
Independent optical review passed 48 fixture pairs with 42 independent selected-peak assertions.
Target compilation and stack checks passed, with an 800-byte loop frame within the 1536-byte loop and 2560-byte other-frame budgets.
The exact application passed app-only installation, complete readback and complete backup retention.
The owner reported solid behavior, including pulls while a preceding reading was showing.
Five results were saved, and the device returned Ready with active acquisition, no unsaved pulls and zero acquisition/save errors.
Prior palette, Flip, layout and effects checks are carried with their original variant identity because those UI source inputs are unchanged.
Identical genuine transient motion and a split optical mark cannot always be distinguished.
Terminal split marks without a recovery interval and a first interval already corroborated by three-turn confirmation retain their documented limitations.
The separate recorded high three-turn result and older missed-pull root cause remain unresolved.
Attempted physical pull count, absolute RPM/tilt calibration, first install, physical browser write, physical personal-best/Random sequencing and endurance are outside qualification.
Installation
Use Update existing LaunchLab for an app-only upgrade through the USB updater or Beywatch updater.
The updater verifies the complete installed application, refuses accidental downgrades and skips an identical image.
A different private build carrying the same 0.12.1 version requires deliberate Repair / rollback after backup.
The first-install ZIP uses the established four-image map: bootloader 0x0, partitions 0x8000, boot support 0xe000, application 0x10000.
All earlier published image bytes remain available.
Firmware 0.11.2 — High score effect preview
Firmware 0.11.2 — High score effect preview
M5StickS3 K150, ESP32-S3, 8 MB flash, QRE1113 analog or TCRT5000 through the saved sensor profile.
Settings and its High score effect editor show a bounded preview using the existing native renderer. The Settings row uses the saved effect; B cycles the editor draft, A applies once, hold B cancels. The labeled 8120 RPM sample creates no measurement, history or personal best. Flames, Sparkles and Off retain a clear numeric result. Active optical capture, pending motion and USB restore pause the preview; real celebrations still require a captured valid new personal best and do not block the next pull.
Themes, sensor/calibration settings, RPM estimators, detector thresholds, sampling, history/best formats and power policies are unchanged. The 0.11.1 stack fix is retained.
Validation: 27 sanitizer-enabled native suites, seven exact production harnesses, ESP32-S3 target build and stack budgets passed. loop() is 816 bytes against a 1536-byte budget; every other sketch frame is at most 2560 bytes. Sixty public updater tests and its production build pass, including same-version build recognition and post-write MD5 failure. The three supporting installation images are byte-identical to 0.11.1. Updates and repair write only app0 at 0x10000 with eraseAll false after layout/boot-selection checks, preserving NVS, calibration, settings and history.
Device evidence: at 2026-10-10 03:14 UTC the owner said “it works, lets get this updated on gh and our site” after testing local candidate 39ce90a7fbc81aaa8d4f78e5f0a69a216b63e998 (runtime 0.11.1-sticks3-effectpreview-dev). Every compiled source file in this release equals that candidate except the runtime version string. The final 0.11.2 binary has not been installed again; Device install pending for that exact binary. This is not new physical flash, soak, accuracy, battery or rollback evidence.
The distinct candidate and released 0.11.1 identities are recognized by the updater. 0.11.1 remains preserved for deliberate recovery. Sensor labels QRE / Standard and TCRT5000 retain their existing wording; consumer Standard/Compact naming is a separate issue.
Firmware 0.11.1 · Themes, personal-best effects and USB backup
0.11.1 adds saved themes, a personal-best effect and USB backup and restore of your data.
For M5StickS3 K150 with an analog QRE1113 or TCRT5000 sensor on GPIO1. Runtime: 0.11.1-sticks3-themes-backup.
- Themes: Settings → Theme (Classic, Mint, Amber, Violet) tints the live readout, accents, level, recap, history and battery pages. Classic keeps the existing look.
- Personal-best effect: Settings → Best effect (Orbit, Flames, Sparkles, Shockwave, Crown, Off). A new best for the active sensor profile and RPM method plays the effect once on its recap. Bests start from the first pull after updating.
- USB backup and restore:
Kexports history, sessions, personal bests, appearance, the saved recap and settings as one checksummed file;Rrestores it to this or another M5StickS3 on 0.11.1 or newer. The device checks the whole backup before writing anything, then restarts. - Fixes 0.11.0, which was withdrawn: it overflowed the loop task's 8 KB stack and restarted about once a second after boot. 0.11.1 keeps large buffers off that stack, and every build now fails if a stack frame exceeds its budget.
The detector, sampling, thresholds, sensor profiles and saved history format are unchanged from 0.10.22, and updating keeps your settings and history.
Checks: 26 native sanitizer suites and 7 production harnesses pass, including new appearance and device-backup suites. Installed app-only on the owner's M5StickS3 K150: no restarts in a 120 s soak, history kept, a USB backup and restore round trip identical, and the screen, themes and pulls confirmed.
This is a prototype release. Installation through the browser updater, first install/rollback, battery endurance, long-session reliability, absolute RPM/angle calibration and stock recovery remain separate checks. 0.10.22, 0.10.21, 0.10.14, 0.10.11, 0.10.7 and 0.10.1 stay selectable in the updater.
Assets: the application-only image, a four-image first-install bundle, the public source with tests (bash scripts/test-firmware.sh), the frozen manifest and SHA-256 checksums.
Firmware 0.10.22 · Pulls right after a save are measured
0.10.22 keeps the detector ready through automatic saves, so pulls that start right after a save are measured.
For M5StickS3 K150 with an analog QRE1113 or TCRT5000 sensor on GPIO1. Runtime: 0.10.22-sticks3-saverearm.
- Fixes missed pulls: about ten seconds after a pull the device saves your history. In 0.10.21 the detector then needed another second before it was ready, so pulling roughly every ten seconds could lose every other pull. 0.10.22 stays ready through the save.
- The power log, Settings Apply and auto-off no longer pause measurement while a pull is starting.
Sensor profiles, controls, display flip, thresholds and saved data are unchanged from 0.10.21.
Checks: native sanitizer suites and production harnesses pass, plus a resume-Ready regression test. Replaying recorded pulls with a save at every 0.1 s, 0.10.21 lost a pull at 61 placements and 0.10.22 at 6 (saves inside the flash write itself), with no phantom launches. The owner installed it on a physical M5StickS3 K150 and reported it working.
This is a prototype release. Battery endurance, long-session reliability, absolute RPM/angle calibration and stock recovery remain separate checks. Superseded by 0.11.1.
Assets: the application-only image, a four-image first-install bundle, the public source with tests (bash scripts/test-firmware.sh), the frozen manifest and SHA-256 checksums.
Firmware 0.10.21 · Sensor profiles, new controls and display flip
0.10.21 brings one firmware for both sensors, simpler controls and a display flip to the web updater.
For M5StickS3 K150 with an analog QRE1113 or TCRT5000 sensor on GPIO1. Runtime: 0.10.21-sticks3-quiethint.
- Sensor profile: after installing, choose Menu → Settings → Sensor profile. QRE / Standard (default) uses an 80-count mark floor; TCRT5000 uses 60 for its weaker marks. The choice is saved.
- Controls: A opens or applies, B moves to the next choice, hold B goes back or cancels. Menus stay open while launches keep recording.
- Display flip: a saved 180-degree screen orientation; the level, Start/End dots and 3D tilt recap follow it. Brightness and flip preview before you apply them.
- Setting editors: values are centred with a faint
B next option ->hint.
The 80 MHz CPU default, 50 kS/s optical sampling, three-turn confirmation, tilt recap, history and shake wake are unchanged.
Checks: 24 native sanitizer suites, 7 production harnesses and 55 updater tests pass. The frozen application was installed with complete readback verification; NVS, bootloader, partitions and all 128 history records were preserved, and the user reports it working. A TCRT5000 setup detected six of six pulls on the 60-count profile.
This is a prototype release. Battery endurance, long-session reliability, absolute RPM/angle calibration, physical browser transfer, first install/rollback and stock recovery remain separate checks. 0.10.14, 0.10.11, 0.10.7 and 0.10.1 stay selectable in the updater.
Assets: the application-only image, a four-image first-install bundle, the public source with tests (bash scripts/test-firmware.sh), the frozen manifest and SHA-256 checksums.
Firmware 0.10.14 · Prompt tilt recaps and IMU recovery
0.10.14 fixes delayed or missing tilt recaps during consecutive practice pulls. Automatic checkpoints wait until practice is quiet, capture uses the available continuous settled pre-roll and 150 ms post-roll, and failed IMU startup is retried. Normal pulls do not require holding still first. Routine saving captions are removed from the main, recap, history and Settings screens.
For M5StickS3 K150 with analog QRE1113 on GPIO1. Runtime: 0.10.14-sticks3-cleanui. The 80 MHz CPU default, 50 kS/s optical sampling, RPM choices, brightness, two tournament views and three-minute default shake-wake sleep policy are retained.
- Native app-only flash and complete readback passed; NVS was unchanged before first boot. Startup after a physical restart confirmed the IMU owner, ready fused orientation, 80 MHz, 50 kS/s and LED off.
- Three normal consecutive QRE pulls each produced valid tilt. First recap frames appeared 202–216 ms after the detected end, and the user confirmed all three appeared promptly.
- Twenty native sanitizer suites, six production harnesses, 55 updater tests, 1,197 artifact checks and the site build passed locally. Public fixtures are synthetic and contain no personal practice exports.
The separate newly attached MusRock B0FR9DBW4K board is not qualified by that earlier QRE trial. Its listing has conflicting analog/digital descriptions; this revision does not add capacitor-timing acquisition. Absolute RPM/angle calibration, long-session reliability, battery gains, physical browser transfer, four-image first install/rollback of this revision and stock recovery remain open.
The web updater defaults to 0.10.14 and retains 0.10.11, 0.10.7 and 0.10.1 for intentional rollback. Update writes only the application; First install is a separate four-image operation. Preserve a private backup before replacing software.
Application: 730,144 bytes, offset 0x10000.
SHA-256: 428543c2a012f5ee865999e62494e1608b77a9091a62b253fae9fb1e87ad2b25.
This is a user-checked prototype prerelease. Download assets include the exact application, first-install bundle, source/tests/build scripts, manifest and checksums.
Firmware 0.10.11 · M5StickS3 + QRE1113 · 80 MHz prototype
0.10.11 — Lower active CPU clock
For M5StickS3 K150 with the SparkFun QRE1113 analog sensor. Runtime: 0.10.11-sticks3-lowcpu.
Runs at 80 MHz instead of 240 MHz, set once before acquisition starts. A startup clock/readback failure falls back to 240 MHz. The peripheral clock stays at 80 MHz and optical sampling stays at 50 kS/s, with the same sample-count RPM timebase. The selected RPM estimator, detector thresholds, IMU/VQF settings, brightness and sleep/wake policy are unchanged from 0.10.10.
Includes the preceding recap/storage repairs and computer USB keep-awake. The latest launch recap plays the measured pre/pull/post rotation at 1× and can be recalled with A. Separate Motion/Recreate pages are removed; history and tilt recording remain. History saves defer during capture/replay, pending records show “Unsaved launch”, and a failed standby flush keeps the device awake.
Verification
- Application-only flash and device hash verified; 20 KB NVS was identical before boot. Saved settings and subsequent launch storage were checked.
- Twenty native suites and five production harnesses passed.
- Three labeled synthetic replays at each CPU frequency maintained 50 kS/s optical sampling, zero new ADC losses and approximately 100 Hz paired IMU sampling.
- At 80 MHz the largest ADC batch was 1.548 ms against a 5.120 ms budget. Largest synthetic draw was 33.230 ms against a 50 ms recap frame budget; largest observed physical draw was 34.432 ms.
- User confirmed normal pulls and replays looked good. The latest exported tilt trace was valid and fused.
One transient IMU gap/reset occurred in each controlled frequency trial. Post-pull flash checkpoints still cause rejected IMU gaps; no gap-free claim. Physical browser transfer, a four-image first install/rollback of this revision, stock recovery and a battery shake-wake cycle at 80 MHz remain unverified. Absolute RPM and angle calibration remain open.
Battery savings are unmeasured. Lowering the CPU clock by two thirds does not mean whole-device drain drops by two thirds. Persistent power diagnostics retain CPU frequency for the next battery-session comparison.
Application: 729,264 bytes at 0x10000.
SHA-256: 4a49e2fc663efd89dca3ed527d1ba493c2cd5c39e03717fed2be263906751aaf.
This is an installed, user-checked prototype revision. Published as a prototype prerelease. Publication does not establish buyer/pilot or recovery qualification.
Old TCRT5000 firmware 0.2.0 · Preserved M5StickS3 build
Preserved old TCRT5000 / LM393 analog AO firmware for M5StickS3 K150, separate from the newer small QRE1113 build. Exact saved binary, no rebuild or retuning. Runtime string remains 0.2.0-sticks3-acquisition.
Analog AO → GPIO1, VCC → 3.3 V, GND → GND; DO unused. Old profile: 80-count mark floor, 70% reversal hysteresis, 50 kS/s, 1,000-RPM launch floor and three consistent revolutions. Initial original trial: three user-confirmed pulls / three device detections / three saved-waveform replay results. Absolute RPM is not independently calibrated; the trial does not validate newer printed mounts.
Application-only restore at 0x10000 on an M5StickS3 already using LaunchLab's partition layout. This is not a factory-board first-install bundle. The web updater currently offers QRE 0.7.0 only. This earlier acquisition build does not include the QRE 0.7.0 history/trend/Motion/Recreate UI.
Assets: saved application binary (619,408 bytes), source/tests/public restore guide ZIP and SHA-256 checksums. Binary SHA-256: 8f60898d0a4fd3e9e6cf16c741ada3ac50949d21f52ab84574b8c54e09a5dec6. Historical development notes retain private-evidence references; device backups and practice captures are excluded from the public package.