WiFi (IW620 / mwifiex)
Internal chip: 40:00.7 - Marvell Technology Group Ltd. Device [1b4b:2b56] (rev 02)
Driver: NXP mwifiex fork patched for PS5 IW620.
MediaTek MT7921 chip (Salina rev2 / CFI-12xx Chassis C) not supported
Some newer chassis boards use a MediaTek MT7921 (14c3:7961) instead of the Marvell chip covered on this page, see Hardware for how to check which one you have. There is currently no working driver for it, the stock mt7921e module isn't built in the official kernel config, and even test builds with it enabled don't reach the firmware-load code, this needs reverse engineering, not just a config flag. If you have this chip, use a USB WiFi adapter for now.
Install
git clone https://github.com/ps5-linux/ps5-linux-mwifiex
cd ps5-linux-mwifiex
sudo ./install.shTo uninstall:
sudo ./install.sh uninstallManual Load
sudo modprobe cfg80211
sudo insmod ./mlan.ko
sudo insmod ./moal.ko \
fw_name=nxp/pcieuartiw620_combo_v1.bin \
pcie_int_mode=1 drv_mode=1 cfg80211_wext=4 sta_name=mlan \
ext_scan=1 auto_fw_reload=0 wifi_reset_config=0 \
sched_scan=0 ps_mode=2 auto_ds=2 amsdu_disable=1Build from Source
git clone https://github.com/nxp-imx/mwifiex.git && cd mwifiex
git checkout lf-6.18.2_1.0.0
git apply ../ps5-iw620.patch
make CONFIG_OBJTOOL=Pre-configure WiFi Before First Boot
No Ethernet and need WiFi working on first boot? You can hardcode credentials from another PC before plugging the USB into your PS5.
# Mount the rootfs partition from the flashed USB
MNT=$(mktemp -d)
sudo mount /dev/sdX1 "$MNT"
# Create the NetworkManager connection file
sudo install -d -m 700 "$MNT/etc/NetworkManager/system-connections"
sudo tee "$MNT/etc/NetworkManager/system-connections/wifi.nmconnection" >/dev/null <<'EOF'
[connection]
id=wifi
type=wifi
autoconnect=true
[wifi]
mode=infrastructure
ssid=YOUR_SSID_HERE
[wifi-security]
key-mgmt=wpa-psk
psk=YOUR_PASSWORD_HERE
[ipv4]
method=auto
[ipv6]
addr-gen-mode=stable-privacy
method=auto
EOF
sudo chmod 600 "$MNT/etc/NetworkManager/system-connections/wifi.nmconnection"
sudo chown root:root "$MNT/etc/NetworkManager/system-connections/wifi.nmconnection"
sudo umount "$MNT"Arch - Install Failing (Missing / Wrong Headers Path)
If ./install.sh fails on Arch, first make sure headers are installed:
sudo pacman -U linux-bin/linux-ps5-headers_*.pkg.tar.zstHeaders are in the same linux-bin/ folder as the kernel package, or download from ps5-linux-patches releases.
If it still fails, there is a known packaging bug where headers get installed to /usr/usr/include instead of /usr/include. Fix:
sudo cp -r /usr/usr/include/* /usr/include/Confirmed working on CachyOS Arch base.
Adapter Shows as UNCLAIMED, Driver Loads But Never Binds
If lspci sees the Marvell chip and moal shows up under Kernel modules, but the interface never actually comes up, and dmesg shows the driver recognizing the card then silently giving up with no firmware errors:
Attach moal handle ops, card interface type: 0x207
Enable moal_recv_amsdu_packet
Attach mlan adapter operations.card_type is 0x207.This was a script bug: install.sh dropped the firmware in /lib/ instead of /lib/firmware/, and the kernel only scans /lib/firmware/. Check where it actually landed:
find /lib -iname "pcieuartiw620_combo_v1.bin"If it's sitting in /lib/ instead of /lib/firmware/nxp/, move it:
sudo mkdir -p /lib/firmware/nxp
sudo mv /lib/pcieuartiw620_combo_v1.bin /lib/firmware/nxp/Reload the driver after moving it, the interface should come up immediately.
Package Manager Install (Fedora / Debian) - Common Failures
If you're on a distro using the ps5-linux-mwifiex package instead of the manual install.sh above, two failure modes come up often:
Dependency version pin:
ps5-linux-mwifiex : Depends: linux-ps5 (= 7.1.1) but 7.1.2 is to be installedThe mwifiex package pins an exact kernel version. Install the matching linux-ps5 version rather than upgrading the kernel first, or check dmesg | grep -iE 'moal|mlan|mwifiex' to see if your kernel already has it built in before fighting the package manager.
Kernel/gcc/pahole mismatch on build:
warning: kernel built on gcc 13, using gcc 15The toolchain building the module has to match what built the kernel. Don't mix a distro-upgraded gcc with an older prebuilt linux-ps5 kernel package.
Confirmed working install (rpm-ostree / Bazzite):
sudo dnf upgrade -y linux-ps5 --setopt=gpgcheck=0
sudo rpm-ostree install ps5-linux-mwifiex ps5-linux-tools
sudo systemctl rebootIf apt/dnf conflicts on cached package files with the same filenames, fall back to the manual install.sh method above instead.
Known Issues
WiFi may need to be disabled and re-enabled after first boot to get a connection. If it drops under load, reload the driver (this is a known occurance):
sudo modprobe -r moal mlan
sudo modprobe cfg80211
sudo insmod ./mlan.ko
sudo insmod ./moal.ko fw_name=nxp/pcieuartiw620_combo_v1.bin pcie_int_mode=1 drv_mode=1 cfg80211_wext=4 sta_name=mlan ext_scan=1 auto_fw_reload=0 wifi_reset_config=0 sched_scan=0 ps_mode=2 auto_ds=2 amsdu_disable=1Wedge under sustained load: if dmesg shows a pattern like this during heavy traffic, the driver is stuck in reset:
num_cmd_timeout = 1
woal_reset_adma: ADMA reset failed (value:97)
woal_reset_intf: get bss info failed
Block woal_cfg80211_deauthenticate in abnormal driver state
PCIe In-band Reset FailPower-save cycling is a suspected trigger. Set ps_mode=0 (disables power save entirely) instead of ps_mode=2 in the insmod command above if you hit this - reported to hold up under sustained load where ps_mode=2 did not.
