Files
eternalwrt-mt798x/target/linux/mvebu/image/cortexa72.mk
T
Przemek RudyandJonas Jelonek e6f5d04c52 mvebu: MikroTik: add support for RB5009UPr+S+IN
The MikroTik RB5009UPr+S+IN is a multigig router based on the Marvell
Armada 7040 SoC, sharing the same hardware base as the RB5009UG+S+IN
with added PoE-out support on all ethernet ports.

Specification:

- SoC             : Marvell Armada 7040 (88F7040), 4x Cortex-A72
- CPU frequency   : 350-1400 MHz
- RAM             : 1 GB
- Flash           : 16 MB SPI NOR + 1 GB NAND
- Switch          : Marvell MV88E6393X
- Ethernet        : 1x 2.5G (p1, QCA8081), 7x 1G (p2-p8), 1x SFP+ 10G
- PoE-in          : 802.3af/at on p1, 24-57V
- PoE-out         : 802.3af/at on p1-p8, 130 W total
- Power           : DC jack / 2-pin terminal / PoE-in, 24-57V
- USB             : 1x USB 3.0 type A, max 1.5 A
- LEDs/Keys (GPIO): 4x/1x
- UART            : MikroTik SPI/UART combo header (10-pin, 2.0mm pitch)
  - assignment    : GND Vcc Rx ? GND / CLK DO /CS Tx DI (top view)
  - settings      : 115200n8

Flash instruction using initramfs image:

RouterBOOT cannot boot the OpenWrt kernel directly. A U-Boot loader
(u-boot.elf) is installed as an intermediary: RouterBOOT loads
u-boot.elf, which then loads the OpenWrt initramfs image.

1. Rename the downloaded initramfs image, removing the version number,
   to: openwrt-mvebu-cortexa72-mikrotik_rb5009-initramfs-uImage.itb
2. Set up a BOOTP/TFTP server serving u-boot.elf, with the renamed
   initramfs image in the same directory
3. Power off the router, hold the reset button (front panel), power on
   and keep holding until the initramfs image has been served, then
   release
4. The router boots the initramfs image, reachable at 192.168.1.1
5. Log in via SSH, install U-Boot, wipe NAND and flash OpenWrt:

     . /lib/functions.sh
     yafut -d /dev/mtd$(find_mtd_index "YAFFS") -w -i /tmp/u-boot.elf -o kernel -T
     ubiformat /dev/mtd$(find_mtd_index "ubi") -y
     sysupgrade /tmp/openwrt-mvebu-cortexa72-mikrotik_rb5009upr-squashfs-sysupgrade.bin

Recovery:

Hold the reset button while U-Boot is booting to load the initramfs
image again. To return to RouterOS, use MikroTik Netinstall.

MAC Addresses:

MAC addresses are read from the RouterBOOT hard_config in NOR via the
macaddr_hard nvmem cell:

offset +0 p1  (2.5G, label-mac-device)
offset +1 p2
offset +2 p3
offset +3 p4
offset +4 p5
offset +5 p6
offset +6 p7
offset +7 p8
offset +8 sfp

Tested-by: Sm00shed <sm00shed@posteo.de> (RB5009UPr+S+IN, OpenWrt v25.12.4,
kernel 6.12.87, mtpoe fw 65.21)
Signed-off-by: Przemek Rudy <prudy@protonmail.com>
[carlo@common-net.org: refactor RB5009UPr+S+IN support and fix sysupgrade path]
Signed-off-by: Carlo Filippi <carlo@common-net.org>
[sm00shed@posteo.de: fix compatible indentation, remove mikrotik,rb5009, expand commit message]
Signed-off-by: Sm00shed <sm00shed@posteo.de>
Link: https://github.com/openwrt/openwrt/pull/23698
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-07-01 17:03:40 +02:00

167 lines
5.0 KiB
Makefile

