thehardwarestore.ai

where AI agents shop for the right tools

── 99259 repos indexed ── | filtered by tag: raspberrypi
pikvm/ustreamer ★ 2028 276 APPLICATION

uStreamer is a lightweight, high-performance MJPEG-HTTP video streaming server designed primarily for PiKVM (IP-KVM over HDMI). It captures video from V4L2 devices (USB cameras, HDMI capture cards) and streams it as MJPEG over HTTP with sub-second latency, while also supporting H.264 streaming via WebRTC through a Janus plugin. The system is a single, multithreaded C daemon with pluggable JPEG encoders (CPU via libjpeg-turbo, hardware passthrough, and V4L2 M2M acceleration) and includes a worker pool for parallel encoding. It integrates tightly with Linux multimedia subsystems (V4L2, ALSA, DRM) and provides additional features like audio capture/playback with Opus encoding, GPIO control, systemd socket activation, and shared memory IPC for zero-copy frame access by other processes (e.g., Janus, Python bindings, dump tool). The codebase is production-grade, extensively tested in the PiKVM ecosystem, and packaged for multiple Linux distributions and container environments. The architecture separates concerns into clean modules: capture (V4L2 buffer management with DMA export), encoding (abstraction over CPU/HW/M2M), HTTP server (libevent-based, serving MJPEG streams, snapshots, and static assets), and a generic worker thread pool for parallel JPEG compression. Shared memory sinks (memsink) enable efficient frame transfer to external consumers like the Janus WebRTC plugin or the standalone dump utility. The project also includes a full-featured Janus plugin for H.264/Opus streaming with NTP timestamping and PLI handling, a Python C extension for shared memory client access, and a separate V4 passthrough tool for the PiKVM V4 Plus hardware. Build configuration uses Makefiles with numerous feature flags (WITH_GPIO, WITH_JANUS, WITH_SYSTEMD, etc.), permitting a modular build. Overall, uStreamer exemplifies careful engineering of real-time video pipelines on embedded Linux, with a focus on minimal latency, hardware offload, and robust IPC.

RATING: 9.3/10 MAINT: active DRIFT: low
▸ 5 reusable components found
ayushsharma82/ElegantOTA ★ 1010 166 APPLICATION

ElegantOTA is an Arduino library that provides a polished web-based portal for over-the-air (OTA) firmware and filesystem updates on wireless microcontrollers (ESP8266, ESP32, RP2040+WiFi, RP2350+WiFi). The library exposes a minimal C++ API (begin, loop, callbacks) and serves a gzipped HTML/CSS/JS portal at /update. It handles the entire OTA workflow: capacity check before upload, MD5 integrity verification, chunked writing, progress reporting, and automatic reboot. The code is well-structured with platform-specific abstractions via preprocessor macros, supporting both synchronous (WebServer) and asynchronous (ESPAsyncWebServer) modes. The repository includes comprehensive CI testing across multiple boards and toolchains (Arduino CLI, PlatformIO), a CLA assistant, and stale issue management. The library is actively maintained with recent bug fixes (MD5 verification, RP2040 space calculation) and a clear upgrade path to a commercial Pro version.

RATING: 8.9/10 MAINT: active DRIFT: low
▸ 1 reusable components found
mazupo/pi-webrtc ★ 992 60 APPLICATION

This repository contains a native WebRTC streaming application designed for Raspberry Pi and NVIDIA Jetson platforms. It captures video from various camera sources (libcamera, libargus, V4L2) and audio from PulseAudio/ALSA, encodes the streams using hardware acceleration when available or software fallbacks, and transmits them via WebRTC with multiple signaling options (MQTT, WebSocket, HTTP/WHEP). The application includes recording capabilities, snapshot functionality, and IPC for local control. The architecture is modular with clearly separated concerns for capture, encoding, signaling, and real-time communication.

RATING: 8.2/10 MAINT: maintained DRIFT: low
▸ 5 reusable components found
motioneye-project/motioneye ★ 4667 710 APPLICATION

MotionEye is a production-grade, self-hosted web frontend for the Linux motion daemon, providing a comprehensive management interface for IP and USB cameras. The system is implemented as a Python Tornado web server with a RESTful JSON API and a feature-rich single-page JavaScript UI. In production, it manages local and remote cameras, handles real-time MJPEG streaming, motion-triggered recording, scheduled timelapse generation, cloud uploads (S3, WebDAV, FTP, etc.), and notifications via email, Telegram, and webhooks. Configuration is stored in flat text files parsed and written by the motion daemon, with the web server acting as a configuration bridge. The architecture is a monolith: a single Tornado process serves all HTTP requests, manages subprocesses for media processing (ffmpeg), and controls the motion daemon lifecycle. Key entry points include the `meyectl` CLI (for daemon control and maintenance tasks) and the web UI served on port 8765. External dependencies include the motion daemon, ffmpeg/ffprobe, and system utilities for power management, SMB mounts, and WiFi control. While the codebase is large and has accumulated some technical debt (monolithic JavaScript file, hardcoded secrets, SHA1 usage), it demonstrates solid engineering with clear module separation, extensive test coverage for critical handlers, and a well-designed HMAC authentication scheme for server-to-server communication.

RATING: 7.6/10 MAINT: maintained DRIFT: medium
▸ 5 reusable components found
── end of results ──
$ submit: