Skip to main content

USB drives and M.2 SSDs

USB drives​

Which USB port to boot from, what to expect from hubs, adapters and external SSDs, and what the M.2 slot accepts.

USB ports​

Every PS5 has fast ports (SuperSpeed, 10 Gbit/s) and one slow port (USB 2.0, 480 Mbit/s). The slow port boots Linux too, but everything that reads from the drive takes much longer.

Original PS5:

PortTypeSpeedBoot from it?
FrontUSB-CUSB 3.x✅ Recommended
FrontUSB-AUSB 2.0⚠️ Possible, but slow
Rear (2×)USB-AUSB 3.x✅ Yes

PS5 Slim: boot from the two rear USB-A ports. One of the two front USB-C ports is the slow one.

Once Linux is running, every port is usable. Put the controller or keyboard on the slow port and keep the fast ports for the drive. While the loader puts the console into rest mode, keep hubs, keyboards and mice off the fast ports: they can stop rest mode and send the console back to the PS5 OS, see Known issues.

USB hubs and docks​

Hubs and USB-C docks work as on any Linux PC, including their Ethernet ports (a 2.5 GbE port in a dock runs at full speed) and their USB-A ports. A dock can also sit behind a USB-A-to-USB-C adapter. Two things to keep in mind: connect the dock after Linux is up when it keeps the console from entering rest mode, and don't expect the dock's video output to do anything, since the console's display path goes through the HDMI chip (the front USB-C port's DisplayPort output is a separate, opt-in feature, see Hardware overview).

USB network adapters​

Any Wi-Fi or Ethernet adapter with a Linux driver works; the ready-made images carry the usual drivers. A USB Wi-Fi adapter is the simple way to get online on a kernel that lacks the driver for your internal chip. For wired adapters, the RTL8156B chipset is a safe choice, see Ethernet.

An eGPU is not possible

An external GPU on an M.2-to-PCIe riser does not work on the PS5. The question comes up often; the answer is no.

USB drive (required)​

Use a drive of 64 GB or more for the official and community images (32 GB for PS5 Bazzite Deck). If you only have a small drive, see No 64 GB USB drive?.

An external SSD is much faster than a flash drive. If an SSD in an enclosure isn't detected, change the cable (USB 3.x) and the port before you suspect the drive.

USB SSD disconnects, freezes or shows I/O errors

Many USB-C SSDs and enclosures have buggy UAS support. Turn UAS off for that drive only: find its ID (xxxx:yyyy) with lsusb, then add this to cmdline.txt:

cmdline.txt
usb-storage.quirks=xxxx:yyyy:u
Some enclosures don't boot with the loader

If Linux won't boot from an SSD in a USB enclosure, try a different enclosure.

Rear ports and M.2 enclosures

An M.2 enclosure that boots from the rear USB-A ports on one kernel is sometimes only detected on the front USB-C port with another. Whether that is the kernel or the enclosure isn't settled. If a rear port shows nothing, move the drive to the front USB-C port before you look further.

Enclosure goes to sleep

Some SSD enclosures have their own idle timer and don't wake up again once Linux has started. The symptoms look like a dead display or a bad image. Turn off the desktop's automatic screen blanking so the system stays active, and if the enclosure still sleeps, use another one.

The drive shows much less free space than its capacity

The root partition starts small and is meant to grow to the drive on the first boot. If df shows only a few GB free on a much larger drive, grow the filesystem:

sudo resize2fs /dev/sda1

Change the device and partition to match your drive.

Root filesystem not found or boot hangs​

If the kernel starts but reports that it can't find the root filesystem, or boot stalls with a USB SSD, the drive is probably slow to appear. Add these to cmdline.txt, together with the UAS setting above if you have I/O errors:

rootwait rootdelay=60 usbcore.autosuspend=-1

rootwait rootdelay=60 waits up to 60 seconds for the drive, and usbcore.autosuspend=-1 stops USB devices from going to sleep. For two drives, list both in the quirks: usb-storage.quirks=xxxx:yyyy:u,aaaa:bbbb:u.

M.2 drives​

  • NVMe only. SATA M.2 drives don't work in the slot, with or without an adapter.
  • Gen3 NVMe drives are refused by the PS5 OS, but can be unlocked, see Gen3 NVMe unlock below. Drives under 250 GB also work once unlocked.
  • Community test results: M.2 compatibility list.

To install Linux on an M.2 drive, see Install to M.2.

Gen3 NVMe unlock​

The PS5 OS refuses Gen3 NVMe drives as too slow (it asks for 5,500 MB/s). For Linux the speed is irrelevant, and for PS5 games the difference is a second or two on loading screens.

The check reads a small header at the start of the drive. Copying the first 2 MB from a Gen4 drive that a PS5 has formatted onto the Gen3 drive makes the PS5 accept it.

You need:

  • A Gen4 NVMe drive that has been formatted by a PS5 (or a ready-made dump)
  • Your Gen3 NVMe drive
  • A USB NVMe enclosure, or a PC with an M.2 slot

Steps:

