Skip to content

Releases: brilliantlabsAR/halo-firmware

Release 0.8.9

Choose a tag to compare

@CitizenOneX CitizenOneX released this 26 Aug 14:13
c2dfa7a

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) and frame.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) and budget
    (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 pair gain with a raised budget;
    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_TAG returns 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 with pairs, not ipairs
    (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

Full Changelog: 0.8.8...0.8.9

Halo Firmware v0.8.9

Halo Firmware v0.8.9 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 26 Aug 14:09
c2dfa7a

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 bootloader
  • halo-firmware-0.8.9-debug.signed.bin - Debug firmware (signed)
  • halo-bootloader-0.8.9-debug.bin - Debug bootloader
  • VERSION.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.


⚠️ This is a pre-release build for testing purposes.

Release 0.8.8

Choose a tag to compare

@CitizenOneX CitizenOneX released this 19 Aug 08:23

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_pixel channel order, RGB global palette,
    palette_offset clamping
  • require() behaves like standard Lua (returns module values, caches in
    package.loaded)
  • Microphone bit_depth = 8 produces real 8-bit samples

Lua / app notes

  • set_font sizes are now multiples of 8 (Dogica-based font stack)
  • frame.on_wakeup() was removed — run code sequentially after standby()
    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.