Ah, I just noticed your original reply used a Waveshare PCIe to M2 Mini adapter. I’ve just ordered one so I can test. Maybe there’s a quirk in the power rail on other HATs I’ve been testing… I just have no clue why it won’t work here!
Dual 2.5G Router HAT - FPC Connector use
Just tried with the same Waveshare HAT you had pictured above:
It still would not show up in lspci
:
$ lspci
0000:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2712 PCIe Bridge (rev 21)
0000:01:00.0 PCI bridge: ASMedia Technology Inc. ASM2806 4-Port PCIe x2 Gen3 Packet Switch (rev 01)
0000:02:00.0 PCI bridge: ASMedia Technology Inc. ASM2806 4-Port PCIe x2 Gen3 Packet Switch (rev 01)
0000:02:02.0 PCI bridge: ASMedia Technology Inc. ASM2806 4-Port PCIe x2 Gen3 Packet Switch (rev 01)
0000:02:06.0 PCI bridge: ASMedia Technology Inc. ASM2806 4-Port PCIe x2 Gen3 Packet Switch (rev 01)
0000:02:0e.0 PCI bridge: ASMedia Technology Inc. ASM2806 4-Port PCIe x2 Gen3 Packet Switch (rev 01)
0000:03:00.0 Non-Volatile memory controller: SK hynix Gold P31/PC711 NVMe Solid State Drive
0000:05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
0000:06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
0001:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2712 PCIe Bridge (rev 21)
0001:01:00.0 Ethernet controller: Raspberry Pi Ltd RP1 PCIe 2.0 South Bridge
Is it possible it’s a power supply option? I’ve tried two different Raspberry Pis, and four different HATs now, so there’s something definitely happening that’s throwing me for a loop, haha! Maybe I’m in the middle of some strange singularity in space that’s causing PCIe signaling/power to fail.
It could be related to track length matching. I’ve experienced this already in the past. It was with the RK3399 firefly board. I had made my own PCIe adapter from a pair of connectors and perfectly adjusted copper wires that had the exact same length (differences less than 0.1mm). Some cards would work and others not. I spent a whole week-end trying to verify if I wasn’t missing anything. After some tinkering and adjusting wire lengths I got another card to work. I finally gave up and found their official mezzanine board for sale on ebay, so I ordered it. When I received it, it was the exact opposite: the boards that used not to work with my adapter did work, and those which previously did were not recognized anymore! The only one that did was the last one which started working late, making me think it was probably tuned between the two! I verified everything and both of our cabling were exactly the same.
Thus what you’re facing here really makes me think about that. It’s probably a combination of line capacitance (caused by connectors) and track length which might not be perfectly matched. I was already facing problems with Gen2, here you’re on Gen3 which might be even more sensitive.
It could be completely unrelated, of course, but I thought I should share this experience since what you’re facing looks pretty similar.
Hi @geerlingguy
Are the cables on this side connected in the right direction? Can you post a separate picture of the FPC cable you are using?
Ah! Finally I have it working:
$ lspci
0000:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2712 PCIe Bridge (rev 21)
0000:01:00.0 PCI bridge: ASMedia Technology Inc. ASM2806 4-Port PCIe x2 Gen3 Packet Switch (rev 01)
0000:02:00.0 PCI bridge: ASMedia Technology Inc. ASM2806 4-Port PCIe x2 Gen3 Packet Switch (rev 01)
0000:02:02.0 PCI bridge: ASMedia Technology Inc. ASM2806 4-Port PCIe x2 Gen3 Packet Switch (rev 01)
0000:02:06.0 PCI bridge: ASMedia Technology Inc. ASM2806 4-Port PCIe x2 Gen3 Packet Switch (rev 01)
0000:02:0e.0 PCI bridge: ASMedia Technology Inc. ASM2806 4-Port PCIe x2 Gen3 Packet Switch (rev 01)
0000:03:00.0 Non-Volatile memory controller: SK hynix Gold P31/PC711 NVMe Solid State Drive
0000:04:00.0 Non-Volatile memory controller: Phison Electronics Corporation PS5013 E13 NVMe Controller (rev 01)
0000:05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
0000:06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
0001:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2712 PCIe Bridge (rev 21)
0001:01:00.0 Ethernet controller: Raspberry Pi Ltd RP1 PCIe 2.0 South Bridge
I flipped the cable around, a 180, and it is giving me the power LED and the NVMe drive is recognized.
I mounted the NVMe drive, and ran a disk benchmark to be sure I was getting full bandwidth:
Benchmark | Result |
---|---|
iozone 4K random read | 51.61 MB/s |
iozone 4K random write | 184.09 MB/s |
iozone 1M random read | 659.47 MB/s |
iozone 1M random write | 707.95 MB/s |
iozone 1M sequential read | 669.09 MB/s |
iozone 1M sequential write | 697.44 MB/s |
So it seems the mystery is solved!
Well the M.2 HAT worked, but it seems like the other HATs still don’t, re-confirming the orientation is correct on the HAT side; I unplugged the FFC from a Pi 5 that was confirmed working, and plugged it directly into the Router HAT, and I’m not seeing PWR light up on the HAT+ HAT, nor anything with lspci
.
On the regular Pi 5, the PWR LED lights up immediately when I power on the Pi 5. I am not using any GPIO pins on the Pi 5 either, so the setup should be identical.
I’ve re-seated the cable two times (on both sides), and still no PWR LED on the WiFi HAT+.