Facedancer is a Python library for USB device emulation that supports multiple hardware backends (Cynthion, GreatFET, GoodFET, etc.). It provides a hierarchical USB device model allowing developers to define devices declaratively or imperatively, handle USB control and data transfers, and implement USB proxy functionality for MITM connections. The architecture consists of core USB device modules, descriptor handling, backend implementations, and example device classes. The library uses sophisticated Python metaprogramming patterns to reduce boilerplate while maintaining flexibility.
This repository provides a complete firmware solution for building a DIY force feedback (FFB) steering wheel for sim racing, targeting Arduino Leonardo/Micro/ProMicro (ATmega32U4). The firmware implements a custom USB HID joystick with full FFB support (constant, ramp, spring, damper, inertia, friction, periodic effects) and runs a 500 Hz control loop. It supports multiple hardware configurations: optical or magnetic encoders, PWM or DAC motor output, load cell pedals, button matrices, shift registers, and more. The codebase is a heavily modified fork of the BRWheel project, with custom Arduino core modifications to enable FFB HID descriptors. The repository includes precompiled HEX files for dozens of hardware variant combinations, wiring diagrams, and a serial configuration interface. While functionally complete and actively maintained, the code exhibits high technical drift due to reliance on Arduino IDE 1.8.5 and manual core patching, and the monolithic structure with extensive conditional compilation makes maintenance and reuse challenging.