This release adds 2 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+14 more
Affected surfaces
Summary
AI summaryAdded ARMv6 hard-float support for Raspberry Pi Zero with a new ALSA PCM sink.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Low |
Adds ARMv6 hard-float cross-compilation target `arm-unknown-linux-gnueabihf` with Docker toolchain and Zig flags. Adds ARMv6 hard-float cross-compilation target `arm-unknown-linux-gnueabihf` with Docker toolchain and Zig flags. Source: llm_adapter@2026-06-14 Confidence: high |
— |
| Feature | Low |
Adds direct libasound PCM sink `alsa-sink` for ARM Linux, avoiding cpal's ALSA backend issues. Adds direct libasound PCM sink `alsa-sink` for ARM Linux, avoiding cpal's ALSA backend issues. Source: llm_adapter@2026-06-14 Confidence: high |
— |
| Feature | Low |
Adds C PCM sink ops in `firmware/target/hosted/headless/pcm-alsa.c` mirroring existing cpal implementation. Adds C PCM sink ops in `firmware/target/hosted/headless/pcm-alsa.c` mirroring existing cpal implementation. Source: llm_adapter@2026-06-14 Confidence: high |
— |
| Feature | Low |
Adds GitHub Actions workflow `.github/workflows/linux-armhf-build.yml` to build and upload ARMHF binary. Adds GitHub Actions workflow `.github/workflows/linux-armhf-build.yml` to build and upload ARMHF binary. Source: llm_adapter@2026-06-14 Confidence: high |
— |
| Bugfix | Medium |
Fixes 32‑bit ABI mismatches in `crates/sys` by adding explicit casts for `c_long`, `c_ulong`, and related fields. Fixes 32‑bit ABI mismatches in `crates/sys` by adding explicit casts for `c_long`, `c_ulong`, and related fields. Source: llm_adapter@2026-06-14 Confidence: high |
— |
| Bugfix | Medium |
Fixes `SIGILL` from `__ARMv7ABSLongThunk__` by forcing `-march=armv6 -marm` in ARMHF host configuration. Fixes `SIGILL` from `__ARMv7ABSLongThunk__` by forcing `-march=armv6 -marm` in ARMHF host configuration. Source: llm_adapter@2026-06-14 Confidence: low |
— |
| Bugfix | Medium |
Fixes `SIGSEGV` in `alsa::pcm::Status::get_htstamp` by removing cpal ALSA timing probe and using direct alsa‑sink. Fixes `SIGSEGV` in `alsa::pcm::Status::get_htstamp` by removing cpal ALSA timing probe and using direct alsa‑sink. Source: llm_adapter@2026-06-14 Confidence: low |
— |
| Bugfix | Medium |
Fixes `SIGILL` at startup caused by LLD generating long-range veneers in ReleaseFast builds. Fixes `SIGILL` at startup caused by LLD generating long-range veneers in ReleaseFast builds. Source: llm_adapter@2026-06-14 Confidence: low |
— |
| Bugfix | Medium |
Fixes `SIGSEGV` in `SimpleBroker::subscribe` due to zero vtable entries on ARM 32‑bit builds. Fixes `SIGSEGV` in `SimpleBroker::subscribe` due to zero vtable entries on ARM 32‑bit builds. Source: llm_adapter@2026-06-14 Confidence: low |
— |
| Bugfix | Medium |
Fixes undefined reference to `pcm_cpal_set_volume` by gating cpal volume call on non‑ARMHFHOST and using Rockbox DSP layer for volume control. Fixes undefined reference to `pcm_cpal_set_volume` by gating cpal volume call on non‑ARMHFHOST and using Rockbox DSP layer for volume control. Source: llm_adapter@2026-06-14 Confidence: low |
— |
| Bugfix | Medium |
Fixes `SIGILL` caused by default `-march=armv7-a` compiler flags on ARM Linux by enforcing `-march=armv6 -marm` in the configure script. Fixes `SIGILL` caused by default `-march=armv7-a` compiler flags on ARM Linux by enforcing `-march=armv6 -marm` in the configure script. Source: granite4.1:30b@2026-06-14-audit Confidence: low |
— |
| Bugfix | Medium |
Eliminates `SIGSEGV` in `alsa::pcm::Status::get_htstamp` by replacing cpal with the direct `alsa-sink`, which never calls the problematic function. Eliminates `SIGSEGV` in `alsa::pcm::Status::get_htstamp` by replacing cpal with the direct `alsa-sink`, which never calls the problematic function. Source: granite4.1:30b@2026-06-14-audit Confidence: low |
— |
| Bugfix | Low |
Fixes array‑bounds error in `pcm.c` where `PCM_SINK_ALSA = 9` exceeded `PCM_SINK_NUM`; reordered enum entries to make `PCM_SINK_NUM = 10`. Fixes array‑bounds error in `pcm.c` where `PCM_SINK_ALSA = 9` exceeded `PCM_SINK_NUM`; reordered enum entries to make `PCM_SINK_NUM = 10`. Source: granite4.1:30b@2026-06-14-audit Confidence: low |
— |
| Refactor | Low |
Updates `firmware/export/config.h` to recognize ARMHFHOST platform with conditional inclusion of `config/armhfhost.h`. Updates `firmware/export/config.h` to recognize ARMHFHOST platform with conditional inclusion of `config/armhfhost.h`. Source: granite4.1:30b@2026-06-14-audit Confidence: low |
— |
| Refactor | Low |
Modifies `crates/cli/src/lib.rs` to use `libc::rlim_t` instead of raw `u64` for `rlimit` fields, matching the ARM ABI. Modifies `crates/cli/src/lib.rs` to use `libc::rlim_t` instead of raw `u64` for `rlimit` fields, matching the ARM ABI. Source: granite4.1:30b@2026-06-14-audit Confidence: low |
— |
Full changelog
[2026.06.14]
Added
arm-unknown-linux-gnueabihfcross-compilation target — newscripts/build-armhf.shbuilds a native ARMv6 hard-floatrockboxdbinary (e.g. Raspberry Pi Zero) using theDockerfile.arm-unknown-linux-gnueabihfcross-toolchain; Zig links with-Dtarget=arm-linux-gnueabihf -Dcpu=arm1176jzf_s;Cross.tomlwirescross buildto the same Docker image; firmware configure target208(ARMHFHOST) reuses the headless target files witharm-linux-gnueabihf-gccand-march=armv6 -marm -mfpu=vfp -mfloat-abi=hardcrates/alsa-sink— direct libasound PCM sink for ARM Linux; usessnd_pcm_writei(RWInterleaved, same asaplay), avoiding cpal's ALSA backend and thesnd_pcm_status_get_htstampnull-PLT-entry crash on older ARM devices; ALSA is opened once inpcm_alsa_postinit()and the writer thread lives for the daemon lifetime so resume after a pcmbuf-dry stall is instant (no re-open latency); enabled via--features fts5,alsa-sinkin the ARM build; registered asPCM_SINK_ALSA = 9infirmware/export/pcm_sink.hfirmware/target/hosted/headless/pcm-alsa.c— C PCM sink ops mirroringpcm-cpal.cbut callingpcm_alsa_*entry points.github/workflows/linux-armhf-build.yml— CI workflow that builds and uploads the armhf binary to GitHub Releases
Fixed
- ARM Linux:
SIGILLfrom__ARMv7ABSLongThunk__— Ubuntu'sarm-linux-gnueabihf-gccdefaults to-march=armv7-a; added-march=armv6 -marmto the configurearmhfhostcc()function so all C objects are tagged ARMv6; Zig's LLD then uses ARMv6-compatible thunks that work on ARM1176JZF-S - ARM Linux:
SIGILLat startup — LLD derivesHasMovtfrom the target triple (arm-linux-gnueabihf= conventional ARMv7), generatingmovw/movtthunks even when object attributes say ARMv6; fixed by usingReleaseFastto produce a compact binary (< 32 MB) that fits within LLD's direct-branch range, eliminating the need for long-range veneers - ARM Linux:
SIGSEGVinSimpleBroker::subscribe(dyn Anyvtable null) — Zig's LLD generates zero vtable entries fordyn Any + SendCOMDAT groups on ARM 32-bit inReleaseFastmode; replacedHashMap<TypeId, Box<dyn Any + Send>>incrates/graphql/src/simplebroker.rswith a type-erasedErasedSendersstruct storing the drop function as a heap pointer written at runtime (not a link-time vtable), so every function pointer is a valid non-zero Thumb address - ARM Linux:
SIGSEGVinalsa::pcm::Status::get_htstamp— on ARM devices where libasound shipssnd_pcm_status_get_htstampas a static inline (not an exported symbol) the PLT entry resolves to 0x00000000 at runtime, crashing in cpal's ALSA timing probe; fixed by replacing cpal with the directalsa-sinkthat never calls this function - ARM Linux: 32-bit ABI mismatches in
crates/sys—c_long/c_ulongare 32-bit on ARM (not 64-bit); addedas c_long/as c_ulongcasts inmetadata.rs,playback.rs,playlist.rs,sound/dsp.rs,system.rs,tagcache.rs, andas u64/as i64field casts intypes/mp3_entry.rs;crates/cli/src/lib.rsnow useslibc::rlim_tinstead ofu64forrlimitfields - ARM Linux:
audiohw_set_volumeundefined reference topcm_cpal_set_volume— gated the cpal volume call on!ARMHFHOSTinaudiohw-noop.c; volume is handled by Rockbox's DSP layer (HAVE_SW_TONE_CONTROLS) on ARM - ARM Linux:
PCM_SINK_ALSA = 9array-bounds error inpcm.c— enum entry was declared beforePCM_SINK_CMAF = 8, makingPCM_SINK_NUM = 9andsinks[9]out-of-bounds; moved ALSA entry after CMAF soPCM_SINK_NUM = 10 firmware/export/config.h: added#elif defined(ARMHFHOST)→#include "config/armhfhost.h"so the ARM hosted build is recognised as a valid platform; addedARMHFHOSTguard toaudiohw.h(sdl_codec.h inclusion) andfilesystem-app.c(rbhomepointer declaration)metadata:probe_content_type_formatnow logs the exactContent-Typestring received (or reports thatstream_content_typereturned < 0) to stderr, making HTTP format-detection failures visible; addedaudio/x-aacandaudio/vnd.dlna.adtsto the AAC-BSF MIME mapping
Full Changelog: https://github.com/tsirysndr/rockbox-zig/compare/2026.06.07...2026.06.14
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
Track A modern Music Player Daemon based on Rockbox firmware
Get notified when new releases ship.
Sign up freeAbout A modern Music Player Daemon based on Rockbox firmware
All releases →Related context
Related tools
Beta — feedback welcome: [email protected]