Archived — development continues in Linux psX.
PS4 kernel patches, configs, builds, CI and curated research have moved to Linux psX, the shared kernel project for PS4 and planned PS5/future-console ports. Open new issues and pull requests there.
Omarchy distribution, installation and launcher work lives in Omarchy psX.
This repository is preserved read-only for source history, contributor attribution, pinned research/initramfs inputs and existing releases. Historical hardware results retain their original artifact scope; PS5 implementation remains planned.
Patch-based Linux kernel builds for PlayStation 4, currently targeting Linux 6.18.44 on PS4 Baikal. Upstream Linux, configuration and patch order are pinned so the build inputs and their origins can be inspected. Pair the kernel with your preferred Linux x86-64 distribution; Omarchy is optional. See general Linux booting and the separate Omarchy example.
Download Baikal r1 · Hardware status · Patch provenance · Contributing
The published build was tested on one PS4 Slim with a Baikal B1 southbridge:
- system firmware
12.02; - ps4-linux-loader v25 with
linux-1024mb.elf; - external USB boot and Arch Linux root filesystem;
- Xorg and XFCE at 1920×1080/60 Hz;
- internal MediaTek MT7668 Wi-Fi and SSH over Wi-Fi.
Other PS4 revisions, including PS4 Pro, are not yet verified by this project. The kernel is one part of the boot stack; a compatible loader, initramfs and root filesystem are required separately.
These states describe the published Baikal kernel and its recorded hardware results. A smoke test does not establish sustained or repeatable operation.
| Capability | State |
|---|---|
| Linux 6.18.44 boot | Working |
| External USB root | Working |
| HDMI, Xorg and XFCE | Working |
| Internal MT7668 Wi-Fi | Working |
| SSH | Working |
| GPU acceleration | OpenGL and Vulkan smoke tests working |
| Internal SATA | Degraded; discovery timeouts |
| Built-in Ethernet | Not working |
| HDMI audio | Partial; stream accepted but no physical sound |
| Bluetooth | Controller present; pairing pending |
| Temperature and fan | Temperature visible; fan interface missing |
| Suspend | Not exposed by the kernel |
| Internal Linux installation | Not supported |
See STATUS.md for the detailed matrix, CAPABILITY-TESTS.md for acceptance criteria and OMARCHY-READINESS.md for distribution readiness.
The GitHub Actions workflow builds the native
x86-64 target 6.18-baikal-mts2-public on pushes and pull requests. Its release
is 6.18.44-ps4-baikal-mts2-public1. A manual run with publish_release enabled
publishes a new GitHub prerelease only after build and packaging checks pass.
The release name is fixed in the target and packaging contract; bump both for
a new candidate. Existing releases are not overwritten.
This public candidate uses the same MTS2 driver and ordered55patch stack, but a distinct release name, native CI compiler and no embedded device firmware. It has not yet been boot-tested; EXP016 tested the private mts2 build. Testers must supply compatible firmware in their own initramfs/rootfs, particularly for the built-in Wi-Fi driver. No loader, initramfs or OS image is included.
Download experimental public1 · Tester instructions and manual activation
Release assets include the kernel, full matching module tree, config, manifest,
boot arguments, activation helper, checksums and a complete corresponding-source
archive. CI success establishes compilation and packaging, not hardware support.
Read the general boot guide and tester guide before replacing
boot files. Release assets contain separate generic-Linux and Omarchy boot
argument examples; edit the selected example and save it as bootargs.txt.
The optional 6.18-baikal-mts2 target builds
6.18.44-ps4-baikal-mts2 with the native polled Baikal MTS Ethernet module.
On the same Baikal B1 console, EXP-20261017-016 passed modem DHCP, preferred
wired IPv4 routing, independent hash-checked 4 MiB transfers in both directions,
verified HTTPS, three NetworkManager profile reconnects and operation beyond
900 seconds. Wi-Fi recovery remained available.
This is an experimental candidate. EXP016 is DEGRADED overall: its first automatic startup exposed a userspace handoff gap; a corrected manual sequence worked, while unattended package0.1.1 startup, cable recovery and strict packet-gating acceptance remain pending. Other PS4 revisions are untested. The stable/default target and its support matrix above are unchanged.
Read the kernel, module and boot contract,
bring-up findings and
tested boot settings. The driver is built as
psx_mts_net.ko and requires explicit gated activation after baikal_pcie.
It has no PCI-alias autoload; boot arguments alone do not enable Ethernet.
The standalone optional NetworkManager adapter is included in this repository.
It supplies guarded manual activation without an Omarchy package. Automatic
Omarchy boot integration is maintained separately; other networking stacks
need their own reviewed adapter. Published DMA and module code remain retained until power-off;
do not unload, reset or rearm a published instance.
Linux 6.18.44 PS4 Baikal r1 is a developer build for the tested hardware. Its downloadable assets are:
| Asset | Purpose |
|---|---|
bzImage |
Exact kernel tested on the PS4 Slim |
config |
Resolved configuration used for that kernel |
SHA256SUMS |
Checksums for both assets |
The r1 release does not include a module archive. Building from source produces matching modules and the additional records listed below. Read the release notes for the tested boot chain and limits.
The kernel download does not include a loader payload, initramfs, root filesystem, Sony system firmware or per-console keys. The kernel configuration embeds MediaTek device firmware; those bytes have separate licensing from the Linux code. See the firmware inventory. The tested system boots from external USB; this is not an internal-disk installer.
git clone https://github.com/meerzulee/linux-ps4.git linux-ps4-kernel
cd linux-ps4-kernelThis repository contains the PS4 patches, configs and build tools. The complete
upstream Linux tree is downloaded automatically by build.sh. For the default
target, targets/6.18-baikal.env pins:
| Input | Value |
|---|---|
| Upstream repository | https://github.com/gregkh/linux.git |
| Upstream tag | v6.18.44 |
| Required commit | 1efe5d048a391de3ead2804b2e7f86376c356cc5 |
| PS4 patch order | patches/6.18-baikal/series |
| Configuration | config/6.18-baikal.config plus target fragments |
The builder verifies the upstream commit before applying patches. No private
source archive or copy of another computer's generated src/ is required.
make init downloads extra reference repositories and firmware; it is optional
for the normal kernel build from this checkout.
Install Git and OrbStack, including its orb and Docker command-line tools.
Start OrbStack, then check the runtime before building:
orb status
# Must report Running.
docker context show
# Must report orbstack.
docker info >/dev/null
./scripts/build-kernel-orbstack --target 6.18-baikalThe helper uses the pinned builder image definition and an ARM64 Linux
container with the x86_64-linux-gnu- cross-compiler. Its output targets the
PS4's x86-64 CPU. Run the helper on macOS rather than invoking the Linux
build.sh directly on Darwin. OrbStack is the supported local container runtime.
Build natively; no Docker container or virtual machine is required:
uname -m
# Must report x86_64.
sudo pacman -Syu --needed base-devel git bc cpio pahole libelf openssl \
kmod perl python rsync xz zstd ripgrep
make TARGET=6.18-baikalThe same target definition, patch series and config are used on both hosts. A different compiler can produce different artifact bytes; compare the build manifest and use modules from the same build as the kernel.
# macOS ARM64, after the OrbStack checks above:
./scripts/build-kernel-orbstack --target 6.18-baikal-mts2-public
# Linux x86-64:
make TARGET=6.18-baikal-mts2-publicUse output/6.18-baikal-mts2-public/ and its whole matching module archive.
The original 6.18-baikal-mts2 target preserves the private EXP016 inputs;
it embeds device firmware and is not the public binary-release target.
The predecessor 6.18-baikal-mts builds the bounded, single-open mts1
experiment and is retained for investigation. Do not use it for continuous
networking. Both optional targets preserve the tested NETFILTER=n baseline;
the regular target now includes a separate UFW fragment. Do not infer firewall
support for mts2 from the regular target.
Both paths write to output/6.18-baikal/:
| Output | Purpose |
|---|---|
bzImage |
Bootable kernel image |
config |
Resolved kernel configuration |
System.map |
Kernel symbol map |
modules-<kernel-release>.tar.zst |
Matching runtime module tree |
manifest.txt |
Upstream, patch, config, compiler and builder identities |
version.txt |
Kernel release string |
SHA256SUMS |
Output checksums |
From that output directory, verify with sha256sum -c SHA256SUMS on Linux or
shasum -a 256 -c SHA256SUMS on macOS. Preserve known-good outputs before
rebuilding the same target. A successful compilation is a build result;
hardware acceptance is recorded separately.
Older targets remain available for comparison and recovery:
make TARGET=5.4-baikal
make TARGET=6.x-baikal6.x-baikal is the archived 6.15 development target.
targets/ pinned kernel versions and build settings
patches/6.18-baikal/ baseline PS4 patch series
patches/6.18-baikal-mts2/ optional continuous Ethernet series
config/ kernel configs and fragments
bootargs/ tested kernel command lines
containers/kernel-builder/ pinned Linux build environment
scripts/dev/ UART, USB and test-loop helpers
checkpoint/ bring-up research and historical records
experiments/baikal-mts/ historical GPL experiment sources
docs/ release, hardware and provenance notes
Generated src/ trees are disposable build state. Save intended kernel changes
as ordered patches before rebuilding. Follow CONTRIBUTING.md
for the patch workflow and AGENTS.md for development rules.
Use a bounded UART experiment for a coherent hardware question. Record the kernel identity, boot arguments, expected result and recovery path, then close the capture and record the observed outcome. Change one diagnostic variable at a time; compilation and a single boot do not establish release stability.
Do not mount, repair, format or write to the PS4 internal disk during bring-up. See INTERNAL-STORAGE.md.
For the Arch/Omarchy distribution and its installation workflow, see Omarchy PS4.
| Document | Contents |
|---|---|
| STATUS.md | Hardware results and remaining limits |
| General Linux booting | Distribution-independent boot components and optional Omarchy layout |
| Baikal Ethernet bring-up | Investigation, implementation and measured limits |
| MTS2 kernel and boot settings | Exact built candidate, checksums and boot contract |
| 6.18-PORT.md | Linux 6.18 port and acceptance history |
| HARDWARE.md | Platform and hardware notes |
| PATCH-PROVENANCE.md | Original contributors and immutable source links |
| ORIGINAL_CONTRIBUTIONS.md | Local work and upstream basis |
| CONTRIBUTING.md | Contributor workflow |
- whitehax0r — original Baikal port;
- DFAUS / feeRnt — Linux 5.4.247 work and MT7668 driver;
- crashniels — Linux 6.15 Baikal forward-port;
- rmuxnet — southbridge, storage, IRQ, xHCI, IOMMU and display work;
- fail0verflow and the wider PS4 Linux community — platform research and tools.
Borrowed and adapted patches retain their authors and source provenance. The kernel patches are GPL-2.0 unless a file states otherwise; see LICENSE and individual file headers. Firmware files and any embedded firmware keep their own licensing; they are not relicensed by this repository.