Chihuahua|
Projects

Custom Driver & UI for Chinese Mini Keyboard

Reverse-engineered driver and configuration UI for SayoDevice 02C mini keyboard

Andrés Aguilar
Andrés Aguilar
July 12, 2023
  • driver
  • reverse-engineering
  • hardware
  • ui
  • windows
  • linux
View codegithub.com/Avzolem/MiniKeyboard-SayoDevice-02C-Config
Custom Driver & UI for Chinese Mini Keyboard - Image 1
Custom Driver & UI for Chinese Mini Keyboard - Image 2

🎹 Bringing Life to Generic Hardware

Created a custom driver and configuration UI for a Chinese mini keyboard that lacked proper software support, making it fully functional and customizable.

The Challenge

The SayoDevice 02C is a popular budget mini keyboard from China that ships with:

  • No English documentation
  • Buggy proprietary software
  • Limited customization options
  • Compatibility issues

My Solution

I reverse-engineered the device protocol and created:

  • Custom driver for Windows/Linux
  • User-friendly configuration UI
  • Macro programming support
  • RGB lighting control

Features Implemented

  • ⌨️ Key Remapping

    • Any key to any function
    • Multi-key combinations
    • Layer support
    • Media controls
  • 🎨 RGB Control

    • Custom lighting effects
    • Per-key RGB
    • Animation speeds
    • Brightness control
  • 🎯 Macro System

    • Record macros
    • Timing control
    • Complex sequences
    • Game profiles
  • 💾 Profile Management

    • Save/load profiles
    • Import/export
    • Cloud sync
    • Auto-switching

Technical Implementation

  • Languages: C++, Python
  • UI Framework: Qt/PyQt
  • Protocol: USB HID
  • Reverse Engineering: Wireshark, USB analysis
  • Platform: Windows, Linux

Development Process

  1. Protocol Analysis

    • Captured USB packets
    • Decoded communication protocol
    • Identified command structure
  2. Driver Development

    • Implemented USB HID communication
    • Created command library
    • Built abstraction layer
  3. UI Design

    • User-friendly interface
    • Real-time preview
    • Drag-and-drop configuration

Impact & Reception

  • 1000+ downloads on GitHub
  • Featured in mechanical keyboard communities
  • Requests for support of other devices
  • Inspired similar projects

Key Achievements

  • Made unusable hardware fully functional
  • Saved users from buying expensive alternatives
  • Created better software than original manufacturer
  • Open-sourced for community benefit

Supported Features

  • Windows 10/11
  • Linux (Ubuntu, Arch, Fedora)
  • Full RGB spectrum
  • 50+ macro slots
  • Unlimited profiles
  • No internet required

Community Contributions

The project is open source and accepts contributions:

  • Bug fixes
  • New features
  • Device support
  • Translations

Download

Get the driver and UI: github.com/Avzolem/MiniKeyboard-SayoDevice-02C-Config

Future Plans

  • macOS support
  • Mobile app
  • More device models
  • AI-powered layouts