[Rock 5B] 980 EVO SSD SATA

Today i received my 2TB 980 EVO SSD SATA M2 2280 which claims sequential read/write speeds up to 3,500/3,000 MB/s.

The problem is it failed to initialize, so two questions:

  • can it be used?
  • what changes i need in the DTS?

boot log:

[    3.976316] reg-fixed-voltage vcc3v3-pcie2x1l0: Looking up vin-supply from device tree
[    3.976319] vcc3v3_pcie2x1l0: supplied by vcc5v0_sys
[    4.035296] vcc3v3_pcie2x1l0: 3300 mV, enabled
[    4.035346] reg-fixed-voltage vcc3v3-pcie2x1l0: vcc3v3_pcie2x1l0 supplying 3300000uV
[    4.035379] vcc3v3_pcie30: 3300 mV, disabled
[    4.035411] reg-fixed-voltage vcc3v3-pcie30: Looking up vin-supply from device tree
[    4.035413] vcc3v3_pcie30: supplied by vcc5v0_sys
[    4.035437] reg-fixed-voltage vcc3v3-pcie30: vcc3v3_pcie30 supplying 3300000uV
[    4.395312] rk-pcie fe150000.pcie: invalid prsnt-gpios property in node
[    4.395330] rk-pcie fe150000.pcie: Looking up vpcie3v3-supply from device tree
[    4.395396] rk-pcie fe170000.pcie: invalid prsnt-gpios property in node
[    4.395410] rk-pcie fe170000.pcie: Looking up vpcie3v3-supply from device tree
[    4.400843] rk-pcie fe170000.pcie: missing legacy IRQ resource
[    4.400863] rk-pcie fe170000.pcie: IRQ msi not found
[    4.400871] rk-pcie fe170000.pcie: use outband MSI support
[    4.400876] rk-pcie fe170000.pcie: Missing *config* reg space
[    4.400895] rk-pcie fe170000.pcie: host bridge /pcie@fe170000 ranges:
[    4.400919] rk-pcie fe170000.pcie:      err 0x00f2000000..0x00f20fffff -> 0x00f2000000
[    4.400936] rk-pcie fe170000.pcie:       IO 0x00f2100000..0x00f21fffff -> 0x00f2100000
[    4.400954] rk-pcie fe170000.pcie:      MEM 0x00f2200000..0x00f2ffffff -> 0x00f2200000
[    4.400967] rk-pcie fe170000.pcie:      MEM 0x0980000000..0x09bfffffff -> 0x0980000000
[    4.400994] rk-pcie fe170000.pcie: Missing *config* reg space
[    4.401021] rk-pcie fe170000.pcie: invalid resource
[    4.411815] rk-pcie fe150000.pcie: missing legacy IRQ resource
[    4.411834] rk-pcie fe150000.pcie: IRQ msi not found
[    4.411842] rk-pcie fe150000.pcie: use outband MSI support
[    4.411850] rk-pcie fe150000.pcie: Missing *config* reg space
[    4.411863] rk-pcie fe150000.pcie: host bridge /pcie@fe150000 ranges:
[    4.411885] rk-pcie fe150000.pcie:      err 0x00f0000000..0x00f00fffff -> 0x00f0000000
[    4.411907] rk-pcie fe150000.pcie:       IO 0x00f0100000..0x00f01fffff -> 0x00f0100000
[    4.411930] rk-pcie fe150000.pcie:      MEM 0x00f0200000..0x00f0ffffff -> 0x00f0200000
[    4.411943] rk-pcie fe150000.pcie:      MEM 0x0900000000..0x093fffffff -> 0x0900000000
[    4.411968] rk-pcie fe150000.pcie: Missing *config* reg space
[    4.411994] rk-pcie fe150000.pcie: invalid resource
[    4.605937] rk-pcie fe170000.pcie: PCIe Linking... LTSSM is 0x3
[    4.619275] rk-pcie fe150000.pcie: PCIe Linking... LTSSM is 0x0
[    4.631485] rk-pcie fe170000.pcie: PCIe Linking... LTSSM is 0x3
[    4.644818] rk-pcie fe150000.pcie: PCIe Linking... LTSSM is 0x0
[    4.658149] rk-pcie fe170000.pcie: PCIe Linking... LTSSM is 0x3
[    4.671486] rk-pcie fe150000.pcie: PCIe Linking... LTSSM is 0x0
[    4.684819] rk-pcie fe170000.pcie: PCIe Linking... LTSSM is 0x3
[    4.698152] rk-pcie fe150000.pcie: PCIe Linking... LTSSM is 0x1
[    4.711483] rk-pcie fe170000.pcie: PCIe Linking... LTSSM is 0x3
[    4.724819] rk-pcie fe150000.pcie: PCIe Linking... LTSSM is 0x1
[    4.943243] ehci-pci: EHCI PCI platform driver
[    5.388609] vcc3v3_pcie2x1l2: 3300 mV, enabled
[    5.388756] reg-fixed-voltage vcc3v3-pcie2x1l2: Looking up vin-supply from device tree
[    5.388771] vcc3v3_pcie2x1l2: supplied by vcc_3v3_s3
[    5.388986] reg-fixed-voltage vcc3v3-pcie2x1l2: vcc3v3_pcie2x1l2 supplying 3300000uV
[    5.557731] rk-pcie fe190000.pcie: invalid prsnt-gpios property in node
[    5.557763] rk-pcie fe190000.pcie: Looking up vpcie3v3-supply from device tree
[    5.558295] rk-pcie fe190000.pcie: missing legacy IRQ resource
[    5.558316] rk-pcie fe190000.pcie: IRQ msi not found
[    5.558326] rk-pcie fe190000.pcie: use outband MSI support
[    5.558337] rk-pcie fe190000.pcie: Missing *config* reg space
[    5.558358] rk-pcie fe190000.pcie: host bridge /pcie@fe190000 ranges:
[    5.558390] rk-pcie fe190000.pcie:      err 0x00f4000000..0x00f40fffff -> 0x00f4000000
[    5.558407] rk-pcie fe190000.pcie:       IO 0x00f4100000..0x00f41fffff -> 0x00f4100000
[    5.558428] rk-pcie fe190000.pcie:      MEM 0x00f4200000..0x00f4ffffff -> 0x00f4200000
[    5.558443] rk-pcie fe190000.pcie:      MEM 0x0a00000000..0x0a3fffffff -> 0x0a00000000
[    5.558485] rk-pcie fe190000.pcie: Missing *config* reg space
[    5.558516] rk-pcie fe190000.pcie: invalid resource
[    5.821635] rk-pcie fe190000.pcie: PCIe Link up, LTSSM is 0x130011
[    5.821845] rk-pcie fe190000.pcie: PCI host bridge to bus 0004:40
[    5.821866] pci_bus 0004:40: root bus resource [bus 40-4f]
[    5.821881] pci_bus 0004:40: root bus resource [??? 0xf4000000-0xf40fffff flags 0x0]
[    5.821899] pci_bus 0004:40: root bus resource [io  0x200000-0x2fffff] (bus address [0xf4100000-0xf41fffff])
[    5.821913] pci_bus 0004:40: root bus resource [mem 0xf4200000-0xf4ffffff]
[    5.821927] pci_bus 0004:40: root bus resource [mem 0xa00000000-0xa3fffffff pref]
[    5.821979] pci 0004:40:00.0: [1d87:3588] type 01 class 0x060400
[    5.822012] pci 0004:40:00.0: reg 0x38: [mem 0x00000000-0x0000ffff pref]
[    5.822095] pci 0004:40:00.0: supports D1 D2
[    5.822109] pci 0004:40:00.0: PME# supported from D0 D1 D3hot
[    5.834392] pci 0004:40:00.0: Primary bus is hard wired to 0
[    5.834429] pci 0004:40:00.0: bridge configuration invalid ([bus 01-ff]), reconfiguring
[    5.834680] pci 0004:41:00.0: [10ec:8125] type 00 class 0x020000
[    5.834758] pci 0004:41:00.0: reg 0x10: [io  0x0000-0x00ff]
[    5.834847] pci 0004:41:00.0: reg 0x18: [mem 0x00000000-0x0000ffff 64bit]
[    5.834897] pci 0004:41:00.0: reg 0x20: [mem 0x00000000-0x00003fff 64bit]
[    5.835299] pci 0004:41:00.0: supports D1 D2
[    5.835311] pci 0004:41:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[    5.860689] pci_bus 0004:41: busn_res: [bus 41-4f] end is updated to 41
[    5.860765] pci 0004:40:00.0: BAR 8: assigned [mem 0xf4200000-0xf42fffff]
[    5.860785] pci 0004:40:00.0: BAR 6: assigned [mem 0xf4300000-0xf430ffff pref]
[    5.860803] pci 0004:40:00.0: BAR 7: assigned [io  0x200000-0x200fff]
[    5.860825] pci 0004:41:00.0: BAR 2: assigned [mem 0xf4200000-0xf420ffff 64bit]
[    5.860880] pci 0004:41:00.0: BAR 4: assigned [mem 0xf4210000-0xf4213fff 64bit]
[    5.860927] pci 0004:41:00.0: BAR 0: assigned [io  0x200000-0x2000ff]
[    5.860954] pci 0004:40:00.0: PCI bridge to [bus 41]
[    5.860969] pci 0004:40:00.0:   bridge window [io  0x200000-0x200fff]
[    5.860986] pci 0004:40:00.0:   bridge window [mem 0xf4200000-0xf42fffff]
[    5.864273] pcieport 0004:40:00.0: PME: Signaling with IRQ 152
[    7.278481] rk-pcie fe170000.pcie: PCIe Link Fail
[    7.278557] rk-pcie fe170000.pcie: failed to initialize host
[    7.288407] rk-pcie fe150000.pcie: PCIe Link Fail
[    7.288477] rk-pcie fe150000.pcie: failed to initialize host
[    7.289570] rockchip-pm-domain fd8d8000.power-management:power-controller: Looking up pcie-supply from device tree
[    7.289666] rockchip-pm-domain fd8d8000.power-management:power-controller: Looking up pcie-supply property in node /power-management@fd8d8000/power-controller failed

