Radxa E25 support

Radxa E25 is a network application carrier board for ROCK3 Compute Module Industrial(CM3I). It is somewhat similar to Friendlyelec's Nanopi R5c.

Features

  • Based on CM3I(RK3568 based, 4x A55@2Ghz, Mali G52 GPU, 0.8T NPU)
  • Dual 2.5G ethernet
  • Support mini PCIe WiFi cards(PCIe 2.0)
  • Support M.2 2242 SATA SSD
  • Support M.2 B Key 4G LTE cellular module
  • Support mini PCIe 5G cellular module
  • One nano sim card slot
  • One uSD card slot
  • One USB 3.0 OTG
  • One USB type C for power and serial console
  • 16x RGB LED for status indication
  • One button for user control

As it was already supported on linux mainline since v6.3 I've added openwrt support in my branch maurerr/openwrt at radxa-e25 (github.com)

Links should be available for 90 days - hopefully by then the support will be merged in main branch.
I’ll need to reformat the commits/description before I send the PR (hopefully next week) so I'm here asking community feedback.

thanks !

1 Like

@maurer tried booting your image, according to serial console the boot starts but at some point serial console on usb-c port starts pumping gibberish, as far as I understand it gets disabled? My E25 has both 2.5G ethernet ports burned, seemingly functional otherwise, and I can't investigate further...

U-Boot 2024.01-OpenWrt-r25302-68968fc981 (Feb 23 2024 - 14:59:09 +0000)

Model: Radxa E25 Carrier Board
DRAM:  2 GiB
PMIC:  RK8090 (on=0x40, off=0x00)
Core:  317 devices, 29 uclasses, devicetree: separate
MMC:   mmc@fe2b0000: 1, mmc@fe310000: 0
Loading Environment from nowhere... OK
In:    serial@fe660000
Out:   serial@fe660000
Err:   serial@fe660000
Model: Radxa E25 Carrier Board
Net:   No ethernet found.
Hit any key to stop autoboot:  0
** Booting bootflow 'mmc@fe2b0000.bootdev.part_1' with script
4657724 bytes read in 393 ms (11.3 MiB/s)
## Loading kernel from FIT Image at 02080000 ...
   Using 'config-1' configuration
   Verifying Hash Integrity ... OK
   Trying 'kernel-1' kernel subimage
     Description:  ARM64 OpenWrt Linux-6.1.78
     Type:         Kernel Image
     Compression:  lzma compressed
     Data Start:   0x020800e8
     Data Size:    4598913 Bytes = 4.4 MiB
     Architecture: AArch64
     OS:           Linux
     Load Address: 0x03200000
     Entry Point:  0x03200000
     Hash algo:    crc32
     Hash value:   5a6f25c2
     Hash algo:    sha1
     Hash value:   a421a00038265cebd03b92bc218baf27d28337cc
   Verifying Hash Integrity ... crc32+ sha1+ OK
## Loading fdt from FIT Image at 02080000 ...
   Using 'config-1' configuration
   Verifying Hash Integrity ... OK
   Trying 'fdt-1' fdt subimage
     Description:  ARM64 OpenWrt radxa_e25 device tree blob
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x024e2ea8
     Data Size:    56914 Bytes = 55.6 KiB
     Architecture: AArch64
     Hash algo:    crc32
     Hash value:   c02f88bf
     Hash algo:    sha1
     Hash value:   845432a7ef229c9a371dcd3a94cab5c9e330d11d
   Verifying Hash Integrity ... crc32+ sha1+ OK
   Booting using the fdt blob at 0x24e2ea8
Working FDT set to 24e2ea8
   Uncompressing Kernel Image
   Loading Device Tree to 000000007cbcd000, end 000000007cbdde51 ... OK
Working FDT set to 7cbcd000

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x412fd050]
[    0.000000] Linux version 6.1.78 (debian@bastion-dev) (aarch64-openwrt-linux-                                                                                                                                                             musl-gcc (OpenWrt GCC 12.3.0 r24887+1-ae648e95d5) 12.3.0, GNU ld (GNU Binutils)                                                                                                                                                              2.40.0) #0 SMP PREEMPT Fri Feb 23 14:59:09 2024
[    0.000000] Machine model: Radxa E25 Carrier Board
[    0.000000] earlycon: uart8250 at MMIO32 0x00000000fe660000 (options '')
[    0.000000] printk: bootconsole [uart8250] enabled
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000000200000-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 0x0000000000200000-0x000000007fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000200000-0x000000007fffffff]
[    0.000000] On node 0, zone DMA: 512 pages in unavailable ranges
[    0.000000] cma: Reserved 16 MiB at 0x000000007ba00000
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: MIGRATE_INFO_TYPE not supported.
[    0.000000] psci: SMC Calling Convention v1.2
[    0.000000] percpu: Embedded 18 pages/cpu s34152 r8192 d31384 u73728
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: detected: GIC system register CPU interface
[    0.000000] CPU features: detected: Virtualization Host Extensions
[    0.000000] CPU features: detected: Hardware dirty bit management
[    0.000000] alternatives: applying boot alternatives
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 515592
[    0.000000] Kernel command line: console=ttyS2,1500000 console=tty1 earlycon=                                                                                                                                                             uart8250,mmio32,0xfe660000 swiotlb=1 root=PARTUUID=5452574f-02 rw rootwait
[    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] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 2020656K/2095104K available (9408K kernel code, 2428K rwd                                                                                                                                                             ata, 2808K rodata, 1856K init, 740K bss, 58064K reserved, 16384K cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu:     RCU event tracing is enabled.
[    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=4.
[    0.000000]  Trampoline variant of Tasks RCU enabled.
[    0.000000]  Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jif                                                                                                                                                             fies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
[    0.000000] GICv3: 320 SPIs implemented
[    0.000000] GICv3: 0 Extended SPIs implemented
[    0.000000] GICv3: MBI range [296:319]
[    0.000000] GICv3: Using MBI frame 0x00000000fd410000
[    0.000000] Root IRQ handler: gic_handle_irq
[    0.000000] GICv3: GICv3 features: 16 PPIs
[    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x00000000fd460000
[    0.000000] ITS: No ITS available, not enabling LPIs
[    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[    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.000000] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 43980                                                                                                                                                             46511097ns
[    0.009500] Console: colour dummy device 80x25
[    0.014404] printk: console [tty1] enabled
[    0.018922] printk: bootconsole [uart8250] disabled
▒U՟<▒▒▒ՈQ▒▒ۥ▒▒ժQ▒▒Y▒՚S▒͈▒YE▒ժQ▒▒QQŭ%i▒▒▒▒})▒[;▒e▒%▒▒U▒ϯ}▒▒Q;[YSq]▒▒YS񟣲q▒▒Q▒-▒]▒q▒ 

1 Like

mr is rockchip: add Radxa E25 support by maurerr · Pull Request #14740 · openwrt/openwrt (github.com)
gibberish because console needs 1500000 bps - or maybe I've set the console for my builds at 115200 because 1.5m wasn't working for me - one or the other anyway thanks for trying it out !

1 Like

Thank you!

Indeed, changing baud rate to 1500000 allowed me to access the device, it booted fine and allowed me to set password. Radxa documentation suggested 115200, so that's what I initially went.

1 Like