Trouble booting Armbian from NVMe SSD

Hey,

let me start with saying that I am terrible sorry to create yet ANOTHER thread about NVMe booting.
I’ve been trying for two days, searching both the armbian and raxda forum for keywords like nvme, ssd, u-boot, etc. checking every thread I could twice. I just can’t seem to find a solution or missunderstanding common troubleshooting processes.

My problem:
I have a RockPi 4B 1.3 with SPI installed.
A transcend 220S 240GB NVMe SSD

I want to boot Armbian from my SSD, so I first started out following this tutorial. I used ubuntu bionic to install the latest u-boot image onto the SPI until step 2. (unrelated note: I had to uncomment one line inside the rockpi4b_upgrade_bootloader.sh script - 4th line from the bottom. Otherwise SPI wont ever be updated.)
Instead of flashing ubuntu onto the SSD, I downloaded Armbian, flashed that and changed the verbosity inside the armbian boot partition. Plugged it in, removed SD and this bootlog follows:

  • See 2nd post for log. 1

Alright, ambitious to just stop inbetween two steps. So, pluged SD back in, booted into ubuntu and continued the tutorial above starting at step 2.
Flashed ubuntu to SSD. Removed SD and tried to boot from SSD. That didnt work because of an error and I presume this one:

Bootlog Snippit | No SD | NVMe SSD with ubuntu
Retrieving file: /dtbs/4.4.154-59-rockchip-g5e70f14/rockchip/rk3399-rock-pi-4b.dtb
** Unable to read file /dtbs/4.4.154-59-rockchip-g5e70f14/rockchip/rk3399-rock-pi-4b.dtb **
Skipping kernel-4.4.154-59-rockchip-g5e70f14 for failure retrieving fdt
SCRIPT FAILED: continuing...

I thought maybe all those updates in step 2 are also needed on the SSD image. So I went ahead, booted from SD again and dd’d everything from SD to SSD. Shutdown, remove SD, boot from NVMe:

  • See 2nd post for log. 2

This is more or less where I am now. I tried a few different images, old and new kernels. Made a franken u-boot from armbian and flashed it onto the SPI, nothing worked yet.

I checked the SSD controller, because some do not work well with the SPI. But my SSD uses the same controller some other people reported as known good.

Any ideas? I’m keen on trying things by myself, but I’m not quite sure what to try anymore.

1 Like

-

Alright, while I sadly could not find the reason WHY, I did manage to boot Armbian via SPI with no SD card inserted by compiling the latest armbian build myself.

You did not tried nightly builds before compiling Armbian, right? The reason is that nightly (and git) using mainline uboot.

Nope, didn’t try that.
But does the u-boot packaged into the image even matter if we boot from SPI? I thought the prepackaged u-boot only gets used if SPI is empty/not present?

it does matter, because it’s shows from where to boot and how. Without new uboot you can’t boot from nvme

Please ignore my ignorance, but I tought that that the u-boot on the SPI does this?
I get that there is the boot.scr inside the boot folder/partition, but that one gets executed by the u-boot on the SPI right? When does the u-boot on the NVMe/SD come into play?

Sadly, I am also back to square one. While I was fine booting yesterday, Its not anymore. The bootlog shoes the same as the first time I tried booting armbian …