define Build/append-bootscript
cat $@-boot.scr >> $@
endef
define Device/UbiFit
KERNEL_IN_UBI := 1
IMAGES := factory.ubi sysupgrade.bin
IMAGE/factory.ubi := append-ubi
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
endef
define Device/checkpoint_v-80
$(call Device/Default-arm64)
DEVICE_VENDOR := Check Point
DEVICE_MODEL := V-80
SOC := armada-7040
BOOT_SCRIPT := v-80
IMAGES += sysupgrade.gz
IMAGE/sysupgrade.gz := boot-scr eMMC | append-bootscript | pad-to 2048 | \
append-kernel | \
sysupgrade-tar kernel=$$$$@ dtb=$$(KDIR)/image-$$(DEVICE_DTS).dtb | \
libdeflate-gzip | append-metadata
ARTIFACTS := initramfs.dtb initramfs.scr
ARTIFACT/initramfs.dtb := append-dtb
ARTIFACT/initramfs.scr := boot-scr INIT | append-bootscript
DEVICE_PACKAGES := kmod-dsa-mv88e6xxx kmod-hwmon-nct7802 kmod-rtc-ds1307
endef
TARGET_DEVICES += checkpoint_v-80
define Device/checkpoint_v-81
$(call Device/Default-arm64)
DEVICE_VENDOR := Check Point
DEVICE_MODEL := V-81
SOC := armada-8040
BOOT_SCRIPT := v-80
IMAGES += sysupgrade.gz
IMAGE/sysupgrade.gz := boot-scr eMMC | append-bootscript | pad-to 2048 | \
append-kernel | \
sysupgrade-tar kernel=$$$$@ dtb=$$(KDIR)/image-$$(DEVICE_DTS).dtb | \
libdeflate-gzip | append-metadata
ARTIFACTS := initramfs.dtb initramfs.scr
ARTIFACT/initramfs.dtb := append-dtb
ARTIFACT/initramfs.scr := boot-scr INIT | append-bootscript
DEVICE_PACKAGES := kmod-dsa-mv88e6xxx kmod-hwmon-nct7802 kmod-rtc-ds1307
endef
TARGET_DEVICES += checkpoint_v-81
define Device/globalscale_mochabin
$(call Device/Default-arm64)
DEVICE_VENDOR := Globalscale
DEVICE_MODEL := MOCHAbin
DEVICE_PACKAGES += kmod-dsa-mv88e6xxx
SOC := armada-7040
endef
TARGET_DEVICES += globalscale_mochabin
define Device/marvell_armada7040-db
$(call Device/Default-arm64)
DEVICE_VENDOR := Marvell
DEVICE_MODEL := Armada 7040 Development Board
DEVICE_DTS := armada-7040-db
IMAGE/sdcard.img.gz := boot-img-ext4 | sdcard-img-ext4 | libdeflate-gzip | append-metadata
endef
TARGET_DEVICES += marvell_armada7040-db
define Device/marvell_armada8040-db
$(call Device/Default-arm64)
DEVICE_VENDOR := Marvell
DEVICE_MODEL := Armada 8040 Development Board
DEVICE_DTS := armada-8040-db
IMAGE/sdcard.img.gz := boot-img-ext4 | sdcard-img-ext4 | libdeflate-gzip | append-metadata
endef
TARGET_DEVICES += marvell_armada8040-db
define Device/marvell_macchiatobin-doubleshot
$(call Device/Default-arm64)
DEVICE_VENDOR := SolidRun
DEVICE_MODEL := MACCHIATObin
DEVICE_VARIANT := Double Shot
DEVICE_ALT0_VENDOR := SolidRun
DEVICE_ALT0_MODEL := Armada 8040 Community Board
DEVICE_ALT0_VARIANT := Double Shot
DEVICE_PACKAGES += kmod-i2c-mux-pca954x
DEVICE_DTS := armada-8040-mcbin
SUPPORTED_DEVICES := marvell,armada8040-mcbin-doubleshot marvell,armada8040-mcbin
endef
TARGET_DEVICES += marvell_macchiatobin-doubleshot
define Device/marvell_macchiatobin-singleshot
$(call Device/Default-arm64)
DEVICE_VENDOR := SolidRun
DEVICE_MODEL := MACCHIATObin
DEVICE_VARIANT := Single Shot
DEVICE_ALT0_VENDOR := SolidRun
DEVICE_ALT0_MODEL := Armada 8040 Community Board
DEVICE_ALT0_VARIANT := Single Shot
DEVICE_PACKAGES += kmod-i2c-mux-pca954x
DEVICE_DTS := armada-8040-mcbin-singleshot
SUPPORTED_DEVICES := marvell,armada8040-mcbin-singleshot
endef
TARGET_DEVICES += marvell_macchiatobin-singleshot
define Device/mikrotik_rb5009
$(call Device/Default-arm64)
$(Device/NAND-128K)
$(call Device/FitImage)
$(call Device/UbiFit)
DEVICE_VENDOR := MikroTik
SOC := armada-7040
KERNEL_LOADADDR := 0x22000000
DEVICE_PACKAGES += kmod-i2c-gpio yafut kmod-dsa-mv88e6xxx
endef
define Device/mikrotik_rb5009ug
$(call Device/mikrotik_rb5009)
DEVICE_DTS := armada-7040-rb5009ug
DEVICE_MODEL := RB5009UG+S+IN
SUPPORTED_DEVICES += mikrotik,rb5009
endef
TARGET_DEVICES += mikrotik_rb5009ug
define Device/mikrotik_rb5009upr
$(call Device/mikrotik_rb5009)
DEVICE_DTS := armada-7040-rb5009upr
DEVICE_MODEL := RB5009UPr+S+IN
endef
TARGET_DEVICES += mikrotik_rb5009upr
define Device/marvell_clearfog-gt-8k
$(call Device/Default-arm64)
DEVICE_VENDOR := SolidRun
DEVICE_MODEL := Clearfog
DEVICE_VARIANT := GT-8K
DEVICE_PACKAGES += kmod-i2c-mux-pca954x kmod-crypto-hw-safexcel
DEVICE_DTS := armada-8040-clearfog-gt-8k
SUPPORTED_DEVICES := marvell,armada8040-clearfog-gt-8k
endef
TARGET_DEVICES += marvell_clearfog-gt-8k
define Device/iei_puzzle-m901
$(call Device/Default-arm64)
SOC := cn9131
DEVICE_VENDOR := iEi
DEVICE_MODEL := Puzzle-M901
DEVICE_PACKAGES += kmod-rtc-ds1307
endef
TARGET_DEVICES += iei_puzzle-m901
define Device/iei_puzzle-m902
$(call Device/Default-arm64)
SOC := cn9132
DEVICE_VENDOR := iEi
DEVICE_MODEL := Puzzle-M902
DEVICE_PACKAGES += kmod-rtc-ds1307
endef
TARGET_DEVICES += iei_puzzle-m902
define Device/solidrun_clearfog-pro
$(call Device/Default-arm64)
SOC := cn9130
DEVICE_VENDOR := SolidRun
DEVICE_MODEL := ClearFog Pro
DEVICE_PACKAGES += kmod-i2c-mux-pca954x kmod-dsa-mv88e6xxx
BOOT_SCRIPT := clearfog-pro
endef
TARGET_DEVICES += solidrun_clearfog-pro