If i enable sata0 it breaks 2.5Gbps ethernet. Looks like i made a bad choice.

your ninja :rofl:
since when is nvme drive a sata drive ?
and ever heard of combophy :rofl:

you dont have todo anything
it seems that some drives dont work .

1 Like

Hmmm, i need a technical explanation.
Your answer is dubious.

“The communication drivers and interface between NVMe and SATA are completely different. SATA uses AHCI drivers that are designed for hard disk drives (HDD) with spinning technology while the NVMe driver is specifically designed for SSDs with flash technology”

I am ingenuous about SSD, i thought the SSD SATA would mean it would appear as it was a SATA device attached, hence i enabled sata.

EVO 970 seems to work for other users (Introduce ROCK 5 Model B - ARM Desktop level SBC) so i wrongly assumed EVO 980 would also. But looks like no driver for SSD SATA , is it that what you mean?

I’m using a Kingston NV2 2TB. It works ootb. Fast and low current. And quite affordable… 3,500/2,800MB/s It is fast enough for the PCIe 3 of the Rock5b. Getting anything more fancy, is not necessary as the Rock5b won’t be able to keep up. That is only usefully if you have an i5/i7

yep you say it yourself “interface between NVMe and SATA are completely different”
i may assume you know what a sata connector is ?
a m2 is diffrent as a sata connector so that would also give a hint .

