5.1 KiB
5.1 KiB
Azeron Cyborg Linux Configuration Software - Project Plan
Overview
The Azeron Cyborg keypad (USB ID: 16d0:113c) is already recognized by Linux as a HID device and basic functionality works. However, Linux users need configuration software to remap buttons, configure analog sticks, and manage profiles - similar to the Windows software.
Current Status
- Device: Azeron Cyborg Keypad (MCS, Vendor ID: 0x16d0, Product ID: 0x113c)
- Linux Support: Device creates multiple input devices (/dev/input/event*, /dev/input/js*, /dev/input/mouse*)
- Working Features: Basic input with pre-configured mappings (stored in device firmware)
- Missing: Configuration software to modify mappings, analog stick settings, and profiles
USB Device Analysis
The device has 5 interfaces:
- Interface 0: Vendor-specific (0xFF) - Likely configuration interface
- Interface 1: HID - Main input interface (buttons)
- Interface 2: HID Boot Mouse - Mouse emulation
- Interface 3: HID - Analog stick input
- Interface 4: HID with IN/OUT endpoints - Likely LED/control interface
Architecture Decision
Userspace Application Approach (not kernel driver needed):
- Linux already recognizes device as HID
- Configuration is done through USB control transfers
- Userspace app can communicate with vendor-specific interface
- No kernel module required - more portable and easier to maintain
Project Structure
azeron-linux/
├── libazeron/ # Core library for device communication
│ ├── azeron.c # USB communication and protocol handling
│ ├── azeron.h # Library API header
│ └── protocol.md # Documented protocol findings
├── azeron-cli/ # Command-line configuration tool
│ ├── main.c # CLI application
│ └── Makefile
├── azeron-gui/ # GUI configuration application
│ ├── main.py # Python GUI (Qt/GTK)
│ ├── ui/ # UI files
│ └── requirements.txt
├── docs/ # Documentation
│ ├── installation.md
│ ├── usage.md
│ └── development.md
├── scripts/ # Helper scripts
│ ├── udev-rules/ # udev rules for device permissions
│ └── build.sh # Build script
└── tests/ # Test suite
└── test_protocol.c
Implementation Phases
Phase 1: Core Library (libazeron)
- Set up build system (CMake/autotools)
- Implement USB device detection and connection
- Create device communication abstraction layer
- Implement basic USB control transfers
- Add error handling and logging
Phase 2: Protocol Reverse Engineering
- Capture USB traffic from Windows software (if available)
- Analyze vendor-specific interface (Interface 0)
- Document configuration command structure
- Map button IDs and analog stick data formats
- Understand profile storage and retrieval
Phase 3: Command-Line Tool (azeron-cli)
- List connected Azeron devices
- Read current button mappings
- Remap buttons (assign keyboard keys, mouse buttons, etc.)
- Configure analog stick (deadzone, sensitivity, curves)
- Manage profiles (save, load, switch)
- Export/import configurations
Phase 4: GUI Application (azeron-gui)
- Create visual button mapping interface
- Implement drag-and-drop or click-to-configure UI
- Add analog stick calibration wizard
- Profile management with visual indicators
- Real-time configuration testing
- Save/load configuration files
Phase 5: Advanced Features
- LED control and effects (if supported)
- Macro recording and playback
- Analog stick mode switching (digital vs analog)
- Multiple device support
- Configuration backup/restore
Phase 6: Testing and Documentation
- Unit tests for core library
- Integration tests for CLI and GUI
- User documentation and tutorials
- Packaging (RPM for Fedora, DEB for Ubuntu)
- udev rules for non-root access
Technical Requirements
Dependencies
- libusb-1.0: For USB communication
- libevdev: For input event handling (testing)
- GTK+ 3/Qt 5: For GUI application
- json-c: For configuration file format
- pkg-config: For build configuration
Development Tools
- GCC/Clang C compiler
- CMake or GNU Autotools
- Git for version control
- Wireshark (for protocol analysis)
- evtest/jstest (for testing input)
Success Criteria
- Users can remap all buttons on the Azeron keypad
- Analog stick can be configured (deadzone, sensitivity, response curves)
- Multiple profiles can be created, saved, and switched
- Configuration persists on the device (like Windows software)
- Both CLI and GUI tools work reliably
- No root access required (proper udev rules)
- Documentation covers installation and common use cases
Next Steps
- Set up development environment and project structure
- Begin implementing core USB communication library
- Start protocol reverse engineering (with or without Windows capture)
- Create basic CLI tool for testing
- Iterate on functionality based on testing feedback