$ show tommybee456/OpenSplitDeck
This repository implements the OpenSplitDeck, a split wireless game controller system designed to emulate Steam Deck input. The core functionality resides in embedded firmware built on the Zephyr RTOS, running on Nordic nRF52840 microcontrollers (Seeed Xiao BLE). The architecture consists of two controller halves (Left/Right) communicating via a custom Enhanced ShockBurst (ESB) wireless protocol, with a central dongle translating this data into USB HID reports using the S-Input protocol for Steam compatibility. The project also includes open-source hardware designs, including PCB schematics (Altium) and 3D CAD models (STL) for the enclosure and mechanical components. The codebase demonstrates solid embedded engineering practices, utilizing Zephyr's Device Tree, Kconfig, and modular driver architecture. Key features include deep sleep power management, capacitive trackpad integration (Azoteq IQS7211E), IMU sensor fusion (LSM6DS3), and DRV2605 haptic feedback. However, the repository exhibits hybridity between software and hardware engineering, with significant portions dedicated to mechanical design assets (STL files) and PCB documentation. While the firmware is well-structured, the inclusion of binary CAD files in Git and legacy Arduino code alongside the Zephyr implementation introduces maintenance complexity and potential drift. The project is actively maintained with recent commits and a substantial user base (1000+ stars), indicating a mature open-source hardware initiative. The firmware handles complex real-time constraints, including wireless latency optimization and multi-threaded sensor polling. Despite the high quality of the core logic, the repo hygiene regarding binary assets and mixed legacy code prevents a higher score, though it remains a valuable reference for embedded gaming peripherals.
The LLM identified 4 files worth highlighting for reuse:
Implements the core Enhanced ShockBurst (ESB) wireless communication protocol between controller halves and the dongle. Demonstrates high craftsmanship in managing ACK timing, collision avoidance, and dynamic transmission intervals. The state machine pattern used here is critical for maintaining low-latency wireless connectivity and is safely reusable for other custom wireless protocols on Nordic hardware.
Implements the S-Input protocol (Steam Deck specific) for USB HID report generation. This component handles complex descriptor management and data packing to emulate a Steam Deck controller over USB. It is a specialized, non-obvious implementation that solves a specific compatibility problem and could be adapted for other custom HID protocols.
Provides a robust abstraction layer for persistent storage using Zephyr's Non-Volatile Storage (NVS). It handles calibration data, button bindings, and user preferences with flash wear leveling and safe write patterns. This module is a clean, reusable pattern for configuration management in embedded Zephyr projects.
A Zephyr port of the Azoteq IQS7211E capacitive trackpad driver. It demonstrates skill in adapting legacy Arduino-style drivers to a modern RTOS environment while maintaining the original state machine logic. The driver handles complex sensor initialization, gesture detection, and ATI (Automatic Tuning Implementation) status, making it a valuable reference for capacitive touch integration.