mirror of
https://github.com/torlando-tech/pyxis.git
synced 2026-07-08 07:11:46 +00:00
5a3ee97856d58005fdcd28fa17446ac1d5e4cad9
The PlatformIO dep sh123/esp32_codec2_arduino@1.0.7 bundles codec2 v0.9.2. Mac-side pycodec2 v3.0.4 links libcodec2 v1.2.0. Years of codec2 development between those releases. Replace the upstream lib with a local vendor of drowe67/codec2 v1.2.0 under lib/codec2/. Trim the 191-file source tree down to the ~100 files actually needed for codec2 (drop FreeDV, OFDM, COHPSK, FSK, FM-FSK, LDPC, Horus, CLI tools — pyxis only uses codec2_create/destroy/encode/decode + samples_per_frame / bytes_per_frame). Carry over the v0.9 codebook .c files since the codebook contents matched (compared against v1.2's src/codebook/*.txt). Define __EMBEDDED__ so the codebooks land in flash (.const) rather than RAM. Without it the codebooks add ~127KB to BSS and the LVGL task fails to start (RAM was 65% full vs 27% with __EMBEDDED__). Provide trivial codec2_malloc/codec2_free wrappers in codec2_alloc_esp32.c (codec2 v1.2 expects them when __EMBEDDED__ is defined; ESP-IDF's malloc/free already pull from internal RAM). Also explicitly add SD/FS to lib_deps and #include <SD.h> in main.cpp — the previous esp32_codec2 dep transitively pulled SD which let SDArchiveFileSystem.h get away with depending on it implicitly. With chain+ ldf mode and no esp32_codec2 dep, we have to declare the framework lib explicitly. DOES NOT fix the ~30x speech-decode RMS asymmetry between pycodec2 self-tests (~5800) and pyxis decoding the same encoded bytes (~170). Sine waves and 3-formant synthesis pass clean both directions; only real TTS speech triggers it. Probably a separate codec-state divergence (the encoder/decoder are independent codec2 instances in pyxis, both fresh per call) or a wire-format quirk we still need to track down. v1.2 is the right baseline regardless — same bug class as several upstream fixes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Pyxis
An LXMF and LXST client firmware for T-Deck, built on a highly modified fork of microReticulum
Very much WIP, don't expect stability :)
Features
Reticulum transport over:
- RNode-compatible LoRa
- AutoInterface (local wifi)
- TCP Client
- BLE Interface (barely working if at all)
Other features:
- GPS-synced time
- One really annoying beep when you get a new message (user toggle)
- View the announce stream
- Choose a propagation node (and sync with it) (fixed in v0.2.1)
- Set auto announce timer
- Light up keyboard (user toggle)
Will crash in about 5 minutes of normal use (sorry)I had 5d uptime on v0.2.0 with BLE disabled- Make LXST voice calls (codec2 only, quality sounds horrible coming out the other end in Columba, needs work)
Why "Pyxis"
Pyxis, latin for "compass," is a constellation in the southern sky depicting a mariner's compass. Small but essential, the compass ensures every message finds its destination - even when the path is uncertain.
Languages
C++
50%
C
43.9%
Python
5.9%
Shell
0.2%