Releases: miamimoe/digital-sharpening-guide
Release list
v1.0.0 — battery icon, first non-preview release
1.0. The calibrate → hold-the-colour → count → summary loop has been stable on the bench for months, so this is the release that stops calling itself a preview.
New
- Battery icon in the top-right corner of every screen — four bars, a + beside it while charging over USB, a single dash if the reading isn't available. Polled once every ten seconds, so it has no measurable cost on the ~120 mAh cell.
Unchanged from v0.3.0
Steady mode (on by default, hold B on TOLERANCE to toggle), the built-in accuracy check (hold A on SET TARGET), time on-angle on the summary, and the last five sessions (hold B on the summary).
Flashing
Easiest: flash in your browser — pick your device, plug in a USB-C data cable, Install.
The attached .bin files are merged images (bootloader + partitions + app) for offset 0x0:
sharpening-guide-plus-v1.0.0.bin— M5StickC Plus (ESP32)sharpening-guide-plus2-v1.0.0.bin— M5StickC Plus2 (ESP32)sharpening-guide-s3-v1.0.0.bin— M5StickS3 (ESP32-S3)
Board status
M5StickC Plus is validated on real hardware. Plus2 and S3 are compile-verified and reviewed against the datasheets but not yet confirmed on a physical device — that includes the battery icon (Plus2 reads its cell via an ADC divider, S3 via the M5PM1). If you own one, please flash it and open an issue with results.
🤖 Generated with Claude Code
v0.3.0 — steady mode, accuracy check, time on-angle, session history
⚡ Flash it in your browser — desktop Chrome / Edge / Opera, USB-C data cable, about a minute.
The angle reading sits still now
A sharpening stroke pushes the blade sideways, and the filter's guard against that was nearly blind to it: 0.18 g of sweep — the level the firmware already counts as a stroke — tilted its gravity reference 10.2° while barely changing its magnitude, so it sailed through unrejected. v0.3.0 averages the gravity reference before it steers the angle (stroke acceleration cancels out over a cycle, gravity doesn't) and stops the displayed number and the colour from flip-flopping on sub-degree noise. Simulated, that's 2.3–4× steadier depending on how fast you stroke.
Steady mode is on by default. Hold B on the TOLERANCE screen to switch it off and compare against the old behaviour on the same knife, same stone, same session.
Also new
- Accuracy check — hold A on SET TARGET. Lay the device flat, press A, then stand it on a known angle and read the number at 0.1°. Printable wedges if you don't own an angle block.
- Time on-angle on the session summary — what share of the session you held inside tolerance.
- Past sessions — hold B on the summary screen for your last five.
- Gyro bias refresh whenever the device is verifiably still, so thermal drift doesn't accumulate across a session.
Fixes
- A crash, reset, or reflash no longer leaves a zombie session that comes back as RESUME? for the previous knife the next time you sleep and wake.
- Session time now survives Plus / Plus2 deep-sleep resume (it used to reset to
00:00). - Power key on Plus2 / S3 no longer treats the wake / power-on press as "off".
- Flasher images are proper merged images (bootloader + partition table + boot_app0 + app); a v0.2.1 / beta.1 packaging bug had shipped bare app images that left devices unbootable.
scripts/check_flasher_bins.pynow guards every manifest.
Includes everything from v0.2.1: 25° and 28° presets, real version on the splash, pinned build dependencies.
Hardware status
Validated on a physical M5StickC Plus. Plus2 and M5StickS3 builds are compile-verified and reviewed against the M5Stack datasheets but still need a community tester — please open an issue with results.
Assets
Each .bin is a merged flash image — flash at offset 0x0:
esptool.py --chip esp32 write_flash 0x0 sharpening-guide-plus-v0.3.0.bin # M5StickC Plus
esptool.py --chip esp32 write_flash 0x0 sharpening-guide-plus2-v0.3.0.bin # M5StickC Plus2
esptool.py --chip esp32s3 write_flash 0x0 sharpening-guide-s3-v0.3.0.bin # M5StickS3
What would help most: does green still arrive fast enough? Smoothing trades response for calm — if green now feels late, say so.
v0.2.0 — M5StickC Plus2 + M5StickS3 support
What's new in v0.2.0 — now runs on three sticks 🎉
Thanks to the r/sharpening folks who asked: the firmware now supports three M5Stack sticks from one codebase, auto-detected at boot.
| Board | Status |
|---|---|
| M5StickC Plus | ✅ Validated on real hardware |
| M5StickC Plus2 | |
| M5StickS3 |
Flash it
Flash in your browser — now with a device picker (Plus / Plus2 / S3). Or grab the matching .bin below and flash at offset 0x0 with esptool.
sharpening-guide-plus-v0.2.0.bin→ M5StickC Plus (ESP32)sharpening-guide-plus2-v0.2.0.bin→ M5StickC Plus2 (ESP32)sharpening-guide-s3-v0.2.0.bin→ M5StickS3 (ESP32-S3)
Honest status
Only the Plus has been run on physical hardware. The Plus2 and S3 builds are compile-verified and reviewed line-by-line against the M5Stack datasheets — but not yet confirmed on a real device (I don't own them). If you flash one, please open an issue with how it went. A flashed binary even refuses to run on the wrong board (a red "WRONG FIRMWARE" screen) so you can't brick a mismatch.
Notes
- One board-guarded codebase — the Plus build is unchanged from v0.1.0; the original is still available as the v0.1.0 release.
- S3 sleep difference: the StickS3's power button is owned by its M5PM1 PMIC (no GPIO wake), so on the S3 the device fully powers off on sleep and cold-boots on the next press (the in-progress session isn't resumed). Plus/Plus2 keep session-preserving deep sleep.
- Stroke/Mahony thresholds are still being tuned — real-world data welcome.
v0.1.0 — first public release
First public release of the Digital Sharpening Guide firmware for the M5StickC Plus.
Easiest way to install
👉 Flash it in your browser — no toolchain, just desktop Chrome/Edge/Opera and a USB-C data cable.
Manual flash
sharpening-guide-v0.1.0.bin is a merged ESP32 image — flash it to offset 0x0:
esptool.py --chip esp32 write_flash 0x0 sharpening-guide-v0.1.0.bin
What it does
Live green/blue/red angle feedback while you sharpen, per-side stroke counting, optional buzzer, and a session summary. See the README for the bill of materials, assembly, and usage.