← Back to Sebiu Labs
WHEP Gateway — Changelog
Release notes for all versions. Setup guide · Buy license
New
- HP & NVIDIA boot compatibility — the live ISO now bakes in the nouveau/ACPI kernel quirks so HP z440 / Zbook and NVIDIA dGPU workstations boot cleanly on the first try, with a Safe Graphics fallback in the GRUB menu. The setup guide documents the BIOS settings (disable Secure Boot, enable USB boot, disable Fast Boot) some OEM machines need.
- Instant Replay (Ultra) — WebCodecs scrub, slow-motion and saved recordings in the replay player.
Fixed
- vMix NDI ingest stranding — each NDI channel start uses a fresh per-spawn receiver identity, so vMix's per-identity blacklist can no longer permanently strand a channel after a failed handshake or a gateway restart.
- RTMP/SRT restream keys persist — stream keys and SRT passphrases are no longer wiped when a channel is edited or re-saved.
- Media-pipeline correctness batch (12 fixes) — VAAPI on SRT-ingest channels with NDI/OMT output now starts; AJA/DeckLink SDI playout decodes its source ID; simple recording keeps capturing after an FFmpeg retry; WHIP-push recording produces valid MKVs; VP8 browser WHIP is negotiated down to H.264 instead of rejected; SRT-ingest WHEP output gets the BT.709 colour block (no more green/yellow tint); plus DVR status/playback fixes.
Download ISO (1.6 GB) →
Fixed
- FFmpeg-OMT now boots cleanly on Trixie — v1.10.0 shipped a stale FFmpeg-OMT binary that was built before the v1.9 base flip to Debian 13 and still linked against
libvpx.so.7. Trixie only ships libvpx.so.9, so the binary failed with "error while loading shared libraries: libvpx.so.7" on every first boot. This cascaded into "no supported input devices found", zero source discovery, all encoder probes returning exit 127, and gateways that couldn't ingest or encode anything. v1.10.1 rebuilds FFmpeg-OMT against debian:trixie + libvpx-dev (v9) so the binary links correctly.
- ISO build now refuses to bundle a pre-Trixie FFmpeg — new
readelf SONAME invariant in iso/build-iso.sh aborts the build if the FFmpeg binary has any NEEDED library matching libvpx.so.[678], libsrt.so.1.[0-4], libssl/libcrypto.so.1.[01], or libSvtAv1Enc.so.[12]. Stops the v1.10.0 regression class permanently.
For existing v1.10.0 installs
- If you already installed v1.10.0 and your gateway is missing encoders / sources, run
sudo ln -sf /usr/lib/x86_64-linux-gnu/libvpx.so.9 /usr/lib/x86_64-linux-gnu/libvpx.so.7 && sudo systemctl restart whep-gateway. Or just download v1.10.1 and reinstall.
ISO archived — download latest →
New
- Two-tier pricing: PRO and Ultra only — Standard SKU retired. New customers buy PRO (£45/mo or £900 lifetime) or Ultra (£75/mo or £1,500 lifetime). Existing Standard customers keep working forever — their key still validates and continues to gate the Standard feature set.
- 30-day trial now unlocks the full PRO feature set — NDI/SRT/WHIP ingest, NDI/OMT output, RTMP/SRT restream, 16 channels, 2,000 viewers per channel. Previous trials only granted Standard features, which made the trial less useful than the paid product the trial was meant to upsell.
- Trial-expiry lockout — when the trial ends or a paid licence expires, the gateway now stops all running channels and refuses new requests until a valid key is entered. The dashboard flips to a full-screen "License required" page with a paste-key field. Authoritative enforcement closes the previous loophole where channels kept running on an expired trial.
- Lock-state telemetry on /api/health — new
licenseStatus + licenseLocked fields plus a license.locked WebSocket broadcast so dashboards (including the bundled React UI) react to lockouts instantly instead of waiting for the next health poll.
Changed
- Feature-comparison table dropped to two columns — the Settings → License screen now shows PRO and Ultra only. Same simplification on the public pricing page.
- Auth middleware allowlist — lockout state still permits
/api/license/activate, /api/license/deactivate, /api/license, /api/health, /api/ca.crt so operators can recover by pasting a key without losing the recovery UI.
Migration
- Existing Standard customers: nothing breaks. Your existing key validates the same way and unlocks the same features it always did. Contact contact@sebiulabs.co.uk if you want upgrade pricing to PRO.
- Stripe Standard products archived — the public checkout no longer offers a Standard SKU. Pro and Ultra remain mailto-fulfilled until the new Cloudflare Worker bridge ships.
ISO archived (broken FFmpeg-OMT linkage — fixed in v1.10.1) — download latest →
New
- Debian 13 (Trixie) base — kernel 6.19.13 from trixie-backports. Native support for Intel Arrow Lake-S iGPU (8086:7d67), Lenovo Z890 / Intel I550c onboard NIC and other 2025-era hardware out of the box. No more DKMS workarounds.
- QSV multi-channel capacity confirmed — 12 simultaneous 1080p30 H.264 QSV channels verified on Arrow Lake-S iGPU. Production target for multi-source SDI broadcast workflows.
- "Web UI Access NIC" picker in wizard — dual-NIC operators (e.g. management LAN + dedicated 10G NDI LAN) explicitly choose which NIC's IP becomes the Web UI URL. Gateway still binds to all NICs — this is a display hint.
- "LINK-LOCAL" badge on Network Interfaces UI — amber pill on any NIC whose primary IPv4 is in 169.254.0.0/16. Operators on isolated NDI LANs know that the NIC is fine and using NM's APIPA fallback, not "broken".
wizard --network flag — re-run only the network screens (skip keyboard, hostname, password, GPU, TLS, NDI, install-to-disk).
Fixed
- NVIDIA NVENC on first boot — new
whep-nvidia-warmup.service triggers nvidia-modprobe -c 0 -u + nvidia-smi -L before whep-gateway starts. Forces CUDA context init synchronously so the encoder probe sees a fully warm driver. Eliminates the 30-second "GPU not supported" window after boot on NVIDIA boxes.
- Setup Complete advertised the wrong NIC's URL — on dual-NIC boxes the wizard's "Web UI: https://…" line used to show whichever IP the kernel enumerated first. Now picks the NIC that owns the default route, falls back to the first non-link-local IP, last-resort to link-local for single-NIC NDI-only appliances.
- Link-local fallback shipped by every NM-profile writer — previously only
install-to-disk wrote dhcp-timeout=30 link-local=4; net-plan and whep-network-fix stomped that on every replan with profiles missing both keys. Fixed on all three writers; CI gate enforces the pattern repo-wide.
- 5 helper tools displayed the wrong NIC's IP — cert-apply (which bakes the IP into the TLS cert SAN), install-decklink (SCP/SSH command hints), whep-kvm-recover, whep-network-doctor and whep-network-fix all hit the same kernel-enumeration bug. New shared
/usr/local/lib/whep-pick-ip.sh lib + every helper sources it.
- nvidia-caps udev rule shipped —
/etc/udev/rules.d/70-nvidia-caps.rules ensures the gateway daemon (running as whep-gw) can read /dev/nvidia-caps/* for NVENC session init.
ISO archived — download latest →
New
- AJA Corvid 88 Capture ULTRA — full GStreamer-based capture pipeline for AJA Corvid and Kona cards. Supports 10-bit v210 SDI with automatic format conversion. No FFmpeg AJA support needed — uses native NTV2 SDK via GStreamer ajasrc plugin.
- AJA Source Discovery — NTV2 device nodes (/dev/ajantv2*) now appear as selectable sources in the channel creation dialog. Three-tier detection: PCI hardware → NTV2 SDK → V4L2.
Fixed
- AJA not shown in channel dialog — frontend was missing ajaAvailable state from health API, so AJA sources never appeared in the dropdown even when detected.
- AJA device count always 0 — settings page now correctly counts NTV2 devices instead of only counting V4L2 devices.
- AJA source probe failure — FFmpeg probe was running against GStreamer-only NTV2 devices and marking them as no-video. Probe now skips FFmpeg for AJA NTV2 sources.
- GStreamer pipeline v210 format — Corvid 88 outputs 10-bit v210 but pipeline forced UYVY caps. Added videoconvert to handle any AJA output format.
ISO archived — download latest →
New
- DVR Recording & Playback ULTRA — record live channels to disk with configurable retention time and storage quota. Rewind any channel from the watch page — drag the timeline to scrub backwards, with 1x/2x/4x playback speed and instant seek (~50ms). Uses WebSocket + WebCodecs for DVR playback alongside live WebRTC.
- DeckLink Capture ULTRA — Blackmagic DeckLink SDI/HDMI capture card support. Auto-detected after driver install.
- AJA Capture ULTRA — AJA Kona and Corvid capture cards via V4L2. Auto-detected after driver install.
- Software RAID — setup wizard now offers RAID 0/1/5/10 when multiple disks are detected, recommended for DVR recording workloads.
- File Recording ULTRA — one-click MKV recording from the dashboard (REC button). Saves H.264+Opus to local storage.
Improved
- NDI timestamp handling — fixed regression where NDI sources would fail with “frame duplication too large” after removing wall-clock timestamps for OMT sources.
- Source probe resilience — channels no longer fail to start when source probe returns incomplete results; only confirmed audio-only sources are blocked.
- DVR seek precision — keyframe search scans up to 5 seconds forward to handle audio-before-keyframe segment layouts.
- Audio fade-in after DVR seek — 5-frame linear ramp eliminates Opus decoder convergence pops when rewinding.
ISO archived — download latest →
Alpha release — DVR playback, DeckLink and AJA capture are new features under active testing.
Fixed
- Install-to-disk boot failure — installed system would not boot from disk due to missing
grub2-common package (provides grub-install and update-grub), missing /usr/sbin in chroot PATH, and no NetworkManager connection profiles for disk boot.
- Setup wizard not launching — bash reads
.bash_profile before .profile; the live system’s .bash_profile prevented the wizard from running on first boot.
- SRT audio resync on reconnect — improved audio filter with
first_pts=0 for PTS normalisation and min_hard_comp_distance=100000 for faster jitter recovery.
Improved
wizard CLI command — type wizard at the console to re-run the setup wizard at any time.
- Git commit hash shown in dashboard header and settings page.
- Install-to-disk now regenerates machine-id, configures NetworkManager DHCP, disables OS prober, and verifies GRUB config.
ISO archived — download latest →
Fixed
- Channel status stuck on “Starting” — WebSocket
/ws endpoint required auth, but browsers cannot send auth headers on WS connections, so the WS was permanently dead and channel_status broadcasts never reached the frontend. Fixed by removing auth from /ws (read-only broadcast, no mutations).
ws.onerror killed polling — the WS error handler set backendOnline=false, which could pause the 3-second polling fallback. Fixed by making the health check the authoritative source for backend connectivity.
- Install-to-disk on mounted partition — the persist script auto-formats and mounts the target disk on live boot. Install-to-disk now stops services and unmounts the partition before repartitioning.
Improved
- Multiview auto-play — tiles now auto-assign running channels on page load instead of requiring manual selection per tile.
- Setup wizard hardening —
safe_addstr prevents curses crashes on small terminals, tty reopen fixes input on serial consoles, scrollable menus handle long option lists.
- Profile-based wizard launch replaces systemd service (eliminates getty conflict on tty1).
- Browser auth popup no longer appears for WHIP ingest endpoints.
New
- UEFI boot support — ISO now boots on both BIOS and UEFI systems with dual syslinux + GRUB EFI bootloaders
- Version number displayed in the browser dashboard header
- Mobile fullscreen support — fullscreen button now works on iOS Safari
Fixed
install_to_disk (underscores) now works as alias for install-to-disk
- Removing WHEP password while editing codec no longer prevents channel from starting
- UEFI install-to-disk correctly partitions GPT with EFI System Partition
- Static IP wizard — nmcli connection name parsing fixed
- AV1 frame stutter resolved — uses actual timestamps instead of fixed 33ms
- AV1 audio made optional with
-map 0:a?
Improved
- Codec fallback display — shows actual codec in use when configured codec unavailable
- Error toasts in dashboard when channel start/stop fails
- Auto-restart broadcasts status update to all connected browsers
ISO archived — download latest →
New
- WHIP Output (Alpha) — push channels to remote WHIP ingest endpoints (CDNs, streaming platforms, OME, etc.)
- Per-channel WHIP output configuration from the web UI — endpoint URL, bearer token, enable/disable
- Auto-reconnect with exponential backoff when WHIP endpoints go down
- REST API for WHIP output management (CRUD + start/stop)
- WHIP outputs reuse existing encoded tracks — zero extra CPU/GPU overhead
Improved
- Channel list now sorted alphabetically — no more jumping positions on refresh
- SDP codec negotiation constrained to channel’s actual codec — prevents remote servers picking wrong codec
Fixed
- SVT-AV1 v1.7.0 library symlink fix — ISO was loading system v1.4.1 instead of bundled v1.7.0, breaking AV1 encoding
- FFmpeg rebuilt with clean SVT-AV1 v1.7.0 linkage
ISO archived — download latest →
Fixed
- AV1 encoding now works correctly — upgraded SVT-AV1 to v1.7.0 (v1.4.1 had broken rate control)
- AV1 WebRTC playback fixed — upgraded Pion WebRTC to v4.2.9 for proper AV1 RTP packetization
- AV1 scene change detection enabled (scd=1) for better quality at lower bitrates
- Keyframe interval options limited to 1–2 seconds (appropriate for live WHEP streaming)
- OMT identity color matrix now correctly converted to BT.709 for SVT-AV1
ISO archived — download latest →
Fixed
- Install-to-disk now correctly removes all live-boot packages and initramfs hooks, enabling reliable disk boot
- Trial license resets automatically after install-to-disk so the 30-day trial starts fresh on the new system
- High-bitrate streaming stability on streams above 20 Mbps
- libvpx compatibility for VP8/VP9 WebRTC output
Improved
- Setup wizard streamlined — install-to-disk is now a separate CLI command (
install-to-disk)
- ISO file size reduced to 903 MB
ISO archived — download latest →
New
- License activation via Keygen.sh — activate monthly or lifetime licenses from the web UI
- 30-day trial with full functionality, no license key required up front
- Stripe-powered checkout with automatic license key delivery via email
- License key recovery page for retrieving keys by email
Improved
- Web UI redesign with cleaner settings panel and license management
- Improved SRT ingest stability on high-bitrate streams
ISO archived — download latest →
New
- AV1 and VP9 codec support for WebRTC output
- Hardware-accelerated transcoding — Intel QSV, NVIDIA NVENC, AMD AMF
- Multi-viewer: multiple browsers can watch the same channel simultaneously
Improved
- Reduced WebRTC glass-to-glass latency to under 200ms on local networks
- Better automatic codec negotiation with browsers
New
- Web-based dashboard for channel management and monitoring
- REST API for programmatic channel control
- Per-channel configuration — resolution, bitrate, codec settings
Improved
- More reliable OMT source discovery on complex networks
- Lower memory usage when running multiple channels
New
- HEVC (H.265) input support alongside H.264
- Audio passthrough — AAC and Opus output to browsers
- HTTPS support with self-signed certificate generation
Fixed
- Resolved intermittent black frames on stream start
- Fixed audio sync drift on long-running streams
Initial Release
- Debian 12 live appliance — boot the ISO and go
- OMT source auto-discovery on the local network
- WebRTC WHEP output — stream to any modern browser with no plugins
- H.264 transcoding with configurable bitrate and resolution
- Sub-second latency video delivery
- Simple web UI for basic configuration