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

On every boot, downstream port 0000:02:02.0 of the Pericom PI7C9X2G304 switch (12d8:b304) behind PCIe0 (1c00000.pci) reports a burst of Uncorrectable (Fatal) Transaction Layer errors. AER resets the link and reports "device recovery successful", then the error happens again, about every 30 ms. The device tree places the TI USB 3 host controller (usb@0, compatible pci104c,8241, ti,pwron-active-high) behind this port, but the controller never shows up in lspci. The other switch port (02:01.0 → QCNFA765 Wi-Fi) works fine.

I also noticed that flash drives in the usb ports are not recognized on my board seems odd.

Let me know if there is anything to try.

Observed

  • lspci shows nothing on the bus behind 02:02.0:
    0000:00:00.0 PCI bridge: Qualcomm Technologies, Inc Device 0115
    0000:01:00.0 PCI bridge: Pericom Semiconductor Device b304 (rev 01)
    0000:02:01.0 PCI bridge: Pericom Semiconductor Device b304 (rev 01)
    0000:02:02.0 PCI bridge: Pericom Semiconductor Device b304 (rev 01)
    0000:03:00.0 Network controller: Qualcomm Technologies, Inc QCNFA765 Wireless Network Adapter (rev 01)
    0001:00:00.0 PCI bridge: Qualcomm Technologies, Inc Device 0115
    
  • 02:02.0 link: 2.5 GT/s x1 (max 5.0 GT/s). 02:01.0 (Wi-Fi) trains at 5.0 GT/s x1.
  • /sys/bus/pci/devices/0000:02:02.0/aer_dev_fatal: Undefined 1699, FCP 1, TOTAL_ERR_FATAL 1699. There are no correctable or non-fatal errors.
  • The burst runs from about 73 s to about 124 s after boot, then stops. The count stays at 1699 afterwards.
  • Repeating log pattern:
    pcieport 0000:00:00.0: AER: Uncorrectable (Fatal) error message received from 0000:02:02.0
    pcieport 0000:02:02.0: PCIe Bus Error: severity=Uncorrectable (Fatal), type=Transaction Layer, (Receiver ID)
    pcieport 0000:02:02.0:   device [12d8:b304] error status/mask=00000001/00000000
    pcieport 0000:02:02.0:    [ 0] Undefined              (First)
    pcieport 0000:02:02.0: AER: Downstream Port link has been reset (0)
    pcieport 0000:02:02.0: AER: device recovery successful
    
    The last occurrence instead reports [13] FCP (Flow Control Protocol error).
  • Side effect: the flood fills the kernel log buffer, so early-boot PCIe messages (including PCIe1 / M.2) are lost from dmesg.

Expected

The TI USB controller enumerates behind 02:02.0 and its USB ports work.

Board / software

  • Arduino VENTUNO Q (DT model "Qualcomm Technologies, Inc. Monaco Monza addons", compatible arduino,monza qcom,monaco-monza qcom,qcs8300)
  • Ubuntu 24.04.5 LTS, kernel 6.8.0-1084-qcom #89-Ubuntu SMP PREEMPT_DYNAMIC Thu Aug 20 09:02:55 UTC 2026 (aarch64)

Notes / questions

  • The DT node has ti,pwron-active-high, which suggests the controller needs a power-on/reset sequence. Does the 6.8 Ubuntu qcom kernel handle this for this board, or does it need the newer Monza board support (qualcomm-linux/kernel PR #1013, 6.18)?
  • Is there a recommended OS image or kernel for VENTUNO Q where this works?

Separate (possibly related) question: M.2 NVMe not detected

A 1TB NVMe SSD in the M.2 slot isn't detected. PCIe1 (1c10000.pci, root port 0001:00:00.0) is status=okay, nvme_vreg_en is enabled and consumed by 1c10000.pci, the nvme driver is available, but nothing enumerates behind the root port after cold boots and re-seating. I'm checking the drive's form factor and type (the slot is documented as 2230 NVMe only), and will follow up with the PCIe1 boot log.

Thanks for your report @mmhoffm.

There was a similar report of this specific problem from another VENTUNO Q user:

From the information shared in that topic, it seems that the problem is specific to certain drive models rather than being universal to all drives.

A colleague at Arduino is investigating the problem with NVMe SSDs. I recommend watching the Issues with Ventuno Q (m.2, tmp, App Lab) forum topic to receive news on the subject.

I understand that the problem of your NVMe SSD not being detected is only one component of the report you made here.

In order to ensure all relevant information is available to others reading this topic, I'll share a link to what I assume is the pull request you mentioned:

Thanks. For reference, the PR #1013 validation section says it was tested on a VENTUNO Q with "both PCIe root ports enumerating through to the TI TUSB73x0 xHCI". So the same controller works on qcom-6.18.y with the upstream board DT, and the failure looks specific to the Ubuntu 6.8 (6.8.0-1084-qcom) kernel/DT shipped on the board, not hardware.

Is there a planned Ubuntu image update with a newer kernel or updated DT, or is the Yocto image built from meta-arduino-qcom the recommended route for now? Happy to test a candidate image.

BTW: the particular board is this one Amazon.com: Fikwot FX953 M.2 2230 SSD 500GB NVMe SSD for Steam Deck PCIe Gen 4x4, Read Up to 4850MB/s, M2 2230 Internal Soild State Drive, Compatible with ASUS ROG Ally, Microsoft Surface Pro : Electronics

Hello again @mmhoffm. In case you might have missed it, I wanted to notify you that an Arduino team member has now suggested a solution for the NVMe SSD problem in the other forum topic:

That has proven to not resolve all issues.