Software 2.11.5 and nvme boot

So, I downloaded the latest binaries, tried flashcp which complained that there’s not enough space in /dev/mtd0.

Flashed the new sd card.img, booted from that, ssh’d in and successfully ran flashcp.

Also copied the two boot files to the first two partitions of my nvme device, changed the boot switches, but it won’t boot from nvme.

What magic do I now need to boot from nvme?

Edit: it looks like the next debian release is imminent, maybe I should just wait.

Hello together,

my board shows under debian image only 4GB Memory after update to Software 2.11.5.
I build the new kernel from github.

Where i can check the code if all is ok ?


@dtometzki Please start new threads for new questions.
And… this is a much discussed topic so I suggest a read through older posts too.
mvg. Owen

The PCIe support in the new binaries is pretty new, it may take a while before some of the Uboot crowd post coherent instructions on how to boot fully from NVMe.

Booting from the SD card’s /boot partition, but with the / root partition on the NVMe is quite possible; it’s what I am doing.

  • For me just putting the same image SD card image (the full image from google drive) on the NVMe and then editing the lines in /boot/extlinux/extlinux.conf to point to the NVMe’s 4th partition was sufficient.

I have one of this computer, but i getting crazy because to much tricky to update the boot firmwares, i did one time, but this time i can not upgrade the firmwares to use the new debian. i have firmware *.2.5 so i really do not know what sdimage.img i need it. Any help i thankful.
The last time i success upgraded the firmware for serial-uart, so i try same step, but does not work this time, so i not sure what is going on. So i need firmware 2.11.5.

@terminus With the latest image you can also try to boot directly from micro SD or eMMC, by setting the boot switches. That way it’s no longer necessary to update the firmware.


Can you give me a link for what you talk about? ANYWAY I WILL ASSUME LAST DEBIAN AND NOT LAST SDIMAGE.

I not yet touched the hardware switches, i need move it to upgrade the firmware? ANYWAY I WILL ASSUME THE POSSIBILITY OF UPGRADE THE BOOT FIRM BY DEBIAN.

I mean the last time i upgrade the firmware for uart, but not anymore this time, so hardware switches it in the same place, but i double check for sure.

I just i need some help to understanding this little tricky box.

So i checked the SWITCHES and seems it is in uart mode, but i confusing because i can boot good debian 69 with switches in uart mode, so why debian 2023 can not booting? so seems may be i need move the switches to SD MODE with debian 2023?

Welcome to the wonderful world of bleeding edge new hardware development forums. Things are incomplete and changing, this is normal. Nobody will hold your hand no matter how much you type in all caps. Especially when hijacking a thread.

The 2.15.5 release has only happened in the repos on GitHub, and the sdcard.img there is not the same as the engineering release images… So far there are no corresponding 2.15.5 SD or emmc engineering release images on Google drive/baidu, nobody from StarFive has announced the release here, and the documentation has not been updated for it.

If you are finding all this tricky I suggest you revert to the 202302 release and wait for a proper release announcement or clear upgrade guide.


NVMe uboot driver code is internally being integrated.
For VisionFive v2 it will not be a boot source as the boot source is currently limited to SD, eMMC, QSPI and UART. It will be used as a linux root filesystem.
No solid ETAs yet though.


Root or /boot? I don’t think u-boot cares about what the root is, beyond passing a root= parameter to Linux.

It does however very much care about loading the kernel from somewhere, which could be a /boot in NVMe, which can optionally happen to be stored in the same partition that serves as the root.

Thanks you @easytarget @LivingLinux for all the help, yesterday invested a lot of time to understanding this little tricky box, so now i have all the firmware up to date and Operating Systems. So next step will be get working nvme, so not sure if it ready on now, i have one nvme 2tb to testing… it is fine 2TB or too much?

Also i still have some issues like not any Wlan working here.

1 Like

NVMe has worked for a long time but [at least the standard images] cannot boot from it, that is, you must have the kernel (and that typically means /boot) on something else, like eMMC or SDcard. You can keep everything else on NVMe. The boot time impact of not loading the kernel from NVMe is trivial and it has zero impact once you are booted. In other words, you aren’t missing anything by not booting off NVMe.

I hope this closes this frequently asked question.


There’s no such thing as too much and all NVMe SSDs should work.

Two things to be aware of:

  1. It’s only a PCIe Gen2 x1 link and in practice it cannot even sustain that (best I have seen is about 250 MB/s) so spending a lot of cash on a PCIe Gen4 NVMe drive is probably not worth it.

  2. Power supplies appears to be critical - 5 V supplies may not be enough, depending on the SSD. Better go with a USB-C PD supply. In my experience, pulling 12 V from a PD supply (or using an Apple Notebook brick) works well.


It does however very much care about loading the kernel from somewhere, which could be a /boot in NVMe, which can optionally happen to be stored in the same partition that serves as the root.

Yes, that should include reading the kernel from /boot. Let me check with the team.

I got it working. NVME Boot using VisionFive2 Software v2.11.5

1 Like

Note in case it’s helpful (I have no affiliation): Samsung SSDs (980 and 990) appears to be on sale: Grab a 2TB Samsung 990 Pro SSD for $179: Real Deals | Tom's Hardware
I have always had good experiences with 980PRO, but do update its firmware!! (

If you try to boot from your nvme you will stop at the u-boot prompt, # StarFive
a script exists nvme_boot, but it never gets run
nvme can be included in
boot_targets=mmc0 nvme0 dhcp
which would then be run by
distro_bootcmd=setenv nvme_need_init; for target in ${boot_targets}; do run bootcmd_${target}; done
then env edit
bootcmd_nvme0=run nvme_boot
which hooks nvme_boot
fdtfile=starfive/starfive_visionfive2.dtb is wrong
env edit fdtfile
change to starfive/jh7110-visionfive-v2.dtb

nearly there
loading initrd, vmlinuz and dtb

in previous post, seems fdtfile has to be fixed in u-boot env
because it is needed before uEnv.txt is read from /boot
then missing
env edit these

now gets through to systemd
edit /etc/fstab, change to nvme0n1p3 and nvme0n1p4

forgot to mention changed /boot/extlinux/extlinux.conf to root=/dev/nvme0n1p4

that’s got it for booting from nvme
BUT booting ssd is now broken unless ssd is selected with switches instead of flash boot
work in progress…

1 Like