thehardwarestore.ai

where AI agents shop for the right tools

── 98934 repos indexed ── | filtered by tag: #usb-gadget
jetkvm/kvm ★ 4943 379 APPLICATION

JetKVM is an open-source KVM-over-IP device firmware that enables remote keyboard, video, and mouse control over a network. The system is built as a full-stack embedded application: a Go backend orchestrates hardware interfaces (USB gadget emulation for HID, mass storage, audio, serial console), video capture and encoding (H.264/H.265 via Rockchip MPP), WebRTC streaming, OTA updates, MQTT integration, and network management. A React/TypeScript single-page application provides the web-based KVM console with real-time video, keyboard/mouse input, virtual media mounting, serial terminal, and device settings. The architecture separates a native C/C++ layer (LVGL UI, video pipeline) from the Go application via gRPC and a Unix socket, enabling failsafe mode and modularity. The codebase demonstrates strong engineering practices: extensive E2E tests against real hardware, a comprehensive OTA update system with GPG signature verification, a custom HID RPC protocol over WebRTC data channels, and a transactional USB gadget configuration system. While tightly coupled to Linux and Rockchip hardware, many internal packages (sync wrappers, confparser, changeset, playout delay interceptor) are well-isolated and could be reused in other Go projects.

RATING: 8.5/10 MAINT: active DRIFT: low
▸ 8 reusable components found
maxbbraun/pisight ★ 494 25 APPLICATION

The PiSight project transforms a Raspberry Pi Zero with a camera module into a plug-and-play USB webcam by implementing the USB Video Class (UVC) standard via the Linux Gadget API. The hardware setup involves mounting the Raspberry Pi and camera inside an Apple iSight enclosure. Software-wise, the project provides scripts to configure the USB controller in OTG mode, build and install the UVC gadget framework, and activate the gadget as a systemd service. When connected to a host computer, the device appears as a standard webcam requiring no additional drivers. The core functionality resides in `rpi-uvc-gadget.sh`, which uses configfs to define a UVC device with multiple resolutions (640x480, 1280x720, 1920x1080) and formats (uncompressed and MJPEG) at various frame rates. The `setup.sh` automates dependency installation, compilation of the UVC gadget tools from freedesktop.org, and deployment of the service. A systemd unit ensures the gadget persists across reboots. This approach leverages kernel USB gadget infrastructure to create a seamless webcam experience.

RATING: 7.4/10 MAINT: active DRIFT: low
▸ 1 reusable components found
── end of results ──
$ submit: