Odroid C2 doesnt boot up

Hi, I have a new Odroid C2 Rev. 0.2. If I install last DietPi Version I only got the red led light. System wont boot up.
I’ve tested with the same sd card the last ubuntu minimal release and it worked without any errors. blue led is flashing and display output is working fine.

edit:
wrong kernel?

boot.cmd

# DO NOT EDIT THIS FILE
#
# Please edit /boot/armbianEnv.txt to set supported parameters
#

setenv load_addr "0x32000000"
setenv kernel_addr_r "0x34000000"
setenv fdt_addr_r "0x4080000"
setenv overlay_error "false"
# default values
setenv rootdev "/dev/mmcblk1p1"
setenv verbosity "1"
setenv console "both"
setenv bootlogo "false"
setenv rootfstype "ext4"
setenv docker_optimizations "on"

# odroid c4 legacy kernel values from boot.ini

setenv dtb_loadaddr "0x1000000"
setenv k_addr "0x1100000"
setenv loadaddr "0x1B00000"
setenv initrd_loadaddr "0x4080000"

edit2:
tried meverics and armbian image. same error… dunno why ubuntu works flawlessly

Hmm, it might be a power issue. Probably the Ubuntu image is delivered with a lower default CPU frequency, while Armbian and ours run at max CPU frequency. Do you have another PSU or power cable to test?

You do not have a serial console cable to get early boot logs, do you?

I tried my original Pi3b psu 5.1V 2.5A. Same error. I will try another sd card tommorow because Ive read that it could be the problem. btw I flashed all images with etcher without a problem. Ubuntu comes with 3.xx Kernel. pretty old :disappointed_relieved:

I dont have a serial link cable but if the new sd card wont work I have to buy one :sweat_smile:

Other SD Card have the same error. I have ordered a serial cable, emmc :smiley:

But I have tested many images. All kernels up to 5.4 working. Now I’am using “Armbian_20.02.8_Odroidc2_bullseye_current_5.4.28”.
Switching to newer image with kernel 5.6.15 doesnt boot. Tested 5.8, 5.10 and 5.15… doesnt boot. Strange :smiley:

When my serial cable arrives I will hopefully find the problem.

When you use the Armbian Linux 5.4 image and upgrade the kernel to recent 5.15, does it reboot without issues?

Tried it but same error it doesnt boot. Blue LED isnt flashing, too.

I have found something interesting. If I read correctly in Debian bullseye its version 2021.01+dfsg-5. we need U-Boot v2021.07-rc1 ?

https://github.com/home-assistant/operating-system/issues/1202

https://source.denx.de/u-boot/custodians/u-boot-amlogic/-/commit/a246e21351778a93805b3f52302a420f4b268601

https://source.denx.de/u-boot/custodians/u-boot-amlogic/-/commit/30d083d22611c5d54163f668cb3f412ac318ec6c

https://forum.armbian.com/topic/17112-odroid-c2-no-eth0-with-latest-image/page/3/

Little Update: I have installed Armbian_20.02.8_Odroidc2_bullseye_current_5.4.28 and have only updated linux-image-current-meson64 (5.10.x) linux-dtb-current-meson64 and linux-u-boot-odroidc2-current (v2022.04)

Soft reboot doesnt work. I have to poweroff it and hard reboot it. It boots and system is running fine. I didnt upgrade the other packages. I will do some other tests. My serial uart cable didnt arrived yet.

btw I have just grabbed DietPi 6.31.2 from a****.org and it has booted up fine. I will look if I can go forward to from this version.

EDIT:

DietPi_OdroidC2-ARMv8-Bullseye.7z 2021-10-25 20:56 114M did boot. If I update kernel or u-boot manuelly to newest version it gives me a solid blue led and no boot.

So… I have baked my own image coming from armbian and used your dietpi script. I have now running newest DietPi Software + Bullseye + Kernel 5.10.x + U-Boot 2019.10-armbian. Any newer u-boot version doesnt boot. I have apt-mark hold u-boot* at fresh armbian installation.
From Dietpi version of last october I couldnt get kernel update from 3.16 to 5.10 or newer. For this reason I choosed to start with armbian image and Iam happy for now.

Only thing that isnt working is soft reboot. But I have read that this is a known issue. My serial uart cable and emmc will arrive within the following week. I will then test a lot and post.
This thread can be closed. :smiley:

Interesting, since upgrading the U-Boot package does not actually update U-Boot, but only the binary files on the disk. To update U-Boot, one needs to manually flash it:

. /usr/lib/u-boot/platform_install.sh
write_uboot_platform "$DIR" "$(lsblk -npo PKNAME "$G_ROOTFS_DEV")"

That with newest kernel it doesn’t reboot (but power cycling being required) has been reported here as well: https://github.com/MichaIng/DietPi/issues/5414

Flashing/updating U-Boot seems to have not helped.

Could you try to upgrade to latest Edge kernel and U-Boot:

apt install linux-image-edge-meson64 linux-dtb-edge-meson64 linux-u-boot-odroidc2-edge
. /usr/lib/u-boot/platform_install.sh
write_uboot_platform "$DIR" "$(lsblk -npo PKNAME "$G_ROOTFS_DEV")"

Interesting, since upgrading the U-Boot package does not actually update U-Boot, but only the binary files on the disk.

haha yeah Iam so stupid. I noticed that too… shame on me.

imo all images with u-boot 2021.01 didnt boot. U-Boot 2019.10 did. But I could be wrong. I read it out with:
dd if=/dev/mmcblk0 of=/tmp/installed_uboot.bin skip=97 count=1376
strings /tmp/installed_uboot.bin | grep “U-Boot 20”

Could you try to upgrade to latest Edge kernel and U-Boot:

I’ve installed it. Didnt boot. Ethernet leds are blinking wild, but no blue led, hdmi output or ssh. Powered off it 3 times and waited 5min everytime for coming up. I hopefully get my serial cable soon :smiley:

My serial cable. emmc etc. has arrived. Newest Dietpi does boot with emmc.

newly flashed latest image with sd card doesnt boot

GXBB:BL1:08dafd:0a8993;FEAT:EDFC318C;POC:3;RCY:0;EMMC:800;NAND:81;SD:0;READ:0;CHK:0;

TE: 198762
no sdio debug board detected

BL2 Built : 11:44:26, Nov 25 2015.
gxb gfb13a3b-c2 - jcao@wonton

Board ID = 8
set vcck to 1100 mv
set vddee to 1050 mv
CPU clk: 1536MHz
DDR channel setting: DDR0 Rank0+1 same
DDR0: 2048MB(auto) @ 912MHz(2T)-13
DataBus test pass!
AddrBus test pass!
Load fip header from SD, src: 0x0000c200, des: 0x01400000, size: 0x000000b0
Load bl30 from SD, src: 0x00010200, des: 0x01000000, size: 0x00009ef0
Sending bl30........................................OK.
Run bl30...
Load bl301 from SD, src: 0x0001c200, des: 0x01000000, size: 0x000018c0
Wait bl30...Done
Sending bl301.......OK.
Run bl301...
l31 from SD, src: 0x00020200, des: 0x10100000, size: 0x00011130

--- UART initialized after reboot ---
[Reset cause: unknown]
[Image: unknown, amlogic_v1.1.3046-00db630-dirty 2016-08-31 09:24:14 tao.zeng@droid04]
bl30: check_permit, count is 1
bl30: check_permit: ok!
chipidLoad bl33 from SD, src: 0x00034200, des: 0x01000000, size: 0x000a1d50
: ef be ad de d f0 ad ba ef be ad de not ES chip
[0.313552 Inits done]
secure task start!
high task start!
low task start!
NOTICE: BL3-1: v1.0(debug):4d2e34d
NOTICE: BL3-1: Built : 17:08:35, Oct 29 2015
INFO: BL3-1: Initializing runtime services
INFO: BL3-1: Preparing for EL3 exit to normal world
INFO: BL3-1: Next image address = 0x1000000
INFO: BL3-1: Next image spsr = 0x3c9

U-Boot 2021.07-armbian (Nov 22 2021 - 11:48:10 +0000) odroid-c2

Model: Hardkernel ODROID-C2
SoC: Amlogic Meson GXBB (S905) Revision 1f:c (0:1)
DRAM: 2 GiB
MMC: mmc@72000: 0, mmc@74000: 1
Loading Environment from nowhere... OK
In: serial
Out: serial
Err: serial
Net: eth0: ethernet@c9410000
Hit any key to stop autoboot: 0
=> boot
Card did not respond to voltage select! : -110
MMC Device 2 not found
no mmc device at slot 2
starting USB...
Bus usb@c9100000: USB DWC2
scanning bus usb@c9100000 for devices... 2 USB Device(s) found
scanning usb for storage devices... 0 Storage Device(s) found

Device 0: unknown device
Speed: 1000, full duplex
BOOTP broadcast 1
DHCP client bound to address 10.0.0.6 (6 ms)
*** Warning: no boot file name; using '0A000006.img'
Using ethernet@c9410000 device
TFTP from server 10.0.0.1; our IP address is 10.0.0.6
Filename '0A000006.img'.
Load address: 0x1080000

Loading: T T T T T T T T T T
Retry count exceeded; starting again
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0A0
Speed: 1000, full duplex
Using ethernet@c9410000 device
TFTP from server 10.0.0.1; our IP address is 10.0.0.6
Filename 'pxelinux.cfg/0A0'.
Load address: 0x1080000
Loading: T T T T T T T T T T

Dietpi image 10/2021 which did boot fine with sd card

U-Boot 2015.01-00182-geb5d2d1 (Jan 05 2017 - 01:04:02)

DRAM:  2 GiB
Relocation Offset is: 76f3c000
-------------------------------------------------
* Welcome to Hardkernel's ODROID-C2
-------------------------------------------------
CPU : AMLogic S905
S/N : **
MAC : **
BID : **
-------------------------------------------------
register usb cfg[1][0] = 0000000077f96dd8
register usb cfg[0][1] = 0000000077f96df8
vpu detect type: 5
vpu clk_level = 7
set vpu clk: 666667000Hz, readback: 666660000Hz(0x300)
MMC:   aml_priv->desc_buf = 0x0000000073f34d30
aml_priv->desc_buf = 0x0000000073f36ec0
SDIO Port B: 0, SDIO Port C: 1
ret = 1 .[mmc_init] mmc init success
In:    serial
Out:   serial
Err:   serial
----------------------------------
MMC Size : 16 GB
----------------------------------
reading boot-logo.bmp.gz
** Unable to read file boot-logo.bmp.gz **
reading boot-logo.bmp
** Unable to read file boot-logo.bmp **
movi: the partiton 'logo' is reading...

MMC read: dev # 0, block # 61024, count 2048 ... 2048 blocks read: OK
hpd_state=1
[CANVAS]addr=0x3f800000 width=3840, height=1440

set hdmitx VIC = 16
hdmitx phy setting done
set hdmitx VIC = 16
hdmitx phy setting done
Error: Bad gzipped data
There is no valid bmp file at the given address
Saving Environment to MMC...
Writing to MMC(0)... done
Net:   Meson_Ethernet
Hit [Enter] key twice to stop autoboot:  0
reading boot.ini
5055 bytes read in 3 ms (1.6 MiB/s)
cfgload: applying boot.ini...
cfgload: setenv display_autodetect "true"
cfgload: setenv m "720p60hz"
cfgload: setenv m_bpp "32"
cfgload: setenv hpd "true"
cfgload: setenv monitor_onoff "false"
cfgload: setenv cec "1"
cfgload: setenv hdmi_forcergb "0"
cfgload: setenv condev "consoleblank=0 console=tty0 console=ttyS0,115200n8"
cfgload: setenv mesontimer "1"
cfgload: setenv disableuhs "false"
cfgload: setenv mmc_removable "true"
cfgload: setenv usbmulticam "false"
cfgload: setenv disable_vu7 "false"
cfgload: setenv maxcpus "4"
cfgload: setenv max_freq "1536"
cfgload: if test "${display_autodetect}" = "true"; then usb pwren; hdmitx edid;                                                                                                                                                                                                                                              fi
USB0:   dwc_usb driver version: 2.94 6-June-2012
USB (1) peri reg base: c0000020
USB (1) use clock source: XTAL input, div: 1
USB (1) base addr: 0xc9100000
Force id mode: Host
dwc_otg: Highspeed device found !

hdmitx - HDMITX sub-system

Usage:
hdmitx hdmitx hpd
    Detect hdmi rx plug-in
hdmitx output [list | FORMAT | bist MODE]
    list: list support formats
    FORMAT can be 720p60/50hz, 1080i60/50hz, 1080p60hz, etc
    bist MODE: 1 Color bar  2 Line  3 Dots  0 default
hdmitx off
    Turn off hdmitx output

cfgload: if test "${m}" = "custombuilt"; then setenv cmode "modeline=${modeline}                                                                                                                                                                                                                                             "; fi
cfgload: if test "${disable_vu7}" = "false"; then setenv hid_quirks "usbhid.quir                                                                                                                                                                                                                                             ks=0x0eef:0x0005:0x0004"; fi
cfgload: if test "${cec}" = "1"; then setenv cec "cecf"; fi
cfgload: if test "${cec}" = "2"; then setenv cec "cec7"; fi
cfgload: if test "${hdmi_forcergb}" = "1"; then setenv forcergb "hdmitx=forcergb                                                                                                                                                                                                                                             "; fi
cfgload: setenv bootargs "root=/dev/mmcblk0p2 rootwait ro ${condev} no_console_s                                                                                                                                                                                                                                             uspend hdmitx=${cec} ${forcergb} hdmimode=${m} m_bpp=${m_bpp} vout=${vout} fsck.                                                                                                                                                                                                                                             repair=yes max_freq=${max_freq} maxcpus=${maxcpus} monitor_onoff=${monitor_onoff                                                                                                                                                                                                                                             } disableuhs=${disableuhs} mmc_removable=${mmc_removable} usbmulticam=${usbmulti                                                                                                                                                                                                                                             cam} ${hid_quirks} net.ifnames=0 elevator=noop disablehpd=${hpd} ${cmode} system                                                                                                                                                                                                                                             d.unified_cgroup_hierarchy=0"
cfgload: setenv loadaddr "0x11000000"
cfgload: setenv dtb_loadaddr "0x1000000"
cfgload: setenv initrd_loadaddr "0x13000000"
cfgload: fatload mmc 0:1 ${initrd_loadaddr} uInitrd
reading uInitrd
5274856 bytes read in 231 ms (21.8 MiB/s)
cfgload: fatload mmc 0:1 ${loadaddr} Image
reading Image
13810864 bytes read in 600 ms (22 MiB/s)
cfgload: fatload mmc 0:1 ${dtb_loadaddr} meson64_odroidc2.dtb
reading meson64_odroidc2.dtb
30004 bytes read in 5 ms (5.7 MiB/s)
cfgload: fdt addr ${dtb_loadaddr}
cfgload: if test "${mesontimer}" = "0"; then fdt rm /meson_timer; fdt rm /cpus/cpu@0/timer; fdt rm /cpus/cpu@1/timer; fdt rm /cpus/cpu@2/timer; fdt rm /cpus/cpu@3/timer; fi
cfgload: if test "${mesontimer}" = "1"; then fdt rm /timer; fi
cfgload: if test "${nographics}" = "1"; then fdt rm /reserved-memory; fdt rm /aocec; fi
cfgload: if test "${nographics}" = "1"; then fdt rm /meson-fb; fdt rm /amhdmitx; fdt rm /picdec; fdt rm /ppmgr; fi
cfgload: if test "${nographics}" = "1"; then fdt rm /meson-vout; fdt rm /mesonstream; fdt rm /meson-fb; fi
cfgload: if test "${nographics}" = "1"; then fdt rm /deinterlace; fdt rm /codec_mm; fi
cfgload: if test "${cec}" = "0"; then fdt rm /aocec; fi
cfgload: booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr}
## Loading init Ramdisk from Legacy Image at 13000000 ...
   Image Name:   uInitrd
   Image Type:   AArch64 Linux RAMDisk Image (uncompressed)
   Data Size:    5274792 Bytes = 5 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
load dtb from 0x1000000 ......
## Flattened Device Tree blob at 01000000
   Booting using the fdt blob at 0x1000000
   Loading Ramdisk to 73a2a000, end 73f31ca8 ... OK
   Loading Device Tree to 000000001fff5000, end 000000001ffff533 ... OK

Starting kernel ...

uboot time: 5087709 us
MMC Device 2 not found
no mmc device at slot 2
starting USB...

Hmm, I guess MMC Device 2 is the SD card slot, where it doesn’t find any and then tries USB. But strage is that U-Boot itself does boot from that very SD card… Or is SD card MMC Device 1 and for whatever reason it doesn’t even try to use it :thinking:.