Summary
[    3.769245] pci_bus 0000:00: root bus resource [bus 00-1f]
[    3.769744] pci_bus 0000:00: root bus resource [mem 0xfa000000-0xfbdfffff]
[    3.770366] pci_bus 0000:00: root bus resource [io  0x0000-0xfffff] (bus address [0xfbe00000-0xfbefffff])
[    3.771257] pci 0000:00:00.0: [1d87:0100] type 01 class 0x060400
[    3.771986] pci 0000:00:00.0: supports D1
[    3.772355] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
[    3.778303] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    3.779320] pci 0000:01:00.0: [126f:2262] type 00 class 0x010802
[    3.780036] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00003fff 64bit]
[    3.780810] pci 0000:01:00.0: Max Payload Size set to 256 (was 128, max 256)
[    3.781922] pci 0000:01:00.0: 16.000 Gb/s available PCIe bandwidth, limited by 5.0 GT/s PCIe x4 link at 0000:00:00.0 (capable of 31.504 Gb/s with 8.0 GT/s PCIe x4 link)
[    3.788493] pci_bus 0000:01: busn_res: [bus 01-1f] end is updated to 01
[    3.789169] pci 0000:00:00.0: BAR 14: assigned [mem 0xfa000000-0xfa0fffff]
[    3.789805] pci 0000:01:00.0: BAR 0: assigned [mem 0xfa000000-0xfa003fff 64bit]
[    3.790506] pci 0000:00:00.0: PCI bridge to [bus 01]
[    3.790964] pci 0000:00:00.0:   bridge window [mem 0xfa000000-0xfa0fffff]
[    3.792150] pcieport 0000:00:00.0: enabling device (0000 -> 0002)
[    3.793633] pcieport 0000:00:00.0: PME: Signaling with IRQ 240
[    3.797164] pcieport 0000:00:00.0: AER: enabled with IRQ 240
[    3.807032] nvme nvme0: pci function 0000:01:00.0
[    3.807966] nvme 0000:01:00.0: enabling device (0000 -> 0002)
[    3.813751] of_cfs_init
[    3.814143] of_cfs_init: OK
[   64.495622] nvme nvme0: I/O 16 QID 0 timeout, disable controller
[   64.603453] nvme nvme0: Device shutdown incomplete; abort shutdown
[   64.604801] nvme nvme0: Identify Controller failed (881)
[   64.605287] nvme nvme0: Removing after probe failure status: -5
[   64.621772] Freeing unused kernel memory: 4160K
[   64.649570] Run /init as init process
[   65.728739] rk_gmac-dwmac fe300000.ethernet: IRQ eth_wake_irq not found
[   65.729460] rk_gmac-dwmac fe300000.ethernet: IRQ eth_lpi not found
[   65.730371] rk_gmac-dwmac fe300000.ethernet: PTP uses main clock
[   65.732044] rk_gmac-dwmac fe300000.ethernet: clock input or output? (input).
[   65.732739] rk_gmac-dwmac fe300000.ethernet: TX delay(0x28).
[   65.733253] rk_gmac-dwmac fe300000.ethernet: RX delay(0x11).
[   65.733808] rk_gmac-dwmac fe300000.ethernet: integrated PHY? (no).
[   65.734858] rk_gmac-dwmac fe300000.ethernet: cannot get clock clk_mac_speed
[   65.735885] rk_gmac-dwmac fe300000.ethernet: clock input from PHY
[   65.741598] rk_gmac-dwmac fe300000.ethernet: init for RGMII
[   65.744860] rk_gmac-dwmac fe300000.ethernet: User ID: 0x10, Synopsys ID: 0x35
[   65.745590] rk_gmac-dwmac fe300000.ethernet:         DWMAC1000
[   65.746066] rk_gmac-dwmac fe300000.ethernet: DMA HW capability register supported
[   65.746740] rk_gmac-dwmac fe300000.ethernet: RX Checksum Offload Engine supported
[   65.747726] rk_gmac-dwmac fe300000.ethernet: COE Type 2
[   65.748203] rk_gmac-dwmac fe300000.ethernet: TX Checksum insertion supported
[   65.748841] rk_gmac-dwmac fe300000.ethernet: Wake-Up On Lan supported
[   65.749565] rk_gmac-dwmac fe300000.ethernet: Normal descriptors
[   65.750108] rk_gmac-dwmac fe300000.ethernet: Ring mode enabled
[   65.750643] rk_gmac-dwmac fe300000.ethernet: Enable RX Mitigation via HW Watchdog Timer
[   66.073090] libphy: stmmac: probed
[   66.075317] RTL8211E Gigabit Ethernet stmmac-0:00: attached PHY driver [RTL8211E Gigabit Ethernet] (mii_bus:phy_addr=stmmac-0:00, irq=POLL)
[   66.079654] RTL8211E Gigabit Ethernet stmmac-0:01: attached PHY driver [RTL8211E Gigabit Ethernet] (mii_bus:phy_addr=stmmac-0:01, irq=POLL)

That’s true.
Do I understand correctly that your nvme drive is accessible if you boot with Armbian SD?
Could you try booting it with mainline u-boot in the SPI flash?
No guarantee that this will solve your issues but IMHO it’s worth trying.

Boot this Armbian image with SD card.
If you do not want to run random binary image you can build yourself one with this branch.

When booted add following lines to /boot/armbianEnv.txt:

overlays=spi-jedec-nor
param_spinor_spi_bus=1

Reboot and then there should be /dev/mtdblock0 device.
Run nand-sata-install and choose “Install/update the bootloader on SPI Flash” and wait (~1 minute).
After getting back to command prompt run nand-sata-install again and choose “Boot from SPI - system on SATA, USB or NVMe” - this will erase your NVMe and transfer current Armbian from SD to it.

It’s rough around the edges but it is still a work in progress and will get polished.

Don’t fear of bad SPI write. In case anything goes wrong you can bypass SPI by shorting pins 23 and 25 during boot.

1 Like

@piter75 Thank you so very much for answering!

Both.
When I boot my minimal image, I can boot directly from SSD via SPI u-Boot without a problem.
lsblk shows my NVMe as boot drive and my SD card, which contains a single image of my cat.

I can also boot from the SD card. Flash it with balena and plug it in. Now, with both SSD and SD inserted, the u-boot from the SD card gets loaded first (the armbin version) and boots just fine. Now lsblk shows both SSD and SD. With the SD beeing the boot drive.

So, here is what I found:
I installed the image on both, my SSD and an SD. While booting from the SD, the u-boot seems messed up:

Summary
DDR Version 1.20 20190314
In
channel 0
CS = 0
MR0=0x98
MR4=0x1
MR5=0xFF
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0x0
CS = 1
MR0=0x18
MR4=0x1
MR5=0xFF
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0xFF
channel 1
CS = 0
MR0=0x98
MR4=0x2
MR5=0xFF
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0x0
CS = 1
MR0=0x18
MR4=0x3
MR5=0xFF
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0xFF
channel 0 training pass!
channel 1 training pass!
change freq to 400MHz 0,1
channel 0
CS = 0
MR0=0x98
MR4=0x1
MR5=0xFF
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0x0
CS = 1
MR0=0x18
MR4=0x1
MR5=0xFF
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0xFF
channel 1
CS = 0
MR0=0x98
MR4=0x2
MR5=0xFF
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0x0
CS = 1
MR0=0x18
MR4=0x81
MR5=0xFF
MR8=0x8
MR12=0x72
MR14=0x72
MR18=0x0
MR19=0x0
MR24=0x8
MR25=0xFF
channel 0 training pass!
channel 1 training pass!
change freq to 800MHz 1,0
Channel 0: LPDDR4,800MHz
Bus Width=32 Col=10 Bank=8 Row=15/15 CS=2 Die Bus-Width=16 Size=2048MB
Channel 1: LPDDR4,800MHz
Bus Width=32 Col=10 Bank=8 Row=15/15 CS=2 Die Bus-Width=16 Size=2048MB
256B stride
ch 0 ddrconfig = 0x101, ddrsize = 0x2020
ch 1 ddrconfig = 0x101, ddrsize = 0x2020
pmugrf_os_reg[2] = 0x3AA1FAA1, stride = 0xD
OUT
Boot1: 2018-06-26, version: 1.14
CPUId = 0x0
ChipType = 0x10, 222
Spi_ChipId = b4018
SpiBootInit:0
mmc0:cmd5,32
SdmmcInit=0 0
BootCapSize=0
UserCapSize=30436MB
FwPartOffset=2000 , 0
StorageInit ok = 191902
SecureMode = 0
SecureInit ret = 0, SecureMode = 0
GPT  signature is wrong
LoadTrust Addr:0x1800
LoadTrust Addr:0x1c00
LoadTrust Addr:0x2000
LoadTrust Addr:0x2400
LoadTrust Addr:0x2800
LoadTrust Addr:0x2c00
LoadTrust Addr:0x3000
LoadTrust Addr:0x3400
Addr:0x1800 No find trust.img!
LoadTrustBL error:-3
SecureMode = 0
SecureInit ret = 0, SecureMode = 0

I think I also encounterd this error, when I tried to create my franken armbian u-boot! I think I know how to correct or atleast bypass this, but I wanted to try something else first:
I know my own compiled Armbian minimal boots from my SSD, so I also tried yours. Unplugged the SD and voila, it works.
Now I added both:

overlays=spi-jedec-nor
param_spinor_spi_bus=1

