We believe the best way to demonstrate experience is to contribute directly to the platforms we use. Here you will find part of our contributions accepted into the Apache NuttX and Zephyr projects, reflecting our commitment to strengthening these ecosystems through fixes, new features and improvements that benefit the whole community.
65
Merged PRs
3
Upstream projects
2023
Contributing since
Aug 6, 2026
Last merge
// 01Where the work lands
Three upstream trees.
Counts come straight from the GitHub API. Each card links to the filtered search on GitHub, so nothing here has to be taken on faith.
A commit count says nothing about capability. These are the pieces of upstream work that map directly onto what we build for clients.
Connectivity & protocolsAug 06 2026
LoRaWAN gateway: SX1301 concentrator with a UDP packet forwarder over Ethernet
A driver for the SX1301 concentrator with its board support and SX127x fixes in the kernel, plus the Semtech UDP packet forwarder in userland. Together they turn a NuttX board into a working LoRaWAN gateway: radio in, packets forwarded to the network server over Ethernet. Validated in both directions against an end node, receiving uplinks and transmitting downlinks.
GD32VW553 port: a RISC-V Wi-Fi 6 SoC, from nothing to upstream
A complete architecture port for a SoC NuttX had never run on: boot, clocks, interrupts, Wi-Fi 6 with WPA3, plus I2C, PWM, ADC and SD card drivers. This is the work a silicon vendor pays for when a new part has no RTOS support yet.
LINUM-STM32H753BI: board port maintained upstream for three years
The initial port landed in 2023 and 30 merged PRs have kept it alive since: Ethernet, external SDRAM, FDCAN, touch screen, USB console and mass storage, LittleFS, RTC, EEPROM, and its documentation page. Bring-up is the easy half. This is the maintenance half.
Support for the M5Stack Tab5 (ESP32-P4), the M5Stack Cardputer and the LHCBIT (both ESP32-S3): pin maps, peripheral wiring, defconfigs and board documentation, on Espressif's newest silicon.
A shared upper-half layer so every board's keyboard hardware talks to userland through one interface, replacing per-board options that had drifted apart. Changing a kernel subsystem means convincing maintainers across the whole tree, not just landing a patch.
LVGL on STM32H7: display timings, touch and keyboard input
LVGL brought up on the STM32H7 LTDC controller, then tuned: display timings and memory layout optimised for a smooth frame rate, capacitive touch wired in, and the LVGL terminal taught to accept both a physical matrix keyboard and a USB HID one.
The connectivity a field device actually ships with: a Modbus master over USART, Ethernet, RNDIS (networking over USB), USB mass storage backed by SD, and LittleFS/NXFFS for wear-levelled persistence, each validated against real equipment.
Field diagnostics: a usable top, an HTTP client, and CI
The NSH top command rewritten with a Linux-like summary and flicker-free refresh, a small curl-like HTTP client for the shell, and a fix to the project's Docker CI image. Unglamorous tools that decide how fast a problem gets diagnosed on site.
Module documentation upstreamed into the Zephyr tree, plus board and command pages in NuttX: Spresense rewritten with images and configs, the cu terminal and top documented. The same habit that leaves a client's team able to maintain the firmware after handover.