Skip to content

Add Odroid M2 (RK3588S) standalone board support with mainline kernel#15648

Open
anoop-dhiman wants to merge 1 commit intobatocera-linux:masterfrom
anoop-dhiman:feat/odroid-m2-mainline
Open

Add Odroid M2 (RK3588S) standalone board support with mainline kernel#15648
anoop-dhiman wants to merge 1 commit intobatocera-linux:masterfrom
anoop-dhiman:feat/odroid-m2-mainline

Conversation

@anoop-dhiman
Copy link
Copy Markdown

@anoop-dhiman anoop-dhiman commented Apr 19, 2026

Summary

Add Hardkernel ODROID-M2 (RK3588S) as a standalone build target.

  • Mainline kernel 6.18.21 (vendor 6.1 BSP has no M2 support)
  • Pre-built U-Boot from Armbian (same approach as odroid-m1)
  • 14 kernel patches from Armbian rockchip64-6.18
  • Build: make odroidm2-build

Tested

  • HDMI display + GPU (Panthor)
  • USB-C host, USB-A ports
  • Ethernet, HDMI audio
  • SD card boot

Notes for maintainers

This board needs a standalone target because the existing rk3588 vendor kernel (6.1) has no Odroid M2 support. The approach mirrors how rk3568 uses mainline kernel separately from the rk3588 vendor build.

U-Boot is pre-built from Armbian (like odroid-m1, bananapi-m7) because Buildroot's toolchain produces non-booting binaries for this board.

Open to feedback on the approach — happy to rework if needed.

AI Disclosure

Developed with assistance from Claude (Anthropic) for codebase exploration, build system analysis, and debugging. All changes tested on physical hardware.

The Odroid M2 requires mainline kernel as the Rockchip vendor 6.1 BSP
has no support for this board. Uses Armbian's pre-built U-Boot binary
since building from source with Buildroot's toolchain produces binaries
that cause SError kernel panics during paging_init.

Board config:
- Standalone target (make odroidm2-build), separate from rk3588
- Mainline kernel 6.18.21 with Armbian's tested defconfig
- In-tree DTS (rockchip/rk3588s-odroid-m2), no custom DTS needed
- Pre-built U-Boot from Armbian (v2025.10, BL31 v1.48, DDR v1.18)
- Serial console ttyS2 at 1500000 baud (matching Armbian)
- 14 kernel patches from Armbian rockchip64-6.18 patch set

Kernel patches (from Armbian):
- 4 Odroid M2 board DTS fixes (ethernet PHY, HDMI audio, USB-C OTG,
  Vu8S panel)
- 7 USB-C/TCPM/DWC3 driver fixes (role switching, PHY power tracking,
  PD capabilities, extcon bridge)
- 1 DRM DMA mask fix (required for GPU on 16GB systems)
- 2 RK3588 platform fixes (clock division overflow, OPP nodes)

Build system registration:
- Config.in: new target with capability/feature lists
- batocera-system.mk and batocera-configgen.mk: arch mappings
- 7 emulator .mk files: ODROIDM2 added to RK3588 platform
- alllinuxfirmwares.mk and rockchip-mpp.mk: target added
- Excluded ecwolf (Bitbucket submodule auth issue)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants