NanoPi NEO v6.12.23 kernel upgrade results in boot failure
Creating a bug report/issue
- [yes ] I have searched the existing open and closed issues
Required Information
-
DietPi version |
cat /boot/dietpi/.versionG_DIETPI_VERSION_CORE=9 G_DIETPI_VERSION_SUB=13 G_DIETPI_VERSION_RC=2 G_GITBRANCH='master' G_GITOWNER='MichaIng' G_LIVE_PATCH_STATUS[0]='not applicable' G_LIVE_PATCH_STATUS[1]='applied' -
Distro version |
echo $G_DISTRO_NAME $G_RASPBIANbookworm -
Kernel version |
uname -aLinux mhj-neo 6.6.44-current-sunxi #1 SMP Sat Aug 3 06:54:42 UTC 2024 armv7l GNU/Linux -
SBC model |
echo $G_HW_MODEL_NAMEor (EG: RPi3) NanoPi NEO (armv7l) -
Power supply used | (EG: 5V 1A RAVpower) OEM NorthPada 5v 3A
-
SD card used | (EG: SanDisk ultra) Samsung EVO Class 10 32 GB (in service 5 mo, 26 days)
Additional Information (if applicable)
-
Software title | (EG: Nextcloud) linux-image-current-sunxi armhf 6.12.23-current-sunxi 25.08.0-trunk-dietpi1 linux-dtb-current-sunxi armhf 6.12.23-current-sunxi 25.08.0-trunk-dietpi1
-
Was the software title installed freshly or updated/migrated? update
-
Can this issue be replicated on a fresh installation of DietPi? unknown
- Bug report ID |
echo $G_HW_UUID
Steps to reproduce
- Perform a routine apt upgrade
linux-dtb-current-sunxi/all 25.08.0-trunk-dietpi1 armhf [upgradable from: 24.11.0-trunk-dietpi1]
linux-image-current-sunxi/all 25.08.0-trunk-dietpi1 armhf [upgradable from: 24.11.0-trunk-dietpi1]
Expected behaviour
Post-update reboot should be using the new v6.12.23-current-sunxi kernel.
Actual behaviour
The update itself appears unremarkable, however on reboot the system stops almost immediately and fails to boot. The 'reboot' is from a cold start. LED blue:status [heartbeat] two blinks, delay, two blinks, delay, ... LED green:pwr [activity] solid/continuous The packages are sourced from:
Get:1 https://dietpi.com/apt all/nanopineo armhf linux-dtb-current-sunxi armhf 25.08.0-trunk-dietpi1 [211 kB]
Get:2 https://dietpi.com/apt all/nanopineo armhf linux-image-current-sunxi armhf 25.08.0-trunk-dietpi1 [41.6 MB]
Extra details
After restoring from a Clonezilla backup image the system is running OK using kernel v6.6.44-current-sunxi armhf 24.11.0-trunk-dietpi1
This event has occurred twice with the same result. Two days ago I first ran into this during a routine apt upgrade and today during the first v9.13.2 upgrade. Just prior to the v9.13.2 upgrade I did an 'apt-mark unhold' on both kernel update packages. Post v9.13.2 upgrade the system could not be booted as before. I again restored an image backup, reapplied the 'apt-mark hold' on both kernel package updates and then the v9.13.2 upgrade was a success.
**** Workaround
sudo apt-mark hold linux-image-current-sunxisudo apt-mark hold linux-dtb-current-sunxi
Many thanks for reporting. Do you have a UART adapter to check serial console logs? For this device it is also possible to enable a serial console on the USB port, the OTG/power power, AFAIK. So you could access it as well from another system, powering the NEO with its USB port.
In case you have time and mood for testing. It might be a too old U-Boot version. So you could try to flash a more recent U-Boot binary:
sudo /boot/dietpi/func/dietpi-set_hardware flash-uboot-mmc
sudo reboot
or a build I just did:
cd /tmp
wget https://dietpi.com/downloads/binaries/testing/linux-u-boot-nanopineo-current.deb
sudo dpkg -i linux-u-boot-nanopineo-current.deb
sudo /boot/dietpi/func/dietpi-set_hardware flash-uboot-mmc
sudo reboot
OK, I ordered a UART adapter cable and it should be here around Friday-ish.
In the meantime I installed your 'linux-u-boot-nanopineo-current.deb' without issue. I did a warm reboot and the system came up OK.
Then I retried the 'linux-image-current-sunxi' and 'linux-dtb-current-sunxi' upgrades. The result was the same. The upgrade processes without issue, but the system fails to boot and the LEDs show the same pattern. There's also nothing in any of the logs after the shutdown for reboot.
I restored again from a backup image and it's up an running OK. I've reapplied the apt-mark holds on both 'linux-image-current-sunxi' and 'linux-dtb-current-sunxi'.
Anyone else having problems with this kernel upgrade?
On my NanoPi M1 at least this kernel works fine. I also checked that the NanoPi NEO device tree is present. So not sure. If there is any 2nd report, I'll take off the new kernel from our repo, until we found and fixed the issue.
In the meantime, can you show your boot config:
cat /boot/dietpiEnv.txt /boot/boot.scr
Hmmm, interesting your M1 is OK. I've never seen this issue with any of the past kernel updates.
cat /boot/dietpiEnv.txt
# Added by DietPi:
user_overlays=dietpi-nanopi-neo-fix-leds
cat /boot/boot.scr
'V &^,ѿ :E # DO NOT EDIT THIS FILE
#
# Please edit /boot/armbianEnv.txt to set supported parameters
#
setenv load_addr "0x44000000"
setenv overlay_error "false"
# default values
setenv verbosity "1"
setenv console "both"
setenv disp_mem_reserves "off"
setenv disp_mode "1920x1080p60"
setenv rootfstype "ext4"
setenv docker_optimizations "on"
setenv devnum "0"
setenv rootdev "/dev/mmcblk${devnum}p1"
# Print boot source
itest.b *0x28 == 0x00 && echo "U-boot loaded from SD"
itest.b *0x28 == 0x02 && echo "U-boot loaded from eMMC or secondary SD"
itest.b *0x28 == 0x03 && echo "U-boot loaded from SPI"
# get PARTUUID of first partition on SD/eMMC it was loaded from
# mmc 0 is always mapped to device u-boot (2016.09+) was loaded from
if test "${devtype}" = "mmc"; then
part uuid mmc ${devnum}:1 partuuid;
setenv devnum ${mmc_bootdev}
setenv rootdev "/dev/mmcblk${mmc_bootdev}p1"
fi
echo "Boot script loaded from ${devtype}"
if test -e ${devtype} ${devnum} ${prefix}armbianEnv.txt; then
load ${devtype} ${devnum} ${load_addr} ${prefix}armbianEnv.txt
env import -t ${load_addr} ${filesize}
fi
if test "${logo}" = "disabled"; then setenv logo "logo.nologo"; fi
if test "${console}" = "display" || test "${console}" = "both"; then setenv consoleargs "console=ttyS0,115200 console=tty1"; fi
if test "${console}" = "serial"; then setenv consoleargs "console=ttyS0,115200"; fi
setenv bootargs "root=${rootdev} rootwait rootfstype=${rootfstype} ${consoleargs} hdmi.audio=EDID:0 disp.screen0_output_mode=${disp_mode} consoleblank=0 loglevel=${verbosity} ubootpart=${partuuid} ubootsource=${devtype} usb-storage.quirks=${usbstoragequirks} ${extraargs} ${extraboardargs}"
if test "${disp_mem_reserves}" = "off"; then setenv bootargs "${bootargs} sunxi_ve_mem_reserve=0 sunxi_g2d_mem_reserve=0 sunxi_fb_mem_reserve=16"; fi
if test "${docker_optimizations}" = "on"; then setenv bootargs "${bootargs} cgroup_enable=memory swapaccount=1"; fi
load ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}uInitrd
load ${devtype} ${devnum} ${kernel_addr_r} ${prefix}zImage
if test -e ${devtype} ${devnum} "${prefix}.next"; then
echo "Found mainline kernel configuration"
load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
fdt addr ${fdt_addr_r}
fdt resize 65536
for overlay_file in ${overlays}; do
if load ${devtype} ${devnum} ${load_addr} ${prefix}dtb/overlay/${overlay_prefix}-${overlay_file}.dtbo; then
echo "Applying kernel provided DT overlay ${overlay_prefix}-${overlay_file}.dtbo"
fdt apply ${load_addr} || setenv overlay_error "true"
fi
done
for overlay_file in ${user_overlays}; do
if load ${devtype} ${devnum} ${load_addr} ${prefix}overlay-user/${overlay_file}.dtbo; then
echo "Applying user provided DT overlay ${overlay_file}.dtbo"
fdt apply ${load_addr} || setenv overlay_error "true"
fi
done
if test "${overlay_error}" = "true"; then
echo "Error applying DT overlays, restoring original DT"
load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
else
if load ${devtype} ${devnum} ${load_addr} ${prefix}dtb/overlay/${overlay_prefix}-fixup.scr; then
echo "Applying kernel provided DT fixup script (${overlay_prefix}-fixup.scr)"
source ${load_addr}
fi
if test -e ${devtype} ${devnum} ${prefix}fixup.scr; then
load ${devtype} ${devnum} ${load_addr} ${prefix}fixup.scr
echo "Applying user provided fixup script (fixup.scr)"
source ${load_addr}
fi
fi
bootz ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
else
echo "Found legacy kernel configuration"
load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}script.bin
bootz ${kernel_addr_r} ${ramdisk_addr_r}
fi
# Recompile with:
# mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr
I'm also having the same issue with this latest kernel update on my NanoPi Neo. It was a fresh install I did last week, and I had also updated to the latest U-Boot at that time.
I pulled the SD card and I'm currently restoring from a borg backup.
I took the new kernel out of the APT repo for now.
@mhjessen
Oh you use a very old image, or one that was migrated from an original Armbian image? The boot script loads /boot/armbianEnv.txt, to the content of /boot/dietpiEnv.txt is without effect in your case. However, the dietpi-nanopi-neo-fix-leds overlay is not needed anymore anyway, since this patch is part of our kernel already. However, this should not cause the issue.
Though, there is one thing you could test:
G_CONFIG_INJECT 'load_addr' 'load_addr=0x45000000' /boot/armbianEnv.txt
It was found to be a bit close some years ago: https://github.com/armbian/build/commit/c0f135a
The address is used not only for the environment file, but also when loading overlays, after the initramfs has been loaded already. So if that address starts within the range of the initramfs, it would well explain a failing boot. And the new kernel did definitely further raise the size of the initramfs. Can you also show the content of the /boot/armbianEnv.txt:
cat /boot/armbianEnv.txt
@dave0003 Same for you, in case it is an older image, can you show boot script and environment:
cat /boot/dietpiEnv.txt /boot/boot.scr
And both of you please test whether the new bootloader build works (in general, and in case with the new kernel as well):
cd /tmp
wget https://dietpi.com/downloads/binaries/testing/linux-u-boot-nanopineo-current.deb
sudo dpkg -i linux-u-boot-nanopineo-current.deb
sudo /boot/dietpi/func/dietpi-set_hardware flash-uboot-mmc
sudo reboot
@MichaIng To answer your question about whether this was migrated from an original Armbian image? No. This system has always been using DietPi since I first commissioned it on Tuesday, February 14, 2017.
OK, now for the test:
G_CONFIG_INJECT 'load_addr' 'load_addr=0x45000000' /boot/armbianEnv.txt
[ OK ] G_CONFIG_INJECT | Added setting load_addr=0x45000000 to end of file /boot/armbianEnv.txt
I then rebooted the system and it came back up without issue. I searched the journal and everything in /var/log/* for 'load_addr=0x45000000' and '0x45000000' and nothing came up.
As for my armbianEnv.txt content:
verbosity=3
logo=disabled
console=none
disp_mode=1280x720p30
overlay_prefix=sun8i-h3
overlays=usbhost1 usbhost2
rootdev=UUID=b40c94c1-4f60-46de-ba09-e03c75c08ada
rootfstype=ext4
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u
load_addr=0x45000000
And for the 'linux-u-boot-nanopineo-current' bootloader, I updated that the other day as you requested and just confirmed that it's still v25.08.0-trunk-dietpi1.
Package: linux-u-boot-nanopineo-current
Status: install ok installed
Priority: optional
Section: kernel
Installed-Size: 612
Maintainer: Armbian Linux <[email protected]>
Architecture: armhf
Version: 25.08.0-trunk-dietpi1
Replaces: armbian-u-boot
Provides: armbian-u-boot
Conflicts: armbian-u-boot, u-boot-sunxi
Description: Das U-Boot for nanopineo
version "2024.01" git revision "866ca972d6c3cabeaf6dbac431e8e08bb30b3c8e" patches hash "773810280b211c31" Extension hooks hash "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" uboot functions hash "e00db0f36a89441a70a14a7f1193cc6479330f4058d9c17c44aee715f1c85a73" variables hash "2b788831c0cc932d7b3465171460a7c4247bb30f0275ef3d94affbbe070c51fe" framework bash hash "b7035b95c8004ab0"
Armbian-Original-Hash: 2024.01-S866c-P7738-Ha5c2-V2b78-Bb703-R448a
Oh, and I edited '/boot/dietpiEnv.txt' and commented out the LED fix. Rebooted, and NEO is still cheerfully blinking away.
# Added by DietPi:
# user_overlays=dietpi-nanopi-neo-fix-leds
From 2017 😍, even before I joined the project. Indeed that time, we did not use own dietpiEnv.txt yet. I added this 2022. Hence you can remove dietpiEnv.txt entirely in your case. It is not used by your boot script.
I checked the load addresses in U-Boot down to 2015, and the highest address is and was the initramfs at 51 MiB first, later at 52 MiB, until today. I don't know where in case of 32-bit sunxi the kernel is decompressed to, since those addresses are somehow not defined, and a different final boot command is used, which is likely related. But the initramfs at least never was a problem with mainline U-Boot. Furthermore, 0x44000000 and 0x45000000 are both above 1 GiB, while these devices have 256 MiB - 512 MiB RAM only. No idea where those addresses are pointing to in this case 🤔. The address was further raised since an Orange Pi Zero indeed loaded the initramfs from 0x43300000 (1075 MiB), too close to 0x44000000 (1088 MiB): https://forum.armbian.com/topic/14486-orange-pi-zero-boot-corruption
Must have been some vendor bootloader. With mainline U-Boot, I think we should not define load_addr/scriptaddr at all ...
However, as your image is so old, and the bootloader is never flashed automatically, quite likely that it used different load addresses which indeed caused issues with the newer kernel. But dave on the other hand ran into this boot issues with a new image from last week.
How much RAM do your NanoPi NEO boards have? Maybe 256 MiB vs 512 MiB makes a difference, and maybe the 0x44000000 and 0x45000000 both cause issues with 256 MiB RAM, if they e.g. practically end somewhere in the middle of the RAM. In this case, 0x3100000 could be tested, the U-Boot default: https://github.com/u-boot/u-boot/blob/master/include/configs/sunxi-common.h#L90-L102
@MichaIng My NanoPi Neo is the 512 MiB version.
I just flashed the new bootloader with the procedure you gave, and it rebooted fine with the old kernel. I still have the new kernel held.
Here is the output of "cat /boot/dietpiEnv.txt /boot/boot.scr"
rootdev=UUID=64297260-24aa-4036-ae7c-33ecf65d6a1e
rootfstype=ext4
# The init system logs to the console defined last.
consoleargs=
usbstoragequirks=
extraargs=net.ifnames=0
docker_optimizations=off
overlay_prefix=sun8i-h3
overlays=usbhost1 usbhost2
user_overlays=
'V��.8h�6
@i!��
8# DO NOT EDIT THIS FILE
#
# Please edit /boot/dietpiEnv.txt to set supported parameters
#
# If you must, edit /boot/boot.cmd and recompile /boot/boot.scr with:
# mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr
# Default environment
setenv rootdev "/dev/mmcblk0p1"
setenv rootfstype "ext4"
setenv consoleargs "console=tty1"
setenv docker_optimizations "off"
setenv overlay_prefix "meson"
# Load addresses
setenv scriptaddr "0x45000000"
setenv overlay_error "false"
# Load environment file
if load "${devtype}" "${devnum}" "${scriptaddr}" "${prefix}dietpiEnv.txt"; then
env import -t "${scriptaddr}" "${filesize}"
fi
# Define kernel command-line arguments
setenv bootargs "root=${rootdev} rootfstype=${rootfstype} rootwait ${consoleargs} consoleblank=0 coherent_pool=2M usb-storage.quirks=${usbstoragequirks} ${extraargs}"
# Add bootargs for Docker
if test "${docker_optimizations}" = "on"; then setenv bootargs "${bootargs} cgroup_enable=memory"; fi
# Load kernel, initramfs and device tree
load "${devtype}" "${devnum}" "${kernel_addr_r}" "${prefix}zImage"
load "${devtype}" "${devnum}" "${ramdisk_addr_r}" "${prefix}uInitrd"
load "${devtype}" "${devnum}" "${fdt_addr_r}" "${prefix}dtb/${fdtfile}"
fdt addr "${fdt_addr_r}"
# Apply DT overlays
if test -n "${overlays}${user_overlays}"; then
fdt resize 65536
for overlay in ${overlays}; do
if load "${devtype}" "${devnum}" "${scriptaddr}" "${prefix}dtb/overlay/${overlay_prefix}-${overlay}.dtbo"; then
echo "Applying kernel provided DT overlay ${overlay_prefix}-${overlay}.dtbo"
fdt apply "${scriptaddr}" || setenv overlay_error "true"
fi
done
for overlay in ${user_overlays}; do
if load "${devtype}" "${devnum}" "${scriptaddr}" "${prefix}overlay-user/${overlay}.dtbo"; then
echo "Applying user provided DT overlay ${overlay}.dtbo"
fdt apply "${scriptaddr}" || setenv overlay_error "true"
fi
done
if test "${overlay_error}" = "true"; then
echo "Error applying DT overlays, restoring original DT"
load "${devtype}" "${devnum}" "${fdt_addr_r}" "${prefix}dtb/${fdtfile}"
else
if load "${devtype}" "${devnum}" "${scriptaddr}" "${prefix}dtb/overlay/${overlay_prefix}-fixup.scr"; then
echo "Applying kernel provided DT fixup script ${overlay_prefix}-fixup.scr"
source "${scriptaddr}"
fi
if test -e "${devtype}" "${devnum}" "${prefix}fixup.scr"; then
if load "${devtype}" "${devnum}" "${scriptaddr}" "${prefix}fixup.scr"; then
echo "Applying user provided DT fixup script fixup.scr"
source "${scriptaddr}"
fi
fi
fi
fi
# Boot
bootz "${kernel_addr_r}" "${ramdisk_addr_r}" "${fdt_addr_r}"
Okay that looks all as expected. I was further checking regarding the > 1 GB addresses. And well, I have to admit, sometimes LLMs are incredibly helpful.
For Allwinner boards, U-Boot defines #define CFG_SYS_SDRAM_BASE 0x40000000, which means that 0x40000000 points to the start of the actual usable RAM size. So 0x44000000 in fact means 0x04000000 or 0x4000000, which is at 64 MiB. So all addresses point to 1 GB lower. And for decompression, the base address itself is used. Since U-Boot defined the uncompressed kernel space at 32 MiB offset, 32 MiB is the max size of the uncompressed kernel. Somewhat close, but it fits, as the uncompressed kernel has 23.6 MiB and the compressed one 11.5 MiB.
With the initramfs at 51 MiB, later 52 MiB, it reaches into the 64 MiB (the old load_addr value) with 13 MiB, later even only 12 MiB size.
0x45000000 as of the mapping is 0x5000000 = 80 MiB, so even with the new initramfs location at 52 MiB, it can now be up to 28 MiB large before it can cause any issues.
On the NanoPi NEO, two device tree overlays are loaded by default, usbhost1 usbhost2 to enable the USB ports. These are loaded to the defined load_addr (resp. scriptaddr with our newer boot script), after the initramfs image has been loaded, overwriting the last part of the initramfs, which breaks boot.
So this explains pretty well why @mhjessen ran into the boot failure. But @dave0003 has the new unproblematic scriptaddr value. So maybe there is a second issue that does not only affect very old images with too low memory address used to load device tree overlays to.
Let's wait for @mhjessen UART adapter to arrive, before testing again with the new kernel, so we can see logs in case there is another issue.
However, I added a patch for next DietPi update for such old Allwinner H3 systems with too low load_addr, now that the background of this issue is well understood: https://github.com/MichaIng/DietPi/commit/2ae2782
I don't know if this will shed any light on the issue but I've attached the dmesg log from yesterday when the system comes up OK.
I also searched around and found a resource with Debian Trixie kernel version 6.12.27-1 images. If I get a chance this afternoon I'll try one. https://sd-card-images.johang.se/boards/nano_pi_neo.html
Yeah testing those other images with the same kernel can at least verify that it is not a general kernel issue, but related to bootloader or boot config in combination with the new kernel.
Let me know once the UART adapter is there, so you can test the new kernel with the new bootloader without risking failure without at least debug information to solve this issue.
OK, the UART / USB adapter finally arrived. I've got it connected, however I can't seem to get any activity. Is there a configuration setting I need to enable on NEO?
$ sudo picocom -b 115200 -g /home/mhjessen/Txfr/usb0.log /dev/ttyUSB0
picocom v3.1
port is : /dev/ttyUSB0
flowcontrol : none
baudrate is : 115200
parity is : none
databits are : 8
stopbits are : 1
escape is : C-a
local echo is : no
noinit is : no
noreset is : no
hangup is : no
nolock is : no
send_cmd is : sz -vv
receive_cmd is : rz -vv -E
imap is :
omap is :
emap is : crcrlf,delbs,
logfile is : /home/mhjessen/Txfr/usb0.log
initstring : none
exit_after is : not set
exit is : no
Type [C-a] [C-h] to see available commands
Terminal ready
Terminating...
Thanks for using picocom
@MichaIng .... sigh .... I don't know. I can't get anything out of the UART. I've tried everything I can think of and still no activity. I'm open to any suggestions you have to get this working.
I have an old USB UART adapter I used for something else, that I found and tried to hook up to my NanoPi Neo. I also wasn't able to get it to work.
I tried hooking it up to both UART 0 and UART 1 (I'm pretty sure it's UART 1 that's used).
I enabled ttyS0 in dietpi-config.
I tried connecting with picocom at both 115200 and 150000 (I'm pretty sure it's 150000 for these).
sudo picocom --b 150000 /dev/ttyUSB0
I tried to also enable ttyS1 in dietpi-config, but it would hang. At some point, it became non-responsive on the network and I had to do a system restore again.
@mhjessen you might try --b 150000 maybe it will work for you.
Edit, should be: "-b 1500000"
I looked into it some more and tried again. I'm still not able to get it to work. I think ttyS0 is for UART 0 and ttyS1 is for UART 1, but I'm not certain. In any case, I tried various combinations of UART 0 and UART 1 and ttyS0 and ttyS1, with both 115200 and 1500000 baud rate.
It is:
1500000
...and not
150000
dmesg shows something like this:
[ 0.000000] Kernel command line: root=UUID=64297260-24aa-4036-ae7c-33ecf65d6a1e rootfstype=ext4 rootwait console=ttyS0,115200 consoleblank=0 coherent_pool=2M usb-storage.quirks= net.ifnames=0
[ 3.056904] printk: console [ttyS0] disabled
[ 3.057800] 1c28000.serial: ttyS0 at MMIO 0x1c28000 (irq = 137, base_baud = 1500000) is a 16550A
[ 3.057903] printk: console [ttyS0] enabled
[ 14.696450] systemd[1]: Expecting device dev-ttyS0.device - /dev/ttyS0...
There's a mismatch in the "console=ttyS0,115200" on the kernel command line and base_buad = 1500000.
But I also tried changing the kernel command line /boot/dietpiEnv.txt to use 1500000. It didn't help, though.
The NanoPi NEO default/debug UART supports 1.5M baud rate?? That is surprising indeed. I mean it will support 115200 as well, so if you connect with a UART adapter and 115200, it should show output at latest when the kernel loads. So more a question which frequency U-Boot uses.
@mhjessen I just checked the wiki, maybe @dave0003 can verify: https://wiki.friendlyelec.com/wiki/index.php/NanoPi_NEO#Diagram.2C_Layout_and_Dimension
ttyS0should be the debug UART beside the USB port.- It's pins are assigned a bit dangerously, with 5V pin between RX/TX and GND.
- And then it isn't even clear on first view, whether pins are counted from top of from bottom ... attaching it falsely, can burn your UART adapter, which is why I totally hate these power pins without a clear red or similar color sign.
- Best to attach based on seems this graphic: https://wiki.friendlyelec.com/wiki/images/c/c4/NEO_pinout-02.jpg Left side the inner 8 pins, counted from the bottom (while all other rows are counted from the top, to make intuitive chaos complete). You see 3rd and 4th from the bottom named UART0 RX and TX, and the last at the bottom the GND. Do NOT attach the 2nd from the bottom, which is 5V.
Interestingly I could not find any info about the default/max baud rate supported, neither on the wiki, nor linked schema document, not Allwinner H3 schema. In any case it makes sense to enable kernel output and login console on that UART with the baud rate that is used by U-Boot as well. @dave0003 when you connect with 115200 you see kernel output and get a login prompt on the serial console, right? But do you get output from U-Boot as well, so anything from before "Kernel command line"? And does it invert when you connect via 1.5M, so you get output from the bootloader, but none from the kernel later, and no login prompt?
@MichaIng Whether connected at 115200 or 1500000, I don't get any output from anything and can't login.
I used that graphic you linked to and carefully connected accordingly (RX to TX and TX to RX, plus GND).
@MichaIng OK, I've got it working now!
There were two things: I had the TX and RX swapped inadvertently, so I corrected that. And there was a 5v/3.3v jumper on my adapter that was set for 5v, and I switched it to 3.3v.
It is working on UART 0 at 115200. I tried at 1500000, but it was just garbage on the screen.
So if you want me to test anything, I can test it now.
I had the TX and RX swapped inadvertently
Typical mistake I forgot to mention: boards assign RX and TX inconsistently, as if sometimes RX means receiver pin for the board, sometimes receiver pin/cable for the UART adapter. There shouldn't be any confusion about this: RX of the UART adapter goes to TX of the board vice versa, and that way they should be named on PCB/graphics as well, but manufacturers themselves mix that up/do not handle that consistently. So yeah, if there is no output, always worth to swap RX and TX and try again.
And there was a 5v/3.3v jumper on my adapter that was set for 5v, and I switched it to 3.3v.
There shouldn't be any need to attach any power pin. The UART adapter is powered by USB from the client system, and it only ever needs to have RX/TX/GND attached. Of course it does not hurt to attach power pin as well, if the adapter has an input pin for that, and it is attached correctly, but it is not needed.
It is working on UART 0 at 115200. I tried at 1500000, but it was just garbage on the screen.
Yes I verified the same on my NanoPi M1, with same chip and same 4 pin debug UART port. I am currently waiting for first run setup to finish, to test whether 1.5M works as well, if set for kernel output and/or login prompt.
I'm not attaching any power, just GND, TX, and RX. I think the 3.3v/5v jumper is for the TTL signal level. There are separate 3.3v and 5v output pins, but I'm not using those.
The adapter is labeled correctly, in my case, but I had swapped RX/TX when I was using it before, years ago, and didn't notice it right away when I went to use it today.
Interesting. While U-Boot gives output at baud rate 115200, the debug port indeed supports 1.5M: I get kernel output and can login, when adjusting the [email protected] accordingly, like we do on Rockchip SBCs. Goof to know. But since the bootloader uses 115200, that should be used for kernel and login prompt as well, otherwise only ever one of both will work.
So if you want me to test anything, I can test it now.
With the UART adapter working now, it would be interesting to see bootloader output with the new kernel, in case it fails to boot:
cd /tmp
wget https://dietpi.com/downloads/binaries/linux-{dtb,image}-current-sunxi.deb
dpkg -i linux-{dtb,image}-current-sunxi.deb
reboot
The adapter is labeled correctly
Usually the board being labelled wrong, not the adapter, if something is wrong at all. But on my M1, it is also correct: RX of adapter goes to TX of board, vice versa. Guess it is the same for all NanoPi H3 SBCs then.
I applied the new kernel:
Linux pico 6.12.23-current-sunxi #1 SMP Thu Apr 10 12:39:41 UTC 2025 armv7l GNU/Linux
This time, it came up on the network and seems to be working so far.
Here is the output from the boot (I removed the output for rc.local and a few custom services).
Logfile attached. Click to expand!
# picocom -b 115200 /dev/ttyUSB0
picocom v3.1
port is : /dev/ttyUSB0
flowcontrol : none
baudrate is : 115200
parity is : none
databits are : 8
stopbits are : 1
escape is : C-a
local echo is : no
noinit is : no
noreset is : no
hangup is : no
nolock is : no
send_cmd is : sz -vv
receive_cmd is : rz -vv -E
imap is :
omap is :
emap is : crcrlf,delbs,
logfile is : none
initstring : none
exit_after is : not set
exit is : no
Type [C-a] [C-h] to see available commands
Terminal ready
1 USB Device(s) found
scanning bus usb@1c1a400 for devices... 1 USB Device(s) found
scanning bus usb@1c1d000 for devices... 1 USB Device(s) found
scanning bus usb@1c1d400 for devices... 1 USB Device(s) found
scanning usb for storage devices... 0 Storage Device(s) found
Autoboot in 1 seconds, press <Space> to stop
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot/boot.scr
2688 bytes read in 3 ms (875 KiB/s)
## Executing script at 43100000
285 bytes read in 4 ms (69.3 KiB/s)
11001024 bytes read in 459 ms (22.9 MiB/s)
11494737 bytes read in 479 ms (22.9 MiB/s)
35272 bytes read in 12 ms (2.8 MiB/s)
Working FDT set to 43000000
504 bytes read in 8 ms (61.5 KiB/s)
Applying kernel provided DT overlay sun8i-h3-usbhost1.dtbo
504 bytes read in 7 ms (70.3 KiB/s)
Applying kernel provided DT overlay sun8i-h3-usbhost2.dtbo
4185 bytes read in 8 ms (510.7 KiB/s)
Applying kernel provided DT fixup script sun8i-h3-fixup.scr
## Executing script at 45000000
Kernel image @ 0x42000000 [ 0x000000 - 0xa7dcc0 ]
## Loading init Ramdisk from Legacy Image at 43400000 ...
Image Name: uInitrd
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 11494673 Bytes = 11 MiB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
## Flattened Device Tree blob at 43000000
Booting using the fdt blob at 0x43000000
Working FDT set to 43000000
Loading Ramdisk to 49509000, end 49fff511 ... OK
Loading Device Tree to 49498000, end 49508fff ... OK
Working FDT set to 49498000
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 6.12.23-current-sunxi (build@armbian) (arm-linux-gnueabihf-gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0, GNU ld (GNU Binutils for Ubuntu) 2.42) #1 SMP Thu Apr 10 12:39:41 UTC 2025
[ 0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=50c5387d
[ 0.000000] CPU: div instructions available: patching division code
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] OF: fdt: Machine model: FriendlyARM NanoPi NEO
[ 0.000000] Memory policy: Data cache writealloc
[ 0.000000] cma: Reserved 104 MiB at 0x59800000 on node -1
[ 0.000000] Zone ranges:
[ 0.000000] Normal [mem 0x0000000040000000-0x000000005fffffff]
[ 0.000000] HighMem empty
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000040000000-0x000000005fffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x000000005fffffff]
[ 0.000000] OF: reserved mem: Reserved memory: No reserved-memory node in the DT
[ 0.000000] psci: probing for conduit method from DT.
[ 0.000000] psci: Using PSCI v0.1 Function IDs from DT
[ 0.000000] percpu: Embedded 19 pages/cpu s48588 r8192 d21044 u77824
[ 0.000000] Kernel command line: root=UUID=64297260-24aa-4036-ae7c-33ecf65d6a1e rootfstype=ext4 rootwait console=ttyS0,115200 consoleblank=0 coherent_pool=2M usb-storage.quirks= net.ifnames=0
[ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 131072
[ 0.000000] mem auto-init: stack:all(zero), heap alloc:on, heap free:off
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[ 0.000000] allocated 524288 bytes of page_ext
[ 0.000000] ftrace: allocating 47239 entries in 139 pages
[ 0.000000] ftrace: allocated 139 pages with 4 groups
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
[ 0.000000] Rude variant of Tasks RCU enabled.
[ 0.000000] Tracing variant of Tasks RCU enabled.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[ 0.000000] RCU Tasks Rude: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
[ 0.000000] RCU Tasks Trace: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000000] GIC: Using split EOI/Deactivate mode
[ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[ 0.000000] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[ 0.000000] arch_timer: cp15 timer(s) running at 24.00MHz (phys).
[ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x588fe9dc0, max_idle_ns: 440795202592 ns
[ 0.000003] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns
[ 0.000033] Switching to timer-based delay loop, resolution 41ns
[ 0.001113] Console: colour dummy device 80x30
[ 0.001250] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=96000)
[ 0.001280] CPU: Testing write buffer coherency: ok
[ 0.001371] pid_max: default: 32768 minimum: 301
[ 0.018652] LSM: initializing lsm=capability,yama,apparmor
[ 0.024521] Yama: becoming mindful.
[ 0.025109] AppArmor: AppArmor initialized
[ 0.027773] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.027810] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.038364] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[ 0.049910] Setting up static identity map for 0x40100000 - 0x40100054
[ 0.050348] rcu: Hierarchical SRCU implementation.
[ 0.050360] rcu: Max phase no-delay instances is 1000.
[ 0.051179] Timer migration: 1 hierarchy levels; 8 children per group; 1 crossnode level
[ 0.055190] smp: Bringing up secondary CPUs ...
[ 0.079234] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[ 0.101908] CPU2: thread -1, cpu 2, socket 0, mpidr 80000002
[ 0.124238] CPU3: thread -1, cpu 3, socket 0, mpidr 80000003
[ 0.124537] smp: Brought up 1 node, 4 CPUs
[ 0.124560] SMP: Total of 4 processors activated (192.00 BogoMIPS).
[ 0.124578] CPU: All CPU(s) started in HYP mode.
[ 0.124586] CPU: Virtualization extensions available.
[ 0.125091] Memory: 373660K/524288K available (10240K kernel code, 1681K rwdata, 9092K rodata, 1024K init, 409K bss, 40516K reserved, 106496K cma-reserved, 0K highmem)
[ 0.128057] devtmpfs: initialized
[ 0.147395] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5
[ 0.147915] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[ 0.148100] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
[ 0.162854] pinctrl core: initialized pinctrl subsystem
[ 0.169368] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[ 0.181407] DMA: preallocated 2048 KiB pool for atomic coherent allocations
[ 0.182917] audit: initializing netlink subsys (disabled)
[ 0.183629] audit: type=2000 audit(0.160:1): state=initialized audit_enabled=0 res=1
[ 0.184757] thermal_sys: Registered thermal governor 'fair_share'
[ 0.184773] thermal_sys: Registered thermal governor 'bang_bang'
[ 0.184787] thermal_sys: Registered thermal governor 'step_wise'
[ 0.184940] cpuidle: using governor ladder
[ 0.185025] cpuidle: using governor menu
[ 0.185747] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
[ 0.185771] hw-breakpoint: maximum watchpoint size is 8 bytes.
[ 0.200522] /soc/mixer@1100000: Fixed dependency cycle(s) with /soc/lcd-controller@1c0d000
[ 0.200620] /soc/mixer@1100000: Fixed dependency cycle(s) with /soc/lcd-controller@1c0c000
[ 0.200728] /soc/mixer@1200000: Fixed dependency cycle(s) with /soc/lcd-controller@1c0d000
[ 0.200810] /soc/mixer@1200000: Fixed dependency cycle(s) with /soc/lcd-controller@1c0c000
[ 0.200934] /soc/lcd-controller@1c0c000: Fixed dependency cycle(s) with /soc/mixer@1200000
[ 0.201016] /soc/lcd-controller@1c0c000: Fixed dependency cycle(s) with /soc/mixer@1100000
[ 0.201154] /soc/lcd-controller@1c0d000: Fixed dependency cycle(s) with /soc/mixer@1200000
[ 0.201237] /soc/lcd-controller@1c0d000: Fixed dependency cycle(s) with /soc/mixer@1100000
[ 0.202177] /soc/interrupt-controller@1c81000: Fixed dependency cycle(s) with /soc/interrupt-controller@1c81000
[ 0.203122] /soc/mixer@1100000: Fixed dependency cycle(s) with /soc/lcd-controller@1c0d000
[ 0.203215] /soc/mixer@1100000: Fixed dependency cycle(s) with /soc/lcd-controller@1c0c000
[ 0.203911] /soc/mixer@1200000: Fixed dependency cycle(s) with /soc/lcd-controller@1c0d000
[ 0.204004] /soc/mixer@1200000: Fixed dependency cycle(s) with /soc/lcd-controller@1c0c000
[ 0.204892] /soc/mixer@1200000: Fixed dependency cycle(s) with /soc/lcd-controller@1c0c000
[ 0.205108] /soc/mixer@1100000: Fixed dependency cycle(s) with /soc/lcd-controller@1c0c000
[ 0.205364] /soc/lcd-controller@1c0c000: Fixed dependency cycle(s) with /soc/mixer@1200000
[ 0.205621] /soc/lcd-controller@1c0c000: Fixed dependency cycle(s) with /soc/mixer@1100000
[ 0.206184] /soc/mixer@1200000: Fixed dependency cycle(s) with /soc/lcd-controller@1c0d000
[ 0.206398] /soc/mixer@1100000: Fixed dependency cycle(s) with /soc/lcd-controller@1c0d000
[ 0.206648] /soc/lcd-controller@1c0d000: Fixed dependency cycle(s) with /soc/mixer@1200000
[ 0.206859] /soc/lcd-controller@1c0d000: Fixed dependency cycle(s) with /soc/mixer@1100000
[ 0.245426] cryptd: max_cpu_qlen set to 1000
[ 0.313987] raid6: neonx8 gen() 302 MB/s
[ 0.382304] raid6: neonx4 gen() 429 MB/s
[ 0.450576] raid6: neonx2 gen() 433 MB/s
[ 0.518870] raid6: neonx1 gen() 355 MB/s
[ 0.587225] raid6: int32x8 gen() 132 MB/s
[ 0.655569] raid6: int32x4 gen() 152 MB/s
[ 0.723723] raid6: int32x2 gen() 192 MB/s
[ 0.792019] raid6: int32x1 gen() 177 MB/s
[ 0.792035] raid6: using algorithm neonx2 gen() 433 MB/s
[ 0.860286] raid6: .... xor() 323 MB/s, rmw enabled
[ 0.860302] raid6: using neon recovery algorithm
[ 0.864610] iommu: Default domain type: Translated
[ 0.864638] iommu: DMA domain TLB invalidation policy: strict mode
[ 0.867153] SCSI subsystem initialized
[ 0.868043] usbcore: registered new interface driver usbfs
[ 0.868171] usbcore: registered new interface driver hub
[ 0.868254] usbcore: registered new device driver usb
[ 0.868717] pps_core: LinuxPPS API ver. 1 registered
[ 0.868730] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]>
[ 0.868768] PTP clock support registered
[ 0.869937] Advanced Linux Sound Architecture Driver Initialized.
[ 0.872582] NetLabel: Initializing
[ 0.872597] NetLabel: domain hash size = 128
[ 0.872610] NetLabel: protocols = UNLABELED CIPSOv4 CALIPSO
[ 0.872820] NetLabel: unlabeled traffic allowed by default
[ 0.874035] clocksource: Switched to clocksource arch_sys_counter
[ 0.896432] VFS: Disk quotas dquot_6.6.0
[ 0.897020] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[ 0.898537] AppArmor: AppArmor Filesystem Enabled
[ 0.925697] NET: Registered PF_INET protocol family
[ 0.926214] IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear)
[ 1.067470] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
[ 1.067749] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 1.067799] TCP established hash table entries: 4096 (order: 2, 16384 bytes, linear)
[ 1.067943] TCP bind hash table entries: 4096 (order: 4, 65536 bytes, linear)
[ 1.068171] TCP: Hash tables configured (established 4096 bind 4096)
[ 1.068500] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
[ 1.068569] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
[ 1.069770] NET: Registered PF_UNIX/PF_LOCAL protocol family
[ 1.070689] Trying to unpack rootfs image as initramfs...
[ 1.078626] Initialise system trusted keyrings
[ 1.078864] Key type blacklist registered
[ 1.079712] workingset: timestamp_bits=14 max_order=17 bucket_order=3
[ 1.079914] zbud: loaded
[ 1.084514] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 1.103682] fuse: init (API version 7.41)
[ 1.131162] integrity: Platform Keyring initialized
[ 1.131298] xor: measuring software checksum speed
[ 1.136779] arm4regs : 600 MB/sec
[ 1.145954] 8regs : 359 MB/sec
[ 1.155133] 32regs : 360 MB/sec
[ 1.160404] neon : 626 MB/sec
[ 1.160438] xor: using function: neon (626 MB/sec)
[ 1.160486] Key type asymmetric registered
[ 1.160505] Asymmetric key parser 'x509' registered
[ 1.161457] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247)
[ 1.162246] io scheduler mq-deadline registered
[ 1.162272] io scheduler kyber registered
[ 1.163261] io scheduler bfq registered
[ 1.184859] ledtrig-cpu: registered to indicate activity on CPUs
[ 1.206441] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled
[ 1.246083] brd: module loaded
[ 1.260694] loop: module loaded
[ 1.268583] dwmac-sun8i 1c30000.ethernet: IRQ eth_wake_irq not found
[ 1.268635] dwmac-sun8i 1c30000.ethernet: IRQ eth_lpi not found
[ 1.268656] dwmac-sun8i 1c30000.ethernet: IRQ sfty not found
[ 1.268827] dwmac-sun8i 1c30000.ethernet: supply phy not found, using dummy regulator
[ 1.269190] dwmac-sun8i 1c30000.ethernet: supply phy-io not found, using dummy regulator
[ 1.269653] dwmac-sun8i 1c30000.ethernet: PTP uses main clock
[ 1.269707] dwmac-sun8i 1c30000.ethernet: Current syscon value is not the default 148000 (expect 58000)
[ 1.270655] dwmac-sun8i 1c30000.ethernet: No HW DMA feature register supported
[ 1.270681] dwmac-sun8i 1c30000.ethernet: RX Checksum Offload Engine supported
[ 1.270695] dwmac-sun8i 1c30000.ethernet: COE Type 2
[ 1.270715] dwmac-sun8i 1c30000.ethernet: TX Checksum insertion supported
[ 1.270732] dwmac-sun8i 1c30000.ethernet: Normal descriptors
[ 1.270747] dwmac-sun8i 1c30000.ethernet: Chain mode enabled
[ 1.274789] dwmac-sun8i 1c30000.ethernet: Found internal PHY node
[ 1.276184] dwmac-sun8i 1c30000.ethernet: Switch mux to internal PHY
[ 1.276220] dwmac-sun8i 1c30000.ethernet: Powering internal PHY
[ 3.207409] Freeing initrd memory: 11228K
[ 3.254147] usbcore: registered new interface driver usb-storage
[ 3.256744] sun6i-rtc 1f00000.rtc: registered as rtc0
[ 3.256815] sun6i-rtc 1f00000.rtc: setting system clock to 1970-01-01T00:00:12 UTC (12)
[ 3.257762] i2c_dev: i2c /dev entries driver
[ 3.260868] sunxi-wdt 1c20ca0.watchdog: Watchdog enabled (timeout=16 sec, nowayout=0)
[ 3.263877] sun8i-ce 1c15000.crypto: Set mod clock to 50000000 (50 Mhz) from 24000000 (24 Mhz)
[ 3.264699] sun8i-ce 1c15000.crypto: will run requests pump with realtime priority
[ 3.271805] sun8i-ce 1c15000.crypto: will run requests pump with realtime priority
[ 3.272519] sun8i-ce 1c15000.crypto: will run requests pump with realtime priority
[ 3.273186] sun8i-ce 1c15000.crypto: will run requests pump with realtime priority
[ 3.273688] sun8i-ce 1c15000.crypto: Register cbc(aes)
[ 3.273749] sun8i-ce 1c15000.crypto: Register ecb(aes)
[ 3.273774] sun8i-ce 1c15000.crypto: Register cbc(des3_ede)
[ 3.273801] sun8i-ce 1c15000.crypto: Register ecb(des3_ede)
[ 3.273827] sun8i-ce 1c15000.crypto: Register md5
[ 3.273856] sun8i-ce 1c15000.crypto: Register sha1
[ 3.273882] sun8i-ce 1c15000.crypto: Register sha224
[ 3.273910] sun8i-ce 1c15000.crypto: Register sha256
[ 3.273938] sun8i-ce 1c15000.crypto: Register sha384
[ 3.274016] sun8i-ce 1c15000.crypto: Register sha512
[ 3.274047] sun8i-ce 1c15000.crypto: Register stdrng
[ 3.274111] sun8i-ce 1c15000.crypto: TRNG not supported
[ 3.274127] sun8i-ce 1c15000.crypto: CryptoEngine Die ID 1
[ 3.275251] hid: raw HID events driver (C) Jiri Kosina
[ 3.275548] usbcore: registered new interface driver usbhid
[ 3.275562] usbhid: USB HID core driver
[ 3.278189] hw perfevents: enabled with armv7_cortex_a7 PMU driver, 5 (8000000f) counters available
[ 3.292056] NET: Registered PF_INET6 protocol family
[ 3.403855] Segment Routing with IPv6
[ 3.404088] In-situ OAM (IOAM) with IPv6
[ 3.404512] NET: Registered PF_PACKET protocol family
[ 3.404543] NET: Registered PF_KEY protocol family
[ 3.404610] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[ 3.405192] Key type dns_resolver registered
[ 3.405911] Registering SWP/SWPB emulation handler
[ 3.428470] registered taskstats version 1
[ 3.429193] Loading compiled-in X.509 certificates
[ 3.462471] zswap: loaded using pool zstd/zbud
[ 3.464638] Key type .fscrypt registered
[ 3.464659] Key type fscrypt-provisioning registered
[ 3.483668] Btrfs loaded, zoned=no, fsverity=yes
[ 3.751164] Key type encrypted registered
[ 3.751214] AppArmor: AppArmor sha256 policy hashing enabled
[ 3.777436] gpio gpiochip0: Static allocation of GPIO base is deprecated, use dynamic allocation.
[ 3.784257] sun8i-h3-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver
[ 3.785520] gpio gpiochip1: Static allocation of GPIO base is deprecated, use dynamic allocation.
[ 3.789229] sun8i-h3-r-pinctrl 1f02c00.pinctrl: initialized sunXi PIO driver
[ 3.789751] sun8i-h3-pinctrl 1c20800.pinctrl: supply vcc-pa not found, using dummy regulator
[ 3.790194] sun8i-h3-r-pinctrl 1f02c00.pinctrl: supply vcc-pl not found, using dummy regulator
[ 3.792761] printk: legacy console [ttyS0] disabled
[ 3.793680] 1c28000.serial: ttyS0 at MMIO 0x1c28000 (irq = 137, base_baud = 1500000) is a 16550A
[ 3.793791] printk: legacy console [ttyS0] enabled
[ 5.263483] sun8i-h3-pinctrl 1c20800.pinctrl: supply vcc-pf not found, using dummy regulator
[ 5.263644] sun8i-h3-pinctrl 1c20800.pinctrl: supply vcc-pg not found, using dummy regulator
[ 5.264041] sun8i-h3-pinctrl 1c20800.pinctrl: supply vcc-pc not found, using dummy regulator
[ 5.295909] phy phy-1c19400.phy.0: Changing dr_mode to 1
[ 5.296373] ehci-platform 1c1b000.usb: EHCI Host Controller
[ 5.297387] ehci-platform 1c1c000.usb: EHCI Host Controller
[ 5.297447] ehci-platform 1c1c000.usb: new USB bus registered, assigned bus number 1
[ 5.301376] ehci-platform 1c1a000.usb: EHCI Host Controller
[ 5.301444] ehci-platform 1c1a000.usb: new USB bus registered, assigned bus number 2
[ 5.301503] ehci-platform 1c1d000.usb: EHCI Host Controller
[ 5.301550] ehci-platform 1c1d000.usb: new USB bus registered, assigned bus number 3
[ 5.303918] ohci-platform 1c1a400.usb: Generic Platform OHCI controller
[ 5.304391] ohci-platform 1c1a400.usb: new USB bus registered, assigned bus number 4
[ 5.307071] ehci-platform 1c1b000.usb: new USB bus registered, assigned bus number 5
[ 5.310542] ohci-platform 1c1b400.usb: Generic Platform OHCI controller
[ 5.311680] ohci-platform 1c1c400.usb: Generic Platform OHCI controller
[ 5.311789] ohci-platform 1c1c400.usb: new USB bus registered, assigned bus number 6
[ 5.313158] of_cfs_init
[ 5.313398] sunxi-mmc 1c0f000.mmc: Got CD GPIO
[ 5.313518] ohci-platform 1c1d400.usb: Generic Platform OHCI controller
[ 5.313568] ohci-platform 1c1d400.usb: new USB bus registered, assigned bus number 7
[ 5.320923] ohci-platform 1c1b400.usb: new USB bus registered, assigned bus number 8
[ 5.326439] of_cfs_init: OK
[ 5.333127] sunxi-mmc 1c11000.mmc: initialized, max. request size: 16384 KB
[ 5.338047] sunxi-mmc 1c0f000.mmc: initialized, max. request size: 16384 KB
[ 5.339026] sunxi-mmc 1c11000.mmc: no support for card's volts
[ 5.339043] mmc2: error -22 whilst initialising SDIO card
[ 5.341779] mmc2: Failed to initialize a non-removable card
[ 5.391056] mmc0: host does not support reading read-only switch, assuming write-enable
[ 5.465801] mmc0: new high speed SDHC card at address aaaa
[ 5.475502] mmcblk0: mmc0:aaaa SH32G 29.7 GiB
[ 5.487932] mmcblk0: p1
[ 5.714065] clk: Disabling unused clocks
[ 5.718301] PM: genpd: Disabling unused power domains
[ 5.723418] ALSA device list:
[ 5.726428] No soundcards found.
[ 5.730670] ohci-platform 1c1d400.usb: irq 147, io mem 0x01c1d400
[ 5.738389] ohci-platform 1c1a400.usb: irq 144, io mem 0x01c1a400
[ 5.745578] ohci-platform 1c1c400.usb: irq 146, io mem 0x01c1c400
[ 5.752700] ohci-platform 1c1b400.usb: irq 145, io mem 0x01c1b400
[ 5.759547] ehci-platform 1c1c000.usb: irq 142, io mem 0x01c1c000
[ 5.766260] ehci-platform 1c1d000.usb: irq 143, io mem 0x01c1d000
[ 5.772804] ehci-platform 1c1b000.usb: irq 141, io mem 0x01c1b000
[ 5.774050] ehci-platform 1c1c000.usb: USB 2.0 started, EHCI 1.00
[ 5.779241] ehci-platform 1c1a000.usb: irq 140, io mem 0x01c1a000
[ 5.785851] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.12
[ 5.786051] ehci-platform 1c1d000.usb: USB 2.0 started, EHCI 1.00
[ 5.802085] ehci-platform 1c1b000.usb: USB 2.0 started, EHCI 1.00
[ 5.805611] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 5.818940] usb usb1: Product: EHCI Host Controller
[ 5.823861] usb usb1: Manufacturer: Linux 6.12.23-current-sunxi ehci_hcd
[ 5.826007] ehci-platform 1c1a000.usb: USB 2.0 started, EHCI 1.00
[ 5.830599] usb usb1: SerialNumber: 1c1c000.usb
[ 5.842941] hub 1-0:1.0: USB hub found
[ 5.846926] hub 1-0:1.0: 1 port detected
[ 5.852301] usb usb4: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 6.12
[ 5.860666] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 5.867934] usb usb4: Product: Generic Platform OHCI controller
[ 5.873899] usb usb4: Manufacturer: Linux 6.12.23-current-sunxi ohci_hcd
[ 5.880637] usb usb4: SerialNumber: 1c1a400.usb
[ 5.886565] hub 4-0:1.0: USB hub found
[ 5.890534] hub 4-0:1.0: 1 port detected
[ 5.895838] usb usb5: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.12
[ 5.904193] usb usb5: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 5.911463] usb usb5: Product: EHCI Host Controller
[ 5.916381] usb usb5: Manufacturer: Linux 6.12.23-current-sunxi ehci_hcd
[ 5.923118] usb usb5: SerialNumber: 1c1b000.usb
[ 5.928887] hub 5-0:1.0: USB hub found
[ 5.932798] hub 5-0:1.0: 1 port detected
[ 5.938321] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.12
[ 5.946655] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 5.953922] usb usb3: Product: EHCI Host Controller
[ 5.958840] usb usb3: Manufacturer: Linux 6.12.23-current-sunxi ehci_hcd
[ 5.965577] usb usb3: SerialNumber: 1c1d000.usb
[ 5.971898] hub 3-0:1.0: USB hub found
[ 5.975862] hub 3-0:1.0: 1 port detected
[ 5.981220] usb usb7: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 6.12
[ 5.989576] usb usb7: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 5.996857] usb usb7: Product: Generic Platform OHCI controller
[ 6.002832] usb usb7: Manufacturer: Linux 6.12.23-current-sunxi ohci_hcd
[ 6.009569] usb usb7: SerialNumber: 1c1d400.usb
[ 6.015327] hub 7-0:1.0: USB hub found
[ 6.019235] hub 7-0:1.0: 1 port detected
[ 6.024539] usb usb8: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 6.12
[ 6.032895] usb usb8: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 6.040164] usb usb8: Product: Generic Platform OHCI controller
[ 6.046124] usb usb8: Manufacturer: Linux 6.12.23-current-sunxi ohci_hcd
[ 6.052859] usb usb8: SerialNumber: 1c1b400.usb
[ 6.058734] hub 8-0:1.0: USB hub found
[ 6.062636] hub 8-0:1.0: 1 port detected
[ 6.067918] usb usb6: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 6.12
[ 6.076257] usb usb6: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 6.083528] usb usb6: Product: Generic Platform OHCI controller
[ 6.089486] usb usb6: Manufacturer: Linux 6.12.23-current-sunxi ohci_hcd
[ 6.096223] usb usb6: SerialNumber: 1c1c400.usb
[ 6.102041] hub 6-0:1.0: USB hub found
[ 6.105906] hub 6-0:1.0: 1 port detected
[ 6.111236] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.12
[ 6.119575] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 6.126847] usb usb2: Product: EHCI Host Controller
[ 6.131768] usb usb2: Manufacturer: Linux 6.12.23-current-sunxi ehci_hcd
[ 6.138534] usb usb2: SerialNumber: 1c1a000.usb
[ 6.144275] hub 2-0:1.0: USB hub found
[ 6.148218] hub 2-0:1.0: 1 port detected
[ 6.164719] Freeing unused kernel image (initmem) memory: 1024K
[ 6.171688] Run /init as init process
Loading, please wait...
Starting systemd-udevd version 252.38-1~deb12u1
[ 7.160010] input: gpio-keys as /devices/platform/gpio-keys/input/input0
[ 7.295342] musb-sunxi 1c19000.usb: Disabling musb host side code due to re-routed phy
[ 7.304214] usb_phy_generic usb_phy_generic.1.auto: dummy supplies not allowed for exclusive requests (id=vbus)
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... done.
Begin: Will now check root file system ... fsck from util-linux 2.38.1
[/sbin/fsck.ext4 (1) -- /dev/mmcblk0p1] fsck.ext4 -a -C0 /dev/mmcblk0p1
/dev/mmcblk0p1 has been mounted 1 times without being checked, check forced.
/dev/mmcblk0p1: 44437/1904000 files (0.1% non-contiguous), 706328/7790720 blocks
done.
[ 12.696832] EXT4-fs (mmcblk0p1): mounted filesystem 64297260-24aa-4036-ae7c-33ecf65d6a1e ro with ordered data mode. Quota mode: none.
done.
Begin: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... done.
[ 13.563248] systemd[1]: System time before build time, advancing clock.
[ 13.676086] systemd[1]: Inserted module 'autofs4'
[ 13.779225] systemd[1]: systemd 252.38-1~deb12u1 running in system mode (+PAM +AUDIT +SELINUX +APPARMOR +IMA +SMACK +SECCOMP +GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 -PWQUALITY +P11KIT +QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[ 13.812211] systemd[1]: Detected architecture arm.
Welcome to Debian GNU/Linux 12 (bookworm)!
[ 13.836264] systemd[1]: Hostname set to <pico>.
[ 15.575250] systemd[1]: Queued start job for default target graphical.target.
[ 15.626426] systemd[1]: Created slice system-modprobe.slice - Slice /system/modprobe.
[ OK ] Created slice system-modpr…lice - Slice /system/modprobe.
[ 15.656181] systemd[1]: Created slice system-serial\x2dgetty.slice - Slice /system/serial-getty.
[ OK ] Created slice system-seria… - Slice /system/serial-getty.
[ 15.683917] systemd[1]: Created slice system-wg\x2dquick.slice - Slice /system/wg-quick.
[ OK ] Created slice system-wg\x2…lice - Slice /system/wg-quick.
[ 15.707287] systemd[1]: Started systemd-ask-password-console.path - Dispatch Password Requests to Console Directory Watch.
[ OK ] Started systemd-ask-passwo…quests to Console Directory Watch.
[ 15.731078] systemd[1]: Started systemd-ask-password-wall.path - Forward Password Requests to Wall Directory Watch.
[ OK ] Started systemd-ask-passwo… Requests to Wall Directory Watch.
[ 15.756442] systemd[1]: Set up automount proc-sys-fs-binfmt_misc.automount - Arbitrary Executable File Formats File System Automount Point.
[ OK ] Set up automount proc-sys-…rmats File System Automount Point.
[ 15.782597] systemd[1]: Expecting device dev-ttyS0.device - /dev/ttyS0...
Expecting device dev-ttyS0.device - /dev/ttyS0...
[ 15.802652] systemd[1]: Reached target cryptsetup.target - Local Encrypted Volumes.
[ OK ] Reached target cryptsetup.…get - Local Encrypted Volumes.
[ 15.822935] systemd[1]: Reached target integritysetup.target - Local Integrity Protected Volumes.
[ OK ] Reached target integrityse…Local Integrity Protected Volumes.
[ 15.847246] systemd[1]: Reached target nss-lookup.target - Host and Network Name Lookups.
[ OK ] Reached target nss-lookup.…m - Host and Network Name Lookups.
[ 15.870513] systemd[1]: Reached target paths.target - Path Units.
[ OK ] Reached target paths.target - Path Units.
[ 15.890801] systemd[1]: Reached target remote-fs.target - Remote File Systems.
[ OK ] Reached target remote-fs.target - Remote File Systems.
[ 15.910525] systemd[1]: Reached target slices.target - Slice Units.
[ OK ] Reached target slices.target - Slice Units.
[ 15.930638] systemd[1]: Reached target swap.target - Swaps.
[ OK ] Reached target swap.target - Swaps.
[ 15.950840] systemd[1]: Reached target veritysetup.target - Local Verity Protected Volumes.
[ OK ] Reached target veritysetup… - Local Verity Protected Volumes.
[ 15.976603] systemd[1]: Listening on syslog.socket - Syslog Socket.
[ OK ] Listening on syslog.socket - Syslog Socket.
[ 15.996048] systemd[1]: Listening on systemd-fsckd.socket - fsck to fsckd communication Socket.
[ OK ] Listening on systemd-fsckd…sck to fsckd communication Socket.
[ 16.019368] systemd[1]: Listening on systemd-initctl.socket - initctl Compatibility Named Pipe.
[ OK ] Listening on systemd-initc… initctl Compatibility Named Pipe.
[ 16.045472] systemd[1]: Listening on systemd-journald-audit.socket - Journal Audit Socket.
[ OK ] Listening on systemd-journ…socket - Journal Audit Socket.
[ 16.072061] systemd[1]: Listening on systemd-journald-dev-log.socket - Journal Socket (/dev/log).
[ OK ] Listening on systemd-journ…t - Journal Socket (/dev/log).
[ 16.096604] systemd[1]: Listening on systemd-journald.socket - Journal Socket.
[ OK ] Listening on systemd-journald.socket - Journal Socket.
[ 16.121945] systemd[1]: Listening on systemd-udevd-control.socket - udev Control Socket.
[ OK ] Listening on systemd-udevd….socket - udev Control Socket.
[ 16.143974] systemd[1]: Listening on systemd-udevd-kernel.socket - udev Kernel Socket.
[ OK ] Listening on systemd-udevd…l.socket - udev Kernel Socket.
[ 16.168216] systemd[1]: dev-hugepages.mount - Huge Pages File System was skipped because of an unmet condition check (ConditionPathExists=/sys/kernel/mm/hugepages).
[ 16.223013] systemd[1]: Mounting dev-mqueue.mount - POSIX Message Queue File System...
Mounting dev-mqueue.mountsys-kernel-debug.… - Kernel Debug File System...
[ 16.294110] systemd[1]: Mounting sys-kernel-tracing.mount - Kernel Trace File System...
Mounting sys-kernel-tracin… - Kernel Trace File System...
[ 16.336384] systemd[1]: Starting fake-hwclock.service - Restore / save the current clock...
Starting fake-hwclock.serv…estore / save the current clock...
[ 16.395897] systemd[1]: Starting keyboard-setup.service - Set the console keyboard layout...
Starting keyboard-setup.se…Set the console keyboard layout...
[ 16.436369] systemd[1]: Starting kmod-static-nodes.service - Create List of Static Device Nodes...
Starting kmod-static-nodes…ate List of Static Device Nodes...
[ 16.476184] systemd[1]: Starting [email protected] - Load Kernel Module configfs...
Starting modprobe@configfs…m - Load Kernel Module configfs...
[ 16.514427] systemd[1]: Starting modprobe@dm_mod.service - Load Kernel Module dm_mod...
Starting modprobe@dm_mod.s…[0m - Load Kernel Module dm_mod...
[ 16.554752] systemd[1]: Starting modprobe@efi_pstore.service - Load Kernel Module efi_pstore...
Starting modprobe@efi_psto…- Load Kernel Module efi_pstore...
[ 16.593848] device-mapper: uevent: version 1.0.3
[ 16.595769] systemd[1]: Starting [email protected] - Load Kernel Module fuse...
[ 16.602653] device-mapper: ioctl: 4.48.0-ioctl (2023-03-01) initialised: [email protected]
Starting [email protected]…e - Load Kernel Module fuse...
[ 16.645385] systemd[1]: Starting [email protected] - Load Kernel Module loop...
Starting [email protected]…e - Load Kernel Module loop...
[ 16.671721] systemd[1]: systemd-fsck-root.service - File System Check on Root Device was skipped because of an unmet condition check (ConditionPathExists=!/run/initramfs/fsck-root).
[ 16.732022] systemd[1]: Starting systemd-journald.service - Journal Service...
Starting systemd-journald.service - Journal Service...
[ 16.770908] systemd[1]: Starting systemd-modules-load.service - Load Kernel Modules...
Starting systemd-modules-l…rvice - Load Kernel Modules...
[ 16.815688] systemd[1]: Starting systemd-remount-fs.service - Remount Root and Kernel File Systems...
Starting systemd-remount-f…nt Root and Kernel File Systems...
[ 16.888313] zram: Added device: zram0
[ 16.896113] systemd[1]: Starting systemd-udev-trigger.service - Coldplug All udev Devices...
Starting systemd-udev-trig…[0m - Coldplug All udev Devices...
[ 16.961658] systemd[1]: Mounted dev-mqueue.mount - POSIX Message Queue File System.
[ OK ] Mounted dev-mqueue.mountOSIX Message Queue File System.
[ 16.984524] systemd[1]: Mounted sys-kernel-debug.mount - Kernel Debug File System.
[ 16.993204] EXT4-fs (mmcblk0p1): re-mounted 64297260-24aa-4036-ae7c-33ecf65d6a1e r/w. Quota mode: none.
[ OK ] Mounted sys-kernel-debug.m…nt - Kernel Debug File System.
[ 17.035751] systemd[1]: Mounted sys-kernel-tracing.mount - Kernel Trace File System.
[ OK ] Mounted sys-kernel-tracing…nt - Kernel Trace File System.
[ 17.066318] systemd[1]: Finished fake-hwclock.service - Restore / save the current clock.
[ OK ] Finished fake-hwclock.serv… Restore / save the current clock.
[ 17.095058] systemd[1]: Finished kmod-static-nodes.service - Create List of Static Device Nodes.
[ OK ] Finished kmod-static-nodes…reate List of Static Device Nodes.
[ 17.127596] systemd[1]: [email protected]: Deactivated successfully.
[ 17.137458] systemd[1]: Finished [email protected] - Load Kernel Module configfs.
[ OK ] Finished modprobe@configfs…[0m - Load Kernel Module configfs.
[ 17.168007] systemd[1]: modprobe@dm_mod.service: Deactivated successfully.
[ 17.177472] systemd[1]: Finished modprobe@dm_mod.service - Load Kernel Module dm_mod.
[ OK ] Finished modprobe@dm_mod.s…e - Load Kernel Module dm_mod.
[ 17.208120] systemd[1]: modprobe@efi_pstore.service: Deactivated successfully.
[ 17.217915] systemd[1]: Finished modprobe@efi_pstore.service - Load Kernel Module efi_pstore.
[ OK ] Finished modprobe@efi_psto…m - Load Kernel Module efi_pstore.
[ 17.251378] systemd[1]: [email protected]: Deactivated successfully.
[ 17.260746] systemd[1]: Finished [email protected] - Load Kernel Module fuse.
[ OK ] Finished [email protected] - Load Kernel Module fuse.
[ 17.288231] systemd[1]: [email protected]: Deactivated successfully.
[ 17.297861] systemd[1]: Finished [email protected] - Load Kernel Module loop.
[ OK ] Finished [email protected] - Load Kernel Module loop.
[ 17.326884] systemd[1]: Finished systemd-modules-load.service - Load Kernel Modules.
[ OK ] Finished systemd-modules-l…service - Load Kernel Modules.
[ 17.358653] systemd[1]: Finished systemd-remount-fs.service - Remount Root and Kernel File Systems.
[ OK ] Finished systemd-remount-f…ount Root and Kernel File Systems.
[ 17.391133] systemd[1]: Finished keyboard-setup.service - Set the console keyboard layout.
[ OK ] Finished keyboard-setup.se…- Set the console keyboard layout.
[ 17.459162] systemd[1]: Mounting sys-fs-fuse-connections.mount - FUSE Control File System...
Mounting sys-fs-fuse-conne… - FUSE Control File System...
[ 17.495041] systemd[1]: Mounting sys-kernel-config.mount - Kernel Configuration File System...
Mounting sys-kernel-config…ernel Configuration File System...
[ 17.519263] systemd[1]: systemd-firstboot.service - First Boot Wizard was skipped because of an unmet condition check (ConditionFirstBoot=yes).
[ 17.533362] systemd[1]: systemd-pstore.service - Platform Persistent Storage Archival was skipped because of an unmet condition check (ConditionDirectoryNotEmpty=/sys/fs/pstore).
[ 17.563501] systemd[1]: Starting systemd-random-seed.service - Load/Save Random Seed...
Starting systemd-random-se…ice - Load/Save Random Seed...
[ 17.587615] systemd[1]: systemd-repart.service - Repartition Root Disk was skipped because no trigger condition checks were met.
[ 17.645151] systemd[1]: Starting systemd-sysctl.service - Apply Kernel Variables...
Starting systemd-sysctl.se…ce - Apply Kernel Variables...
[ 17.681522] systemd[1]: Starting systemd-sysusers.service - Create System Users...
Starting systemd-sysusers.…rvice - Create System Users...
[ 17.744420] systemd[1]: Started systemd-journald.service - Journal Service.
[ OK ] Started systemd-journald.service - Journal Service.
[ OK ] Mounted sys-fs-fuse-connec…nt - FUSE Control File System.
[ OK ] Mounted sys-kernel-config.… Kernel Configuration File System.
[ OK ] Finished systemd-sysctl.service - Apply Kernel Variables.
[ OK ] Finished systemd-sysusers.service - Create System Users.
Starting systemd-journal-f…h Journal to Persistent Storage...
Starting systemd-tmpfiles-…ate Static Device Nodes in /dev...
[ OK ] Finished systemd-udev-trig…e - Coldplug All udev Devices.
[ OK ] Finished systemd-journal-f…ush Journal to Persistent Storage.
Starting ifupdown-pre.serv…ynchronize boot up for ifupdown...
[ OK ] Finished systemd-tmpfiles-…reate Static Device Nodes in /dev.
[ OK ] Reached target local-fs-pr…reparation for Local File Systems.
Mounting tmp.mount - /tmp...
Starting systemd-udevd.ser…ger for Device Events and Files...
[ OK ] Mounted tmp.mount - /tmp.
[ OK ] Reached target local-fs.target - Local File Systems.
Starting console-setup.ser…m - Set console font and keymap...
Starting netfilter-persist…filter persistent configuration...
Starting systemd-binfmt.se…et Up Additional Binary Formats...
Starting systemd-tmpfiles-…te System Files and Directories...
[ OK ] Finished console-setup.ser…[0m - Set console font and keymap.
Mounting proc-sys-fs-binfm…utable File Formats File System...
[ OK ] Mounted proc-sys-fs-binfmt…ecutable File Formats File System.
[ OK ] Finished systemd-random-se…rvice - Load/Save Random Seed.
[ OK ] Finished systemd-binfmt.se… Set Up Additional Binary Formats.
[ OK ] Started systemd-udevd.serv…nager for Device Events and Files.
[ OK ] Finished systemd-tmpfiles-…eate System Files and Directories.
[ OK ] Started resolvconf.service… - Nameserver information manager.
Starting systemd-timesyncd… - Network Time Synchronization...
Starting systemd-update-ut…rd System Boot/Shutdown in UTMP...
[ OK ] Finished systemd-update-ut…cord System Boot/Shutdown in UTMP.
[ OK ] Found device dev-ttyS0.device - /dev/ttyS0.
[ OK ] Finished netfilter-persist…etfilter persistent configuration.
[ OK ] Started systemd-timesyncd.…0m - Network Time Synchronization.
Expecting device sys-subsy…/sys/subsystem/net/devices/eth0...
[ OK ] Reached target sysinit.target - System Initialization.
[ OK ] Started systemd-tmpfiles-c… Cleanup of Temporary Directories.
[ OK ] Reached target time-set.target - System Time Set.
[ OK ] Started dpkg-db-backup.tim… Daily dpkg database backup timer.
[ OK ] Started fstrim.timer - Discard unused blocks once a week.
[ OK ] Started logrotate.timer - Daily rotation of log files.
[ OK ] Reached target timers.target - Timer Units.
[ OK ] Reached target usb-gadget.…m - Hardware activated USB gadget.
[ OK ] Listening on dbus.socket-Bus System Message Bus Socket.
[ OK ] Reached target sockets.target - Socket Units.
[ OK ] Reached target basic.target - Basic System.
[ OK ] Started cron.service -…kground program processing daemon.
Starting dbus.service - D-Bus System Message Bus...
Starting dietpi-preboot.service - DietPi-PreBoot...
[ OK ] Started dnscrypt-proxy.service - Dnscrypt-Proxy.
[ OK ] Started mikrotik-socks.service - Mikrotik Socks.
Starting rsyslog.service - System Logging Service...
[ OK ] Finished ifupdown-pre.serv… synchronize boot up for ifupdown.
[ OK ] Found device sys-subsystem…- /sys/subsystem/net/devices/eth0.
[ OK ] Started rsyslog.service - System Logging Service.
[ 21.210614] DietPi-PreBoot[350]: DietPi-CPU_set
[ 21.221262] DietPi-PreBoot[350]: ─────────────────────────────────────────────────────
[ 21.245086] DietPi-PreBoot[350]: Mode: Applying CPU governor settings: schedutil
[ OK ] Started dbus.service - D-Bus System Message Bus.
[ 21.279104] DietPi-PreBoot[350]: [ INFO ] DietPi-CPU_set | Setting CPU frequency limits : Max = Disabled MHz | Min = Disabled MHz
[ 21.357491] DietPi-PreBoot[350]: [ OK ] DietPi-CPU_set | Applied CPU governor settings: schedutil
[ OK ] Finished dietpi-preboot.service - DietPi-PreBoot.
[ OK ] Reached target network-pre…get - Preparation for Network.
Starting [email protected] - ifup for eth0...
Starting networking.service - Raise network interfaces...
[ OK ] Finished networking.service - Raise network interfaces.
[ OK ] Finished [email protected] - ifup for eth0.
[ OK ] Reached target network.target - Network.
[ OK ] Reached target network-online.target - Network is Online.
[ OK ] Started dietpi-postboot.service - DietPi-PostBoot.
Starting ssh.service - OpenBSD Secure Shell server...
Starting systemd-user-sess…vice - Permit User Sessions...
Starting [email protected]…reGuard via wg-quick(8) for wg0...
Starting [email protected]…reGuard via wg-quick(8) for wg1...
Starting [email protected]…reGuard via wg-quick(8) for wg2...
Starting [email protected]…reGuard via wg-quick(8) for wg3...
[ OK ] Finished systemd-user-sess…ervice - Permit User Sessions.
[ OK ] Started ssh.service - OpenBSD Secure Shell server.
[ OK ] Started serial-getty@ttyS0…rvice - Serial Getty on ttyS0.
[ OK ] Reached target getty.target - Login Prompts.
[ OK ] Finished [email protected]…WireGuard via wg-quick(8) for wg3.
[ OK ] Finished [email protected]…WireGuard via wg-quick(8) for wg1.
[ OK ] Finished [email protected]…WireGuard via wg-quick(8) for wg2.
[ OK ] Finished [email protected]…WireGuard via wg-quick(8) for wg0.
[ OK ] Reached target multi-user.target - Multi-User System.
[ OK ] Reached target graphical.target - Graphical Interface.
Starting systemd-update-ut… Record Runlevel Change in UTMP...
[ OK ] Finished systemd-update-ut… - Record Runlevel Change in UTMP.
─────────────────────────────────────────────────────
DietPi v9.12.1 : 02:52 - Fri 06/06/2025
─────────────────────────────────────────────────────
- LAN IP : 192.168.3.3 (eth0)
Please hit <return> to login
Debian GNU/Linux 12 pico ttyS0
pico login:
Good. So generally it works. Now we do not know yet why it failed originally. You flashed a more recent U-Boot in between, maybe that made the difference. I'll add a step flashing latest U-Boot to next DietPi update, and re-add the kernel after release.
OK, I'm playing catch-up here guys. I finally got the UART adapter working. Turns out that my NEO is reeeaaalllly old.
@MichaIng, your pin-out diagram is for a NEO v1.4. That's the clue I needed to suss this out because it doesn't look anything like my NEO. Turns out my NEO is a v1.1 and it has a dedicated 4-pin DBG Serial UART tucked up against the USB 2.0 port. Also, it's connection uses 3.3v not 5v.
Based on your findings @dave0003 I've modified the following in /boot/armbianEnv.txt
console=serial
overlays=uart0 uart1 usbhost1 usbhost2
In DietPi-Config > 4. Advanced Options > Serial UART I turned ON:
ttyS0
ttyGS0
After rebooting picocom was able to connect to /dev/ttyUSB0 using:
sudo picocom -b 115200 /dev/ttyUSB0
Now for the kernel upgrade:
cd /tmp
root@mhj-neo:/tmp# wget https://dietpi.com/downloads/binaries/linux-{dtb,image}-current-sunxi.deb
--2025-06-05 14:01:57-- https://dietpi.com/downloads/binaries/linux-dtb-current-sunxi.deb
Resolving dietpi.com (dietpi.com)... 2606:4700:3035::6815:c41, 2606:4700:3034::ac43:c1b7, 104.21.12.65, ...
Connecting to dietpi.com (dietpi.com)|2606:4700:3035::6815:c41|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 211156 (206K) [application/vnd.debian.binary-package]
Saving to: ‘linux-dtb-current-sunxi.deb’
linux-dtb-current-sunxi.deb 100%[=============================================>] 206.21K 1.01MB/s in 0.2s
2025-06-05 14:01:58 (1.01 MB/s) - ‘linux-dtb-current-sunxi.deb’ saved [211156/211156]
--2025-06-05 14:01:58-- https://dietpi.com/downloads/binaries/linux-image-current-sunxi.deb
Reusing existing connection to [dietpi.com]:443.
HTTP request sent, awaiting response... 200 OK
Length: 41637432 (40M) [application/vnd.debian.binary-package]
Saving to: ‘linux-image-current-sunxi.deb’
linux-image-current-sunxi.deb 100%[==========================================>] 39.71M 7.65MB/s in 5.6s
2025-06-05 14:02:04 (7.13 MB/s) - ‘linux-image-current-sunxi.deb’ saved [41637432/41637432]
FINISHED --2025-06-05 14:02:04--
Total wall clock time: 6.7s
Downloaded: 2 files, 40M in 5.8s (6.92 MB/s)
So far, so good...
root@mhj-neo:/tmp# dpkg -i linux-{dtb,image}-current-sunxi.deb
(Reading database ... 76066 files and directories currently installed.)
Preparing to unpack linux-dtb-current-sunxi.deb ...
Armbian 'linux-dtb-current-sunxi' for '6.12.23-current-sunxi': 'preinst' starting.
Armbian 'linux-dtb-current-sunxi' for '6.12.23-current-sunxi': 'preinst' finishing.
Unpacking linux-dtb-current-sunxi (25.08.0-trunk-dietpi1) over (25.08.0-trunk-dietpi1) ...
Preparing to unpack linux-image-current-sunxi.deb ...
Armbian 'linux-image-current-sunxi' for '6.12.23-current-sunxi': 'preinst' starting.
Armbian 'linux-image-current-sunxi' for '6.12.23-current-sunxi': 'preinst' finishing.
Unpacking linux-image-current-sunxi (25.08.0-trunk-dietpi1) over (24.11.0-trunk-dietpi1) ...
Armbian 'linux-image-current-sunxi' for '6.6.44-current-sunxi': 'postrm' starting.
Armbian 'linux-image-current-sunxi' for '6.6.44-current-sunxi': 'postrm' finishing.
Setting up linux-dtb-current-sunxi (25.08.0-trunk-dietpi1) ...
Armbian 'linux-dtb-current-sunxi' for '6.12.23-current-sunxi': 'postinst' starting.
Armbian: DTB: symlinking /boot/dtb to /boot/dtb-6.12.23-current-sunxi...
'dtb' -> 'dtb-6.12.23-current-sunxi'
Armbian 'linux-dtb-current-sunxi' for '6.12.23-current-sunxi': 'postinst' finishing.
Setting up linux-image-current-sunxi (25.08.0-trunk-dietpi1) ...
Armbian 'linux-image-current-sunxi' for '6.12.23-current-sunxi': 'postinst' starting.
update-initramfs: Generating /boot/initrd.img-6.12.23-current-sunxi
Armbian: update last-installed kernel symlink to 'zImage'...
'/boot/zImage' -> 'vmlinuz-6.12.23-current-sunxi'
Armbian: Debian compat: linux-update-symlinks install 6.12.23-current-sunxi boot/vmlinuz-6.12.23-current-sunxi
I: /vmlinuz.old is now a symlink to boot/vmlinuz-6.12.23-current-sunxi
I: /initrd.img.old is now a symlink to boot/initrd.img-6.12.23-current-sunxi
I: /vmlinuz is now a symlink to boot/vmlinuz-6.12.23-current-sunxi
I: /initrd.img is now a symlink to boot/initrd.img-6.12.23-current-sunxi
Armbian 'linux-image-current-sunxi' for '6.12.23-current-sunxi': 'postinst' finishing.
OK, everything still looks good. Now for the reboot.
[ 311.596650] reboot: Restarting system
U-Boot SPL 2024.01-armbian-2024.01-S866c-P7738-Ha5c2-V2b78-Bb703-R448a (Mar 09 2025 - 03:54:42 +0000)
DRAM: 512 MiB
Trying to boot from MMC1
ns16550_serial serial@1c28000: pinctrl_select_state_full: uclass_get_device_by_phandle_id: err=-19
U-Boot 2024.01-armbian-2024.01-S866c-P7738-Ha5c2-V2b78-Bb703-R448a (Mar 09 2025 - 03:54:42 +0000) Allwinner Technology
CPU: Allwinner H3 (SUN8I 1680)
Model: FriendlyARM NanoPi NEO
DRAM: 512 MiB
Core: 66 devices, 18 uclasses, devicetree: separate
WDT: Not starting watchdog@1c20ca0
MMC: mmc@1c0f000: 0, mmc@1c11000: 1
Loading Environment from FAT... Unable to use mmc 0:1...
In: serial,usbkbd
Out: serial
Err: serial
Net: eth0: ethernet@1c30000
starting USB...
Bus usb@1c1a000: sun4i_usb_phy phy@1c19400: External vbus detected, not enabling our own vbus
USB EHCI 1.00
Bus usb@1c1a400: USB OHCI 1.0
Bus usb@1c1d000: USB EHCI 1.00
Bus usb@1c1d400: USB OHCI 1.0
scanning bus usb@1c1a000 for devices... 1 USB Device(s) found
scanning bus usb@1c1a400 for devices... 1 USB Device(s) found
scanning bus usb@1c1d000 for devices... 1 USB Device(s) found
scanning bus usb@1c1d400 for devices... 2 USB Device(s) found
scanning usb for storage devices... 0 Storage Device(s) found
Autoboot in 1 seconds, press <Space> to stop
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot/boot.scr
3789 bytes read in 3 ms (1.2 MiB/s)
## Executing script at 43100000
U-boot loaded from SD
Boot script loaded from mmc
262 bytes read in 2 ms (127.9 KiB/s)
8943219 bytes read in 374 ms (22.8 MiB/s)
11001024 bytes read in 459 ms (22.9 MiB/s)
Found mainline kernel configuration
35272 bytes read in 9 ms (3.7 MiB/s)
Working FDT set to 43000000
Failed to load '/boot/dtb/overlay/sun8i-h3-uart0.dtbo'
502 bytes read in 8 ms (60.5 KiB/s)
Applying kernel provided DT overlay sun8i-h3-uart1.dtbo
504 bytes read in 7 ms (70.3 KiB/s)
Applying kernel provided DT overlay sun8i-h3-usbhost1.dtbo
504 bytes read in 8 ms (61.5 KiB/s)
Applying kernel provided DT overlay sun8i-h3-usbhost2.dtbo
4185 bytes read in 8 ms (510.7 KiB/s)
Applying kernel provided DT fixup script (sun8i-h3-fixup.scr)
## Executing script at 45000000
Kernel image @ 0x42000000 [ 0x000000 - 0xa7dcc0 ]
## Loading init Ramdisk from Legacy Image at 43400000 ...
Image Name: uInitrd
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 8943155 Bytes = 8.5 MiB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
## Flattened Device Tree blob at 43000000
Booting using the fdt blob at 0x43000000
Working FDT set to 43000000
Loading Ramdisk to 49778000, end 49fff633 ... OK
Loading Device Tree to 49707000, end 49777fff ... OK
Working FDT set to 49707000
Starting kernel ...
Loading, please wait...
Starting version 241
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... done.
Begin: Will now check root file system ... fsck from util-linux 2.33.1
[/sbin/fsck.ext4 (1) -- /dev/mmcblk0p1] fsck.ext4 -a -C0 /dev/mmcblk0p1
mhj-neo: clean, 304841/1737216 files, 2890387/7571456 blocks
done.
mount: No such device
Failed to mount /dev/mmcblk0p1 as root file system.
(initramfs)
And that's as far as it gets. The green LED is ON solid, the blue blinking in pairs, and I have to restore from image. So, it doesn't look memory related. It can't seem to mount '/dev/mmcblk0p1' as root for some reason. I checked and found '/dev/mmcblk0p1'.
ls /dev
...snip ...
brw------- 1 0 0 179, 1 mmcblk0p1
brw------- 1 0 0 179, 0 mmcblk0
... snip ...
From the '/etc/fstab':
#----------------------------------------------------------------
# PHYSICAL DRIVES
#----------------------------------------------------------------
UUID=b40c94c1-4f60-46de-ba09-e03c75c08ada / ext4 noatime,lazytime,rw 0 1
Is it because I'm using the UUID in the 'fstab'? I checked the micro-SDHC card and it's fine. It's only six months old.
Ah right, with the Armbian /boot/boot.cmd, console=serial needs to be set in /boot/armbianEnv.txt to get kernel output on the serial console. U-Boot however prints to it by default, the cmdline is relevant for kernel only.
overlays=uart0 uart1 should not be needed. The debug UART is enabled by default, and you do not use UART1.
The USB OTG UART is actually an alternative, indeed. We should probably enable it by default: When powering the NanoPi via USB port of another PC, that one can access the NanoPi like a UART adapter. On Windows, one should see some driver installation popup. On Linux, it shows up as ttyUSB0 like any other USB-UART adapter. However, additionally, on the NanoPi, the g_serial kernel module needs to be loaded. As you could enable the related ttyGS0 console, looks like the module is loaded OOTB. Or Armbian places a related config in /etc/modules-load.d to do so. But U-Boot does not print to it, AFAIK. So while you can debug early kernel errors and get an alternative login console, you cannot debug U-Boot issues, also not initramfs issues like here, as kernel modules are not (cannot be) loaded before the rootfs has been mounted.
Failed to mount /dev/mmcblk0p1 as root file system.
Hmm, the initramfs tries to mount the wrong rootfs. Wasn't there
rootdev=UUID=b40c94c1-4f60-46de-ba09-e03c75c08ada
defined in /boot/armbianEnv.txt? At least above when you printed its content it was. That should be passed to the initramfs.
The /etc/fstab is not yet relevant at this point, and it is correct/better to use UUIDs, exactly for this reason. Probably the SD card device name changed with the kernel upgrade from /dev/mmcblk0 to /dev/mmcblk1. To be independent of device names, and whether to boot from SD card, eMMC chip, USB or NVMe or SATA drive, one uses UUIDs, for kernel/initramfs as root= cmdline entry, as well as in /etc/fstab for the init system at later boot stage.
Can you verify this again:
grep rootdev /boot/dietpiEnv.txt /boot/boot.scr
Probably it is easier to move to recent DietPi version of boot script and env.
Here you go...
# grep rootdev /boot/dietpiEnv.txt /boot/boot.scr
grep: /boot/dietpiEnv.txt: No such file or directory
grep: /boot/boot.scr: binary file matches
I got rid of the '/boot/dietpiEnv.txt' file because you said I didn't need it anymore since it was only supporting the LED fix which is now baked into the OS.
Ah my mistake, I meant /boot/armbianEnv.txt of course. For /boot/boot.scr it seems you need to enforce text mode for grep, hence:
grep -a rootdev /boot/armbianEnv.txt /boot/boot.scr
Ah, OK. NO worries! Here you go...
# grep -a rootdev /boot/armbianEnv.txt /boot/boot.scr
/boot/armbianEnv.txt:rootdev=UUID=b40c94c1-4f60-46de-ba09-e03c75c08ada
/boot/boot.scr:setenv rootdev "/dev/mmcblk${devnum}p1"
/boot/boot.scr: setenv rootdev "/dev/mmcblk${mmc_bootdev}p1"
/boot/boot.scr:setenv bootargs "root=${rootdev} rootwait rootfstype=${rootfstype} ${consoleargs} hdmi.audio=EDID:0 disp.screen0_output_mode=${disp_mode} consoleblank=0 loglevel=${verbosity} ubootpart=${partuuid} ubootsource=${devtype} usb-storage.quirks=${usbstoragequirks} ${extraargs} ${extraboardargs}"