Odroid-C2

From Alpine Linux

Introduction

The Odroid-C2 single board computer is now well supported by Alpine/Linux and the "Generic U-Boot (aarch64)" build contains everything we need !

What about the hardware side ?

  • Odroid-C2
  • Official PSU or just a micro-SD cable (notes : the barrel plug (inner(positive) diameter 0.8mm and outer(negative) diameter 2.5mm) is recommended, without the J1 jumper)
  • micro-SD (or eMMC)
  • Debug only : USB to TTL (official or CP2102 chipset or an old rpi)

Prepare the micro-SD card

With a blank SD card, we can now format-it using the vfat file system.

WARNING : DOUBLE-CHECK /dev/sda1 is indeed your SD card ! Or you'll loose all your data ! You have been warned ! For this, it's preferable to run dmesg -We to check for the name, for example:

[  +0,004725] ums-realtek 1-1:1.0: USB Mass Storage device detected
[  +0,002985] scsi host0: usb-storage 1-1:1.0
[  +1,020024] scsi 0:0:0:0: Direct-Access     Generic- SD/MMC/MS PRO    1.00 PQ: 0 ANSI: 4
[  +0,000591] sd 0:0:0:0: Attached scsi generic sg0 type 0
[  +1,314707] sd 0:0:0:0: [sda] 15269888 512-byte logical blocks: (7.82 GB/7.28 GiB)
[  +0,000352] sd 0:0:0:0: [sda] Write Protect is off
[  +0,000008] sd 0:0:0:0: [sda] Mode Sense: 2f 00 00 00
[  +0,000408] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[  +0,062938]  sda: sda1
[  +0,000238] sd 0:0:0:0: [sda] Attached SCSI removable disk

And also verify with fdisk -l

Disk /dev/sda: 7.28 GiB, 7818182656 bytes, 15269888 sectors
Disk model: SD/MMC/MS PRO   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot Start      End  Sectors  Size Id Type
/dev/sda1        2048 15269887 15267840  7.3G  b W95 FAT32

Now we are sure that /dev/sda is really our SD card device and we can format our SD card using mkfs.vfat /dev/sda1

Extract Alpine Linux

Then mount and extract the Alpine Linux archive, for example if you do everything as root:

mount /dev/sda1 /mnt/sd
tar xvzfp /home/user/Downloads/alpine-uboot-3.23.2-aarch64.tar.gz -C /mnt/sd

Then, don't forget to flush changes before unmounting the device. Note that it can be a little slow depending of the speed of your device.

sync && umount /mnt/sd

Sign u-boot

We don't need to build u-boot from source as the version provided does autoboot properly:

git clone --depth 1 https://github.com/LibreELEC/amlogic-boot-fip.git

Copy the u-boot.bin from your sd card to the git repository, and sign Amlogic u-boot binaries:

cd amlogic-boot-fip/
/mnt/sd/u-boot/odroid-c2/u-boot.bin alpine.u-boot.bin
./build-fip.sh odroid-c2 alpine.u-boot.bin my-output-dir 

u-boot flashing

WARNING : Make sure your device is /dev/sda ! Also, check that the device is un-mouted using umount /dev/sda1, then use dd to write u-boot For example, using /dev/sda from previous commands and the signed u-boot (u-boot.bin.sd.bin) from amlogic-boot-fip tool.

dd if=./amlogic-boot-fip/my-output-dir/u-boot.bin.sd.bin of=/dev/sda conv=fsync,notrunc bs=512 skip=1 seek=1
dd if=./amlogic-boot-fip/my-output-dir/u-boot.bin.sd.bin of=/dev/sda conv=fsync,notrunc bs=1 count=444


Booting

Connect at least your USB keyboard and your HDMI monitor to check the boot and all should work nicely :) If not, check the Debugging part of this wiki.


Debugging

Connect your USB to TTL converter on your board : I noticed that you don't need to connect all wires, pin 1 don't seems to be is not mandatory at all.

