Releases: brilliantlabsAR/halo-firmware
Releases · brilliantlabsAR/halo-firmware
Release list
Release 0.8.9
Halo firmware 0.8.9
Compared to 0.8.8 (f17f7e1, the initial public snapshot).
Highlights
- Speaker loudness overhaul (#6). The voicing curve is rebalanced for
louder, clearer speech at unchanged buzz (deeper cuts in the vibrotactile
lows, +4 dB top band, protection HPF at 200 Hz), and the protection
sidechain weights are recalibrated from bench current measurements so the
energy budget caps battery current honestly for any spectrum. New
per-stream controls:frame.speaker.start{gain=0..12}(digital pre-gain
for quiet sources) andframe.speaker.start{budget=10..100}(energy-budget
override, clamped by a firmware maximum). The budget also ducks
automatically while the display is active and restores when it sleeps,
ramped smoothly even mid-stream, and a true-peak clamp backstops tall
transient spikes. All speaker protection remains active throughout. - Battery level reporting (#5). The reported level now seeds from
steady-state post-boot readings, converges toward the measured charge at a
bounded rate instead of holding monotonic between charger events, and each
reading averages a four-conversion ADC burst. - BLE Lua RX hardening (#7, #8). The Lua RX write handler refuses ATT
offset and zero-length writes, no longer underflows on malformed writes,
keeps continuation fragments byte-exact, and routes a bare data marker as
an empty data frame instead of REPL input. - Build provenance (#3). CI-built images now populate
frame.GIT_TAG
with the source commit hash (it read as an empty string on 0.8.8 and
earlier CI images).
Lua / app notes
frame.speaker.start{}accepts two new optional keys, both transient per
stream:gain(0..12 dB pre-gain into the protection limiter — lifts
quiet, un-normalized TTS toward the loudness ceiling) andbudget
(10..100, raises or lowers the loudness ceiling within the
firmware-clamped maximum). For the loudest speech from quiet TTS sources,
normalize/compress app-side and pairgainwith a raisedbudget;
keeping the display asleep during playback leaves the full budget to the
speakers.frame.battery_level()behavior change (no API change): the level can now
step toward the measured charge in either direction at a bounded rate,
rather than only moving with the charge direction.frame.GIT_TAGreturns the firmware's 12-character build commit hash on
images built from this release onward.frame.display.get_font_list()returns a table mapping font id to name
with integer keys starting at 0 — iterate withpairs, notipairs
(documentation fix, #2).
Full details in CHANGELOG.md.
What's Changed
- Documentation errata: PROTOCOL, button/pairing guides, container build by @CitizenOneX in #1
- docs: correct the get_font_list() return shape and example by @CitizenOneX in #2
- ci: mark the container workspace safe for git so frame.GIT_TAG is populated by @CitizenOneX in #3
- battery: steadier level reporting by @CitizenOneX in #5
- Speaker loudness and protection-envelope enhancements by @CitizenOneX in #6
- ble_lua: refuse offset and zero-length RX writes by @CitizenOneX in #7
- ble_lua: route a bare data marker as an empty frame, not REPL input by @CitizenOneX in #8
- Version Bump 0.8.9 by @CitizenOneX in #9
New Contributors
- @CitizenOneX made their first contribution in #1
Full Changelog: 0.8.8...0.8.9
Halo Firmware v0.8.9
Halo Firmware Pre-Release v0.8.9
Build Information:
- Version:
0.8.9 - Branch:
main - Commit:
c2dfa7ab58757909aee2b7225e7b22d00a0c10f9
Files:
halo-firmware-0.8.9-release.signed.bin- Production firmware (signed)halo-bootloader-0.8.9-release.bin- Production bootloaderhalo-firmware-0.8.9-debug.signed.bin- Debug firmware (signed)halo-bootloader-0.8.9-debug.bin- Debug bootloaderVERSION.txt- Build information and flash instructions
Flashing (over the air — this is how Halo owners install firmware):
uv run alif/applications/halo/tools/ota_flash.py halo-firmware-0.8.9-release.signed.bin
See alif/applications/halo/FLASHING.md for details. The bootloader
.bin files are for wired factory flashing only — they cannot be
flashed over the air.
Release 0.8.8
Halo firmware 0.8.8
The first release in this repository.
Highlights
- Native single/double/triple tap detection with a runtime-tunable detector
(frame.imu.tap_config()) - Button hold ladder: 1 s app event / 2 s power-off / 5 s pairing / 15 s ship
mode, with audio cues at each threshold - Display font replaced with the Dogica 8 px pixel font; boot splash shows the
device name at 16 px while unpaired - Optional battery-state gating of the boot/shutdown cues
- Display fixes:
canvas_set_pixelchannel order, RGB global palette,
palette_offsetclamping require()behaves like standard Lua (returns module values, caches in
package.loaded)- Microphone
bit_depth = 8produces real 8-bit samples
Lua / app notes
set_fontsizes are now multiples of 8 (Dogica-based font stack)frame.on_wakeup()was removed — run code sequentially afterstandby()
instead- Tap callbacks receive a kind argument; the tap trigger errors if unarmed
Assets
0.8.8.bin— release build (BLE OTA payload)0.8.8-debug.bin— debug build (BLE OTA payload)
Flash over the air with applications/halo/tools/ota_flash.py; see
FLASHING.md.
Full history for this version: CHANGELOG.md.