i can understand the pcie=m2 confusion.

you dont have to enable sata0 or 1 and for rk3588 , that you do if you make a custom usb3<>sata cable or with a custom m2<>sata for the wifi slot on 5b , but that involves more things , and has to do with the combiphy function on rk35xx socs

this is a example from a rk356x soc for the rk3588 and rk3568 there is 1 more lane

you would only have to put the nvme drive on the bottom m2 slot and boot a recent distro . and if you wanna boot from it you would have to flash the spi . and please boot first from a sd or emmc to see if the drive works for you try to make it boot from nvme .

and i suggested also in antother topic to make a topic for drives that work and make it on top or sticky so people have a reference and not 50 topics about the same drive

Yeah, i know what a SATA connector looks like. And is not about DISTRO, it is about KERNEL (kernel driver and how to enable the correct driver, and if the driver can handle it).

Can you highlight the differences between M2 SSD Nvme vs M2 SSD SATA? In kernel, which driver would handle it?

People are having issues with Nvme due to power issues, i don’t think it is my case, my PD is the 65W.

Adapter: rk3x-i2c
in0:          20.00 V  (min = +20.00 V, max = +20.00 V)
curr1:         3.25 A  (max =  +3.25 A)

Here is the device:

I just want to know if there is a chance to make it work, or mark it as NOT COMPATIBLE.

