Portfolio/Nintendo Switch & Tegra/Linux 4 Switch — L4T Fedora
Zone 02 · Portfolio · Project
Linux 4 Switch — L4T Fedora
Open-source desktop Linux on the Nintendo Switch. A real Fedora userland — hardware video decode, GPU acceleration and a full gaming/emulation stack — booted onto an NVIDIA Tegra X1 through the recovery exploit. I founded it; I still maintain it.
device Nintendo Switch / Switch Lite
SoC NVIDIA Tegra X1
role Founder & lead maintainer
Maintained

01
Overview
The Nintendo Switch ships an NVIDIA Tegra X1 — four Cortex-A57 cores, a Maxwell GPU, and a stack of fixed-function blocks (NVDEC, display, clocks) that NVIDIA only ever supported on their own downstream tree. Linux 4 Switch (L4S) takes that hardware and runs a real Fedora on it: a normal desktop, a normal package manager, GPU acceleration through nouveau/Mesa, hardware-accelerated video, and an emulator stack that turns the console into a small Linux PC.
None of this is a stripped demo image. It’s a maintained distribution: a kernel and BSP I keep building, a Fedora COPR of the userspace nobody else packages for aarch64-on-Tegra, and the CI/CD that ships all of it. The device boots through the Tegra recovery exploit into hekate, hekate chainloads U-Boot through L4T-Loader, and U-Boot hands off to the L4S kernel — the same flow Switchroot users already know. I founded the project and I’m still the named maintainer of L4T Fedora.
02
Role & responsibilities
My role
- Founder & lead maintainer of Linux 4 Switch (L4S).
- Named maintainer of L4T Fedora at Switchroot.
- Long-running contributor to the mainline Tegra X1 / Tegra210b01 kernel.
- Work in the open against the l4t-community GitLab and the Switchroot wiki.
What that meant
- Maintaining the downstream 4.9 BSP kernel and a WIP mainline port.
- Wiring NVDEC hardware decode into Chromium and FFmpeg/mpv.
- Packaging the whole userspace as a Fedora COPR.
- Owning the switchroot-pipeline CI/CD for every L4T project.
03
Highlights & contributions
- Maintained the downstream 4.9 BSP kernel and a work-in-progress mainline Tegra port, contributing upstream for Tegra X1 / Tegra210b01.
- Wired NVDEC hardware video decode into Chromium (H264/H265/VP8 / VP9 →
nvv4l2) and FFmpeg/mpv. - Built a full Fedora COPR: BSP, emulators (
rpcsx,cemu,xenia-edge,box64),moonlight-qt, and the X drivers. - Stood up switchroot-pipeline CI/CD for every L4T project — reproducible image and package builds.
- Brought up KVM acceleration plus Ashmem/Binder for running Android containers on the device.
- Backporting latest features from upstream kernel.
04
Tech stack
Linux kernel (4.9 L4T BSP)
mainline Tegra
device tree
NVDEC / nvv4l2
vaapi-tegra-driver
Mesa / nouveau
Fedora / COPR
hekate → U-Boot
KVM · Ashmem/Binder
switchroot-pipeline CI/CD
05
How it actually works
You don’t get here through a bootloader unlock — there isn’t one. The Tegra X1 has a recovery (RCM) exploit that lets you push unsigned code into the boot ROM’s recovery path, and that’s the foot in the door. From there you load hekate, the Switchroot bootloader; hekate sets up the hardware and chainloads Das U-Boot; U-Boot loads the L4S kernel and device tree and boots Fedora off the SD card. Every L4S install rides that same chain, so the work is less about “can it boot” and more about keeping a sane Linux on top of a boot model that’s frozen in place.
The kernel is the unglamorous heart of it. The shipping branch is NVIDIA’s 4.9 L4T BSP — old, but it’s the only tree with working drivers for the Tegra display, clocks, power and the fixed-function blocks. I maintain that branch, and in parallel I’ve been pushing a mainline Tegra port upstream so the platform isn’t married to a 2016 kernel forever. The device tree is where a lot of the day-to-day fixing happens: panel timings, clock/DVFS, the bits that decide whether the thing comes up at all.
The part people actually notice is hardware video decode. The Tegra X1’s NVDEC block can decode VP8/VP9/H.264 in silicon, but nothing in a normal Linux userland knows how to talk to it. I wired it up through nvv4l2 so Chromium and FFmpeg/mpv route decode onto NVDEC instead of melting four A57 cores trying to do 1080p in software — the difference between “YouTube is a slideshow” and “YouTube just works.” On top of that sits the COPR: emulators, moonlight-qt for game streaming, and the rest of the stack that makes the console feel like a real little Linux box.
L4S Fedora on the Switch — kernel, GPU and NVDEC in one shell
# booted hekate -> U-Boot -> L4S kernel on a Tegra X1
$ uname -srm
Linux 4.9.140-l4t aarch64
# GPU is alive through nouveau / Mesa
$ glxinfo | grep "OpenGL renderer"
OpenGL renderer string: NV12B (nouveau, Tegra X1)
# confirm the NVDEC hardware decoder is exposed to userspace
$ ls /dev/nvhost-nvdec /dev/nvmap
/dev/nvhost-nvdec /dev/nvmap
# pull the L4S userspace straight from the Fedora COPR
$ sudo dnf dnf copr enable linux4switch/l4s
$ sudo dnf install moonlight-qt box64 cemu
06
Links
Project
Docs
Write-up
More code
07
Related projects
Enjoyed this? This work is patron-funded. Patrons get early builds, devlogs, and a vote on which device I attack next — everything I make stays free and open.