to my armbianEnv.txt and tried to reboot. Now it doesn’t. Alright, seems its related to those two? I checked by booting another known good image from SD, mounted my SSD and removed those two lines from my SSD armbianEnv.txt.
Unplugged SD, Rebooted from SSD, it boots!

Now I added back only the first line to armbianEnv.txt:

overlays=spi-jedec-nor

Reboot -> stuck again at the same place. So if I understand correctly, enabling the SPI (this is what the overlay does, I presume?) while booting from SSD causes the SSD to hang.

This is what I found out fiddeling with the SSD. I’ll now try to correct the u-boot isse and report back, if I manage to!

No luck, I cant seem to find the location where the u-boot and trust should be on an image/flash drive. I checked documentation, but looking at the reference armbian image with an hex editor and I cant seem to make any sense of whats there and whats not. The only thing I could find was the idbloader at dez32768, which seems wrong, since the documentation asks for 24576, but dez32768 is exactly that sectoion + the size of the loader itself?!! Man, this stuff is confusing …
I still have an idea on how to solve this, but its getting late here and work calls. Ill report back tomorrow!

This never happened to me.
Is it stuck during kernel booting or still in u-boot before the starting kernel message?

Is this offset in bytes? Then it’s good as idbloader is expected at 64 sector and each sector is 512 bytes.
This idbloader will not work for loading into SPI as Rockchip requires it specially formatted.
When you boot the Armbian image you will find u-boot binary images at /usr/lib/linux-u-boot... location.

One thing you could try is to copy the rkspi_loader.img found there (which should be exactly 4MiB) and try to write it to SPI by means of dd if=rkspi_loader.img of=/dev/mtdblock0 bs=4K.
Unfortunately you will have to do it with Debian - spi-jedec-nor overlay was supposed to allow for it in Armbian :frowning:

Keep it mind that this happend while booting from SSD! But yes, this happend while kernel booting.
Its always the same pattern when armbian does not want to boot from SSD. Bootlog always end like this:

Summary
[    3.185424] mmc2: Command Queue Engine enabled
[    3.185850] mmc2: new HS400 Enhanced strobe MMC card at address 0001
[    3.187264] mmcblk2: mmc2:0001 D9D16G 14.5 GiB
[    3.188004] mmcblk2boot0: mmc2:0001 D9D16G partition 1 4.00 MiB
[    3.188848] mmcblk2boot1: mmc2:0001 D9D16G partition 2 4.00 MiB
[    3.189628] mmcblk2rpmb: mmc2:0001 D9D16G partition 3 4.00 MiB, chardev (243:0)
[    3.214754] dwmmc_rockchip fe310000.mmc: Successfully tuned phase to 224
[    3.220547] mmc0: new ultra high speed SDR104 SDIO card at address 0001
[    3.249005] rockchip-pcie f8000000.pcie: host bridge /pcie@f8000000 ranges:
[    3.249665] rockchip-pcie f8000000.pcie:      MEM 0x00fa000000..0x00fbdfffff -> 0x00fa000000
[    3.250433] rockchip-pcie f8000000.pcie:       IO 0x00fbe00000..0x00fbefffff -> 0x00fbe00000
[    3.251523] rockchip-pcie f8000000.pcie: PCI host bridge to bus 0000:00
  [    3.252122] pci_bus 0000:00: root bus resource [bus 00-1f]