_____UART____
|Pin 4 - GND|
|Pin 3 - RXD|
|Pin 2 - TXD|
|Pin 1 - VCC|
\___________|

All details are available on the odroid wiki : https://wiki.odroid.com/accessory/development/usb_uart_kit

I use minicom for this:

TERM=linux minicom -b 115200 -D /dev/ttyUSB0

Boot log

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 6.18.1-0-lts (buildozer@build-3-23-aarch64) (cc (Alpine 15.2.0) 15.2.0, GNU ld (GNU Binutils) 2.45.1) #1-Alpine SMP PREEMPT_DYNAMIC 2025-12-15 07:25:33
[    0.000000] Machine model: Hardkernel ODROID-C2
[    0.000000] efi: EFI v2.11 by Das U-Boot
[    0.000000] efi: RTPROP=0x7af1c040 SMBIOS 3.0=0x7bf74000 INITRD=0x7aefd040 RNG=0x7aefc040 MEMRESERVE=0x7aefb040 
[    0.000000] random: crng init done
[    0.000000] Reserved memory: created CMA memory pool at 0x000000005d000000, size 256 MiB
[    0.000000] OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool
[    0.000000] OF: reserved mem: 0x000000005d000000..0x000000006cffffff (262144 KiB) map reusable linux,cma
[    0.000000] OF: reserved mem: 0x0000000000000000..0x0000000000ffffff (16384 KiB) nomap non-reusable hwrom@0
[    0.000000] OF: reserved mem: 0x0000000010000000..0x00000000101fffff (2048 KiB) nomap non-reusable secmon@10000000
[    0.000000] OF: reserved mem: 0x0000000005000000..0x00000000052fffff (3072 KiB) nomap non-reusable secmon@5000000
[    0.000000] OF: reserved mem: 0x0000000005300000..0x00000000072fffff (32768 KiB) nomap non-reusable secmon@5300000
[    0.000000] NUMA: Faking a node at [mem 0x0000000000000000-0x000000007fffffff]
[    0.000000] NODE_DATA(0) allocated [mem 0x7f83e040-0x7f8505ff]
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000000000000-0x000000007fffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x0000000000ffffff]
[    0.000000]   node   0: [mem 0x0000000001000000-0x0000000004ffffff]
[    0.000000]   node   0: [mem 0x0000000005000000-0x00000000072fffff]
[    0.000000]   node   0: [mem 0x0000000007300000-0x000000000fffffff]
[    0.000000]   node   0: [mem 0x0000000010000000-0x00000000101fffff]
[    0.000000]   node   0: [mem 0x0000000010200000-0x000000007abfffff]
[    0.000000]   node   0: [mem 0x000000007ac00000-0x000000007ac00fff]
[    0.000000]   node   0: [mem 0x000000007ac01000-0x000000007af1bfff]
[    0.000000]   node   0: [mem 0x000000007af1c000-0x000000007af1cfff]
[    0.000000]   node   0: [mem 0x000000007af1d000-0x000000007af1dfff]
[    0.000000]   node   0: [mem 0x000000007af1e000-0x000000007af3ffff]
[    0.000000]   node   0: [mem 0x000000007af40000-0x000000007bf73fff]
[    0.000000]   node   0: [mem 0x000000007bf74000-0x000000007bf74fff]
[    0.000000]   node   0: [mem 0x000000007bf75000-0x000000007df4ffff]
[    0.000000]   node   0: [mem 0x000000007df50000-0x000000007df5ffff]
[    0.000000]   node   0: [mem 0x000000007df60000-0x000000007fe5afff]
[    0.000000]   node   0: [mem 0x000000007fe5b000-0x000000007fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000007fffffff]
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv0.2 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: Trusted OS migration not required
[    0.000000] percpu: Embedded 34 pages/cpu s100952 r8192 d30120 u139264
[    0.000000] pcpu-alloc: s100952 r8192 d30120 u139264 alloc=34*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: detected: ARM erratum 843419
[    0.000000] CPU features: detected: ARM erratum 845719
[    0.000000] alternatives: applying boot alternatives
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-lts modules=loop,squashfs,sd-mod,usb-storage quiet
[    0.000000] Unknown kernel command line parameters "modules=loop,squashfs,sd-mod,usb-storage", will be passed to user space.
[    0.000000] printk: log buffer data + meta data: 131072 + 458752 = 589824 bytes
[    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[    0.000000] software IO TLB: SWIOTLB bounce buffer size adjusted to 2MB
[    0.000000] software IO TLB: area num 4.
[    0.000000] software IO TLB: mapped [mem 0x000000007f29f000-0x000000007f49f000] (2MB)
[    0.000000] Fallback order for Node 0: 0 
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 524288
[    0.000000] Policy zone: DMA
[    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] kmemleak: Kernel memory leak detector disabled
[    0.000000] ftrace: allocating 45359 entries in 178 pages
[    0.000000] ftrace: allocated 178 pages with 4 groups
[    0.000000] Dynamic Preempt: voluntary
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=512 to nr_cpu_ids=4.
[    0.000000] 	Trampoline variant of Tasks RCU enabled.
[    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 100 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[    0.000000] RCU Tasks: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_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: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] Root IRQ handler: gic_handle_irq
[    0.000000] GIC: Using split EOI/Deactivate mode
[    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[    0.000000] arch_timer: cp15 timer running at 24.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x588fe9dc0, max_idle_ns: 440795202592 ns
[    0.000000] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns
[    0.000800] kfence: initialized - using 2097152 bytes for 255 objects at 0x(____ptrval____)-0x(____ptrval____)
[    0.001028] Console: colour dummy device 80x25
[    0.001040] printk: legacy console [tty0] enabled
[    0.001209] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=24000)
[    0.001223] pid_max: default: 32768 minimum: 301
[    0.001379] LSM: initializing lsm=lockdown,capability,landlock,yama
[    0.001551] landlock: Up and running.
[    0.001556] Yama: becoming mindful.
[    0.001675] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.001694] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.004293] rcu: Hierarchical SRCU implementation.
[    0.004313] rcu: 	Max phase no-delay instances is 400.
[    0.004552] Timer migration: 1 hierarchy levels; 8 children per group; 1 crossnode level
[    0.006137] Remapping and enabling EFI services.
[    0.006487] smp: Bringing up secondary CPUs ...
[    0.007630] Detected VIPT I-cache on CPU1
[    0.007776] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[    0.009079] Detected VIPT I-cache on CPU2
[    0.009200] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
[    0.010412] Detected VIPT I-cache on CPU3
[    0.010531] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
[    0.010662] smp: Brought up 1 node, 4 CPUs
[    0.010676] SMP: Total of 4 processors activated.
[    0.010681] CPU: All CPU(s) started at EL2
[    0.010699] CPU features: detected: 32-bit EL0 Support
[    0.010703] CPU features: detected: 32-bit EL1 Support
[    0.010711] CPU features: detected: CRC32 instructions
[    0.010721] CPU features: detected: PMUv3
[    0.010765] alternatives: applying system-wide alternatives
[    0.011888] Memory: 1527796K/2097152K available (15744K kernel code, 2970K rwdata, 12020K rodata, 3712K init, 3510K bss, 301136K reserved, 262144K cma-reserved)
[    0.012919] devtmpfs: initialized
[    0.019322] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
[    0.019382] posixtimers hash table entries: 2048 (order: 3, 32768 bytes, linear)
[    0.019460] futex hash table entries: 1024 (65536 bytes on 1 NUMA nodes, total 64 KiB, linear).
[    0.023417] 23216 pages in range for non-PLT usage
[    0.023441] 514736 pages in range for PLT usage
[    0.023773] pinctrl core: initialized pinctrl subsystem
[    0.024728] SMBIOS 3.7.0 present.
[    0.024746] DMI: Hardkernel Co., Ltd. ODROID-C2/ODROID-C2, BIOS 2025.10 10/01/2025
[    0.024784] DMI: Memory slots populated: 0/0
[    0.027296] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.029185] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations
[    0.030098] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.031290] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.031356] audit: initializing netlink subsys (disabled)
[    0.031614] audit: type=2000 audit(0.029:1): state=initialized audit_enabled=0 res=1
[    0.032703] thermal_sys: Registered thermal governor 'fair_share'
[    0.032710] thermal_sys: Registered thermal governor 'bang_bang'
[    0.032716] thermal_sys: Registered thermal governor 'step_wise'
[    0.032721] thermal_sys: Registered thermal governor 'user_space'
[    0.032781] cpuidle: using governor ladder
[    0.032805] cpuidle: using governor menu
[    0.032952] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.033051] ASID allocator initialised with 65536 entries
[    0.033915] Serial: AMBA PL011 UART driver
[    0.038430] /soc/interrupt-controller@c4301000: Fixed dependency cycle(s) with /soc/interrupt-controller@c4301000
[    0.038607] /soc/vpu@d0100000: Fixed dependency cycle(s) with /soc/hdmi-tx@c883a000
[    0.038630] /soc/hdmi-tx@c883a000: Fixed dependency cycle(s) with /soc/vpu@d0100000
[    0.045891] /soc/vpu@d0100000: Fixed dependency cycle(s) with /soc/hdmi-tx@c883a000
[    0.046143] /soc/vpu@d0100000: Fixed dependency cycle(s) with /soc/hdmi-tx@c883a000
[    0.046205] /soc/hdmi-tx@c883a000: Fixed dependency cycle(s) with /soc/vpu@d0100000
[    0.049641] /soc/hdmi-tx@c883a000: Fixed dependency cycle(s) with /hdmi-connector
[    0.049721] /hdmi-connector: Fixed dependency cycle(s) with /soc/hdmi-tx@c883a000
[    0.051188] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
[    0.051206] HugeTLB: 0 KiB vmemmap can be freed for a 1.00 GiB page
[    0.051213] HugeTLB: registered 32.0 MiB page size, pre-allocated 0 pages
[    0.051217] HugeTLB: 0 KiB vmemmap can be freed for a 32.0 MiB page
[    0.051223] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
[    0.051228] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page
[    0.051234] HugeTLB: registered 64.0 KiB page size, pre-allocated 0 pages
[    0.051238] HugeTLB: 0 KiB vmemmap can be freed for a 64.0 KiB page
[    0.053003] ACPI: Interpreter disabled.
[    0.053613] iommu: Default domain type: Translated
[    0.053625] iommu: DMA domain TLB invalidation policy: lazy mode
[    0.057233] pps_core: LinuxPPS API ver. 1 registered
[    0.057254] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.057271] PTP clock support registered
[    0.057622] EDAC MC: Ver: 3.0.0
[    0.057896] scmi_core: SCMI protocol bus registered
[    0.057957] efivars: Registered efivars operations
[    0.059895] vgaarb: loaded
[    0.060354] clocksource: Switched to clocksource arch_sys_counter
[    0.061045] VFS: Disk quotas dquot_6.6.0
[    0.061085] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.061557] pnp: PnP ACPI: disabled
[    0.068400] NET: Registered PF_INET protocol family
[    0.068648] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    0.108233] tcp_listen_portaddr_hash hash table entries: 1024 (order: 2, 16384 bytes, linear)
[    0.108372] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.108481] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)
[    0.108718] TCP bind hash table entries: 16384 (order: 7, 524288 bytes, linear)
[    0.109068] TCP: Hash tables configured (established 16384 bind 16384)
[    0.109414] MPTCP token hash table entries: 2048 (order: 4, 49152 bytes, linear)
[    0.109521] UDP hash table entries: 1024 (order: 4, 65536 bytes, linear)
[    0.109600] UDP-Lite hash table entries: 1024 (order: 4, 65536 bytes, linear)
[    0.109804] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.109844] NET: Registered PF_XDP protocol family
[    0.109864] PCI: CLS 0 bytes, default 64
[    0.110179] Trying to unpack rootfs image as initramfs...
[    0.119795] kvm [1]: nv: 568 coarse grained trap handlers
[    0.120337] kvm [1]: IPA Size Limit: 40 bits
[    0.123491] kvm [1]: vgic interrupt IRQ9
[    0.123540] kvm [1]: Hyp nVHE mode initialized successfully
[    0.125490] Initialise system trusted keyrings
[    0.125735] workingset: timestamp_bits=37 max_order=19 bucket_order=0
[    0.126143] Key type asymmetric registered
[    0.126155] Asymmetric key parser 'x509' registered
[    0.126241] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 245)
[    0.126464] io scheduler mq-deadline registered
[    0.126476] io scheduler kyber registered
[    0.126533] io scheduler bfq registered
[    0.127930] irq_meson_gpio: 133 to 8 gpio interrupt mux initialized
[    0.160777] soc soc0: Amlogic Meson GXBB (S905) Revision 1f:c (0:1) Detected
[    0.166402] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    0.170303] Serial: AMBA driver
[    0.171277] c81004c0.serial: ttyAML0 at MMIO 0xc81004c0 (irq = 14, base_baud = 1500000) is a meson_uart
[    0.171332] printk: legacy console [ttyAML0] enabled
[    0.185811] brd: module loaded
[    0.190075] meson-sm: secure-monitor enabled
[    0.192230] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 (0,8000003f) counters available
[    0.194651] gre: GRE over IPv4 demultiplexer driver
[    0.194813] NET: Registered PF_INET6 protocol family
[    0.196113] Segment Routing with IPv6
[    0.196163] In-situ OAM (IOAM) with IPv6
[    0.196511] Key type dns_resolver registered
[    0.207852] registered taskstats version 1
[    0.208756] Loading compiled-in X.509 certificates
[    1.890951] Freeing initrd memory: 161572K
[    1.915766] Loaded X.509 cert 'alpinelinux.org: Alpine Linux kernel key: 87fa969a47f3e2a6aa35859eb932a17c95abcd82'
[    1.925972] Demotion targets for Node 0: null
[    1.926394] Key type .fscrypt registered
[    1.926408] Key type fscrypt-provisioning registered
[    1.990532] clk: Disabling unused clocks
[    1.990750] PM: genpd: Disabling unused power domains
[    1.997464] Freeing unused kernel memory: 3712K
[    1.997642] Run /init as init process
[    1.997651]   with arguments:
[    1.997657]     /init
[    1.997663]   with environment:
[    1.997668]     HOME=/
[    1.997673]     TERM=linux
[    1.997678]     modules=loop,squashfs,sd-mod,usb-storage
[    2.035274] Alpine Init 3.13.0-r0
[    2.038758] Loading boot drivers...
[    2.059104] loop: module loaded
[    2.064737] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    2.080813] SCSI subsystem initialized
[    2.103687] usbcore: registered new interface driver usbfs
[    2.103764] usbcore: registered new interface driver hub
[    2.103843] usbcore: registered new device driver usb
[    2.111310] usbcore: registered new interface driver usb-storage
[    2.180617] [drm] Initialized simpledrm 1.0.0 for 7fe5b000.framebuffer on minor 0
[    2.183224] fbcon: Deferring console take-over
[    2.183248] simple-framebuffer 7fe5b000.framebuffer: [drm] fb0: simpledrmdrmfb frame buffer device
[    2.192025] Loading boot drivers: ok.
[    2.198046] Mounting boot media...
[    2.378869] meson-gx-mmc d0072000.mmc: Got CD GPIO
[    2.456331] lima d00c0000.gpu: gp - mali450 version major 0 minor 0
[    2.456438] lima d00c0000.gpu: pp0 - mali450 version major 0 minor 0
[    2.456514] lima d00c0000.gpu: pp1 - mali450 version major 0 minor 0
[    2.456584] lima d00c0000.gpu: pp2 - mali450 version major 0 minor 0
[    2.456625] lima d00c0000.gpu: l2_cache0 8K, 4-way, 64byte cache line, 128bit external bus
[    2.456639] lima d00c0000.gpu: l2_cache1 64K, 4-way, 64byte cache line, 128bit external bus
[    2.457168] lima d00c0000.gpu: bus rate = 166666667
[    2.457179] lima d00c0000.gpu: mod rate = 24000000
[    2.457269] lima d00c0000.gpu: error -ENODEV: _opp_set_regulators: no regulator (mali) found
[    2.463630] lima d00c0000.gpu: devfreq_add_device: Unable to find governor for the device
[    2.463824] lima d00c0000.gpu: Couldn't initialize GPU devfreq
[    2.463832] lima d00c0000.gpu: Fatal error during devfreq init
[    2.517377] lima d00c0000.gpu: probe with driver lima failed with error -22
[    2.583042] mmc0: new high speed SDHC card at address 59b4
[    2.603130] meson-drm d0100000.vpu: Queued 1 outputs on vpu
[    2.650630] meson-drm d0100000.vpu: CVBS Output connector not available
[    2.671777] meson-drm d0100000.vpu: Couldn't bind all components
[    2.975512] meson-drm d0100000.vpu: CVBS Output connector not available
[    2.996876] meson-drm d0100000.vpu: Couldn't bind all components
[    3.001616] meson-gx-mmc d0074000.mmc: allocated mmc-pwrseq
[    3.001665] meson-drm d0100000.vpu: CVBS Output connector not available
[    3.023778] meson-drm d0100000.vpu: Couldn't bind all components
[    3.030231] meson-drm d0100000.vpu: CVBS Output connector not available
[    3.045224] mmc1: Failed to initialize a non-removable card
[    3.051765] meson-drm d0100000.vpu: Couldn't bind all components
[    3.061777] meson-drm d0100000.vpu: CVBS Output connector not available
[    3.072815] mmcblk0: mmc0:59b4 USDU1 14.9 GiB
[    3.075908]  mmcblk0: p1
[    3.083517] meson-dw-hdmi c883a000.hdmi-tx: Detected HDMI TX controller v2.01a with HDCP (meson_dw_hdmi_phy)
[    3.084214] meson-dw-hdmi c883a000.hdmi-tx: registered DesignWare HDMI I2C bus driver
[    3.084830] meson-drm d0100000.vpu: bound c883a000.hdmi-tx (ops meson_dw_hdmi_ops [meson_dw_hdmi])
[    3.087221] [drm] Initialized meson 1.0.0 for d0100000.vpu on minor 0
[    3.087571] meson-drm d0100000.vpu: [drm] Cannot find any crtc or sizes
[    3.087876] meson-drm d0100000.vpu: [drm] Cannot find any crtc or sizes
[    3.262226] FAT-fs (mmcblk0p1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
[    3.335730] Mounting boot media: ok.
[    3.341301] Loading user settings from /media/mmcblk0p1/c2.apkovl.tar.gz...
[    3.377619] Loading user settings from /media/mmcblk0p1/c2.apkovl.tar.gz: ok.
[    4.232143] Installing packages to root filesystem...
[    5.557258] Installing packages to root filesystem: ok.
[   13.281481] meson_ee_pwrc c883c000.system-controller:power-controller: sync_state() pending due to c9410000.ethernet
[   18.229705] loop0: detected capacity change from 0 to 509712
[   19.928765] stmmaceth c9410000.ethernet: IRQ eth_wake_irq not found
[   19.928792] stmmaceth c9410000.ethernet: IRQ eth_lpi not found
[   19.928800] stmmaceth c9410000.ethernet: IRQ sfty not found
[   19.928909] stmmaceth c9410000.ethernet: PTP uses main clock
[   19.929231] stmmaceth c9410000.ethernet: User ID: 0x11, Synopsys ID: 0x37
[   19.929252] stmmaceth c9410000.ethernet: 	DWMAC1000
[   19.929261] stmmaceth c9410000.ethernet: DMA HW capability register supported
[   19.929268] stmmaceth c9410000.ethernet: RX Checksum Offload Engine supported
[   19.929274] stmmaceth c9410000.ethernet: COE Type 2
[   19.929281] stmmaceth c9410000.ethernet: TX Checksum insertion supported
[   19.929288] stmmaceth c9410000.ethernet: Wake-Up On Lan supported
[   19.929564] stmmaceth c9410000.ethernet: Normal descriptors
[   19.929582] stmmaceth c9410000.ethernet: Ring mode enabled
[   19.929589] stmmaceth c9410000.ethernet: Enable RX Mitigation via HW Watchdog Timer
[   20.249379] Registered IR keymap rc-odroid
[   20.263322] IR NEC protocol handler initialized
[   20.284506] rc rc0: meson-ir as /devices/platform/soc/c8100000.bus/c8100580.ir/rc/rc0
[   20.284665] input: meson-ir as /devices/platform/soc/c8100000.bus/c8100580.ir/rc/rc0/input0
[   20.284847] rc rc0: sw decoder init
[   20.284920] meson-ir c8100580.ir: receiver initialized
[   20.308460] platform-mhu c883c404.mailbox: Platform MHU Mailbox registered
[   20.452494] dwc2 c9100000.usb: supply vusb_d not found, using dummy regulator
[   20.452658] dwc2 c9100000.usb: supply vusb_a not found, using dummy regulator
[   20.504703] dwc2 c9100000.usb: DWC OTG Controller
[   20.504745] dwc2 c9100000.usb: new USB bus registered, assigned bus number 1
[   20.504787] dwc2 c9100000.usb: irq 43, io mem 0xc9100000
[   20.504991] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.18
[   20.505002] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   20.505010] usb usb1: Product: DWC OTG Controller
[   20.505017] usb usb1: Manufacturer: Linux 6.18.1-0-lts dwc2_hsotg
[   20.505024] usb usb1: SerialNumber: c9100000.usb
[   20.505695] hub 1-0:1.0: USB hub found
[   20.505742] hub 1-0:1.0: 1 port detected
[   20.781387] usb 1-1: new high-speed USB device number 2 using dwc2
[   20.956690] usb 1-1: New USB device found, idVendor=05e3, idProduct=0610, bcdDevice=32.98
[   20.956713] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[   20.956721] usb 1-1: Product: USB2.0 Hub
[   20.960535] hub 1-1:1.0: USB hub found
[   20.960938] hub 1-1:1.0: 4 ports detected
[   21.400017] NET: Registered PF_PACKET protocol family
[   22.049733] stmmaceth c9410000.ethernet eth0: Register MEM_TYPE_PAGE_POOL RxQ-0
[   22.126395] stmmaceth c9410000.ethernet eth0: PHY [stmmac-0:00] driver [RTL8211F Gigabit Ethernet] (irq=38)
[   22.141555] stmmaceth c9410000.ethernet eth0: No Safety Features support found
[   22.159969] stmmaceth c9410000.ethernet eth0: PTP not supported by HW
[   22.160000] stmmaceth c9410000.ethernet eth0: configuring for phy/rgmii link mode
[   25.021598] stmmaceth c9410000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[   27.551668] fbcon: Taking over console
# cat /etc/os-release 
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.23.2
PRETTY_NAME="Alpine Linux v3.23"
HOME_URL="https://alpinelinux.org/"
BUG_REPORT_URL="https://gitlab.alpinelinux.org/alpine/aports/-/issues"