I paid for the EVO 980 around $45 , that is affordable… :laughing:

It is NGFF… Maybe this is why…

Most likely, but i had the impression that NGFF would use M key for this socket, despite having M + B keys.

Source Anandtech:


that is just a fake drive :face_with_monocle:

buy a proper ssd :wink:

Specs say:

M.2 connector M key (bottom) for NVMe with PCIe 3.0 x4 lanes

Not NGFF, it is a different protocol.

Isn’t this socket 3 as described in:

  • Two SSD host connector
    Socket 3

There is always a chance, will try to test it in some PC…

it just would still be 2x max and it is not seen as device so likely just a sata interface

buy a M2 SSD NGFF Sata Adapter and buy the sata adapter for the wifi slot or mod a usb3 cable with a sata connector and adjust the dts or proberley there is a overlay for that

I tested it with a PC in an M2 Slot. It was detected as M2.A: SSD 2TB.
But i found out the SSD device is not powered on Rock 5B. It is either my DTB which is missing something or the Rock 5B circuitry is not prepared for this period.

I am to receive an NVme soon and can check if it is my mistake.

BTW: it is on sale on aliexpress for $37.00 (free shipping) now. Fake or not, i have not done any real test with it.

And it is shown as SATA device on my Ubuntu Server.

It’s probably a fake “Samsung” device, but that doesn’t mean it’s not a working SSD. It is most certainly a SATA drive, as evidenced by the B+M key.

That said, according to the Rock5B schematic, it appears the SATA pins are indeed connected on the M slot:

I glanced at the radxa linux kernel, and SATA is built-in. So, I think you should be able to get that drive working with some DTB hacking.

On a related note, if you go NVME, be wary of higher capacity 970 EVO Plus or 980 drives. Samsung’s new controller has not played nice with a growing list of users.

Right. The first thing that comes to my mind is: should there be power on the SSD (even if dtb is missing some regulator or node)?

Sadly that question is outside the bounds of my current knowledge-base. Perhaps the kernel would log a connected and powered device with more verbose logs?

Hopefully a more experienced user will chime in. It makes sense to assign a lower-power SATA drive to that slot in a number of use cases, so might as well troubleshoot it.

The sata-pins are connected indeed, but those pins can be used for sata AND PCIe and if you follow this connection you will end up at the PCIe Interface of the Soc. This means that they are only intended for PCIe and even changing the DTB wont’t get you any sata-signal there. For sata they would need to be connected to other pins on the Soc.