Honeycomb not recognising M.2 NVMe device

Hi all,

So, my Honeycomb LX2 finally beat the chip supply crisis, and I’ve assembled it into a mostly working system. Boot from MMC works fine, but I can’t seem to access to the attached NVME drive.

Super grateful in advance for any advice :-).

Background

When attempting to copy a boot image from uboot I get:

=> load mmc 0:1 0xa4000000 ubuntu-core.img
440401920 bytes read in 19192 ms (21.9 MiB/s)
=> nvme scan
=> nvme write 0xa4000000 0 0xd2000

nvme write: device 0 block # 0, count 860160 ... -19 blocks written: ERROR
=> 

Attempting to access the NVMe from within Linux (booted from MMC) gives similar results:

[  135.741600] nvme nvme0: Device not ready; aborting reset
[  135.762189] blk_update_request: I/O error, dev nvme0n1, sector 488396928 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 0

# Questions

  • Before I try another drive, are there any particular compatibility requirements I should be paying attention to?
  • Are there any DIP switches or other configuration I may have missed required to make NVMe work?
  • Any other ideas?

Reference info:

The M.2 drive I’m using is: Crucial P5 250GB M.2 2280SS

The Linux OS image I’m using is: lx2160acex7_2000_700_3200_8_5_2-bc46e34.img

Initial uboot output:

U-Boot 2020.04-00026-gbc620478 (Jun 15 2021 - 19:24:32 +0000)

SoC:  LX2160ACE Rev2.0 (0x87360020)
Clock Configuration:
       CPU0(A72):2000 MHz  CPU1(A72):2000 MHz  CPU2(A72):2000 MHz  
       CPU3(A72):2000 MHz  CPU4(A72):2000 MHz  CPU5(A72):2000 MHz  
       CPU6(A72):2000 MHz  CPU7(A72):2000 MHz  CPU8(A72):2000 MHz  
       CPU9(A72):2000 MHz  CPU10(A72):2000 MHz  CPU11(A72):2000 MHz  
       CPU12(A72):2000 MHz  CPU13(A72):2000 MHz  CPU14(A72):2000 MHz  
       CPU15(A72):2000 MHz  
       Bus:      700  MHz  DDR:      3200 MT/s
Reset Configuration Word (RCW):
       00000000: 50838338 24500050 00000000 00000000
       00000010: 00000000 0e010000 00000000 00000000
       00000020: 0fc001a0 00002580 00000000 08000086
       00000030: 09240000 00000001 00000000 00000000
       00000040: 00000000 00000000 00000000 00000000
       00000050: 00000000 00000000 00000000 00000000
       00000060: 00000000 00000000 00027000 00000000
       00000070: 08a80001 00151020
Model: SolidRun LX2160ACEX7 COM express type 7 based board
Board: LX2160ACE Rev2.0-CEX7, SD
SERDES1 Reference: Clock1 = 161.13MHz Clock2 = 100MHz
SERDES2 Reference: Clock1 = 100MHz Clock2 = 100MHz
SERDES3 Reference: Clock1 = 100MHz Clock2 = 100Hz
DRAM:  31.9 GiB
DDR    31.9 GiB (DDR4, 64-bit, CL=22, ECC off)
       DDR Controller Interleaving Mode: 256B
WDT:   Started with servicing (30s timeout)
Using SERDES1 Protocol: 8 (0x8)
Using SERDES2 Protocol: 5 (0x5)
Using SERDES3 Protocol: 2 (0x2)
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
Loading Environment from MMC... *** Warning - bad CRC, using default environment

In:    serial_pl01x
Out:   serial_pl01x
Err:   serial_pl01x
Net:   EEPROM: TlvInfo v1 len=88
PCIe1: pcie@3400000 disabled
PCIe2: pcie@3500000 disabled
PCIe3: pcie@3600000 Root Complex: x4 gen3
PCIe4: pcie@3700000 disabled
PCIe5: pcie@3800000 Root Complex: no link
PCIe6: pcie@3900000 disabled
DPMAC3@xgmii, DPMAC4@xgmii, DPMAC5@xgmii, DPMAC6@xgmii, DPMAC7@xgmii, DPMAC8@xgmii, DPMAC9@xgmii, DPMAC10@xgmii, DPMAC17@rgmii-id [PRIME], DPMAC18@rgmii-id

MMC read: dev # 0, block # 20480, count 4608 ... 4608 blocks read: OK

MMC read: dev # 0, block # 28672, count 2048 ... 2048 blocks read: OK
crc32+ 
fsl-mc: Booting Management Complex ... SUCCESS
fsl-mc: Management Complex booted (version: 10.24.0, boot status: 0x1)
Hit any key to stop autoboot:  0 

Can you test a SystemReady edk2 image from here SolidRun Images and see if it is able to access you nvme device?

Hi!

Thanks for helping :-); I’ll be honest, I’m not an expert from the UEFI prompt (give me a Sparcstation with an OpenBoot prompt and I’m away, but now I’m showing my age…,) but I’ve given it a go and I am thinking the short answer is ‘no’.

This is the output from the devices command:

Shell> devices
     T   D
     Y C I
     P F A
