Skip to content

Releases: outlookhazy/SyntropicOS

2026.8.0

Choose a tag to compare

@outlookhazy outlookhazy released this 10 Aug 15:29

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 version 2026.8.0 with new keywords (ble-bluetooth, ocpp-evse, audio-dsp, usb-msc).
  • Arduino IDE: Updated library.properties (version=2026.8.0). Fixed C++ struct declaration compatibility in syn_icmp.h. Tested against C++11 and C++17 compilers.
  • Standalone Makefiles & CMake: Updated sources.mk and root CMakeLists.txt to 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,049 lines)
  • Function Coverage: 100.00% (2,114 / 2,114 functions)
  • Branch Coverage: 81.77% (15,233 / 18,628 branches)
  • 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

Choose a tag to compare

@outlookhazy outlookhazy released this 27 Jul 15:41

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_visible state tracking in syn_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.yml for automated formatting and 1,248 unit test execution.

2026.7.2

Choose a tag to compare

@outlookhazy outlookhazy released this 25 Jul 22:02

Full Changelog: 2026.7.1...2026.7.2

2026.7.1

Choose a tag to compare

@outlookhazy outlookhazy released this 24 Jul 18:54

SyntropicOS 2026.7.1

🐛 Bug Fixes & Platform Driver Updates

  • Arduino Serial Port Linkage Fix: Removed SYN_WEAK attributes from syn_port_serial_init, syn_port_serial_write, and syn_port_serial_read in port_arduino.cpp. This resolves a weak symbol link-time collision where syn_port_stubs.c was pulled into Arduino builds, fixing non-responsive CLI terminals on Arduino boards (AVR Mega, SAMD, RP2040).
  • CLI Task Starvation Prevention: Updated cli_task in examples/SerialCLI/SerialCLI.ino to 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.h Serialization 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, and syn_dali.

2026.7.0

Choose a tag to compare

@outlookhazy outlookhazy released this 24 Jul 00:41

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

Choose a tag to compare

@outlookhazy outlookhazy released this 30 Jun 15:45

SyntropicOS v2026.6.2

Added Features

Multicore (AMP)

  • Added support for Asymmetric Multiprocessing (SYN_USE_MULTICORE=1).
  • Upgraded syn_mailbox with 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 bootloader command 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.c test 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

Choose a tag to compare

@outlookhazy outlookhazy released this 29 Jun 21:36

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