OpenPad Hub is an experimental, community-built controller hub for Linux. It combines a polished Qt Quick interface with a small driver architecture for hardware-specific research. The current prototype focuses on verified support for the GameSir Cyclone 2.
Important
OpenPad Hub is a user-space application, not replacement firmware. It does not flash the controller, bypass access controls, or redistribute GameSir software, firmware, artwork, or branding.
OpenPad Hub 0.1 is a working research prototype, not a promise of universal controller support. It was built and tested with hardware owned by the project author. Other models must not be advertised as supported without physical tests.
| Capability | Cyclone 2 status |
|---|---|
| Connection and device identity | Verified |
| Buttons, sticks and triggers through Linux evdev | Verified |
Battery and charging through HID report 0x12 |
Verified on 3537:100b |
| Local 30-day battery history | Implemented |
| Live lighting telemetry | Verified |
| Four-zone static RGB profiles | Verified with read-back and recovery |
| Animated lighting effects | Detection only |
| Firmware updates | Intentionally unsupported |
The USB/configuration identity 3537:0575 can confirm that the controller is
receiving USB power, but the observed report does not contain a trustworthy
battery percentage or charging flag. OpenPad displays unknown values instead of
inventing them.
- English-first Qt Quick/QML interface with Spanish translations.
- Automatic evdev capability discovery and a live input tester.
- Battery, charging, connection, diagnostics and local SQLite history.
- Eight original four-zone static lighting profiles.
- Static RGB writes protected by a private checkpoint, three read-back samples and recovery to the last verified OpenPad profile.
- Live detection of firmware lighting codes
0(static),1(spectrum) and2(side flow) on the tested firmware. - A simulated controller for development without physical hardware.
- A private
usbmonresearch tool that never publishes captures automatically. - No account, cloud service, network telemetry or background analytics.
OpenPad never sends an unknown command. A hardware write is enabled only when:
- the exact USB product identity is supported;
- a private checkpoint exists with mode
0600; - the controller is already in verified static mode
0; - the requested four-zone state can be checked through three matching reports;
- the previous verified profile is available for recovery.
Animated effects remain read-only because their complete selection and recovery protocol has not been independently verified. See the protocol notes and SECURITY.md.
Install the distribution-provided Qt binding:
sudo dnf install python3-pyside6
python3 openpad_hub.pyInstall for the current user and add the desktop entry:
./install.shOptional autostart:
./install.sh --autostartIf the Diagnostics page reports missing permissions, run
./enable-device-access.sh. The included udev rule is restricted to the two
observed product IDs, 0575 and 100b.
python3 openpad_hub.py --demo
python3 openpad_hub.py --once --json
python3 -m unittest discover -s tests -vThe demo and automated tests do not write to controller hardware.
openpad/drivers/ hardware drivers and protocol parsing
openpad/services/ history, settings, lighting safety and RGB research
openpad/ui/ Qt Quick/QML presentation
openpad/assets/ original vector assets
docs/ independently documented protocol observations
tests/ simulated protocol, safety and UI-contract tests
packaging/ Fedora RPM specification
Contributions are welcome, especially reproducible protocol documentation, support for additional devices, accessibility improvements and Linux-standard battery exposure. Read CONTRIBUTING.md before submitting hardware captures or a feature that writes to a controller.
Please do not upload serial numbers, Bluetooth addresses, local paths, firmware, DLLs, manufacturer binaries or unreviewed USB captures.
OpenPad Hub is an unofficial community project and is not affiliated with, authorized by, or endorsed by GameSir. Product names are used only to describe interoperability.
The static LED report format builds on public GPL-3.0 interoperability research from Victor Demonchy's cyclone2-linux, with additional independent read-back, mapping and recovery tests documented in this repository.
GPL-3.0-or-later. See LICENSE, NOTICE.md and SECURITY.md.
