How to install to RB750GR3?


#65

I built the 'native' (RouterBOOT) version of the origin/master 3 times over the last month. Personally i prefer to have a version of the firmware, which doesn't replace the mikrotik bootloader and offers the possibility to revert to the mikrotik's firmware.

New to Openwrt i found some discussion around whether it's useful to have the u-boot flashed version in the build system, which doesn't allow to revert to stock firmware. Is there anyone around that knows policies about that? Makes it sense to maintain 2 versions of the same target or drop one?

So far my build looks quite stable, thanks to everyone that helped support this device in LEDE and OpenWRT.

Build "Sun Dec 9" on top of "origin/master commit f939598b7a7ce2079722295603e2dcee93ad310d".

root@charon:~# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 0000f000 00010000 "bootloader1"
mtd1: 00001000 00010000 "hard-config"
mtd2: 0000f000 00010000 "bootloader2"
mtd3: 00001000 00001000 "soft_config"
mtd4: 00001000 00010000 "bios"
mtd5: 00fc0000 00010000 "firmware"
mtd6: 001e0000 00010000 "kernel"
mtd7: 00de0000 00010000 "rootfs"
mtd8: 00480000 00010000 "rootfs_data"

Kernel log

[    0.000000] Linux version 4.14.82 (###@###) (gcc version 7.3.0 (OpenWrt GCC 7.3.0 r8665+3-f939598b7a)) #0 SMP Sun Dec 9 02:06:47 2018
[    0.000000] SoC Type: MediaTek MT7621 ver:1 eco:3
[    0.000000] bootconsole [early0] enabled
[    0.000000] CPU0 revision is: 0001992f (MIPS 1004Kc)
[    0.000000] MIPS: machine is MikroTik RouterBOARD 750Gr3
[    0.000000] Determined physical RAM map:
[    0.000000]  memory: 10000000 @ 00000000 (usable)
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] VPE topology {2,2} total 4
[    0.000000] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes.
[    0.000000] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[    0.000000] MIPS secondary cache 256kB, 8-way, linesize 32 bytes.
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000000000000-0x000000000fffffff]
[    0.000000]   HighMem  empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x000000000fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000000fffffff]
[    0.000000] On node 0 totalpages: 65536
[    0.000000] free_area_init_node: node 0, pgdat 8058ff80, node_mem_map 81003000
[    0.000000]   Normal zone: 512 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 65536 pages, LIFO batch:15
[    0.000000] random: get_random_bytes called from start_kernel+0x90/0x4a4 with crng_init=0
[    0.000000] percpu: Embedded 14 pages/cpu @81210000 s26192 r8192 d22960 u57344
[    0.000000] pcpu-alloc: s26192 r8192 d22960 u57344 alloc=14*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 65024
[    0.000000] Kernel command line: console=ttyS0,115200 rootfstype=squashfs,jffs2
[    0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes)
[    0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Writing ErrCtl register=00032a88
[    0.000000] Readback ErrCtl register=00032a88
[    0.000000] Memory: 253364K/262144K available (4469K kernel code, 230K rwdata, 996K rodata, 244K init, 248K bss, 8780K reserved, 0K cma-reserved, 0K highmem)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS: 256
[    0.000000] CPU Clock: 880MHz
[    0.000000] clocksource: GIC: mask: 0xffffffffffffffff max_cycles: 0xcaf478abb4, max_idle_ns: 440795247997 ns
[    0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 4343773742 ns
[    0.000009] sched_clock: 32 bits at 440MHz, resolution 2ns, wraps every 4880645118ns
[    0.007806] Calibrating delay loop... 586.13 BogoMIPS (lpj=2930688)
[    0.073974] pid_max: default: 32768 minimum: 301
[    0.078740] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.085248] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.094019] Hierarchical SRCU implementation.
[    0.099166] smp: Bringing up secondary CPUs ...
[    5.647679] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes.
[    5.647688] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[    5.647699] MIPS secondary cache 256kB, 8-way, linesize 32 bytes.
[    5.647833] CPU1 revision is: 0001992f (MIPS 1004Kc)
[    0.163911] Synchronize counters for CPU 1: done.
[    1.481742] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes.
[    1.481751] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[    1.481760] MIPS secondary cache 256kB, 8-way, linesize 32 bytes.
[    1.481830] CPU2 revision is: 0001992f (MIPS 1004Kc)
[    0.254977] Synchronize counters for CPU 2: done.
[    8.961111] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes.
[    8.961119] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[    8.961127] MIPS secondary cache 256kB, 8-way, linesize 32 bytes.
[    8.961203] CPU3 revision is: 0001992f (MIPS 1004Kc)
[    0.340155] Synchronize counters for CPU 3: done.
[    0.370006] smp: Brought up 1 node, 4 CPUs
[    0.377587] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.387368] futex hash table entries: 1024 (order: 3, 32768 bytes)
[    0.393658] pinctrl core: initialized pinctrl subsystem
[    0.400235] NET: Registered protocol family 16
[    0.413598] FPU Affinity set after 11720 emulations
[    0.422887] mt7621_gpio 1e000600.gpio: registering 32 gpios
[    0.428690] mt7621_gpio 1e000600.gpio: registering 32 gpios
[    0.434446] mt7621_gpio 1e000600.gpio: registering 32 gpios
[    0.442599] clocksource: Switched to clocksource GIC
[    0.449005] NET: Registered protocol family 2
[    0.453935] TCP established hash table entries: 2048 (order: 1, 8192 bytes)
[    0.460817] TCP bind hash table entries: 2048 (order: 2, 16384 bytes)
[    0.467236] TCP: Hash tables configured (established 2048 bind 2048)
[    0.473630] UDP hash table entries: 256 (order: 1, 8192 bytes)
[    0.479390] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[    0.485839] NET: Registered protocol family 1
[    0.490124] PCI: CLS 0 bytes, default 32
[    0.722546] 4 CPUs re-calibrate udelay(lpj = 2924544)
[    0.729012] Crashlog allocated RAM at address 0x3f00000
[    0.734427] workingset: timestamp_bits=30 max_order=16 bucket_order=0
[    0.746390] random: fast init done
[    0.748028] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.748038] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.752444] io scheduler noop registered
[    0.752451] io scheduler deadline registered (default)
[    0.775106] gpio-export gpio_export: 4 gpio(s) exported
[    0.781034] Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled
[    0.788688] console [ttyS0] disabled
[    0.792227] 1e000c00.uartlite: ttyS0 at MMIO 0x1e000c00 (irq = 18, base_baud = 3125000) is a 16550A
[    0.801236] console [ttyS0] enabled
[    0.808111] bootconsole [early0] disabled
[    0.816723] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    0.823582] MediaTek Nand driver init, version v2.1 Fix AHB virt2phys error
[    0.830858] spi-mt7621 1e000b00.spi: sys_freq: 220000000
[    0.847296] m25p80 spi0.0: w25q128 (16384 Kbytes)
[    0.852045] 6 fixed-partitions partitions found on MTD device spi0.0
[    0.858388] Creating 6 MTD partitions on "spi0.0":
[    0.863187] 0x000000000000-0x00000000f000 : "bootloader1"
[    0.869566] 0x00000000f000-0x000000010000 : "hard-config"
[    0.875893] 0x000000010000-0x00000001f000 : "bootloader2"
[    0.882117] 0x000000020000-0x000000021000 : "soft_config"
[    0.888414] 0x000000030000-0x000000031000 : "bios"
[    0.894156] 0x000000040000-0x000001000000 : "firmware"
[    1.148856] 2 minor-fw partitions found on MTD device firmware
[    1.154720] 0x000000040000-0x000000220000 : "kernel"
[    1.160557] 0x000000220000-0x000001000000 : "rootfs"
[    1.166328] mtd: device 7 (rootfs) set to be root filesystem
[    1.172227] 1 squashfs-split partitions found on MTD device rootfs
[    1.178427] 0x000000b80000-0x000001000000 : "rootfs_data"
[    1.185430] libphy: Fixed MDIO Bus: probed
[    1.254615] libphy: mdio: probed
[    2.657368] mtk_soc_eth 1e100000.ethernet: loaded mt7530 driver
[    2.663983] mtk_soc_eth 1e100000.ethernet eth0: mediatek frame engine at 0xbe100000, irq 21
[    2.674646] NET: Registered protocol family 10
[    2.680379] Segment Routing with IPv6
[    2.684161] NET: Registered protocol family 17
[    2.688626] 8021q: 802.1Q VLAN Support v1.8
[    2.695025] hctosys: unable to open rtc device (rtc0)
[    2.720270] VFS: Mounted root (squashfs filesystem) readonly on device 31:7.
[    2.727883] Freeing unused kernel memory: 244K
[    2.732321] This architecture does not have kernel memory protection.
[    3.837223] random: crng init done
[    3.930079] mtk_soc_eth 1e100000.ethernet eth0: port 0 link up
[    4.562166] mtk_soc_eth 1e100000.ethernet eth0: port 1 link up
[    4.763611] init: Console is alive
[    4.767240] init: - watchdog -
[    5.056209] mtk_soc_eth 1e100000.ethernet eth0: port 2 link up
[    7.720471] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[    7.782968] usbcore: registered new interface driver usbfs
[    7.788547] usbcore: registered new interface driver hub
[    7.794032] usbcore: registered new device driver usb
[    7.823995] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    7.831531] ehci-platform: EHCI generic platform driver
[    7.844647] xhci-mtk 1e1c0000.xhci: 1e1c0000.xhci supply vbus not found, using dummy regulator
[    7.853373] xhci-mtk 1e1c0000.xhci: 1e1c0000.xhci supply vusb33 not found, using dummy regulator
[    7.862296] xhci-mtk 1e1c0000.xhci: xHCI Host Controller
[    7.867638] xhci-mtk 1e1c0000.xhci: new USB bus registered, assigned bus number 1
[    7.882744] xhci-mtk 1e1c0000.xhci: hcc params 0x01401198 hci version 0x96 quirks 0x00210010
[    7.891222] xhci-mtk 1e1c0000.xhci: irq 20, io mem 0x1e1c0000
[    7.897932] hub 1-0:1.0: USB hub found
[    7.901751] hub 1-0:1.0: 2 ports detected
[    7.906328] xhci-mtk 1e1c0000.xhci: xHCI Host Controller
[    7.911635] xhci-mtk 1e1c0000.xhci: new USB bus registered, assigned bus number 2
[    7.919120] xhci-mtk 1e1c0000.xhci: Host supports USB 3.0  SuperSpeed
[    7.925730] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[    7.934647] hub 2-0:1.0: USB hub found
[    7.938457] hub 2-0:1.0: 1 port detected
[    8.005878] sdhci: Secure Digital Host Controller Interface driver
[    8.012053] sdhci: Copyright(c) Pierre Ossman
[    8.019455] sdhci-pltfm: SDHCI platform and OF driver helper
[    8.027050] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[    8.042946] init: - preinit -
[    8.275841] mmc0: new high speed SDHC card at address aaaa
[    8.282462] mmcblk0: mmc0:aaaa SE32G 29.7 GiB 
[    8.290393]  mmcblk0: p1
[   10.067535] mtk_soc_eth 1e100000.ethernet: PPE started
[   13.632176] jffs2: notice: (493) jffs2_build_xattr_subsystem: complete building xattr subsystem, 6 of xdatum (3 unchecked, 3 orphan) and 31 of xref (3 dead, 0 orphan) found.
[   13.651818] mount_root: switching to jffs2 overlay
[   13.684048] overlayfs: upper fs does not support tmpfile.
[   13.777494] urandom-seed: Seeding with /etc/urandom.seed
[   13.934259] mtk_soc_eth 1e100000.ethernet: 0x100 = 0x6060000c, 0x10c = 0x80818
[   13.953708] procd: - early -
[   13.956686] procd: - watchdog -
[   14.682798] procd: - watchdog -
[   14.686244] procd: - ubus -
[   14.952718] procd: - init -
[   15.377319] kmodloader: loading kernel modules from /etc/modules.d/*
[   15.387652] tun: Universal TUN/TAP device driver, 1.6
[   15.397581] ip6_tables: (C) 2000-2006 Netfilter Core Team
[   15.413418] Loading modules backported from Linux version v4.19-rc5-0-g6bf4ca7fbc85
[   15.421073] Backport generated by backports.git v4.19-rc5-1-0-g05571dcd
[   15.441423] Ebtables v2.0 registered
[   15.447257] ip_tables: (C) 2000-2006 Netfilter Core Team
[   15.464650] nf_conntrack version 0.5.0 (4096 buckets, 16384 max)
[   15.511247] usbcore: registered new interface driver usblp
[   15.530909] xt_time: kernel timezone is -0000
[   15.569225] PPP generic driver version 2.4.2
[   15.575358] NET: Registered protocol family 24
[   15.588963] batman_adv: B.A.T.M.A.N. advanced openwrt-2018.4-0 (compatibility version 15) loaded
[   15.601385] kmodloader: done loading kernel modules from /etc/modules.d/*
[   23.813487] mtk_soc_eth 1e100000.ethernet: PPE started
[   23.825932] br-lan: port 1(eth0.1) entered blocking state
[   23.831332] br-lan: port 1(eth0.1) entered disabled state
[   23.837472] device eth0.1 entered promiscuous mode
[   23.842298] device eth0 entered promiscuous mode
[   23.850434] br-lan: port 1(eth0.1) entered blocking state
[   23.855982] br-lan: port 1(eth0.1) entered forwarding state
[   23.862000] IPv6: ADDRCONF(NETDEV_UP): br-lan: link is not ready
[   24.833630] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready

My current .diff inspired of Thibaut's work https://patchwork.ozlabs.org/patch/953454/

diff --git a/target/linux/ramips/base-files/etc/board.d/02_network b/target/linux/ramips/base-files/etc/board.d/02_network
index c207b7cad4..0f2fb678d1 100755
--- a/target/linux/ramips/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/base-files/etc/board.d/02_network
@@ -215,9 +215,9 @@ ramips_setup_interfaces()
 	jhr-n805r|\
 	jhr-n825r|\
 	jhr-n926r|\
+	mikrotik,rb750gr3|\
 	mikrotik,rbm33g|\
 	mzk-wdpr|\
-	rb750gr3|\
 	rt-n14u|\
 	skylab,skw92a|\
 	tplink,c20-v4|\
diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh
index 307ab35c3c..7abdb60d27 100755
--- a/target/linux/ramips/base-files/lib/ramips.sh
+++ b/target/linux/ramips/base-files/lib/ramips.sh
@@ -418,9 +418,6 @@ ramips_board_detect() {
 	*"R6220")
 		name="r6220"
 		;;
-	*"RB750Gr3")
-		name="rb750gr3"
-		;;
 	*"RE350 v1")
 		name="re350-v1"
 		;;
diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh
index 8c7b818221..2f2d21674a 100755
--- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
@@ -137,7 +137,6 @@ platform_check_image() {
 	px-4885-4M|\
 	px-4885-8M|\
 	netgear,r6120|\
-	rb750gr3|\
 	re6500|\
 	rp-n53|\
 	rt5350f-olinuxino|\
@@ -315,6 +314,7 @@ platform_check_image() {
 		nand_do_platform_check "$board" "$1"
 		return $?;
 		;;
+	mikrotik,rb750gr3|\
 	mikrotik,rbm11g|\
 	mikrotik,rbm33g|\
 	re350-v1)
@@ -342,6 +342,7 @@ platform_pre_upgrade() {
 	local board=$(board_name)
 
 	case "$board" in
+	mikrotik,rb750gr3|\
 	mikrotik,rbm11g|\
 	mikrotik,rbm33g)
 		[ -z "$(rootfs_type)" ] && mtd erase firmware
diff --git a/target/linux/ramips/dts/RB750Gr3.dts b/target/linux/ramips/dts/RB750Gr3.dts
index 6b18cce78f..ddb0a69e5a 100644
--- a/target/linux/ramips/dts/RB750Gr3.dts
+++ b/target/linux/ramips/dts/RB750Gr3.dts
@@ -7,13 +7,13 @@
 
 / {
 	compatible = "mikrotik,rb750gr3", "mediatek,mt7621-soc";
-	model = "MikroTik RB750Gr3";
+	model = "MikroTik RouterBOARD 750Gr3";
 
 	aliases {
-		led-boot = &led_pwr;
-		led-failsafe = &led_pwr;
-		led-running = &led_pwr;
-		led-upgrade = &led_pwr;
+		led-boot = &led_usr;
+		led-failsafe = &led_usr;
+		led-running = &led_usr;
+		led-upgrade = &led_usr;
 	};
 
 	memory@0 {
@@ -22,18 +22,19 @@
 	};
 
 	chosen {
-		bootargs = "console=ttyS0,57600";
+		bootargs = "console=ttyS0,115200";
 	};
 
 	gpio-leds {
 		compatible = "gpio-leds";
 
-		led_pwr: pwr {
+		pwr {
 			label = "rb750gr3:blue:pwr";
 			gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>;
+			default-state = "on";
 		};
 
-		usr {
+		led_usr: usr {
 			label = "rb750gr3:green:usr";
 			gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>;
 		};
@@ -46,7 +47,7 @@
 		mode {
 			label = "mode";
 			gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
-			linux,code = <KEY_RFKILL>;
+			linux,code = <BTN_0>;
 		};
 
 		res {
@@ -67,9 +68,20 @@
 		};
 
 		usb {
-			gpio-export,name = "usb";
+			gpio-export,name = "usb_poweroff";
 			gpio-export,output = <1>;
-			gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
+			gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
+		};
+
+		poe_out {
+			gpio-export,name = "poe_passthrough";
+			gpio-export,output = <0>;
+			gpios = <&gpio0 17 GPIO_ACTIVE_HIGH>;
+		};
+
+		poe_status {
+			gpio-export,name = "poe_status";
+			gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
 		};
 	};
 };
@@ -77,53 +89,65 @@
 &spi0 {
 	status = "okay";
 
-	m25p80@0 {
+	w25q128@0 {
 		compatible = "jedec,spi-nor";
 		reg = <0>;
-		spi-max-frequency = <10000000>;
-		m25p,chunked-io = <32>;
+		spi-max-frequency = <3125000>;
 
 		partitions {
+			label = "RouterBoot";
+			reg = <0x0 0x40000>;
+			read-only;
 			compatible = "fixed-partitions";
 			#address-cells = <1>;
 			#size-cells = <1>;
-
 			partition@0 {
-				label = "u-boot";
-				reg = <0x0 0x30000>;
+				label = "bootloader1";
+				reg = <0x0 0xf000>;
 				read-only;
 			};
 
-			partition@30000 {
-				label = "u-boot-env";
-				reg = <0x30000 0x10000>;
+			hard_config: partition@f000 {
+				label = "hard-config";
+				reg = <0xf000 0x1000>;
 				read-only;
 			};
 
-			factory: partition@40000 {
-				label = "factory";
-				reg = <0x40000 0x10000>;
+			partition@100000 {
+				label = "bootloader2";
+				reg = <0x10000 0xf000>;
+				read-only;
+			};
+
+			partition@20000 {
+				label = "soft_config";
+				reg = <0x20000 0x1000>;
+			};
+
+			partition@30000 {
+				label = "bios";
+				reg = <0x30000 0x1000>;
 				read-only;
 			};
 
-			partition@50000 {
-				compatible = "denx,uimage";
+			partition@40000 {
 				label = "firmware";
-				reg = <0x50000 0xfb0000>;
+				reg = <0x040000 0xfc0000>;
 			};
 		};
 	};
 };
 
 &ethernet {
-	mtd-mac-address = <&factory 0xe000>;
+	mtd-mac-address = <&hard_config 0x0010>;
 	mtd-mac-address-increment = <1>;
 };
 
 &pinctrl {
 	state_default: pinctrl0 {
 		gpio {
-			ralink,group = "i2c", "uart2", "uart3", "pcie", "rgmii2", "jtag";
+			ralink,group = "uart2", "uart3", "jtag", "wdt";
 			ralink,function = "gpio";
 		};
 	};
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index 92bdbcf743..190e02d9ed 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -297,14 +297,6 @@ define Device/r6220
 endef
 TARGET_DEVICES += r6220
 
-define Device/rb750gr3
-  DTS := RB750Gr3
-  IMAGE_SIZE := $(ralink_default_fw_size_16M)
-  DEVICE_TITLE := MikroTik RB750Gr3
-  DEVICE_PACKAGES := kmod-usb3 uboot-envtools
-endef
-TARGET_DEVICES += rb750gr3
-
 define Device/MikroTik
   BLOCKSIZE := 64k
   IMAGE_SIZE := 16128k
@@ -316,6 +308,13 @@ define Device/MikroTik
 	append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
 endef
 
+define Device/mikrotik_rb750gr3
+  $(Device/MikroTik)
+  DTS := RB750Gr3
+  DEVICE_TITLE := MikroTik RouterBOARD RB750Gr3
+endef
+TARGET_DEVICES += mikrotik_rb750gr3
+
 define Device/mikrotik_rbm33g
   $(Device/MikroTik)
   DTS := RBM33G

#66

Personally I think the u-boot version was only useful prior to the point when someone worked out how to arrange the OpenWRT layout to allow RouterBOOT to boot it... since then it makes no sense to replace the bootloader if you don't have to. The only possible issue is the fact there will be people out there with u-boot versions of the hardware - dropping that version would mean they can't upgrade... not sure how many people that actually affects though, and even then if they backed up the flash initially they could always revert.


#67

Is it possible to maintain the u-boot version and the RouterBOOT version at the same time ?
rb750gr3.bin and mikrotik_rb750gr3.bin, for example.


#68

I bought RB750Gr3 couple days ago and had a luck with the patch mentioned here. It had minor issues I fixed. I am going to send my review to original patch author in a few.

Updated Patch: "Native" support of the MikroTik RouterBOARD 750Gr3, without reflashing the bootloader.

Serial Console output:

OpenWrt kernel loader for MIPS based SoC
Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
Decompressing kernel... done!
Starting kernel at 80001000...

[    0.000000] Linux version 4.14.90 (anton@0xcaf3d00d) (gcc version 7.4.0 (OpenWrt GCC 7.4.0 r8915-74af8a833a)) #0 SMP Fri Dec 28 11:45:23 2018
[    0.000000] SoC Type: MediaTek MT7621 ver:1 eco:3
[    0.000000] bootconsole [early0] enabled
[    0.000000] CPU0 revision is: 0001992f (MIPS 1004Kc)
[    0.000000] MIPS: machine is MikroTik RouterBOARD 750Gr3
[    0.000000] Determined physical RAM map:
[    0.000000]  memory: 10000000 @ 00000000 (usable)
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] VPE topology {2,2} total 4
[    0.000000] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes.
[    0.000000] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[    0.000000] MIPS secondary cache 256kB, 8-way, linesize 32 bytes.
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000000000000-0x000000000fffffff]
[    0.000000]   HighMem  empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x000000000fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000000fffffff]
[    0.000000] random: get_random_bytes called from start_kernel+0x90/0x4a0 with crng_init=0
[    0.000000] percpu: Embedded 14 pages/cpu @81210000 s26000 r8192 d23152 u57344
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 65024
[    0.000000] Kernel command line: console=ttyS0,115200 rootfstype=squashfs,jffs2
[    0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes)
[    0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Writing ErrCtl register=000060a1
[    0.000000] Readback ErrCtl register=000060a1
[    0.000000] Memory: 253428K/262144K available (4429K kernel code, 229K rwdata, 972K rodata, 244K init, 248K bss, 8716K reserved, 0K cma-reserved, 0K highmem)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS: 256
[    0.000000] CPU Clock: 880MHz
[    0.000000] clocksource: GIC: mask: 0xffffffffffffffff max_cycles: 0xcaf478abb4, max_idle_ns: 440795247997 ns
[    0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 4343773742 ns
[    0.000009] sched_clock: 32 bits at 440MHz, resolution 2ns, wraps every 4880645118ns
[    0.007803] Calibrating delay loop... 586.13 BogoMIPS (lpj=2930688)
[    0.073973] pid_max: default: 32768 minimum: 301
[    0.078737] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.085245] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.094002] Hierarchical SRCU implementation.
[    0.099136] smp: Bringing up secondary CPUs ...
[    0.775315] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes.
[    0.775325] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[    0.775336] MIPS secondary cache 256kB, 8-way, linesize 32 bytes.
[    0.775467] CPU1 revision is: 0001992f (MIPS 1004Kc)
[    0.163873] Synchronize counters for CPU 1: done.
[    9.422345] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes.
[    9.422353] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[    9.422361] MIPS secondary cache 256kB, 8-way, linesize 32 bytes.
[    9.422429] CPU2 revision is: 0001992f (MIPS 1004Kc)
[    0.254914] Synchronize counters for CPU 2: done.
[    9.511636] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes.
[    9.511643] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[    9.511650] MIPS secondary cache 256kB, 8-way, linesize 32 bytes.
[    9.511724] CPU3 revision is: 0001992f (MIPS 1004Kc)
[    0.340087] Synchronize counters for CPU 3: done.
[    0.369938] smp: Brought up 1 node, 4 CPUs
[    0.377602] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.387384] futex hash table entries: 1024 (order: 3, 32768 bytes)
[    0.393650] pinctrl core: initialized pinctrl subsystem
[    0.400031] NET: Registered protocol family 16
[    0.421451] mt7621_gpio 1e000600.gpio: registering 32 gpios
[    0.427238] mt7621_gpio 1e000600.gpio: registering 32 gpios
[    0.433015] mt7621_gpio 1e000600.gpio: registering 32 gpios
[    0.441280] clocksource: Switched to clocksource GIC
[    0.447722] NET: Registered protocol family 2
[    0.452657] TCP established hash table entries: 2048 (order: 1, 8192 bytes)
[    0.459544] TCP bind hash table entries: 2048 (order: 2, 16384 bytes)
[    0.465959] TCP: Hash tables configured (established 2048 bind 2048)
[    0.472363] UDP hash table entries: 256 (order: 1, 8192 bytes)
[    0.478128] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[    0.484576] NET: Registered protocol family 1
[    0.721220] 4 CPUs re-calibrate udelay(lpj = 2924544)
[    0.727530] Crashlog allocated RAM at address 0x3f00000
[    0.732916] workingset: timestamp_bits=30 max_order=16 bucket_order=0
[    0.746291] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.752140] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.764676] random: fast init done
[    0.768537] io scheduler noop registered
[    0.772409] io scheduler deadline registered (default)
[    0.778327] gpio-export gpio_export: 4 gpio(s) exported
[    0.784266] Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled
[    0.791882] console [ttyS0] disabled
[    0.795418] 1e000c00.uartlite: ttyS0 at MMIO 0x1e000c00 (irq = 18, base_baud = 3125000) is a 16550A
[    0.804432] console [ttyS0] enabled
[    0.804432] console [ttyS0] enabled
[    0.811307] bootconsole [early0] disabled
[    0.811307] bootconsole [early0] disabled
[    0.819922] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    0.826787] MediaTek Nand driver init, version v2.1 Fix AHB virt2phys error
[    0.834172] spi-mt7621 1e000b00.spi: sys_freq: 220000000
[    0.849209] m25p80 spi0.0: w25q128jv (16384 Kbytes)
[    0.854130] 2 fixed-partitions partitions found on MTD device spi0.0
[    0.860451] Creating 2 MTD partitions on "spi0.0":
[    0.865246] 0x000000000000-0x000000040000 : "RouterBoot"
[    0.871604] 5 fixed-partitions partitions found on MTD device RouterBoot
[    0.878285] Creating 5 MTD partitions on "RouterBoot":
[    0.883432] 0x000000000000-0x00000000f000 : "bootloader1"
[    0.889731] 0x00000000f000-0x000000010000 : "hard_config"
[    0.896066] 0x000000010000-0x00000001f000 : "bootloader2"
[    0.902417] 0x000000020000-0x000000021000 : "soft_config"
[    0.908709] 0x000000030000-0x000000031000 : "bios"
[    0.914481] 0x000000040000-0x000001000000 : "firmware"
[    0.921574] 2 minor-fw partitions found on MTD device firmware
[    0.927392] Creating 2 MTD partitions on "firmware":
[    0.932358] 0x000000000000-0x0000001e0000 : "kernel"
[    0.938205] 0x0000001e0000-0x000000fc0000 : "rootfs"
[    0.943925] mtd: device 8 (rootfs) set to be root filesystem
[    0.949791] 1 squashfs-split partitions found on MTD device rootfs
[    0.955987] 0x000000440000-0x000000fc0000 : "rootfs_data"
[    0.962967] libphy: Fixed MDIO Bus: probed
[    1.033289] libphy: mdio: probed
[    2.436048] mtk_soc_eth 1e100000.ethernet: loaded mt7530 driver
[    2.442666] mtk_soc_eth 1e100000.ethernet eth0: mediatek frame engine at 0xbe100000, irq 21
[    2.453274] NET: Registered protocol family 10
[    2.458968] Segment Routing with IPv6
[    2.462735] NET: Registered protocol family 17
[    2.467199] 8021q: 802.1Q VLAN Support v1.8
[    2.473179] hctosys: unable to open rtc device (rtc0)
[    2.497683] VFS: Mounted root (squashfs filesystem) readonly on device 31:8.
[    2.505262] Freeing unused kernel memory: 244K
[    2.509699] This architecture does not have kernel memory protection.
[    3.896381] random: crng init done
[    4.320971] mtk_soc_eth 1e100000.ethernet eth0: port 1 link up
[    4.706089] init: Console is alive
[    4.709719] init: - watchdog -
[    5.554396] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[    5.617602] usbcore: registered new interface driver usbfs
[    5.623236] usbcore: registered new interface driver hub
[    5.628661] usbcore: registered new device driver usb
[    5.642731] xhci-mtk 1e1c0000.xhci: 1e1c0000.xhci supply vbus not found, using dummy regulator
[    5.651419] xhci-mtk 1e1c0000.xhci: 1e1c0000.xhci supply vusb33 not found, using dummy regulator
[    5.660289] xhci-mtk 1e1c0000.xhci: xHCI Host Controller
[    5.665643] xhci-mtk 1e1c0000.xhci: new USB bus registered, assigned bus number 1
[    5.681408] xhci-mtk 1e1c0000.xhci: hcc params 0x01401198 hci version 0x96 quirks 0x0000000000210010
[    5.690581] xhci-mtk 1e1c0000.xhci: irq 20, io mem 0x1e1c0000
[    5.697256] hub 1-0:1.0: USB hub found
[    5.701066] hub 1-0:1.0: 2 ports detected
[    5.705609] xhci-mtk 1e1c0000.xhci: xHCI Host Controller
[    5.710916] xhci-mtk 1e1c0000.xhci: new USB bus registered, assigned bus number 2
[    5.718401] xhci-mtk 1e1c0000.xhci: Host supports USB 3.0  SuperSpeed
[    5.725011] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[    5.733900] hub 2-0:1.0: USB hub found
[    5.737715] hub 2-0:1.0: 1 port detected
[    5.744055] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[    5.771564] init: - preinit -
[    7.385914] mtk_soc_eth 1e100000.ethernet: PPE started
Press the [f] key and hit [enter] to enter failsafe mode
Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level
[   10.990221] jffs2: notice: (462) jffs2_build_xattr_subsystem: complete building xattr subsystem, 8 of xdatum (2 unchecked, 6 orphan) and 10 of xref (6 dead,.
[   11.011509] mount_root: switching to jffs2 overlay
[   11.044727] overlayfs: upper fs does not support tmpfile.
[   11.062406] urandom-seed: Seeding with /etc/urandom.seed
[   11.157903] mtk_soc_eth 1e100000.ethernet: 0x100 = 0x6060000c, 0x10c = 0x80818
[   11.173494] procd: - early -
[   11.176467] procd: - watchdog -
[   11.831463] procd: - watchdog -
[   11.834918] procd: - ubus -
[   12.130534] procd: - init -
Please press Enter to activate this console.
[   12.427092] kmodloader: loading kernel modules from /etc/modules.d/*
[   12.437116] ip6_tables: (C) 2000-2006 Netfilter Core Team                                 
[   12.450694] ip_tables: (C) 2000-2006 Netfilter Core Team                                  
[   12.462225] nf_conntrack version 0.5.0 (4096 buckets, 16384 max)                          
[   12.501075] xt_time: kernel timezone is -0000                                             
[   12.510979] PPP generic driver version 2.4.2                                          
[   12.516508] NET: Registered protocol family 24
[   12.523261] kmodloader: done loading kernel modules from /etc/modules.d/*
[   18.764841] mtk_soc_eth 1e100000.ethernet: PPE started
[   18.778341] br-lan: port 1(eth0.1) entered blocking state
[   18.783876] br-lan: port 1(eth0.1) entered disabled state
[   18.789957] device eth0.1 entered promiscuous mode
[   18.795149] device eth0 entered promiscuous mode
[   18.803657] br-lan: port 1(eth0.1) entered blocking state
[   18.809078] br-lan: port 1(eth0.1) entered forwarding state
[   18.815146] IPv6: ADDRCONF(NETDEV_UP): br-lan: link is not ready
[   19.791916] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready

#69

fyi: OpenWRT pull request https://github.com/openwrt/openwrt/pull/1686.


#70

Hello @arapov I have a RB750Gr3 and would like to build the image (both the elf and sysupdate) from your source. How do i check out/pull your source?
Sorry if this is a basic question, but I'm still very new to GitHub.


#71

@mattholt, you may wish to make a new thread in the For Developers section.


#72

Just clone the branch or switch to the RB750Gr3-hEX branch.
e.g. git clone --single-branch --branch RB750Gr3-hEX https://github.com/arapov/openwrt.git

I do hope to see the patch in openwrt soon. :wink:


#73

Thank you for the link to your branch.
I have compiled your source, and when I try to boot from the .elf file I get a kernel panic. with 'Failed to find mtk,mt7621-sysc node'

  • The RAM map address range also is different.
  • After Initmem setup, It states no valid tree found, continuing without.

Do you think its something I have got wrong in the .config file?

Console output:

[    0.000000] Linux version 4.14.90 (mattholt@devbox) (gcc version 7.4.0 (OpenWrt GCC 7.4.0 r8918-23bd893)) #0 SMP Thu Jan 3 13:12:31 2019
[    0.000000] SoC Type: MediaTek MT7621 ver:1 eco:3
[    0.000000] bootconsole [early0] enabled
[    0.000000] CPU0 revision is: 0001992f (MIPS 1004Kc)
[    0.000000] Determined physical RAM map:
[    0.000000]  memory: 02000000 @ 00000000 (usable)
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] VPE topology {2,2} total 4
[    0.000000] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes.
[    0.000000] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[    0.000000] MIPS secondary cache 256kB, 8-way, linesize 32 bytes.
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000000000000-0x0000000001ffffff]
[    0.000000]   HighMem  empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x0000000001ffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000001ffffff]
[    0.000000] OF: fdt: No valid device tree found, continuing without
[    0.000000] random: get_random_bytes called from start_kernel+0x90/0x4a4 with crng_init=0
[    0.000000] percpu: Embedded 14 pages/cpu @81046000 s26192 r8192 d22960 u57344
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 8128
[    0.000000] Kernel command line: rootfstype=squashfs,jffs2
[    0.000000] PID hash table entries: 128 (order: -3, 512 bytes)
[    0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Writing ErrCtl register=000244ef
[    0.000000] Readback ErrCtl register=000244ef
[    0.000000] Memory: 23752K/32768K available (4468K kernel code, 231K rwdata, 996K rodata, 2484K init, 248K bss, 9016K reserved, 0K cma-reserved, 0K highmem)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS: 256
[    0.000000] Kernel panic - not syncing: Failed to find mtk,mt7621-sysc node
[    0.000000] Rebooting in 1 seconds..
[    0.000000] Reboot failed -- System halted


#74

update: Patches are in @mkresin's staging tree: https://git.openwrt.org/?p=openwrt/staging/mkresin.git


#75

@mattholt, I guess we may use different approach and .config. I followed the common manual for mikrotik boards: https://openwrt.org/toh/mikrotik/common.

Matt, you can check the configuration which is working for me here: https://gist.github.com/arapov/fffbfd11b4d90316719db5c07db7ef35


#76

The official snapshot firmware for RB750Gr3 could be flashed via netboot now, and it has been renamed to mikrotik_rb750gr3-initramfs-kernel.bin and mikrotik_rb750gr3-squashfs-sysupgrade.bin

Attention! You can not upgrade from 18.06.1 version directly.

Thanks all devs.


#77

I am now trying to get the latest snapshot version onto my device. I can successfully boot the device from tftp and I tried a sysupgrade from that. This results in an mtd layout that is as follows:

root@OpenWrt:/# cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00040000 00010000 "RouterBoot"
mtd1: 0000f000 00010000 "bootloader1"
mtd2: 00001000 00010000 "hard_config"
mtd3: 0000f000 00010000 "bootloader2"
mtd4: 00001000 00010000 "soft_config"
mtd5: 00001000 00010000 "bios"
mtd6: 00fc0000 00010000 "firmware"
mtd7: 001f0000 00010000 "kernel"
mtd8: 00dd0000 00010000 "rootfs"
mtd9: 00c60000 00010000 "rootfs_data

"

When uboot tries to boot from flash after sysupgrade I get:

3: System Boot system code via Flash.
## Booting image at bfc50000 ...
Bad Magic Number,1FE665C3
U-Boot 1.1.3 (May 31 2018 - 10:11:11)
MT7621 # printenv
bootcmd=tftp
bootdelay=5
ethaddr="00:AA:BB:CC:DD:10"
BootType=3
ipaddr=192.168.1.2
serverip=192.168.1.1
baudrate=115200
stdin=serial
stdout=serial
stderr=serial

Environment size: 161/4092 bytes

Am I just missing some settings in uboot, or where should I look next?


#78

The latest snapshot firmware is built for working with mikrotik's original bootloader 'RouterBoot', not with u-boot. Device which bootloader was replaced with u-boot should use 18.06.1 firmware.


#79

18.06.1 won't boot on my RB750Gr3 (see above comment from me regarding snapshot in october working with added support for the flash I have). So does this mean that my device with u-boot won't be supported by regular OpenWrt stable relases going forward?


#80

Maybe it is possible to boot mikrotik layout firmware from u-boot, but I don't know how to do it.
or if you backup the factory firmware, try to restore it.


#81

@all, I updated the openwrt wiki pages. And I will be happy to have more eyes on those. Feel free to proof-read and make changes.

trunk/master: https://openwrt.org/toh/mikrotik/mikrotik_rb750gr3
18.06.1: https://openwrt.org/toh/mikrotik/mikrotik_rb750gr3_obsolete

Both are cross referenced, tech. data was also updated: https://openwrt.org/toh/hwdata/mikrotik/mikrotik_rb750gr3


#82

My router reboots with kernel errors sometimes, it happens approx every 3-4 days.
Anyone else has it?

I use bird2 (from snapshots), l2tpv3 tunnels, pppoe and HW flowoffload (with SW flowoffload I have the same).
FW 18.06.1


#83

18.06.1 won't able to boot RB750Gr3. You need to use the snapshot version. I just netboot my RB750Gr3 with the latest snapshot. Some bugs when I playing around with the snapshot but once setup it is running smoothly.


#84

18.06.1 works on RB750Gr3. I have been using it for about 6 months. But I will try to switch on a snapshot version. I have already reverted to original FW (routeros) from my backup.