CTRL E G G #P #D #C  Device Name
==== = = = == == === =========================================================
  1B R - -  0  1   1 VenHw(D3987D4B-971A-435F-8CAF-4967EB627241)/Uart(115200,8,N
,1)
  27 R - -  0  5   0 VenHw(0D51905B-B77E-452A-A2C0-ECA0CC8D514A,0000230300000000
00)
  28 R - -  0  5   0 VenHw(0D51905B-B77E-452A-A2C0-ECA0CC8D514A,0000220300000000
00)
  29 R - -  0  5   0 VenHw(0D51905B-B77E-452A-A2C0-ECA0CC8D514A,0000210300000000
00)
  2A R - -  0  5   0 VenHw(0D51905B-B77E-452A-A2C0-ECA0CC8D514A,0000200300000000
00)
  3D R - -  0  3   3 VenHw(0D51905B-B77E-452A-A2C0-ECA0CC8D514A,0000110300000000
00)
  3E R - -  0  3   0 VenHw(0D51905B-B77E-452A-A2C0-ECA0CC8D514A,0000100300000000
00)
  49 R - -  0  1   1 VenHw(E248C411-0043-43BB-8514-758C3DFC302C)/Ctrl(0x0)
  52 R - -  0  1   2 PcieRoot(0x2)
  5A R - -  0  1   0 SD(0xCA)
  5B R - -  0  2   1 eMMC(0xCA)
  97 R - -  0  8  10 MAC(D063B4031EB6,0x1)
  98 D - -  1  0   0 MAC(D063B4031EB6,0x1)/VenHw(D79DF6B0-EF44-43BD-9797-43E93BC
F5FA8)
  9B D - -  1  0   0 MAC(D063B4031EB6,0x1)/VenHw(9FB1A1F3-3B71-4324-B39A-745CBB0
15FFF)
  A2 D - -  1  0   0 MAC(D063B4031EB6,0x1)/VenHw(5BEDB5CC-D830-4EB2-8742-2D4CC9B
54F2C)
  B4 D - -  1  1   0 MAC(D063B4031EB6,0x1)/IPv4(0.0.0.0)
  BC D - -  1  1   0 MAC(D063B4031EB6,0x1)/IPv6(0000:0000:0000:0000:0000:0000:00
00:0000)
  C3 D - -  1  0   0 MAC(D063B4031EB6,0x1)/IPv4(0.0.0.0)/Uri()
  C6 D - -  1  0   0 MAC(D063B4031EB6,0x1)/IPv6(0000:0000:0000:0000:0000:0000:00
00:0000)/Uri()
  E3 D - -  1  0   0 PcieRoot(0x2)/Pci(0x0,0x0)
  E4 D - -  1  0   0 PcieRoot(0x2)/Pci(0x0,0x0)/Pci(0x0,0x0)
  E5 B - -  1  5   3 VenHw(D3987D4B-971A-435F-8CAF-4967EB627241)/Uart(115200,8,N
,1)/VenMsg(7D916D80-5BB1-458C-A48F-E25FDD51EF94)
  E6 D - -  1  0   0 VenHw(0D51905B-B77E-452A-A2C0-ECA0CC8D514A,0000110300000000
00)/USB(0x0,0x0)
  E7 D - -  1  0   0 VenHw(0D51905B-B77E-452A-A2C0-ECA0CC8D514A,0000110300000000
00)/USB(0x1,0x0)
  E8 D - -  1  0   0 VenHw(0D51905B-B77E-452A-A2C0-ECA0CC8D514A,0000110300000000
00)/USB(0x0,0x0)/USB(0x2,0x0)
  E9 D - -  1  1   0 eMMC(0xCA)/HD(1,MBR,0x30303030,0x20000,0xB0800)

I assume if UEFI had a driver/was able to access it as a block device then it would appear in this list?

That said, the pci command does show the drive:

Shell> pci
   Seg  Bus  Dev  Func
   ---  ---  ---  ----
    02   00   00    00 ==> Bridge Device - PCI/PCI bridge
             Vendor 1957 Device 8D80 Prog Interface 0
    02   01   00    00 ==> Mass Storage Controller - Non-volatile memory subsystem
             Vendor 1344 Device 5405 Prog Interface 2

(Vendor 1344 is Micron aka Crucial, so pretty sure that’s the right device. At least this reassures me I plugged it in the right way round ;-).)

Incidentally I just bought the 1TB drive in the same series and discovered that it does not work with the Honeycomb board :grimacing:

CT1000P5SSD8 is the exact model I have.

1 Like

Ahh, this is good information to have.

For the timebeing I’ve worked around it by using a SATA drive (I have stuff to do and need to keep making progress…), but good to know I shouldn’t assume the M.2 drive itself is dead.

Sorry to hear about the incompatibility. I have not tested any Crucial drives personally. If you have time I can build a debug firmware that may hopefully provide more information on what the incompatibility issue is.

I need to build/install a new OS image anyway (turns out Docker can’t run with the SolidRun provided images anyway because the kernel’s not built with required iptables/NAT options - boring story) so my time with a screwdriver and swapping SD cards isn’t quite over yet - so sure, I’d be more than happy to help if I can.

In case you are shopping for another, I had better luck with:
Disk model: Samsung SSD 970 EVO Plus 500GB
I’m able to boot from eMMC to use the M2 card as the root partition.
0000:01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981/PM983 (prog-if 02 [NVM E
xpress])

LnkSta: Speed 8GT/s (ok), Width x4 (ok)

1 Like