# 1. Put the Gen4 drive in the enclosure and connect it to your PC.
# Dump the first 2 MB:
sudo dd if=/dev/sdX of=ps5_gen4_header.bin bs=1M count=2

# 2. Swap in your Gen3 drive and write the header to it:
sudo dd if=ps5_gen4_header.bin of=/dev/sdX bs=1M count=2

Install the Gen3 drive in the PS5. It is detected and formatted as normal.

No Gen4 drive?

Bringus Studios documented the method and links a ready-made 2 MB dump in the description of this video: youtube.com/watch?v=Uds315QBUnE.

Shared dumps don't work for everyone, see the M.2 compatibility list. If it fails, borrow a Gen4 drive and make your own.

Don't reformat the Gen3 drive on the PS5

Formatting it again under Settings → Storage wipes the unlocked header. If that happens, write the 2 MB header again from a PC.

Firmware compatibility: every report on the early firmware versions that first got M.2 support succeeded; on newer firmware the results are mixed, with successes and failures on the same version and the same shared dump. The M.2 compatibility list has them all. Where it fails, the dump is the usual suspect: make your own from a PS5-formatted Gen4 drive instead of using a shared one.

M.2 SSDs​

Community-tested results for the Gen3 NVMe unlock. See Gen3 NVMe unlock for how to do it.

Share your result

Add your result with the submission form.

Results by firmware​

Every report on 4.xx worked. On later firmware most reports fail, but the same shared dump that failed for some has succeeded for others on the same version, so the failures look like a wrong dump or a wrong procedure rather than a firmware block. If it doesn't work for you, make your own dump from a PS5-formatted Gen4 drive instead of using a shared one.

PS5 firmwareGen3 unlock result
4.00, 4.03, 4.51✅ Confirmed working, every report
5.02, 5.10❌ Reported failing
10.xx to 13.xx⚠️ Mostly failing, with isolated successes on 11.xx and 13.xx

All results​

"Dump used" says where the 2 MB header came from: bringus (the shared dump from the video linked on Gen3 NVMe unlock), netflix (another shared dump that circulates on Discord) or personal (made by the tester). "Dump source" is the drive a personal dump was taken from, when known.

WorkedPS5 FWDriveCapacityDump usedDump source
✅4.00Phison ESMP512GKB4C3-E13TS512 GBbringus
✅4.00KIOXIA KBG40ZNS128G128 GBbringus
✅4.00Samsung PM981a MZVLB256HBHQ-000H1256 GBbringus
❌ (SATA)4.00Foresee E2M2 FE2H0M064G-B5X1064 GBbringus
✅4.00Crucial P3 4TB 22804 TBpersonal
✅4.00Samsung PM871b MZNLN256HAJ1-000L7256 GBnetflix
✅4.03Lexar SL300 (shucked)1 TBnetflix
✅4.03Lexar SL300 (shucked)1 TBbringus
✅4.03AirDisk 512GB SSD512 GBnetflix
✅4.03Crucial P1 CT1000P1SSD81 TBbringus
✅4.51KIOXIA KBG40ZNS256G256 GBnetflix
❌5.02Samsung PM961 MZVLW256HEHP-000H1256 GBnetflix
❌5.02Samsung PM961 MZVLW256HEHP-000H1256 GBbringus
❌5.10Samsung 970 EVO Plus MZ-V7S500500 GBbringus
❌5.10Samsung 970 EVO Plus MZ-V7S500500 GBpersonalSamsung 990 PRO MZ-V9P1T0
❌10.01Samsung 970 EVO Plus MZ-V7S2T02 TBbringus
❌10.40WDS100T3B0C1 TBpersonalWD_BLACK SN850X WDBAPY0010BNC
❌11.40Samsung 970 EVO Plus MZ-V7S500BW500 GBbringus
❌11.60Kingston 0M3PDP3512B512 GBbringus
❌11.60Kingston 0M3PDP3512B512 GBpersonal
✅11.60Crucial P2 CT2000P2SSD82 TBpersonalSeagate FireCuda 530 1TB ZP1000GM3A023
❌11.60Intel 660p512 GBbringus
❌12.00ADATA SX8200 PRO2 TBbringus
❌12.40Crucial P2 CT1000P2SSD81 TBbringus
❌12.40Crucial P2 CT1000P2SSD81 TBpersonalMovespeed YSSDHB-2TN7000
❌13.00ARDOR GAMING Ally AL1284512 GBbringus
❌13.00ARDOR GAMING Ally AL1284512 GBnetflix
❌13.20Kingston–bringus
❌13.20WD SN720 SDAPNTW-512G-1014512 GBbringus
❌13.40Samsung PM981a MZVLB256HBHQ-000L7256 GBbringus
❌13.40Samsung PM981a MZVLB256HBHQ-000L7256 GBpersonalSamsung 980 Pro 2TB
❌13.40KingSpec NE2280256 GBbringus
✅13.40KingSpec Series NX-4TB 22804 TBbringus
❌13.40SK hynix HFM256GDHTNI-87A0B256 GBbringus
❌13.40SK hynix HFM256GDHTNI-87A0B256 GBpersonalSSSTC CL4-3D512-Q11

Next steps​