Peripherals & Gaming Hardware (Devices, IoT & Hardware): open-source projects that exist because someone reverse engineered a closed product, sorted by GitHub stars.
⚡️A native, local-first alternative to Logitech Options+, written in Rust 🦀 — remap buttons, DPI, and SmartShift over...
Linux manager for Logitech Unifying, Bolt and Lightspeed receivers and devices
macOS driver for Xbox 360 and Xbox One wired controllers
RFID research toolkit firmware and client with protocol RE support
GTK GUI to configure gaming mice via libratbag
Local open-source alternative to Logitech Options+ for remapping HID++ mice
Use Switch Joy-Cons and Pro Controllers on Windows as XInput devices
Open-source RGB lighting control without vendor software
Open-source Linux drivers and daemon for Razer peripherals
Unofficial userspace driver for HID++ Logitech mice and keyboards
Cross-platform user-mode tablet driver
Drivers and libraries for the Xbox Kinect built from USB RE
Documentation of Joy-Con and Pro Controller Bluetooth/HID protocols
Open-source driver for Corsair keyboards and mice
Use controllers from other consoles natively on Nintendo Switch over Bluetooth
Original Proxmark3 RFID research tool firmware and client
Linux driver for Lenovo Legion laptop fans, power modes and RGB
Notebook fan control via embedded controller register access
Windows driver and XInput wrapper for DualShock 3/4 controllers
Advanced Linux driver for Xbox One wireless gamepads over Bluetooth
Cross-platform tool for controlling AIO coolers, fans and RGB from NZXT, Corsair and others
DBus daemon to configure gaming mice from Logitech, Roccat, SteelSeries and others
Color effects manager for Razer devices on macOS
Gamepad firmware for RP2040 emulating multiple console controller protocols
Linux kernel driver for Xbox One and Series X-S accessories via the wireless dongle
Turns Stream Decks and other controllers into a broadcast control surface, with no vendor software
Unofficial system monitor and library for Turing Smart Screen and similar USB-C IPS displays
Linux software for the Stream Deck with Elgato plugin support
Open driver for the Kinect for Windows v2
Turns the Xiaomi Bluetooth voice remote 2/2 Pro into a Mac voice input device
Reverse-engineered Validity/Synaptics fingerprint reader protocol for Linux
Windows driver for PS3 DualShock 3 controllers
Multiplayer Bluetooth controller adapter for retro consoles, implementing their native controller protocols
User-mode driver and GUI for the Steam Controller and others
Library for Nintendo Switch homebrew
Linux LED controller for Logitech G keyboards
Linux userspace driver for the Xbox One wireless dongle (reverse engineered protocol)
Emulate Nintendo Switch controllers over Bluetooth
Free and open driver set for VR headsets including Oculus Rift
Linux-compatible UI for the Elgato Stream Deck
RGB lighting GUI for OpenRazer devices
Homebrew SDK for the PlayStation 2
Linux drivers for non-Wacom graphics tablets (Huion, XP-Pen)
Open interface for Corsair iCUE LINK hubs and AIOs on Linux: RGB, fans and pumps
Sony DualShock 4 userspace driver for Linux
SummerCart64, a fully open-source N64 flashcart
Bluetooth gamepad host firmware for ESP32 and Pico W supporting many controllers
Python library to control Elgato Stream Deck devices over HID
Linux app for the Elgato Stream Deck with plugins
vJoy feeder for Nintendo Switch Joy-Cons and Pro Controller
Switch sysmodule adding support for third-party USB controllers
Steering wheel manager for Linux (Logitech, Thrustmaster, Fanatec)
Emulate Switch controllers over Bluetooth to control a Nintendo Switch
Configure SteelSeries gaming mice on Linux using the reverse-engineered protocol
Updated Linux xpad driver for Xbox controllers
Linux camera controls including vendor extension units (Logitech, Kiyo, etc.)
Open-source Lighthouse (SteamVR) tracking from reverse-engineered protocols
Windows kernel-mode Bluetooth profile and filter drivers for PS3 controllers
FlashGBX, reads and writes Game Boy and GBA cartridge ROMs and saves
Reverse-engineered file format of the Ravensburger TipToi audio pen; tttool to make content
Gyro and button mapper for DualShock 4, DualSense, Joy-Con and Switch Pro controllers on PC
Standalone Steam Controller driver
Web client for Niimbot label printers over BLE
Raspberry Pi Pico ISA card that emulates Gravis Ultrasound, Sound Blaster, MPU-401 and CD-ROM
Linux kernel driver for Wacom tablets
Python package to print on Brother QL label printers using the raster protocol
Linux and macOS support for Corsair Link coolers, fans and PSUs
Driver app for cheap BLE "cat" thermal printers
Adapter software letting PC input devices emulate console controllers over USB and Bluetooth
Input router and remapper daemon for handheld PC controllers on Linux
Open-source SDK for the original Xbox
Reverse-engineered Furby Connect Bluetooth protocol and update format
Arduino firmware that emulates a Corsair Lighting Node for use with iCUE
PS Vita plugin exposing the screen as a USB Video Class device
Userspace daemon that combines Nintendo Joy-Cons into one controller on Linux
Steam Controller reverse engineering and custom firmware project
Cross-platform library for PlayStation Move motion controllers
Scripts to explore and reverse engineer the DualShock 4 controller
Improved Linux driver for Logitech steering wheels
Command-line utility to program PCsensor and Scythe USB foot switches
Open-source cross-platform software for Royal Kludge keyboards
Python library for Niimbot label printers via the reverse-engineered protocol
CUPS driver and tools for Phomemo thermal printers
LUFA firmware emulating the Pokken Pro Pad to automate Nintendo Switch input
Linux tool to control PS5 DualSense controller features
DualSense features (adaptive triggers, haptics, LEDs) and Xbox 360 emulation on Windows
Add modern XInput USB controller support to the original Xbox
Windows API for the PS5 DualSense controller via reverse-engineered HID reports
Xbox 360 userspace driver for Linux
XInput library making USB-capable Arduino boards act as Xbox controllers
Linux GUI for the Elgato Stream Deck
Open-source receiver for the Nintendo WaveBird wireless GameCube controller protocol
Use Nintendo Switch Joy-Cons as a virtual Xbox 360 controller on Windows
Handheld Daemon to configure controllers, RGB and TDP on handheld PCs
Multi-brand mouse web driver over WebHID for Razer, Logitech and other mice
Translates DualSense input to XInput for PC games
.NET library to drive Elgato Stream Deck hardware directly
DIY 6-DOF mouse that emulates a 3Dconnexion SpaceMouse over USB
Toy Pad emulator for LEGO Dimensions
Mod patcher for Meta Quest apps
Linux force feedback driver for Thrustmaster wheels
Arduino code that emulates the Game Boy Printer over the link cable protocol
Linux driver for Fanatec wheels and pedals
Control USB presence lights (Kuando, Embrava, Luxafor, ThingM and more) from CLI or web API
Cross-platform Wii Remote access library
Driver and notes for using the Xiaomi Bluetooth gamepad on PC
Maintained fork of joycontrol for emulating Switch controllers
Keyboard and mouse input for Xbox One streaming on Windows via emulated controller
Control Redragon gaming mice from Linux, BSD and Haiku
Read DualSense, DualShock 4, Joy-Con and Pro Controller input on PC
Tools for reverse engineering and reflashing the Google Stadia controller
Realtime RGB LED driver for Linux supporting ROCCAT and other keyboards and mice
Joy-Con input driver for Linux (userspace)
App to control an Elgato Stream Deck on Linux
Unofficial Corsair Link plugin for Fan Control supporting Corsair controllers and AIOs
Use the Wii U GameCube controller adapter on Linux
Open-source Nintendo Wii Remote Linux device driver
microSD adapter that fits the PlayStation Vita game card slot
Dreamcast controller and VMU emulator on RP2040 over the Maple Bus
Razer mouse configuration library and tools for Linux (DPI, LEDs, profiles)
Control RGB lighting on GMMK, Redragon and other keyboards on Linux
Bluetooth audio driver for the Nintendo Switch
Linux replacement for Lian Li L-Connect 3: fan, RGB and LCD control from USB captures
Reverse engineering the Nintendo WaveBird wireless controller protocol
Linux CLI to control per-key RGB on MSI laptop keyboards
Windows and Linux driver in Python for the NZXT Hue+ lighting controller
Linux drivers for Razer Chroma devices with all lighting modes
Native Linux port of the Thermalright LCD Control Center
Reverse engineering and custom firmware for POK3R and related keyboards
Steam Deck plugin for XREAL/Rokid/VITURE AR glasses head tracking using reverse engineered IMU drivers
Tool for pairing and managing Logitech Unifying receivers and devices on Linux
Node.js library for driving Elgato Stream Deck hardware over HID
Brings DualSense adaptive triggers and haptics to Flydigi Apex 4/5 controllers
Proof of concept for DualSense haptics over Bluetooth
Xbox controller emulation for DualSense, DualShock 4, Pro Controller and Joy-Cons
Use Nintendo Switch Joy-Cons in the browser via WebHID
Qt app on Linux to manage OBSBOT webcams including AI tracking
Python driver for Nintendo Switch Joy-Cons
Virtual USB-to-Bluetooth bridge for DualSense and DualSense Edge controllers
Taps the Game Boy LCD data bus to capture its video output
Use a DualShock 4 controller on the PS Vita
Linux user-space drivers for Huion graphics tablets
Arduino Game Boy cartridge reader and writer that dumps ROM and save RAM to SD
Turns the Xiaomi Bluetooth voice remote into a Windows microphone
Standalone Game Boy Printer emulator compatible with all official printer-enabled games
OpenHMD fork with reverse-engineered Oculus Rift CV1 and Rift S tracking
Read and write flash on Sinowealth 8051-based HID keyboards and mice through the ISP bootloader
Open screen control for AOOSTAR mini PC displays
CLI and library to control Logitech Litra Glow and Beam lights over USB HID
Control a DualSense controller from Python
Lightweight open tool and SDK to manage a Stream Deck without Elgato software
Database of mechanical keyboards with Sonix MCUs for QMK porting
Xbox 360 controller emulation driver for the Xiaomi Gamepad with vibration
Linux driver for the Thrustmaster T150 steering wheel
Python script to set Logitech G213 Prodigy keyboard colors without G Hub
User-mode Windows driver for original Xbox controllers with XInput and DirectInput
CLI to get and set Apple Studio Display brightness from Linux
libusb userspace driver for the Logitech G13 gameboard
macOS app for Elgato Key Light control beyond Control Center
Node.js API for Loupedeck and Razer Stream controllers
Linux kernel driver for Logitech G710 keyboard G-keys and backlight
Flashable Game Boy Camera cartridge PCB
Use the PS Vita as a USB game controller
Cross-platform N64 flashcart ROM uploader with USB debugging for 64drive, EverDrive and SC64
Stream Deck control software for developers on Linux
Talks to an Xbox One controller directly via its raw USB stream on Linux
ESP32 bridge for the Xiaomi Bluetooth Remote 2 Pro fixing key mapping on Windows
Linux configuration tool for Logitech G300/G300S mice
Linux support for the OLED screen of SteelSeries Apex Pro, 5 and 7 keyboards
Key binding utility for all 16 buttons of the Logitech G600 mouse on Linux
Reverse engineering the Dierya/Kemove DK63 keyboard
Utility to configure Glorious Model O/D mice on Linux/BSD
Lightweight Razer peripheral initialization without Synapse
Turns ATmega32u4 Arduinos into Nintendo Switch-compatible gamepads
WebHID explorer for the DualSense controller HID reports
Linux hwmon driver for Aquacomputer pumps and fan controllers, partly mainlined
FOSS reimplementation of the Logitech Unifying protocol
Node.js driver for the Logitech G29 racing wheel: inputs, LEDs and force feedback
Collection of tools for the Logitech HID++ protocol
.NET library for the Nintendo Wii Remote
Use Bluetooth controllers from other consoles on the PS Vita
G-key macro support for the Logitech G910 keyboard on Linux
Linux daemon to map the side keypad of Razer Naga mice
GBxCart RW device for dumping Game Boy ROMs, backing up saves and flashing carts
Key mapper for the 8BitDo Retro Mechanical Keyboard
Reverse engineering of the G305 mouse by Logitech
Dreamcast-to-USB gamepad converter for Raspberry Pi Pico speaking the Maple Bus protocol
Research into Nintendo Switch 2 controller protocols
Nintendo 64 CIC lockout chip clone
CLI control of Gigabyte M32U monitor settings over USB, replacing OSD Sidekick
Linux app to control Elgato Key Lights over their local HTTP API
Unofficial LED control API for Cooler Master MasterKeys keyboards
Reads SEGA Aime and Konami cards with Android NFC for arcade card readers
Portable Game Boy Printer emulator that stores PNG images on SD card
Enables the extra macro keys on SteelSeries Apex keyboards under Linux
Linux script remapping Logitech M720 mouse buttons over HID++
SteamVR driver for the HTC Vive Pro 2 on Linux
Lo-fi portable video recorder built around a Game Boy Camera cartridge
Linux kernel hwmon drivers for NZXT and other AIO liquid coolers
Rust library for interacting with Elgato Stream Deck hardware
Control DualSense adaptive triggers on Linux and Windows with GUI and C++ API
Arduino emulator for Thrustmaster T300 steering wheel rims
Golang API for the Elgato Stream Deck hardware
Library to encode and decode Joy-Con Bluetooth packets
macOS DriverKit driver for Nintendo Switch 2 Joy-Cons
Reverse-engineered Razer mouse USB/Bluetooth protocol for configuration on macOS
Wi-Fi adapter that extracts photos from a Game Boy Camera
Python library for the DualSense controller
Linux RGB LED effects for the ROCCAT Vulcan 100/120 keyboards
API to interact with the Elgato Stream Deck over USB HID
Linux driver for MonsGeek/Akko magnetic keyboards
Uses any Bluetooth gamepad on a Nintendo Switch via a Raspberry Pi Pico W
Game Boy Printer emulator that serves received data over Wi-Fi
libusb-based driver for Elgato Stream Deck devices
Linux userspace drivers for XP-Pen, Huion and Gaomon tablets and pen displays
Web app that decodes and renders Game Boy Printer data dumps
ViGEm adapter for the Xiaomi Gamepad
GameCube controller adaptor for the N64
Linux CLI to configure the SteelSeries Rival gaming mouse
Linux CLI support for Elgato 4K capture cards
Python driver and daemon for Thermaltake Riing fans and pumps on Linux
Linux configuration app for GameSir controllers and Logitech mice
Experimental userspace replacement for OpenRazer
Emulates a Game Boy Printer with an ESP32
Read ROM and read or write save RAM on Game Boy cartridges
Truly Ergonomic keyboard firmware hacking
Linux alternative to Insta360 Link Controller for PTZ webcams
Cross-platform CLI for Glorious Model O/D Wireless mouse settings
Protocol notes and code for YHK cat/rabbit mini thermal printers
Control Ducky keyboard RGB lighting
Control the OLED screens on SteelSeries and other devices with Lua scripts, cross-platform
Interface between the Game Boy Camera and ESC/POS thermal printers
Wiimote implementation using WebHID
Linux driver for the Flydigi Vader 5 Pro gamepad with gyro and back buttons
Userspace USB driver for the Corsair H150i PRO AIO cooler
IOKit wrapper for Joy-Con and Pro Controller on macOS
Windows library for controlling lights on Corsair RGB keyboards over USB
TypeScript interface for the DualSense and DualSense Access controllers
SteelSeries device support utilities for Linux
Unofficial Azeron keypad software for Linux
Open implementation of the Corsair Link protocol for coolers and fans
Print to Brother PT-P710BT label printers over Bluetooth
Linux GUI controller for the OBSBOT Tiny 2 webcam
Tool to read sensors from Corsair RMi power supplies
Local-first Logitech Options+ alternative for Windows using HID++
Clean-room reverse engineering of the Xbox MN-740 Wireless Bridge
Tools for reverse engineering Elgato Cam Link devices
Linux driver for the temperature display on DeepCool AK620 Digital CPU coolers
Open-source configurator for the Zuoya GMK87 keyboard
Tools and GUI to connect Nintendo Switch 2 controllers to PC
Linux software for Ajazz keyboards such as the AK820 Pro
Advanced Linux driver for Razer Chroma hardware with multi-layer animations
Open-source USB to Game Boy link cable adapter for Raspberry Pi Pico
ESP8266 device that emulates the Game Boy Printer and exposes received images over Wi-Fi
Reconstructing a dead handheld's USB protocol by desoldering and dumping its flash
Remap the buttons on a Blackmagic Design Speed Editor
Web tool to change Joy-Con and Pro Controller body colors in SPI flash
Browser-based open-source configurator for Royal Kludge keyboards
Print arbitrary images on a real Game Boy Printer from an SD card
Linux Fn-key switcher for Logitech K810/K811 keyboards
Read and write Lego Dimensions tags and interact with the portal
Use Logitech Trueforce in any game with telemetry-based force feedback
GTK app to control NZXT Kraken AIO cooler fans, pump and lighting on Linux
Game Boy Printer emulator that prints on a Phomemo T02 thermal printer
Connect 8BitDo controllers to the PS Vita
Android app to manage a Game Boy Camera gallery over USB serial
Tray app tracking battery levels of wireless Logitech devices
Linux manager for the Ulanzi D200 stream deck
Database of microscope images of decapped Game Boy chips
Reverse-engineered MiraBox StreamDock communication protocol
Adds Wiimote support to the PS Vita
Enables full DualSense features (adaptive triggers, haptics, gyro) over Moonlight streaming
Nintendo Switch 2 controller bridge app for macOS
Arduino library for driving the Game Boy Printer
Reverse-engineered HID protocol of Kreo Hive 65 keyboard for Linux
Linux kernel driver for the Corsair Commander Pro fan and RGB controller
Linux hwmon driver for Corsair RMi/HXi PSUs over their USB interface (mainlined)
Linux hwmon driver for Corsair RMi and HXi power supplies
Razer Linux kernel drivers
Custom QMK firmware for the Royal Kludge R75
Flipper Zero app to emulate the Lego Dimensions ToyPad via USB
Linux settings app for Logitech MX Master mice: buttons, gestures, wheels and haptics
Use SteelSeries Apex keyboard macro keys on Linux
Smaller flashable re-creation of the original Game Boy Camera
CLI control for Glorious wired mice settings and RGB
Control SteelSeries Apex keyboards on GNU/Linux
Linux utility to manage Flydigi controller configuration
Protocol analysis and wrapper library for the Lego Dimensions Gateway (toy pad) peripheral
Re-creation of Nintendo 64 schematics for a portable board layout
Insta360 Link 1/2 webcam controller for Linux
GUI and CLI controller for the OBSBOT Tiny 2 on Linux
C# library for Sony PS2/PS3 Buzz USB controllers on Windows
Reverse engineering Insta360 Link webcam firmware and UVC control protocol
Reads Logitech Driving Force racing wheels on an ESP32-S3 over USB host
ViXEn, Xbox (XInput) USB controller support for the PS Vita
Unofficial Windows app using a Switch 2 Pro Controller directly over Bluetooth
Portable Linux/macOS tool for the Retroactive 64drive flashcart
Python control of OBSBOT Tiny 2 AI modes
Reverse engineering and USB HID driver for the JVS arcade protocol
Reverse-engineered Linux config utility for the UtechSmart Venus Pro mouse
8BitDo controller customization software for Linux/macOS
Use Nintendo Switch 2 Joy-Cons on PC
Python daemon for Logitech G19 keyboard LCD, keys and backlight on Linux
libusb CLI to set Logitech G400 mouse DPI and polling rate
Reverse-engineered BLE protocol of a thermal pocket printer; Python CLI and web GUI
Tools for interfacing with Nreal Air glasses IMU and display modes
Reverse-engineered USB configuration tool for Royal Kludge RK61 keyboards
Documentation of the protocol used to configure 8BitDo controllers
Native Linux app for the AULA F75 keyboard: per-key RGB, remapping and macros
Reverse-engineered controller for Razer DeathAdder White DPI, lighting and polling rate
Game Boy link-cable printer emulator by stacksmashing
Control extra features of the OBSBOT Meet 4K camera on Linux
Open, Linux-native reimplementation of Logitech G HUB
Python utility to display GIFs on SteelSeries keyboard OLEDs
Wireless Switch 2 controllers (Joy-Con 2, Pro 2, NSO GameCube) on Linux
Unofficial Razer plugin for Fan Control adding Razer fan controller support
Unofficial unsigned Windows 10 driver for the Logitech F710 wireless gamepad
Native macOS menu bar app controlling Razer mice over USB HID without Synapse
Linux CLI for Tryx Panorama SE AIO cooler display via reverse-engineered protocol
G15 daemon, macros and LED control for Logitech G110 and other keyboards on Linux
Open toolkit for Razer products with RGB control and a web UI
Flydigi Vader 3 Bluetooth driver for GNU/Linux
Python CLI for the SteelSeries Apex 7 TKL keyboard on Linux
Game Boy Printer emulator for Flipper Zero
Reverse-engineered Canon PIXMA G3010 macOS print/scan driver in Rust
Native Linux control for CORSAIR XENEON EDGE touchscreen
Valve Index and HTC Vive base stations powered on/off over BLE
Full schematic and gerbers for the Nintendo Game Boy Printer PCB rev 02
Reverse-engineered Logi Options+ agent IPC protocol to switch multi-host devices
Arduino interface for the Dreamcast's proprietary Maple Bus
Unofficial Linux tools for Logitech MX Master 4/3S mice and MX Keys
Linux control center for NZXT Kraken AIO coolers via reverse-engineered protocol
User-space OpenRazer for Windows controlling Razer keyboards, mice and mousepads without Synapse
Unofficial Xbox One controller driver for Mac OS X
Unofficial SDK for Razer hardware on macOS
Reverse-engineered Carrera Digital slot car IR controller protocol
Scripts to enable Switch 2 Pro/GameCube controllers via USB
Reverse-engineered driver reading Corsair K95 gaming, media and control keys
Lightweight replacement for Logi Options+ with haptics, force sensor and SmartShift support
Direct PC to Game Boy Printer interface over Arduino
Library making HID-capable Arduinos emulate a DualShock 4
Swift library for interfacing with the Elgato Stream Deck
Tools used to reverse engineer the Corsair HID protocol
Android library parsing IMU data and controls of XREAL One glasses
Wakes a Nintendo Switch 2 via ESP32 BLE beacon, reverse-engineered
Reverse-engineered userspace driver for the ASUS ZenVision lid OLED display on Linux
Enables macro keys on Razer BlackWidow keyboards under Linux
Open-source hardware compatible with the Stream Deck USB protocol
C# Stream Deck client talking to the device over HID
Game Boy Camera replica built without the proprietary MAC-GBD chip
Web tool toggling the Logitech K810 keyboard's Fn keys via WebHID
Changes hidden global settings of Logitech racing wheels
Reverse-engineered gaming mouse HID protocol to configure it on Linux
Reverse-engineered Goodix SPI fingerprint sensors (incl. QSEE enclave) for Linux
Swaps the upper Fn keys on the Logitech K380 keyboard
Sony DualSense browser API using WebHID
Notes and tools for the Steam Controller 2: HID reports and firmware-update protocol
Unofficial Linux interface for the Elgato Stream Deck
Reverse engineering the Game Boy Printer, Pokemon Gen I/II trading and IR protocols
Sniffs link-cable packets between a real Game Boy and Game Boy Printer
Reverse-engineered Game Boy Printer from The Ben Heck Show
Unofficial firmware updater for Logitech Bolt receivers on macOS and Windows
Digital Game Boy Printer core for the Analogue Pocket openFPGA platform
Reverse-engineered CUPS driver for the Dell 1320c / Fuji Xerox C525A printer
Unofficial userland library for the Sony DualSense and DualShock 4 controllers
Data logger intercepting analog images from a Game Boy Camera
C++ driver for XREAL Air 2 Ultra IMU, stereo camera and calibration
Code to drive the Game Boy Camera's Mitsubishi M64282FP sensor directly
Controls Razer Synapse profiles from external programs
USB driver and Rust dashboard for Thermalright Vision cooler LCD displays
Reverse engineering the Ajazz AKP153 / Mirabox stream deck devices
Library for interacting with Elgato Stream Deck devices
Linux userspace driver for the TourBox NEO controller
Open-source driver for the Kuando Busylight Alpha
Niimbot label printer client based on the reverse-engineered protocol
Print labels on Brother P-touch printers from Linux using the reverse-engineered protocol
Reverse-engineered USB protocol for Saitek Cyborg gaming lights
Reverse-engineered macro protocol for SteelSeries Prime mice
Cross-platform unofficial userland library for the PlayStation DualSense and Access controllers