01
EverLive
Native Linux Driver for AVerMedia GC573 · C, V4L2, PCIe DMA, PipeWire, SDL2
Problem
AVerMedia had not shipped a Linux driver for their GC573 flagship capture card in over 7 years. The proprietary binary blob (aver_xilinx.o) failed on cold-boot states,DMA transfers delivered only black frames (0x10 0x80 YUYV pattern), and audio streams drifted into XRUNs within minutes due to clock jitter.
aver_xilinx.o: cold-boot, GPIO reset missing
dma: YUYV 0x10 0x80 — black frames
pipewire: XRUN, clock jitter, 48 kHzopen_gc573.Engineering solution
Hardware reverse engineering
Disassembled the vendor blob to extract cold-boot GPIO reset sequences for the IT6664 HDMI splitter and IT6805 receiver. Implemented
I2Cbus initialization and FPGA validators for native Artix-7DMAringbuffers.Edge-case timing and FPGA pipelines
Extended
V4L2mode tables and FPGA validators for anamorphic signals (3840x1080@120Hz with 2x vertical stretch) and CRT Super-Res (1920x240p in dual-pixel DDR mode).Audio subsystem
Analyzed hardware clock drift between the capture card oscillator and the host sound card. Integrated
PipeWire's delay-locked loop resampler (pw-loopback) to remove buffer underruns and audio pops at 48kHz/10ms latency over 24/7 sessions.Live HDR10 and colorimetry switching
Hot-swapping FPGA color space converter matrices during active
DMAstreams without triggering VIP resets.Community support
Full compatibility across Arch/CachyOS, Fedora, and Ubuntu/Mint. Automated cross-distro installer with
DKMSsupport for kernel updates.
Result
A GPL-2.0 kernel driver and low-latency C/SDL2 display renderer (1–2ms hardware latency) that outperforms the official Windows driver in latency, feature set (native Wayland, HDR live-switching), and stability. 26 GitHub stars, in use by the retro-gaming and streaming community.
~/Avermedia-GC573-Linux main
❯ sudo ./open_gc573/load.sh
[*] Checking loaded modules and unloading them…
[*] Loading kernel dependencies (v4l2-dv-timings, videobuf2, …)…
[*] Loading open_gc573 (open_gc573.ko)…
[+] open_gc573 loaded
[*] Waiting for HDMI signal lock (max. 5s)…
[+] Signal locked on /dev/video2
=== PCI driver binding ===
0a:00.0 Multimedia video controller: Avermedia Technologies Inc Device 0054
Subsystem: Avermedia Technologies Inc Device 5730
Kernel driver in use: open_gc573
Kernel modules: open_gc573
=== Kernel messages ===
[16016.172546] open_gc573 0000:0a:00.0: registered multicolor LED device 'gc573:rgb:status'
[16021.866601] open_gc573 0000:0a:00.0: registered video2
[16021.866641] open_gc573 0000:0a:00.0: hardware transport, HDMI chips, and capture endpoints initialized
[16113.096854] open_gc573 0000:0a:00.0: IT6664 fixed upstream EDID published checksums=11/ff
=== V4L2 devices ===
AVerMedia Live Gamer 4K GC573 (PCI:0000:0a:00.0):
/dev/video2
~/Avermedia-GC573-Linux main 16sA load with the HDMI signal locked.