About using PCIe TO 4-Ch SATA 3.0 Expander on Jetson Nano

Hello, Everyone

I am using the Jetson Nano devkit and the expander below.
How to use PCIe TO 4-Ch SATA 3.0 Expander on Jetson Nano.

PCIe TO 4-Ch SATA 3.0 Expander: https://www.waveshare.com/wiki/PCIe-TO-SATA-4P

I connected it as follows in terms of hardware, and the sata ssd is not being recognized.
The output of the lspci -tv command is shown below.

root@manager-desktop:~# lspci -tv
-[0000:00]-+-01.0-[01]----00.0  ASMedia Technology Inc. Device 1064
           \-02.0-[02]----00.0  Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controlle

I also tried the aspm-related policy settings below.
root@manager-desktop:~# echo “performance” > /sys/module/pcie_aspm/parameters/policy
root@manager-desktop:~# cat /sys/module/pcie_aspm/parameters/policy
default [performance] powersave

lspci.txt (14.7 KB)
lspci-xx.txt (1.2 KB)

The error message that appears when mounting the board is attached.
pcierror.txt (88.3 KB)

[H/W]

Thank you.

Hello, @WayneWWW

Can you answer the above question?

Thank you.

First, I have to say that actually I don’t know what you are doing.

You said you are using nano devkit. But what I want to say is jetson nano devkit does not have a PCIe slot for you to connect a x4 device to it.

1 Like

Hello, @WayneWWW

I connected it like below.

Thank you.

So is jetson able to detect your adapter in such connection?

1 Like

Hello, @WayneWWW

I have attached the output of the lspci command as a log to the question above.

Thank you.

Looks like the SATA device is showing up. How about try other SATA too?

1 Like

Hello, @WayneWWW

The /dev/sdx node is not visible.
I don’t know why I can’t see it.

Thank you.

Try to disable aspm by adding pcie_aspm=off to your kernel cmdline.

1 Like

Incidentally, to add a kernel command line entry, append it to the “APPEND” entry in “/boot/extlinux/extlinux.conf”. It is space delimited, but one single long line.

I am only guessing, but the error report of “can't find device of ID0010”, extending infinitely, makes me think there is a working PCI device reporting that it has certain sub-devices, but the signal or incorrect software (e.g., a driver lacking an ability to work with the device; this isn’t the PCI driver, but the driver of the device itself) means the device will never be found. The ASPM might be a reason for this (if power management disabled the device then the device cannot respond), but it could be a lot of other reasons. The fact is that the PCI itself is working correctly with at least one port, and so perhaps the software lacks the knowledge that this card has more ports (it’s just one possibility, and I don’t know that this is going on, but it seems to be a reasonable guess since an electrical failure would likely affect all devices).

1 Like

Hello, @WayneWWW

After adding pcie_aspm=off in /boot/extlinux/extlinux.conf

I can see error log like below attached file.

pcierror_log.txt (131.0 KB)

Could you tell me how to resolve this error message?

manager@manager-desktop:~$ lspci -vv
00:01.0 PCI bridge: NVIDIA Corporation Device 0fae (rev a1) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR+ <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 83
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	Memory behind bridge: 13000000-130fffff
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
	BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: <access denied>
	Kernel driver in use: pcieport

00:02.0 PCI bridge: NVIDIA Corporation Device 0faf (rev a1) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 83
	Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
	I/O behind bridge: 00001000-00001fff
	Prefetchable memory behind bridge: 0000000020000000-00000000200fffff
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
	BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: <access denied>
	Kernel driver in use: pcieport

01:00.0 SATA controller: ASMedia Technology Inc. Device 1064 (rev ff) (prog-if ff)
	!!! Unknown header type 7f
	Kernel driver in use: ahci

Thank you.

FYI, to see max information on lspci use sudo and “-vvv” option.

Note: Those errors are physical layer. This says it is most likely something related to the physical hardware failing to talk to the PCI card, and not software (software could be involved, but until hardware is fixed, it can’t get to that stage to know). Something as simple as signal quality being bad could do this.

Note you can specify that slot with “lspci -s 01:00.0”. You could then query just this device. It might be interesting to see the topology of that device, though I doubt it would help much since the bus lost the device:
sudo lspci -s 01:00.0 -vv

If you connect this to another Linux computer, and find the slot (which is what the “-s 01:00.0” is…it is the listed identifier on the left side of plain “lspci”), does this device work on the other computer, and what does this show (adjust for the new slot, 01:00.0 is just an example from your Jetson):

sudo lspci -s 01:00.0 -vvv
sudo lspci -s 01:00.0 -vv -t

From some research on this the PHY failure might be related to either overheat or undervolt (which is hardware failure, but not from bad hardware so much as inadequate power or too much power draw). An example would be if the card were pulling more power than the Jetson could produce if it is voltage dropping. Does this card have any accommodation for external power?

1 Like