I hit this same issue on Armbian 26.8.3, vendor 6.1.115, Orange Pi 5 8GB. `lsblk` showed no NVMe, `dmesg` stuck at `PCIe Link Fail, LTSSM is 0x3`.
**What I tried (didn't work):**
- `echo 1 > /sys/bus/pci/rescan` – no effect
- The overlay from @atlaste's post targeting `&vcc3v3_pcie20` – **silently failed** because in the vendor 6.1.115 DTB the node label is `vcc3v3_pcie2x1l2`, not `vcc3v3_pcie20`. The `.dtbo` compiles fine but the fixup never resolves, so the overlay is never applied.
- Switching to a different PSU (5V/5A RPi 5 charger) – no change
**What actually worked (direct DTB patch):**
```bash
# Decompile
dtc -I dtb -O dts /boot/dtb/rockchip/rk3588s-orangepi-5.dtb -o /tmp/opi5.dts
# Find the wrong GPIO line (around line 10720):
# gpios = <0x15a 0x15 0x00>; ← gpio0 pin 21 (WRONG)
# Find the correct phandle for gpio2 (node gpio@fec30000, around line 7854):
# phandle = <0x2ce>
# Patch:
sed -i 's/gpios = <0x15a 0x15 0x00>/gpios = <0x2ce 0x01 0x00>/' /tmp/opi5.dts
# Recompile and replace:
dtc -I dts -O dtb -o /tmp/opi5.dtb /tmp/opi5.dts
sudo cp /tmp/opi5.dtb /boot/dtb/rockchip/rk3588s-orangepi-5.dtb
sudo reboot
```
Verified with `od -A n -t x1 /proc/device-tree/vcc3v3-pcie2x1l2/gpios` → `00 00 02 ce 00 00 00 01 00 00 00 00` (gpio2, pin 1).
**Important caveat – Gen4 drives may not work:**
After the DTB fix, my **Crucial E100 480GB (PCIe Gen4 x4)** still did NOT enumerate. Swapped to a **Gen3 drive** and it appeared immediately in `lsblk`. The M.2 slot itself was fine (verified with a PCIe-to-SATA adapter).
So the full picture:
1. **DTS GPIO bug** – blocks ALL NVMe (Gen2/3/4) → fix as above
2. **Gen4 NVMe drives** – may still fail even after the fix, because RK3588S only does PCIe Gen2 and some Gen4 drives don't negotiate down properly
**TL;DR for anyone hitting LTSSM 0x3:**
- First: patch the DTB (label is `vcc3v3_pcie2x1l2` in vendor 6.1.115, not `vcc3v3_pcie20`)
- If still no luck: try a Gen2/Gen3 drive before blaming the board