u/Hopeful_Beat7161

My Kingston NV3 1TB wouldn't show up on my Orange Pi 4 Pro 12GB. Used Claude to research the root cause, it dug through Radxa forum posts, Allwinner BSP driver code, and PCIe spec behavior to pinpoint the exact issue. Posting this in case anyone currently or in the future has this issue to save you the time.

Symptoms: lspci shows the PCIe bridge ([1f6d:abcd]) but nothing on bus 01. No /dev/nvme*. dmesg shows pcie link up success and PCIe speed of Gen3 during boot, but the drive never actually enumerates. lspci -vvv shows DLActive- and CmpltTO+ — meaning the link trained but immediately died.

Root cause: The Allwinner A733's PCIe driver has a bug in its Gen3 speed-change sequence. It chokes on Phison-based NVMe controllers (Kingston NV3 uses a Phison E27T). The link comes up in U-Boot, then the kernel tries to renegotiate speed and the drive drops off the bus. Same bug is confirmed on the Radxa Cubie A7A (same A733 chip) by Radxa engineers. Allwinner knows about it, no fix as of yet unfortunately.

What seems to be the only fix: Force the M.2 slot to Gen1 in the device tree.

cp /boot/dtb/allwinner/sun60i-a733-orangepi-4-pro.dtb /boot/dtb/allwinner/sun60i-a733-orangepi-4-pro.dtb.bak
apt install device-tree-compiler -y
dtc -I dtb -O dts -o /tmp/dts.dts /boot/dtb/allwinner/sun60i-a733-orangepi-4-pro.dtb
sed -i 's/max-link-speed = <0x03>/max-link-speed = <0x01>/' /tmp/dts.dts
dtc -I dts -O dtb -o /boot/dtb/allwinner/sun60i-a733-orangepi-4-pro.dtb /tmp/dts.dts 2>/dev/null
reboot

After reboot, lspci showed the Kingston on bus 01 and lsblk showed 931.5GB.

Tradeoff...you have two options:

If you just want it working? Apply the fix above. You're running at Gen1 x1 (~250 MB/s) instead of Gen3 x1 (~985 MB/s).

if you actually want full Gen3 speed? Return the Kingston NV3 (or whatever Phison-based drive you have) and grab a WD SN580 or WD SN770. Those work at Gen3 on this board without any fix. Same price range, no device tree editing required.

Drives affected: Kingston NV3 (Phison E27T), Samsung PM9B1, other Phison-based drives.

Research and technical details here: https://github.com/CarterPerez-dev/orangepi-4-pro-nvme-fix

My setup: Orange Pi 4 Pro 12GB, Debian Bookworm server 1.0.6, kernel 5.15.147-sun60iw2.

So If you're running into this issue, don't waste time with modprobe nvme, pci=nomsi, bus rescans, or reseating the drive. The NVMe kernel module is built-in (CONFIG_BLK_DEV_NVME=y), the drive is fine, and the seating is fine. It's a driver bug. Change the device tree or return the drive and move on.

https://preview.redd.it/kpdafcar3rzg1.png?width=629&format=png&auto=webp&s=e43a6d2ad536ae11e366aecea7d3b514b7b4427d

reddit.com
u/Hopeful_Beat7161 — 15 days ago