A browser-based tool for testing and configuring PlayStation DualSense, DualSense Edge, and DualShock 4 controllers via the WebHID API. It provides real-time visualization of all inputs (joysticks, buttons, triggers, gyroscope, accelerometer, touchpad), output control (lightbar, player LEDs, rumble, adaptive triggers, audio), and diagnostics (battery, telemetry, firmware info). For DualSense Edge, it offers profile editing including button remapping, joystick sensitivity curves, trigger deadzones, and vibration intensity. Built as a single-page application with Vue 3, TypeScript, and Pinia, it uses a custom device-based routing architecture that dynamically loads controller-specific views based on the HID device type. Communication with controllers is handled entirely in the browser through raw HID report parsing and construction, with audio streaming over USB (quadraphonic PCM) and Bluetooth (Opus via WebCodecs). The codebase is heavily modularized with composables for media playback, microphone capture, and state management. While primarily an application, the repository includes significant reverse-engineering work of the HID communication protocols for these controllers, making it a valuable reference for implementing controller support. The code is organized for extensibility, with a clean pattern for adding new controller types.
This is an Arduino library for the USB Host Shield Rev. 2.0 (MAX3421E chip), providing a comprehensive USB host stack for embedded systems. It supports a wide range of USB and Bluetooth devices including game controllers (PS3/4/5, Xbox 360/One, Switch Pro, Wii), HID keyboards/mice, Bluetooth dongles (HID, SPP), MIDI devices, CDC serial adapters, mass storage, and USB hubs. The library implements state-machine-driven USB enumeration, control/bulk/interrupt transfers, a custom Bluetooth HCI/L2CAP stack, and HID report descriptor parsing. It is modular with device-specific drivers in separate files, event-driven callbacks, and PROGMEM string tables for RAM efficiency. The codebase is well-structured but shows signs of platform-specific workarounds, code duplication in examples, and reliance on reverse-engineered protocols that may drift with firmware updates.
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.
This repository contains the firmware for FreeJoy, a highly configurable USB game controller (joystick, HOTAS, steering wheel) based on the STM32F103 (Blue Pill). The firmware implements a composite USB device with joystick HID, custom HID (for configuration), and CDC (for SimHub telemetry). It supports a wide variety of input sensors (ADC, magnetic encoders via SPI/I2C), buttons (GPIO, shift registers), encoders, LEDs (matrix and addressable RGB), and PWM outputs. Configuration is stored in flash and managed via a companion PC tool. A separate USB HID bootloader enables firmware updates. The code is bare-metal, leveraging the deprecated STM32 Standard Peripheral Library and CMSIS 3.5.0, with SEGGER RTT/SysView for debugging. The architecture is monolithic but modular within the firmware, with clear separation between bootloader and application.