Skip to content

2.3.0 - #295

Open
TobiasRoeddiger wants to merge 100 commits into
mainfrom
2.2.10
Open

2.3.0#295
TobiasRoeddiger wants to merge 100 commits into
mainfrom
2.2.10

Conversation

@TobiasRoeddiger

@TobiasRoeddiger TobiasRoeddiger commented Sep 28, 2026 •

Copy link
Copy Markdown
Member

Release 2.3.0 with the following changes:

  • PPG: Select integration time and optical channels for the requested sample rate, with red and infrared at 2,048 Hz and infrared at 4,096 Hz. Verify the sensor settings and preserve samples split across FIFO reads.

  • IMU: Use the Bosch BMI160/BMM150 drivers to read BMX160 samples in FIFO batches. Return errors when FIFO-length or calibration-register reads fail.

  • Bone conduction: Expand the BMA580 FIFO to 1,024 bytes, keep it collecting samples when full, and read it once per buffered batch. Enable both sensor power rails during operation.

  • Sensor control and timing: Process all queued configuration requests, skip pending sensor work after a stop, and delay the first poll until data can accumulate. Send low-rate samples individually when their spacing exceeds the packet interval field's range.

  • Audio: Receive the complete encoder queue item to fix a four-byte buffer overflow. Validate the frame length before encoding. Keep cold-start PCM muted until synchronization settles, then fade it in (fix(audio): mute cold-start audio until synchronization settles #316). Let audio preempt sensor configuration by using a lower-priority sensor worker and yielding during sensor startup (fix(sensors): prevent sensor startup from blocking audio #315).

  • SDK and toolchain: Upgrade to nRF Connect SDK/toolchain 3.4.1 and Nordic Zephyr 4.4.2, use Zephyr SDK 1.0.1 in CI, and update setup documentation (ncs 3.4.1 upgrade #318).

  • Audio startup: Preserve 20 ms of settling time, restore 40 ms of playback margin, and wait for stable codec clocks before unmuting (fix(audio): restore startup playback headroom on SDK 3.4.1 #319, fix(audio): wait for stable codec clocks before unmuting #321).

  • Right-ear audio: Route decoded right-channel music to the physical speaker output (ncs 3.4.1 upgrade #318).

  • Audio timestamps: Reconstruct missing timestamps from a recent valid reference and drop frames without a usable reference (fix(audio): reconstruct missing unicast ISO timestamps #320).

  • Audio resynchronization: Detect persistent playback timing errors and buffer underruns, then recheck alignment and safely correct the playback buffer (fix(audio): recheck playback alignment after timing slips #322).

  • Audio lifecycle: Preserve shared microphone/playback access, clean up queued frames on stop, and protect encoding during codec shutdown (ncs 3.4.1 upgrade #318).

  • SDK compatibility: Correct the bootloader layout, preserve audio memory reserves, restore SD logger startup, and retain pair-specific Bluetooth names (ncs 3.4.1 upgrade #318).

  • FOTA: Keep the Bluetooth update service available in FOTA builds so the app detects firmware-update support. Standard builds keep FOTA disabled.

  • BLE throughput: Batch consecutive sensor samples into MTU-sized packets and keep queued readings fresh under load.

  • BLE scheduling: Reserve a 2000 us ACL connection event to improve sensor throughput while leaving scheduling headroom for CIS audio (perf(ble): reserve ACL airtime while preserving CIS audio headroom #309).

  • Power: Set the fuel gauge's sleep measurement intervals to 60 seconds. Leave P0.6 in high impedance to prevent back-powering the switched sensor supply.

  • Firmware version: Set VERSION to 2.3.0 with the compact BLE PPG update, use it as the base for generated version strings, and return the exact version text over BLE.

  • CI: Retry failed Zephyr toolchain installations in the static-analysis workflow.

  • Compact BLE transport: Pack PPG from 16 to 10 bytes (Pack BLE PPG samples losslessly for firmware 2.3.0 #355) and IMU from 36 to 24 bytes (Reduce IMU BLE payloads in firmware 2.3.0 #357). Firmware 2.3.x selects the new layouts; the library restores the same values and units. SD/.oe formats remain unchanged.

  • LED state: Read and notify the configured RGB color and indication mode (Read and notify LED color and indication mode #356).

Validation: combined FOTA and standard builds pass. Transport tests cover all 65,536 signed IMU readings and PPG boundaries. Real-app release validation with app 1.6.0 and firmware 2.3.0/2.2.9 is in progress. Older feature PRs #311, #276 and #267 are excluded.

@github-actions

github-actions Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

✅ Unit tests passed

5 passed, 0 failed/error, 0 skipped — view workflow run

Test scenario Platform Result
openearable.unit.sensor_component native_sim/native/64 ✅ passed
openearable.unit.sensor_transport native_sim/native/64 ✅ passed
openearable.unit.ring_buffer native_sim/native/64 ✅ passed
openearable.unit.audio_encoder native_sim/native/64 ✅ passed
openearable.unit.audio_startup native_sim/native/64 ✅ passed

Download the unit-test-results artifact for full Twister reports and logs.

@github-actions

github-actions Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

Compiler warnings

The extended-warning build completed successfully.

Application compiler warnings

Show warnings
unicast_server/main.cpp:78:33: warning: 'int usb_enable(usb_dc_status_callback)' is deprecated [-Wdeprecated-declarations]

View this workflow run

@github-actions

github-actions Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

CodeChecker static analysis

✅ No non-style issues found.

@TobiasRoeddiger
TobiasRoeddiger marked this pull request as draft September 29, 2026 11:47
@github-actions

Copy link
Copy Markdown

Build output available:
openearable_v2_firmware.elf.zip
openearable_v2_fota.zip

@github-actions

github-actions Bot commented Oct 4, 2026

Copy link
Copy Markdown

Build output available:
openearable_v2_firmware.zip
openearable_v2_fota.zip

@github-actions

github-actions Bot commented Oct 4, 2026

Copy link
Copy Markdown

Build output available:
openearable_v2_firmware.zip
openearable_v2_fota.zip

@TobiasRoeddiger TobiasRoeddiger changed the title 2.2.10 2.3.0 Oct 4, 2026
@github-actions

github-actions Bot commented Oct 4, 2026

Copy link
Copy Markdown

Build output available:
openearable_v2_firmware.zip
openearable_v2_fota.zip

@github-actions

github-actions Bot commented Oct 4, 2026

Copy link
Copy Markdown

Build output available:
openearable_v2_firmware.zip
openearable_v2_fota.zip

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown

Build output available:
openearable_v2_firmware.zip
openearable_v2_fota.zip

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown

Build output available:
openearable_v2_firmware.zip
openearable_v2_fota.zip

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown

Build output available:
openearable_v2_firmware.zip
openearable_v2_fota.zip

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown

Build output available:
openearable_v2_firmware.zip
openearable_v2_fota.zip

Wait 300 ms after the last SD configuration write, then open one file
with the selected rates before starting the new recording. Keep the
previous recording active during the wait and drain it before rotation.

Preserve BLE-only changes, reject failed initial SD starts without
altering the working configuration, and cancel pending work on shutdown.

Revises the original microphone-header fix from PR #251.
@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown

Build output available:
openearable_v2_firmware.zip
openearable_v2_fota.zip

@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown

Build output available:
openearable_v2_firmware.zip
openearable_v2_fota.zip

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants