Hi,
On a project we are using Nanopi Neo Air boards with an Allwinner h3 processor and a 8GB eMMC flashed with an Armbian OS.
Recently we have been getting increasing reports of the boards being stuck on boot, and found out we have two scenarios:
1. The board gets stuck on boot on message 'Starting Kernel ...' From logs available on COM port we are able to see where boot process stops.
Although this behavior is highly undesirable, since the eMMC is visible in device tree when booting from an SD-Card, it can be recovered by running command
In order to reproduce this behavior we have set up a continuous power cycle test where, booting from eMMC:
We then repeated the test but by booting from an SD-Card and were not able to reproduce the issue, having reached power cycle counts of 34381.
Are there any known issues with the eMMC that could potentially justify this behavior, or is someone able to provide some guidance on what we could do/check to try to prevent this from happening (or making the eMMC more resilient to power cycles)?
2. The board gets stuck on boot, nothing is displayed in COM port and eMMC is no longer listed in device tree when booting from SD-Card.
While troubleshooting this issue we took two approaches: if either the eMMC got faulty (HW issue) or its metadata "just" critically corrupted.
For checking eMMC metadata we tried the following:
For checking HW issues we have:
But still we were not able to get the eMMC listed in the device tree.
On boot, we always see the following messages:
For now everything points to HW failure, but we do not know what caused it. Moreover, the only thing that we believe may remain to be tested is whether the MMC is being powered.
Is someone able to provide us with guidance on how we could test this, or is there something we can do/check to have a better understanding on why the eMMC got faulty?
Thanks in advance
On a project we are using Nanopi Neo Air boards with an Allwinner h3 processor and a 8GB eMMC flashed with an Armbian OS.
Recently we have been getting increasing reports of the boards being stuck on boot, and found out we have two scenarios:
1. The board gets stuck on boot on message 'Starting Kernel ...' From logs available on COM port we are able to see where boot process stops.
Although this behavior is highly undesirable, since the eMMC is visible in device tree when booting from an SD-Card, it can be recovered by running command
Code: Select all
fsck /dev/mmcblk2p1
In order to reproduce this behavior we have set up a continuous power cycle test where, booting from eMMC:
- Device is powered on
- After 70 seconds (enough time for the system to boot), power supply is interrupted
- Device remains powered off for 10 seconds
We then repeated the test but by booting from an SD-Card and were not able to reproduce the issue, having reached power cycle counts of 34381.
Are there any known issues with the eMMC that could potentially justify this behavior, or is someone able to provide some guidance on what we could do/check to try to prevent this from happening (or making the eMMC more resilient to power cycles)?
2. The board gets stuck on boot, nothing is displayed in COM port and eMMC is no longer listed in device tree when booting from SD-Card.
While troubleshooting this issue we took two approaches: if either the eMMC got faulty (HW issue) or its metadata "just" critically corrupted.
For checking eMMC metadata we tried the following:
- Reflash the eMMC using eFlasher (used h3-eflasher-multiple-os-20250402-30g.img.gz)
Code: Select all
root@NanoPi-NEO-Air:~# eflasher -g
Using config file: "/mnt/sdcard/eflasher.conf"
-------------------------------------------------------
open file error: "/sys/class/block/mmcblk1/device/name"
No eMMC Flash detected, , ,
---
root@NanoPi-NEO-Air:~# eflasher --low-format -i /mnt/sdcard/debian-jessie-kernel3.4
Using config file: "/tmp/eflasher.conf"
-------------------------------------------------------
open file error: "/sys/class/block/mmcblk1/device/name"
No eMMC Flash detected, , ,
- Reflash the eMMC using Armbian 'nand-sata-install'. Only SD-Card was listed.
For checking HW issues we have:
- Created custom user overlays to make the eMMC slower (25MHz and 12.5MHz with 1bit bus)
Code: Select all
e.g.
## CREATE OVERLAY
sudo mkdir -p /boot/overlay-user
sudo nano /boot/overlay-user/sun8i-h3-slow-emmc-1bit.dts
- - -
/dts-v1/;
/plugin/;
/ {
compatible = "allwinner,sun8i-h3";
fragment@0 {
target-path = "/soc/mmc@1c11000"; // adjust if your path differs
__overlay__ {
status = "okay";
bus-width = <1>;
max-frequency = <12500000>; // 12.5 MHz
/delete-property/ mmc-ddr-1_8v;
/delete-property/ mmc-hs200-1_8v;
/delete-property/ mmc-hs400-1_8v;
/delete-property/ mmc-hs;
/delete-property/ cap-mmc-highspeed;
};
};
};
- - -
## COMPILE
cd /boot/overlay-user
sudo dtc -@ -I dts -O dtb -o sun8i-h3-slow-emmc-1bit.dtbo sun8i-h3-slow-emmc-1bit.dts
## ENABLE OVERALY IN `/boot/armbianEnv.txt`
sudo sed -i '/^user_overlays=/d' /boot/armbianEnv.txt
echo 'user_overlays=sun8i-h3-slow-emmc-1bit' | sudo tee -a /boot/armbianEnv.txt
## REBOOT - Powered the board with a diffent 5V power source and cable
- Tried to re-init eMMC
Code: Select all
# FROIM userspace
ls /sys/bus/platform/drivers/sunxi-mmc/
lrwxrwxrwx 1 root root 0 Aug 22 14:40 1c0f000.mmc -> ../../../../devices/platform/soc/1c0f000.mmc
lrwxrwxrwx 1 root root 0 Aug 22 14:40 1c10000.mmc -> ../../../../devices/platform/soc/1c10000.mmc
lrwxrwxrwx 1 root root 0 Aug 22 14:40 1c11000.mmc -> ../../../../devices/platform/soc/1c11000.mmc
# toggle host driver (assuming path 1c11000.mmc)
echo 1c11000.mmc | sudo tee /sys/bus/platform/drivers/sunxi-mmc/unbind
sleep 1
echo 1c11000.mmc | sudo tee /sys/bus/platform/drivers/sunxi-mmc/bind
echo 1 | sudo tee /sys/class/mmc_host/mmc2/rescan
---
# From U-boot
Autoboot in 1 seconds, press <Space> to stop
Listed available devices:
=> mmc list
mmc@1c0f000: 0 (SD)
mmc@1c10000: 2
mmc@1c11000: 1
Tried to collect status data from eMMC.
=> mmc dev 2
Card did not respond to voltage select! : -110
=> mmc dev 1
Card did not respond to voltage select! : -110
=> mmc rescan
=> mmc info
Device: mmc@1c0f000 <-- SD Card
Manufacturer ID: 3
OEM: 5344
Name: SL16G
Bus Speed: 50000000
Mode: SD High Speed (50MHz)
Rd Block Len: 512
SD version 3.0
High Capacity: Yes
Capacity: 14.8 GiB
Bus Width: 4-bit
Erase Group Size: 512 Bytes
But still we were not able to get the eMMC listed in the device tree.
On boot, we always see the following messages:
Code: Select all
mmc2: Card stuck being busy! __mmc_poll_for_busy
mmc2: Failed to initialize a non-removable card
For now everything points to HW failure, but we do not know what caused it. Moreover, the only thing that we believe may remain to be tested is whether the MMC is being powered.
Is someone able to provide us with guidance on how we could test this, or is there something we can do/check to have a better understanding on why the eMMC got faulty?
Thanks in advance