[    3.252619] pci_bus 0000:00: root bus resource [mem 0xfa000000-0xfbdfffff]
[    3.253238] pci_bus 0000:00: root bus resource [io  0x0000-0xfffff] (bus address [0xfbe00000-0xfbefffff])
[    3.254125] pci 0000:00:00.0: [1d87:0100] type 01 class 0x060400
[    3.254838] pci 0000:00:00.0: supports D1
[    3.255205] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
[    3.260597] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    3.261503] pci 0000:01:00.0: [126f:2262] type 00 class 0x010802
[    3.262171] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00003fff 64bit]
[    3.262965] pci 0000:01:00.0: Max Payload Size set to 256 (was 128, max 256)
[    3.264084] pci 0000:01:00.0: 16.000 Gb/s available PCIe bandwidth, limited by 5.0 GT/s PCIe x4 link at 0000:00:00.0 (capable of 31.504 Gb/s with 8.0 GT/s PCIe x4 link)
[    3.270119] pci_bus 0000:01: busn_res: [bus 01-1f] end is updated to 01
[    3.270751] pci 0000:00:00.0: BAR 14: assigned [mem 0xfa000000-0xfa0fffff]
[    3.271375] pci 0000:01:00.0: BAR 0: assigned [mem 0xfa000000-0xfa003fff 64bit]
[    3.272070] pci 0000:00:00.0: PCI bridge to [bus 01]
[    3.272523] pci 0000:00:00.0:   bridge window [mem 0xfa000000-0xfa0fffff]
[    3.273330] pcieport 0000:00:00.0: enabling device (0000 -> 0002)
[    3.274173] pcieport 0000:00:00.0: PME: Signaling with IRQ 240
[    3.275102] pcieport 0000:00:00.0: AER: enabled with IRQ 240
[    3.276176] nvme nvme0: pci function 0000:01:00.0
[    3.276685] nvme 0000:01:00.0: enabling device (0000 -> 0002)
[    3.278300] of_cfs_init
[    3.278585] of_cfs_init: OK
[   64.482722] nvme nvme0: I/O 4 QID 0 timeout, disable controller
[   64.590660] nvme nvme0: Device shutdown incomplete; abort shutdown
[   64.591571] nvme nvme0: Identify Controller failed (881)
[   64.592066] nvme nvme0: Removing after probe failure status: -5
[   64.609458] Freeing unused kernel memory: 4160K
[   64.626884] Run /init as init process
[   65.170268] rk_gmac-dwmac fe300000.ethernet: IRQ eth_wake_irq not found
[   65.171042] rk_gmac-dwmac fe300000.ethernet: IRQ eth_lpi not found
[   65.171818] rk_gmac-dwmac fe300000.ethernet: PTP uses main clock
[   65.172536] rk_gmac-dwmac fe300000.ethernet: clock input or output? (input).
[   65.173185] rk_gmac-dwmac fe300000.ethernet: TX delay(0x28).
[   65.173708] rk_gmac-dwmac fe300000.ethernet: RX delay(0x11).
[   65.174239] rk_gmac-dwmac fe300000.ethernet: integrated PHY? (no).
[   65.174985] rk_gmac-dwmac fe300000.ethernet: cannot get clock clk_mac_speed
[   65.176112] rk_gmac-dwmac fe300000.ethernet: clock input from PHY
[   65.181743] rk_gmac-dwmac fe300000.ethernet: init for RGMII
[   65.182580] rk_gmac-dwmac fe300000.ethernet: User ID: 0x10, Synopsys ID: 0x35
[   65.183296] rk_gmac-dwmac fe300000.ethernet:         DWMAC1000
[   65.183770] rk_gmac-dwmac fe300000.ethernet: DMA HW capability register supported
[   65.184438] rk_gmac-dwmac fe300000.ethernet: RX Checksum Offload Engine supported
[   65.185106] rk_gmac-dwmac fe300000.ethernet: COE Type 2
[   65.185575] rk_gmac-dwmac fe300000.ethernet: TX Checksum insertion supported
[   65.186202] rk_gmac-dwmac fe300000.ethernet: Wake-Up On Lan supported
[   65.186828] rk_gmac-dwmac fe300000.ethernet: Normal descriptors
[   65.187360] rk_gmac-dwmac fe300000.ethernet: Ring mode enabled
[   65.187883] rk_gmac-dwmac fe300000.ethernet: Enable RX Mitigation via HW Watchdog Timer
[   65.312028] libphy: stmmac: probed
[   65.312364] RTL8211E Gigabit Ethernet stmmac-0:00: attached PHY driver [RTL8211E Gigabit Ethernet] (mii_bus:phy_addr=stmmac-0:00, irq=POLL)
[   65.313478] RTL8211E Gigabit Ethernet stmmac-0:01: attached PHY driver [RTL8211E Gigabit Ethernet] (mii_bus:phy_addr=stmmac-0:01, irq=POLL)

NOTHING anymore, not login prompt.

But, aside from that, some good, some bad news.
I really struggle figuring out all that boot stuff, so to keep things moving forward:
I took the image you gave me above and flashed it onto my SD card, but I booted it via radxa u-Boot from SPI.
So:
No boot medium in -> Turn on Rock Pi -> Cancel Autoboot -> Plug In SD.
run bootcmd_mmc1 and your image works!

