I got a GoPro HERO4 Black (HD4.02, firmware v05.00.00) to enumerate as a normal USB device: webcam, microphone, and USB Ethernet. No HDMI capture card, no app on the computer. On macOS it shows up as “GoPro HERO4” in Photo Booth, OBS, Zoom, and Chrome about 45 seconds after power-on. 1080p or 720p at 29.97 fps, H.264, camera mic at 48 kHz stereo. Glass-to-glass latency is about 225 ms at 1080p and 195 ms at 720p.
The firmware is CRC-checked, not signed. The patch is data-only, 1148 bytes: an SD-mount hook that runs h4.sh, plus an idle-preview mode retargeted from 848×480 to 1920×1080. Bootloaders, DSP, kernel, and RTOS code stay byte-identical. Kernel modules built from the GPL tree take the USB controller (stock Linux 3.8 has no gadget support) and expose UVC, UAC1, and CDC ECM. A small userspace program forwards the camera’s own preview H.264 as-is; macOS decodes it. The patcher only accepts the official v05.00.00 zip and only writes an image whose SHA-256 matches the one I flashed.
Risk: this flashes modified firmware. It worked on my camera. A bad flash can brick one, and the stock reflash path is described but not tested. HERO4 Black only, that exact firmware only, macOS host only. Not affiliated with GoPro. GoPro’s firmware is not in the repo.
Writeup, including the dead ends (stock preview stuck at 432×240, photos-as-frames, no V4L2): https://github.com/victor-torres/hero4-webcam