Skip to content

Firmware: audiodsp 0.6.16.dev2, omnipython-lvgl 9.5.54, the library at 7f50691, ulab past 6.12.1 - #404

Merged
bdbarnett merged 2 commits into
mainfrom
pins-2026-11-11
Nov 11, 2026
Merged

bdbarnett merged 2 commits into
mainfrom
pins-2026-11-11

Conversation

@bdbarnett

Copy link
Copy Markdown
Contributor

Four pins in DEPENDENCIES.lock move, so every firmware built from main carries what the libraries already ship.

audiodsp goes to v0.6.16.dev2, where a mix move walks over 20 ms instead of jumping (audiodsp#411); audioeffects' own pin already asks for it. omnipython-lvgl goes to the v9.5.54 tag, where LVGL's asserts cost 44 KB less flash. omnipython-lib goes to 7f50691, which freezes audioinstruments v0.5.2.dev4 and audioeffects v0.5.2.dev2 (faster patch changes) and brings omip to CircuitPython. ulab moves from 6.5.2 (September 2024) to master 15e9997, the same ulab CircuitPython 11.0.0-alpha.2 builds: integer true division, signed sort, the modulo operator, bincount, meshgrid, take, keepdims, and the one-dimensional build fix the GIGA needs.

The new ulab adds functions the GIGA's trimmed ulab doesn't want, so its ulab_config.h leaves out bincount, meshgrid, take and scipy.integrate with the other rarer functions. ulab's fft now returns one complex array, as numpy does, on builds with complex numbers; tflite_sounds.py read it as a pair and now takes either.

Firmware from this branch, with every module fetched at the new pins, is checked on an ESP32-S3 (Waveshare 7" LCD), an ESP32-P4 panel and the Arduino GIGA with its display shield: each boots what it booted before and runs an audiodsp render with a 20 ms mix walk, imports omip and ulab, and draws with LVGL. The results follow in a comment.

…t 7f50691, ulab past 6.12.1

audiodsp moves to v0.6.16.dev2 (a mix move walks over 20 ms), omnipython-lvgl
to the v9.5.54 tag (LVGL asserts cost 44 KB less flash), omnipython-lib to
7f50691 (audioinstruments v0.5.2.dev4, audioeffects v0.5.2.dev2, omip on
CircuitPython), and ulab from 6.5.2 to master 15e9997, the ulab CircuitPython
11.0.0-alpha.2 already builds.

The GIGA's ulab leaves out the new bincount, meshgrid, take and
scipy.integrate, as it leaves out the other rarer functions.
ulab past 6.12 returns one complex array from fft on builds with complex
numbers, as numpy does; the example unpacked it as real and imaginary
parts.
@bdbarnett

Copy link
Copy Markdown
Contributor Author

Checked on three boards, each flashed from this branch: an ESP32-S3 with a 7" RGB panel (this PR's CI image), an ESP32-P4 panel board (--modules all,vision,tflite,airwindows) and the Arduino GIGA R1 with the Display Shield.

On all three, a Multiply whose mix moves from 1.0 to 0.0 walks over 960 frames at 48 kHz, matching the CPython build of audiodsp 0.6.16.dev2 sample for sample. omip imports, ulab.__version__ reads 6.12.1 (2D on the ESP32s, 1D on the GIGA), and an LVGL object drawn on the top layer reads back red from the framebuffer. Both ESP32 boards boot their apps and stay up. On the P4, np.fft.fft now returns one complex array, and tflite_sounds.py's new reading of it finds a 64-point sine's peak at bin 8. The full example wasn't run, because the model files weren't on the board.

The WebAssembly build of this branch (--port webassembly --variant pydevices --modules all) was swapped in for the published runtime under every hero app on the project pages, every gallery page and every Peter Hinch demo: 108 pages, all ready, no tracebacks.

Not ready to merge: the GIGA locks up hard while sending a long stretch of output over WebREPL (a framebuffer dump of about 80 KB of base64), with USB and Wi-Fi both gone until a reset. It happened three times on this branch's image, from the first dump after boot to the tenth: twice the board stayed dark until reset, and once it reset itself. The cause isn't known yet, and neither is whether the previous image does the same.

@bdbarnett

Copy link
Copy Markdown
Contributor Author

The GIGA lock-up predates this PR. The previous image (main 9a241aa with audiodsp 8d5c4a0, omnipython-lvgl c34fbeeb and ulab 1d3ddd8) stalls on the same long WebREPL output: once after 33 framebuffer dumps, and again after 8 more, when USB serial died while Wi-Fi and the WebREPL prompt kept working. The details are in a new issue. This PR's image is back on the GIGA and boots Home.

@bdbarnett
bdbarnett merged commit 3a75160 into main Nov 11, 2026
32 checks passed
@bdbarnett
bdbarnett deleted the pins-2026-11-11 branch November 11, 2026 08:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant