Releases: outlookhazy/SyntropicOS
Release list
2026.8.0
SyntropicOS v2026.8.0 introduces a native zero-heap Bluetooth Low Energy (BLE) Host Stack, an Embedded Audio Subsystem, OCPP 2.1 Edition 1 & 1.6-J EVSE/CSMS engines, USB MIDI & MSC drivers, ISO 14230-3 KWP2000 diagnostics, LZ4 compression, Protobuf serialization, and Sensored FOC motor control.
🚀 Key Highlights
📡 Bluetooth Low Energy (BLE) Host Stack (syn_ble)
A zero-heap, pure-C Tier 2 BLE Host Stack designed for embedded MCUs interfacing with external BLE controllers over UART H:4 or SPI:
syn_ble_hci: H:4 UART packet framing (Commands, ACL Data, Events).syn_ble_l2cap: ACL packet reassembly, fixed channel demuxing (CID 0x0004 ATT), and connection pool manager.syn_ble_att: Encoders and decoders for Read/Write requests, responses, notifications, and stack-buffer overflow safety guards.syn_ble_gap: Advertising parameter/data configuration, connect/disconnect state machine, and adv report parser.syn_ble_gatt: Static attribute table lookup engine with dynamic read/write callbacks and GATT notifications.examples/stm32_ble_sensor: STM32 BLE sensor driver application example.
🎵 Embedded Audio & Signal Processing Subsystem (syn_audio)
Integer-only, zero-heap audio pipeline for microcontrollers:
syn_audio_mixer: 16-channel software mixer with saturation clipping and per-channel gain control.syn_wav: RIFF/WAVE PCM header parser.syn_adpcm: IMA-ADPCM audio encoder and decoder.syn_sbc: Bluetooth Subband Codec (SBC) decoder.syn_mfcc: Mel-Frequency Cepstral Coefficients speech feature extraction.syn_goertzel: Goertzel algorithm DTMF tone detector.examples/stm32_audio_player: STM32 audio player example.
⚡ EV Charging & Diagnostic Protocol Stacks (syn_ocpp, syn_kwp2000)
syn_ocpp: OCPP 2.1 Edition 1 & OCPP-J 1.6 dual-role EVSE Client and CSMS Server protocol engine supporting JSON RPC 2.0 framing, ISO 15118-20 V2G data structures, and DisplayMessage payloads.syn_kwp2000: ISO 14230-3 KWP2000 K-Line / CAN diagnostic service engine (SessionControl, ReadDataByLocalIdentifier, SecurityAccess, RoutineControl, RequestDownload/TransferData).
🛠️ USB & Device Drivers (syn_usb_midi, syn_usb_msc)
syn_usb_midi: USB 2.0 MIDI Class driver (jack parsing, event packets).syn_usb_msc: USB Mass Storage Class (MSC) Bulk-Only Transport (BOT) / SCSI command block wrapper decoder.
🛡️ Bootloader & Automotive Enhancements
examples/stm32f7_uds_bootloader: ISO 14229-1 UDS 17-step 3-phase Non-Volatile Server Memory Programming architecture with A/B dual-bank swap and single-bank direct flashing options.syn_ymodem: Serial YMODEM / XMODEM-1K firmware update receiver.
📊 DSP, Sensors, Motor & Utilities
syn_foc_encoder: Sensored FOC speed estimation and quadrature encoder feedback integration.syn_lz4: Zero-heap LZ4 frame compression and decompression engine.syn_protobuf: Google Protocol Buffers varint/wire format encoder/decoder.syn_ntp_server: Embedded NTP time server.syn_sensor_fusion: 9-DOF Mahony AHRS orientation fusion filter.
📦 PlatformIO & Arduino Packaging
- PlatformIO: Package manifest (
library.json) updated for version2026.8.0with new keywords (ble-bluetooth,ocpp-evse,audio-dsp,usb-msc). - Arduino IDE: Updated
library.properties(version=2026.8.0). Fixed C++ struct declaration compatibility insyn_icmp.h. Tested against C++11 and C++17 compilers. - Standalone Makefiles & CMake: Updated
sources.mkand rootCMakeLists.txtto include all 21 new C source files.
🧪 Verification & Quality Metrics
- Unit Test Suite:
2048 Tests 0 Failures 0 Ignored / OK - Line Coverage: 100.00% (
29,049 / 29,049lines) - Function Coverage: 100.00% (
2,114 / 2,114functions) - Branch Coverage: 81.77% (
15,233 / 18,628branches) - Doxygen API Docs: 0 Warnings (100% Documented)
- Static Analysis: No bugs found (Clang Scan-Build)
- Examples Cross-Compilation: 103 / 103 Examples (100% Clean)
- QEMU Bare-Metal Emulation: Clean ARM Cortex-M4 Execution
2026.7.3
SyntropicOS v2026.7.3
🚀 Protocols & Fieldbuses
- CJ/T 188 Protocol Engine: Added support for CJ/T 188 smart metering protocol (water, heat, gas meters).
- M-Bus (EN 13757-2/3): Added M-Bus master and slave protocol engine for utility metering.
- DL/T 645 Protocol: Added DL/T 645 smart electricity meter protocol support (1997 & 2007 standards).
- AT Command Parser (
syn_at_parser): Added streaming AT command parser for modem communication and cellular SIM800 MQTT integrations.
🎛️ Hardware Drivers & MCU Extensions
- 16 Generic Peripheral Drivers: Added abstraction drivers and unit tests for climate, lux, biometric, scale, smartled, powermon, joystick, and distance sensors.
- STM32 HAL Family Support: Added native support for STM32F7, STM32C0, and STM32U0 microcontroller families in
port_stm32_hal.c. - Button Driver (
syn_button) Overhaul: Added multi-click detection, configurable click-window timing, auto-repeat, and multi-button combination support (SYN_ButtonCombo).
📦 STM32 HAL Bare-Metal Examples
- CAN Protocols: Added complete STM32 HAL examples for CANopen DS301/CiA 402, NMEA 2000, and SAE J1939.
- Peripherals & Utilities: Added STM32 HAL examples for Modbus RTU Slave, Task CPU Profiler & Load Monitor, Embedded JSON, IR Remote Receiver/Transmitter, DL/T 645, and MCU-to-MCU Single-Byte UART RX.
💻 CLI & Developer Usability
- CLI Prompt Protection: Implemented
prompt_visiblestate tracking insyn_cli. Async background logs automatically clear dirty lines, print output, and restore> [draft_command].
🛡️ Safety & Quality Assurance
- Production Null & Parameter Hardening: Added explicit runtime null guards and parameter bounds validation across Core, Storage (VFS, LFS), Sched, Network, DSP, and Peripheral modules.
- New CI & Security Scanners: Added GCC interprocedural static analyzer (
-fanalyzer), Flawfinder security scanner, containerized Valgrind Memcheck, and ThreadSanitizer (TSan) analysis targets. - GitHub Actions CI: Added
.github/workflows/ci.ymlfor automated formatting and 1,248 unit test execution.
2026.7.2
Full Changelog: 2026.7.1...2026.7.2
2026.7.1
SyntropicOS 2026.7.1
🐛 Bug Fixes & Platform Driver Updates
- Arduino Serial Port Linkage Fix: Removed
SYN_WEAKattributes fromsyn_port_serial_init,syn_port_serial_write, andsyn_port_serial_readinport_arduino.cpp. This resolves a weak symbol link-time collision wheresyn_port_stubs.cwas pulled into Arduino builds, fixing non-responsive CLI terminals on Arduino boards (AVR Mega, SAMD, RP2040). - CLI Task Starvation Prevention: Updated
cli_taskinexamples/SerialCLI/SerialCLI.inoto use bounded chunked reads and non-blocking yields, preventing CPU starvation during high-rate serial bursts.
🚀 New Features & Drivers
System & High-Precision Timing
syn_hpclock: Added 64-bit high-precision system clock primitive for sub-microsecond timestamping and elapsed time measurement (syn_hpclock.h).syn_timesync: Added high-precision time discipline engine supporting PPS lock verification, clock slewing, and offset tracking (syn_timesync.h).
Navigation & Geodesy
syn_geo: Added 3D WGS84 and local East-North-Up (ENU) geodetic coordinate transformation library with NMEA GGA quality tier parsing (syn_geo.h).
Protocol Stacks & Lighting / Industrial Interfaces
- DALI (IEC 62386): Added full DALI lighting protocol control gear and controller stack (
syn_dali). - ISO 15765-2 (ISO-TP): Added multi-frame CAN transport protocol engine with CAN FD framing and N_Bs/N_Cr timing parameters (
syn_isotp.h). - LIN Bus (2.1 / 2.2a): Added LIN Master and Slave protocol stack (
syn_lin.h). - USITT DMX512-A: Added DMX512-A Master/Slave lighting protocol driver (
syn_dmx512.h). - SAE J1939: Added J1939 heavy-duty vehicle CAN protocol stack with 96% unit test coverage (
syn_j1939.h). - NMEA 2000: Added marine NMEA 2000 CAN protocol engine and PGN decoder/encoder registry (including DC Detailed Status & BMS Extreme Status PGNs).
- CANopen Expansion: Added CiA 303-3 LED status indicators, CiA 305 LSS, CiA 401 Generic I/O, CiA 302 Network Manager, and CiA 418 Battery/BMS profile.
Core Kernel & Data Primitives
- Lock-Free SPSC Queue: Added lock-free Single-Producer Single-Consumer queue (
syn_spsc_queue). - Slab Allocator: Added multi-class fixed-size slab allocator (
syn_slab). - Hashed Timing Wheel: Added O(1) hashed timing wheel timer scheduler (
syn_timing_wheel). - Zero-Copy Netbuf Pool: Added O(1) packet buffer pool (
syn_netbuf). - DDS Waveform Synthesizer: Added Direct Digital Synthesis (DDS) sine/triangle/square/sawtooth signal generator (
syn_dds).
🛠️ Refactoring & Cleanups
syn_pack.hSerialization Standardization: Standardized endian-safe peek/poke serialization across Modbus, CoAP, DNS, SNTP, MQTT, WebSocket, FAT, J1939, and ISO-TP.- Documentation: Expanded Doxygen API reference and MkDocs documentation across
syn_hpclock,syn_timesync,syn_geo, andsyn_dali.
2026.7.0
SyntropicOS Release 2026.7.0
A major feature release expanding SyntropicOS with industrial fieldbus engines (CANopen CiA 402, Modbus RTU/TCP, NMEA 0183), advanced motion control (Multi-Axis Interpolator, Sensorless FOC Observer), DSP & math tools (Dynamic IIR Biquad Designer, FFT, Matrix Solvers, Mahony AHRS), and an embedded WireGuard VPN client.
🚀 Industrial Fieldbus & Application Protocols
🚗 CANopen Protocol Stack
- CANopen DS301 Slave Engine (
syn_canopen): Zero-allocation DS301 slave protocol engine supporting Object Dictionary (OD) lookup, SDO Server (expedited, segmented, aborts), up to 4 RPDOs/TPDOs, Heartbeat Producer, Emergency (EMCY) alarms, and NMT state management. - CANopen CiA 402 Drive Profile (
syn_cia402): Complete CiA 402 power drive profile engine implementing 8-state power drive state machine, Controlword (0x6040), Statusword (0x6041), Profile Position (PP), Profile Velocity (PV), Profile Torque (PT), and Cyclic Synchronous (CSP/CSV) modes.
📡 Modbus RTU & TCP Suite
- Modbus RTU Slave Engine (
syn_modbus): Full 18-function-code slave implementation (FC 0x01-0x08, 0x0B-0x0C, 0x0F-0x11, 0x14-0x18, 0x2B/0x0E). - Modbus RTU Master Engine (
syn_modbus_master): Non-blocking master state machine supporting FC01, FC02, FC03, FC04, FC05, FC06, FC0F, FC10, FC11, FC16, and FC18 queries with tick-based timeouts. - Modbus TCP Framing Layer (
syn_modbus_tcp): 7-byte MBAP header encoder/decoder and TCP socket dispatcher (syn_modbus_tcp_process_slave,syn_modbus_tcp_build_client_adu).
🧭 NMEA 0183 Navigation Engine (syn_nmea)
- Streaming Parser: Byte-at-a-time framing parser with zero heap allocation.
- GNSS Sentence Decoders: Full decoders for GGA, RMC, VTG, GSA, and ZDA sentences, including XOR checksum validation and DDMM.MMMM coordinate conversion.
⚙️ Motion Control & Drivers
- Multi-Axis Trajectory Interpolator (
syn_interpolator): Coordinated 3D linear and 2D circular arc (CW/CCW) trajectory generation with jerk-limited S-Curve profiles. - Sensorless FOC Observer (
syn_foc_observer): Rotor position & speed Sliding Mode Observer (SMO) with software PLL phase tracking for BLDC/PMSM motors. - PID Auto-Tuner (
syn_autotune): Enhanced 9-stage automated PID gain tuning with 2-point feedforward identification and safety multipliers.
📊 DSP, Analytics & Mathematics
-
Dynamic IIR Biquad Filter Designer (
syn_filter_design): Fixed-point lowpass, highpass, bandpass, and notch coefficient generator. -
6-DOF Mahony AHRS & Sensor Fusion (
syn_sensor_fusion): Quaternion-based Mahony filter for 6-DOF IMU orientation tracking. -
Fixed-Point FFT Analytics (
syn_fft): Power-of-2 radix-2 FFT spectral analysis engine. -
Linear Algebra & Solvers (
syn_matrix): Fixed-point matrix LU decomposition, Cholesky factorization, Least-Squares solver, QR decomposition, 2D/3D homogenous transforms, and$SVD$ primitives.
🔒 Cryptography & Networking
- WireGuard VPN Client (
syn_wg): Embedded WireGuard protocol engine with noise handshake, Noise_IKpsk2 state machine, and replay protection. - Crypto Suite (
syn_blake2s,syn_chacha20poly1305,syn_x25519): BLAKE2s, ChaCha20-Poly1305 AEAD, and X25519 ECDH key exchange. - Cooperative SNTP Task (
syn_sntp): Fully non-blocking SNTP client task with drift PPM tracking. - Cooperative Stream Primitive (
syn_stream): Ring-buffer-backed stream handling for line-oriented protocols.
⏱️ Core Scheduler & System Enhancements
- Event-Driven Task Blocking: Added
PT_BLOCK_EVENT()macro for zero-overhead event sleeping. - Protothread Enhancements: Added
PT_DEFER()and per-priority round-robin task execution. - Platform Ports: Added STM32F0xx HAL port, Arduino W5500 socket transport support, and ESP-IDF v5.4 build compatibility.
🧪 Testing & Code Quality
- Unit Test Suite: 986 Unit Tests passing across 63 test runners (0 failures, 0 ignored).
- Code Coverage: 98.26% overall line coverage across 12,502 lines of code.
2026.6.2
SyntropicOS v2026.6.2
Added Features
Multicore (AMP)
- Added support for Asymmetric Multiprocessing (
SYN_USE_MULTICORE=1). - Upgraded
syn_mailboxwith load-acquire/store-release barriers for cross-core communication. - Implemented hardware spinlock, memory barrier, and inter-core IPC ports for both bare-metal RP2040 and the Arduino core.
- Added constructor-based initialization to ports to prevent startup race conditions when allocating spinlocks.
- Added
bootloadercommand to the CLI to trigger software reboot to BOOTSEL mode.
Security & Cryptography
- Added SHA-256 implementation (
syn_sha256). - Added HMAC utility (
syn_hmac). - Added HMAC-SHA256 signature verification to firmware updates (
syn_fwupdate).
Scheduling & Memory
- Added tickless idle mode (
syn_tickless) that computes sleep duration based on the next scheduled timer expiration. - Added a static memory pool allocator (
syn_pool). - Added core dump capability (
syn_coredump) to save register states and task lists to flash on panic.
Asynchronous Drivers
- Added DMA port specification (
syn_port_dma.h). - Added async I2C (
syn_port_i2c_async.h) and SPI (syn_port_spi_async.h) port layers.
Refactoring & Testing
- Split the large
test_multitask.ctest file into separate modular test files. - Added tests and mock environments for network modules (HTTP, HTTPD, WebSockets, MQTT, DNS) and filesystems (LittleFS, VFS).
- Expanded unit tests to 731 passing tests.
- Updated porting and Arduino guides.
2026.6.1
First Public Release
Arduino Library Manager compatible. CalVer versioning (YYYY.M.R).
Highlights
- 70+ modules: scheduler, CLI, FSM, PID, DSP, motor control, networking
- Pure C99, zero dependencies, cooperative multitasking
- Platforms: AVR, STM32, ESP32, RP2040, SAMD
- Arduino examples: Blink, SerialCLI, SensorLogger, MotorFSM
- Full Doxygen API coverage
- 309 unit tests passing