Repository navigation
Releases
v0.1.1
What's Changed
- fix(gadget): write absolute configfs symlink targets by @adeelahmad in #30
Full Changelog: v0.1.0...v0.1.1
v0.1.0
First GadgetCast prerelease. Plug a Raspberry Pi into a computer and it shows up as a USB webcam, microphone and speaker, fed from a browser or phone on your network.
What's in it
- USB gadget at boot: UVC webcam (MJPEG) + UAC2 mic/speaker (
gadgetcast gadget up, run bygadgetcast-gadget.service). - Browser or phone mic → the host's USB mic (WebRTC, Opus).
- Browser camera or screen → the host's USB webcam (H.264 or VP8, re-encoded to MJPEG).
- Optional: hear the host computer's sound on the sending device (USB speaker → browser).
/sendphone page: one button, PIN pairing, truthful on-air tally.- HTTPS required; PIN pairing with a per-address lockout (5 wrong PINs → 1 min, doubling to 1 h).
- Studio UI meets WCAG AA contrast (axe-core: 0 violations).
Test level, honestly: unit tests plus a headless-Chromium end-to-end run where audio and video RTP reach the GStreamer pipeline input. Not yet tested on a Pi plugged into a real host. Please file a hardware report (issue template) if you try it.
Install:
curl -fsSL https://github.com/adeelahmad/gadgetcast/releases/download/v0.1.0/install.sh | sudo shWith no full release yet, the installer picks the newest prerelease. The auto-update timer only follows full releases, so a prerelease install stays put.
Rollback: sudo sh install.sh --uninstall removes gadgetcast, its services and the update timer. Later releases roll back with GADGETCAST_VERSION=<older tag>.
Flash a Pi (Zero 2 W, 3, 4, 5): download gadgetcast-v0.1.0-arm64.img.xz, open it in Raspberry Pi Imager ("Use custom"), set Wi-Fi/user/SSH in the customisation screen, flash, plug the Pi's USB data port into the computer, then open https://gadgetcast.local. The pairing PIN is in gadgetcast-pin.txt on the boot partition. The image was boot-tested in QEMU only (gadgetcast starts on first boot); USB gadget mode needs real hardware. A 32-bit image for the original Pi Zero will follow; on those, use install.sh.
Checksums: SHA256SUMS.
What's Changed
- Add CLAUDE.md with repo guidance by @adeelahmad in #1
- Pi server (REST + WebSocket signaling), Go CI, and Studio web UI by @adeelahmad in #3
- One-line install, one-click releases, automatic updates, flashable Pi image by @adeelahmad in #2
- Launch-ready README, contributor docs and social preview by @adeelahmad in #4
- Configure the Pi image from Raspberry Pi Imager or a boot-partition env file by @adeelahmad in #10
- Support the original Pi Zero / Zero W (armv6 image + CI) by @adeelahmad in #11
- fix(install): enable USB gadget mode on stock Raspberry Pi OS by @adeelahmad in #12
- feat(gadget): create the USB webcam + mic + speaker at boot by @adeelahmad in #13
- fix(ui): make clickable rows keyboard-operable by @adeelahmad in #14
- feat(audio): play a paired browser's mic into the USB microphone by @adeelahmad in #15
- fix(security): rate-limit PIN guesses per remote address by @adeelahmad in #16
- fix(ui): on-air tally follows who is on air, not the pipeline by @adeelahmad in #20
- chore(deps): take Pion, DTLS, STUN and x/crypto security updates by @adeelahmad in #21
- feat(ui): /send, a one-button phone page for sending the mic by @adeelahmad in #23
- chore(deps): bump golang.org/x/net from 0.54.0 to 0.55.0 by @dependabot[bot] in #24
- feat(video): browser camera or screen becomes the USB webcam by @adeelahmad in #25
- fix(a11y): WCAG AA contrast, landmarks and focusable scroll areas by @adeelahmad in #26
- fix(install): install the newest prerelease when there is no full release by @adeelahmad in #27
- feat(audio): hear the host computer's sound on the sending device by @adeelahmad in #28
- fix(install): don't order gadgetcast after cloud-init.target by @adeelahmad in #29
New Contributors
- @adeelahmad made their first contribution in #1
- @dependabot[bot] made their first contribution in #24
Full Changelog: https://github.com/adeelahmad/gadgetcast/commits/v0.1.0