Adding another data point: Fikwot FX953 1TB (M.2 2230, NVMe PCIe Gen4 x4) is never detected on my VENTUNO Q. It doesn't help to cold boot, warm reboot, re-seat the drive, or force ASPM off. Unlike the KingSpec report above, a warm reboot does not bring it up.
Setup
- Arduino VENTUNO Q, stock Ubuntu 24.04.5 LTS image
- Kernel
6.8.0-1084-qcom #89-Ubuntu(latest in noble-updates; the qcom PPA only has 1079) - DT:
monaco-monza.dtb+monaco-addons-monza.dtb+ overlay, from/lib/firmware/6.8.0-1084-qcom/device-tree/qcom/ - Drive: Fikwot FX953 1TB, 2230, NVMe Gen4 x4, single M-key. It's seated fully and held with the 2230 standoff screw.
What the kernel reports (identical on every boot)
qcom-pcie 1c10000.pci: supply vddpe-3v3 not found, using dummy regulator
qcom-pcie 1c10000.pci: host bridge /soc@0/pci@1c10000 ranges:
qcom-pcie 1c10000.pci: iATU: unroll T, 32 ob, 8 ib, align 4K, limit 1024G
qcom-pcie 1c10000.pci: Phy link never came up
qcom-pcie 1c10000.pci: PCI host bridge to bus 0001:00
pci 0001:00:00.0: [17cb:0115] type 01 class 0x060400 PCIe Root Port
lspcishows only the root port0001:00:00.0, with nothing behind it. There's no/dev/nvme*.- AER on
0001:00:00.0: 0 fatal, 0 correctable. The link never trains, so it never errors either. - PCIe0 (
1c00000.pci) comes up fine as Gen2 x1 to the Pericom switch / Wi-Fi.
PCIe1 / M.2 configuration as seen at runtime
pci@1c10000:status = "okay",num-lanes = 4, root port max 16.0 GT/s x4perst-gpios = <&tlmm 23 GPIO_ACTIVE_LOW>,wake-gpios = <&tlmm 21 ...>vdda-supply→ fixed regulatornvme_vreg_en(enable GPIO tlmm 51, active-high, enable-ramp-delay 10000 µs). Its state isenabled, it has 1 user (1c10000.pci-vdda), and it reports 1.8 V.vddpe-3v3isn't defined, so the driver uses a dummy regulator.- The
nvmedriver is available (nvme.ko).
Question for Arduino: the enable for the M.2 slot's power (nvme_vreg_en) is hooked up as the PCIe PHY's vdda-supply and not as vddpe-3v3. Is that intended? If it only controls slot 3.3 V, its timing relative to PERST# may differ from what the driver does for vddpe-3v3. With a 10 ms ramp, some drives may not be ready before link training times out. I'm only guessing at this from the DT; I don't have the schematic.
What I tried
| Attempt | Result |
|---|---|
| Re-seat drive (full power-off and unplug first) | Phy link never came up |
| Cold boot (power cycle) | Phy link never came up |
Warm reboot (sudo reboot) |
Not detected (no nvme0 in that boot) |
pcie_aspm.policy=performance added via /etc/default/grub.d/99-dragonwing-defaults.cfg + update-grub (confirmed in /proc/cmdline and /sys/module/pcie_aspm/parameters/policy = [performance]) |
No change. Still not detected |
Full cmdline during the ASPM test:
BOOT_IMAGE=/boot/vmlinuz-6.8.0-1084-qcom root=UUID=... ro console=ttyMSM0,115200n8 pcie_pme=nomsi earlycon pcie_aspm.policy=performance video=LVDS-1:d
Side observations that may matter
- Kernel log flooding hides the PCIe1 messages. Every boot, Pericom switch port
0000:02:02.0(the onboard TI TUSB73x0 USB 3 controller,pci104c,8241) throws hundreds to thousands ofUncorrectable (Fatal)AER errors (Transaction Layer, status 0x1/0x2001 = Undefined + FCP). That overwrites the early boot log indmesg, so you needjournalctl -kto see the M.2 lines. The count was 369–1,699 per boot before the ASPM change and 3,750 withpcie_aspm.policy=performance. Separate topic: VENTUNO Q: onboard TI USB 3 controller (PCIe 104c:8241) never enumerates — 1,699 fatal AER errors on Pericom switch port 0000:02:02.0 at boot - Both USB-A ports are dead on this image, because they sit behind that TI controller. A SanDisk Extreme 2TB, a mouse and a keyboard produce no USB events. Plugging a device in triggers a new fatal AER on
02:02.0. So with this image, the only way to attach an NVMe through a USB enclosure is the USB-C port. - One unexplained hard reset or hang about 4 minutes after a warm reboot (the journal just stops; no panic logged). It happened only once, so it may be unrelated.
Next steps on my side
- Test the Fikwot in a USB-C NVMe enclosure on another machine to rule out a bad drive.
- I'm happy to test a candidate kernel or DT (e.g. qcom-6.18.y with the VENTUNO Q series from qualcomm-linux/kernel PR #1013) or run any diagnostic you suggest.
Is there an Ubuntu kernel/DT update planned for VENTUNO Q that covers PCIe1 / M.2 bring-up, or a list of drives Arduino has validated?