NVMe boot not working with A311D


I tried to install my root system on the NVMe Disk (with the help of the migrate tutorial created by @josch) Bu when I reboot, my drive not seems to be detected, here is the error displayed by the Kernel:

nvme nvme0: I/O QID 0 timeout, completion polled
nvme nvme0: missing or invalid SUBNQN field

Then the kernel display traceinfo but try to continue booting (withous success)

Are you using an NVMe adapter from us, with solder blob on the back?

Also: weird, because the NVMe must have worked at least for the migration.

Hi @minute , Yes I plugged the provided NVMe adapter in the package. The NVMe work like a charm if I boot only from the SDCard.

I am in the same boat. In my case I’m not sure how to see the error from the kernel - the display remains off.

Ill also point out that the NVMe drive was not getting detected by the NVMe port soldered onto the motherboard. It was only detected through the PCIe extension. I’m not sure if this is by design or not, if it is by design I’m wondering how to attach the wifi card as this space is now occupied (I think I saw another post with a wifi card in the NVMe slot, but this was using some 3d printed parts?).

If you have a second computer and an USB UART adapter you can connect to your reform via serial and see all boot messages via utilities like screen or tio.

If you have the CM4 adapter with a Banana Pi (A31D) on top, then the M.2 slot where with the imx8mq could plug in an nvme drive is just not connected. Instead, you can plug your nvme drive into the pcie slot where the wifi card was before with the provided adapter. The wifi card is not needed anymore because the a311d has wifi (and bluetooth) onboard.

Apologies, that was probably my post you are referring to? In that one I used the volume of the unused M.2 slot to place an UMTS modem.

Just so I get this correct: This only happens only on re-boot, but not on cold-boot?

@josch - thank you for the comments! I did found your post, yes - this is the one I was referring to. @ephase mentioned a tutorial of yours - could someone share a link to that?

@soulsource this happens to me with both cold boot and re-boot

@sam, the tutorial @ephase maybe was talking about might’ve been this one:

1 Like

Hi All!

@josch This is the tutorial I followed. After hat even I do a hot or cold boot my kernel stuck. Need to do some additional tests here because the original image was a personal one done with my own scripts.

With my tries today the kernel stuck with

Loading please wait
Starting systemd-udevd version 255.4-1+b1
Timed out for waiting the udev queue being empty.
Begin: Loading essentials drivers ...

For instance I can mount my NVMe encrypted disk without problem when I start my Reform for the Sysimage v4 on my SD

It’s alive!

To make it work I followed @Josh tutorial plus in the chroot

  1. uninstall all linux-images, linux-images-arm64, flash kernel
    apt remove --purge linux-image-arm64* flash-kernel
  2. reinstall linux-image-arm64 and flash-kernel
    apt install linux-image-amd64 flask-kernel
  3. launch flash-kernel

Here he go! I can now edit this post on my MNT Reform with my system from my encrypted NVMe SSD.


I just diagnosed my build, is the default behavior might just be to set up the SSD with a / mountpoint and use the SD card for /boot? I was not expecting this! Maybe it was written in the manual somewhere, oops! So after my “install,” i popped out the SD card thinking that I didn’t need that… clearly nothing was booting in retrospect.

I went through the tutorial, but coming from a fresh install and not needing encryption, a lot if the tutorial seemed overkill. I think simply reinstalling the kernel with @ephase’s instructions (after unmounting /boot) would fix the issue. editing /etc/fstab also seems necessary.

The next problem is that I can’t seem to get the correct signature from the mntre Debian sources to perform an apt update and install the correct kernel, but (1) I’m not sure this is an issue I need to report in this thread and (2) I’m actually unstuck, as I’m really angling to get nixos on my reform, and getting root on the ssd is all I need!

Thanks for the help, all!

1 Like

Depends… To find out what is going on, it would help if you wrote down which steps you performed. Tools like reform-boot-config print this message when they complete:

Your /boot partition is on your SD-Card (/dev/mmcblk0p1)

Did you find a utility from which this information is missing? This information will not be documented in the manual as this behaviour is specific to A311D. The “problem” with the banana pi is, that if you would write a broken u-boot onto eMMC, your system will become unbootable and thus you would not be able to write a working u-boot to eMMC, thus soft-bricking your board. Thus, tools like reform-boot-config take care not to write to your eMMC if you are on A311D.

What program are you running and what error message do you get? The mntre.com Debian repositories are unsigned and this is reflected in the default apt sources. Thus you should not get a message about incorrect signatures. How can I reproduce the problem you see?

I might have just missed the final message reform-boot-config printed. I was connected via wifi and get a lot of log messages when logged in. I noticed that the boot partition was on my SD card by examining /etc/fstab

My installation process was to boot up a live-cd and run reform-migrate (after formatting my NVME drive).

Retracing my steps. For this, I was running apt upgrade and failed to fetch https://mntre.com/reform-debian-repo/pool/... sources for the linux kernel. I tried connected to wifi and ethernet, but also could curl -L https://mntre.com/reform-debian-repo no problem – it just took 1m4s wallclock time.

On a possibly related note: when I am just connected to wifi, one thing that is constantly firing is that rtw_8822cs mmc2:0001:1: failed to get tx report from firmware. I’m just ignoring this for a moment.

Edit: so now this is a bit curious because I can perform this update in a graphical session, but not in the TTY when I first log it!

Maybe you did not run apt update before your apt upgrade on the tty but then you did run apt update before you ran apt upgrade in the graphical terminal?