M.2 PCIe AHCI SSD (Kingston Predator HyperX) Troubleshooting (Solved)

I am trying to hot swap the PCIe M.2 SSD so that I can have more space in my Jetson TX1. Unfortunately, the TX1 is unable to detect anything from the simple lspci or parted command. Below are a list of things that I have attempted.

  1. “lspci”
    returns nothing.
  2. “rescan-scsi-bus.sh”
    returns nothing.
  3. “dmesg | grep -i ahci”
    returns the following:
    [ 6.073115] tegra-sata tegra-sata.0: AHCI 0001.0301 32 slots 2 ports 3 Gbps 0x1 impl TEGRA-SATA mode
M.2 AHCI Gen 2.0 SSD: 240GB Kingston Predator HyperX M.2 SSD to PCIe X4 Adapter: ASUS Hyper M.2 X4 Mini

My guess is that the adapter only works with asus products. However, both LED lights on the adapter turn on, meaning it should be a software driver issue rather than a hardware issue. The Toshiba website has a SSD Utility software for Ubuntu 14.04, but it is only for x32 and x64. Any input is greatly appreciated and I hope this thread can serve as a to-do-guide for anyone who wants access to PCIe SSDs.

I know nothing of the particular hardware, but in addition to PCIe data lanes, the M.2 specification also exposes a USB data lane and a SATA lane. From what you’ve said, I doubt “lsblk” will show anything, but what about “lsusb”? If the device uses USB, then “lsusb” will differ depending on whether the card is connected or not.

I have doubts about hot-swap ability being implemented. For testing purposes, I’d suggest running each test with a reboot between any disconnect and connect of an M.2 device.

Both “lsblk” and “lsusb” show nothing concerning the device.

by “Hot swapping”, you mean connecting PCIe SSD after the board is booted? if so, that is not supported.
BTW, Can you please attach full log if possible (including the hot swapping part) ?

I think you are confusing “Hot Plugging” with “Hot Swapping.” I merely meant using the PCIe SSD as extra space much like a regular SATA SSD when I used the term, “Hot swapping.” Sorry for the confusion. Also, because nothing shows up with lsblk, lsusb, lspci commands, there is no log to show you.

Also, because nothing shows up with lsblk, lsusb, lspci commands, there is no log to show you.
That is fine. I would still want to take a look at it for any potential PCIe failures in the log during enumeration process.

I have the Samsung XP941 AHCI mounted on a generic M2 -> PCIe card (also x4), it shows up no problem and can be mounted and used.

The trouble I have is with the write speed, the read speed is acceptable (~700MB/s), but the write speed is weird (190MB/s). Whereas the same card on other system goes over 1GB/s write speed.

The method of testing write speed may be useful in figuring out where the bottleneck is (I have no device to test, but anyone debugging the bottleneck will need to be able to reproduce it first).

Thank you for all of your advice. It turns out that the PCIe M.2 adapter I was using before was incompatible with the TX1. I used a generic adapter and it is now working, except I have to turn on the TX1 before plugging in the Adapter+SSD. It seems like the board draws a lot of power at once. I am considering adding a heatsink to the adapter. I also notice that for generic adapters, the board gets hot very quickly. Also like user BillyW, my read speed is acceptable(~550MB/s) but my write speed is only (160MB/s). The read speed for my Samsung Evo 850 SSD plugged in the SATA port is (~250MB/s) and the write speed is around (80MB/s).

I have a separate thread regarding the speed issue here:
https://devtalk.nvidia.com/default/topic/940605/pcie-x4-speed-issue-with-ssd/
Maybe one of you know what might be happening.
-Billy