Now, I added those two lines to armbianEnv.txt and shutdown. Same booting sequence again, remove SD, turn on etc.
Still works! And I can see my SPI! lsblk shows /dev/mtdblock0.
Going ahead with sudo nand-sata-install -> Install/update the bootloader on SPI Flash -> Shutdown
Removed SD, power on and voila:

Armbian u-boot on SPI!
U-Boot TPL 2020.07-armbian (Sep 07 2020 - 23:14:57)
Channel 0: LPDDR4, 50MHz
BW=32 Col=10 Bk=8 CS0 Row=15 CS1 Row=15 CS=2 Die BW=16 Size=2048MB
Channel 1: LPDDR4, 50MHz
BW=32 Col=10 Bk=8 CS0 Row=15 CS1 Row=15 CS=2 Die BW=16 Size=2048MB
256B stride
256B stride
lpddr4_set_rate: change freq to 400000000 mhz 0, 1
lpddr4_set_rate: change freq to 800000000 mhz 1, 0
Trying to boot from BOOTROM
Returning to boot ROM...

U-Boot SPL 2020.07-armbian (Sep 07 2020 - 23:14:57 +0200)
Trying to boot from SPI
NOTICE:  BL31: v1.3(debug):42583b6
NOTICE:  BL31: Built : 07:55:13, Oct 15 2019
NOTICE:  BL31: Rockchip release version: v1.1
INFO:    GICv3 with legacy support detected. ARM GICV3 driver initialized in EL3
INFO:    Using opteed sec cpu_context!
INFO:    boot cpu mask: 0
INFO:    If lpddr4 need support multi frequency,
INFO:    please update loader!
INFO:    Current ctl index[0] freq=400MHz
INFO:    Current ctl index[1] freq=800MHz
INFO:    plat_rockchip_pmu_init(1190): pd status 3e
INFO:    BL31: Initializing runtime services
WARNING: No OPTEE provided by BL2 boot loader, Booting device without OPTEE initialization. SMC`s destined for OPTEE will return SMC_UNK
ERROR:   Error initializing runtime service opteed_fast
INFO:    BL31: Preparing for EL3 exit to normal world
INFO:    Entry point address = 0x200000
INFO:    SPSR = 0x3c9


U-Boot 2020.07-armbian (Sep 07 2020 - 23:14:57 +0200)

SoC: Rockchip rk3399
Reset cause: POR
Model: Radxa ROCK Pi 4B
DRAM:  3.9 GiB
PMIC:  RK808
MMC:   mmc@fe310000: 2, mmc@fe320000: 1, sdhci@fe330000: 0
Loading Environment from SPI Flash... SF: Detected XT25F128B with page size 256 Bytes, erase size 4 KiB, total 16 MiB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Model: Radxa ROCK Pi 4B
Net:   eth0: ethernet@fe300000
Hit any key to stop autoboot:  0
=> <INTERRUPT>

So that worked out. Those were the good. The bad is, with this new Armbian u-Boot equipped on my SPI, neither image works when trying to boot from SSD directly. sudo nand-sata-install from SD and installing to NVMe? Bootlog end like the one above, stuck. My minimal image on SSD, that worked with radxa u-Boot on SPI? Same thing, bootlog ends like that. So does if I flash your image to SSD directly too.

If there is anything I could try, or something you’d want me to test, let me know! Im confident with compiling, so if there are any commits you want me to test!

Is the time gap between enabling nvme0 device and the message with timeout info also ~60 seconds with mainline u-boot in SPI and Armbian in SSD?

Can you share two more logs? First with mainline u-boot in SPI and Armbian in SSD (maybe it’s the one above - I am just not sure). Second official Armbian image in SD (but with SSD inserted) and SPI disabled completely - by shorting 23 and 25 GPIO pins during boot.

I am starting to think that the dual nvme initialisation that happens first in u-boot and then again in kernel is made in an incompatible way for your drive’s controller. I run both 970 EVO and MP510 this way and it boots fine but…

Yes, always.

Is the “mainline” u-boot the one Armbian flashed onto my SPI? Then yes, the bootlog above. Here the complete one:

Armbian on SSD - No SD inserted

https://pastebin.com/MhYdypaY

And here the latest offical on SD:

Armbian on SD Card - SSD inserted - SPI disabeld

https://pastebin.com/RtuhsxtY