How to install to RB750GR3?

BusyBox v1.25.1 () built-in shell (ash)

     _________
    /        /\      _    ___ ___  ___
   /  LE    /  \    | |  | __|   \| __|
  /    DE  /    \   | |__| _|| |) | _|
 /________/  LE  \  |____|___|___/|___|                      lede-project.org
 \        \   DE /
  \    LE  \    /  -----------------------------------------------------------
   \  DE    \  /    Reboot (17.01.2, r3435-65eec8bd5f)
    \________\/    -----------------------------------------------------------

=== WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------
root@LEDE:~#

It worked. Thank you guys!
I think it would be nice if someone with write permissions on https://openwrt.org/toh/mikrotik/mikrotik_rb750gr3 updates there with some info from the thread.

1 Like

All registered users have write permission on this page, so why not do it yourself?

I didn't know that. Sure i can try!

@sidepipe there is one thing that i am not understanding , if i needed to patch my build of the .elf netboot image with the JEDEC chip ID to be able to netboot, how can LEDE 17.01.2 default image (which probably do not have that patch) boot successfully after flashing?

@jsalatiel That's a good question, and without looking further I wouldn't know the answer. If you flashed the initramfs image rather than the squashfs image, it would boot fine, because everything runs from RAM and doesn't need access to the flash ( other than booting, which is handled by u-boot. )

Does cat /proc/mtd show the mtd partitions? Also, does dmesg show the flash chip being recognised?

1 Like

I flashed the squashfs image.

cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00030000 00010000 "u-boot"
mtd1: 00010000 00010000 "u-boot-env"
mtd2: 00010000 00010000 "factory"
mtd3: 00fb0000 00010000 "firmware"
mtd4: 00165cd5 00010000 "kernel"
mtd5: 00e4a32b 00010000 "rootfs"
mtd6: 00c20000 00010000 "rootfs_data"

dmesg:

[    0.770000] MediaTek Nand driver init, version v2.1 Fix AHB virt2phys error
[    0.780000] spi-mt7621 1e000b00.spi: sys_freq: 50000000
[    0.800000] m25p80 spi32766.0: using chunked io (size=32)
[    0.810000] m25p80 spi32766.0: w25q128 (16384 Kbytes)
[    0.820000] 4 ofpart partitions found on MTD device spi32766.0
[    0.830000] Creating 4 MTD partitions on "spi32766.0":
[    0.840000] 0x000000000000-0x000000030000 : "u-boot"
[    0.850000] 0x000000030000-0x000000040000 : "u-boot-env"
[    0.860000] 0x000000040000-0x000000050000 : "factory"
[    0.870000] 0x000000050000-0x000001000000 : "firmware"
[    0.920000] 2 uimage-fw partitions found on MTD device firmware
[    0.930000] 0x000000050000-0x0000001b5cd5 : "kernel"
[    0.940000] 0x0000001b5cd5-0x000001000000 : "rootfs"
[    0.950000] mtd: device 5 (rootfs) set to be root filesystem
[    0.960000] 1 squashfs-split partitions found on MTD device rootfs
[    0.970000] 0x0000003e0000-0x000001000000 : "rootfs_data"
1 Like

That's a bit odd then - it may be your gr3 doesn't have the new chip and some other issue prevented it from working the first time, or it could be that LEDE has already been patched ( though last time I looked it hadn't. )

Are you sure you are on the initramfs image ?

Anyone have a compiled initramfs image with @sidepipe's patch? I tried compiling it myself but wound up with an unbootable image.

So I have been playing with hEXr3 a fair bit recently, and RouterBOOT does behave differently (not altogether unexpected) on this "new architecture" (what MikroTik calls "mmips", which I assume means multiprocessor MIPS) than it does on other RouterBOARDs I've experimented on in the past.

After some false starts, I managed to get a kernel built with MikroTik's own patches + a small OWRT userland (from the Chaos Calmer era, embedded as Initramfs) to boot on the thing. Since this kernel has MT's version of YAFFS, I had no trouble examining -- and even messing with -- the flash contents.

First, the "mmips" version of RouterBOOT doesn't give users the option to custom-partition the flash storage. I imagine this is because they have been slowly moving to smaller SPI (I believe NOR) flash chips in newer models, and RouterOS barely fits in the 16MiB it is equipped with. I guess because "dynamic" partitioning is no longer a thing, not to mention the space constraints of the flash, there is now only one partition that holds everything, not separate kernel and root partitions. In fact, RouterBOOT still passes a boot_part_size parameter to the kernel, but it is equal to the total flash size (16MiB, but expressed in bytes) since there is no longer any distinguishing between "boot_part" and the main partition.

Even so, what the RouterOS mmips kernel does is take boot_part_size, subtract 256KiB from it, and then registers the first 256KiB of NOR as mtd1 and the remaining space as mtd0. Why the heck it does this, I don't know. It calls mtd1 "RouterBootFake". RouterBOOT itself actually lives on a separate (and smaller...on my board it is 512KiB apparently) flash chip from RouterOS, and seems to fit inside a MTD partition (enumerated as mtd2 by the kernel) that is 256KiB in size...I guess they wanted to reserve the right/ability to source flash parts even smaller than 512KiB for RouterBOOT. "RouterBootFake", though, was just filled with zeros when I checked. Maybe they plan to do something with that space later; I dunno.

Where it gets interesting is that there was no file called "kernel" anywhere on the RouterOS partition. Turns out that as of RouterOS 6.x, NPKs are now just SquashFS images with a custom header at the front, but for "routeros-[arch]-6.xx.x.npk" or "system-[arch]-6.xx.x.npk", they also concatenate the kernel image(s) on the end of that file. And when you install RouterOS, that NPK is written to a part of the filesystem, and then also hard-linked to '/bootimage'. RouterBOOT looks for /bootimage in the YAFFS filesystem that starts at offset 0x40000, checks to see if it is a valid NPK, and if so, goes searching for the kernel ELF image in the NPK and boots that. And where it gets REALLY weird is that if you delete all references to the file (even /bootimage as well as the native place where the NPK is stored, /var/pdb/.../image) except for at least one (e.g., 'ln /bootimage /lost+found/qwerty' or some such thing), RouterBOOT will still be able to locate the kernel and boot it. And this still works even if you wipe out RouterBOOT settings/reset to defaults. It's as if once it has found the file on the YAFFS partition, it is "marking" it somehow in a non-visible or non-obvious way within the YAFFS structures itself.

Fortunately, mmips RouterBOOT will still also look for '/kernel' on mtd0 and boot an ELF image sans-NPK-header stored there, too, though a '/bootimage' with valid NPK header takes precedence if both are present.

It also appears as though the RBM11G and RBM33G boards (both based around the very same SoC) are supported by OpenWRT now, and the support assumes that the stock bootloader is present. There really is no reason at this point why the hEXr3/750Gr3 support can't be made to work the same way rather than require a U-Boot flash, and indeed from reading the mailing list, it sounds like things are headed in that direction. In fact, I think that the RBM11G/33G support even lays out the flash partitions the same way that RouterOS' kernel does. So the only thing that would potentially hold one back from using a stock, netbootable OpenWRT kernel with an embedded initramfs userland to monkey around with ("jailbreak") an installed RouterOS is the right set of modifications to YAFFS.

1 Like

I have gotten this working on 18.06 head.

The patches are here (for 18.06 head):
http://swm.pp.se/openwrt-rb750g3/0103-MIPS-ralink-rb750gr3-routerboot-append-dtb.patch
http://swm.pp.se/openwrt-rb750g3/0103-MIPS-ralink-rb750gr3-routerboot-append-dtsi.patch

An image that has support for the latest flash chip and can be tftp booted from Mikrotik bootloader can be found here:

http://swm.pp.se/openwrt-rb750g3/18.head.vmlinux-initramfs.elf

Then I was able to use above instructions on how to update to uboot etc, and then I used uboot to tftp flash the 18.06 squashfs nightly (not 18.06.1, didn't have support for the new flash chip). This required me to solder in a serial console though.

That yielded mtd0-mtd6 and I can then use the installation normally with opkg update/install etc.

There is really no need for all this error-prone, warranty-voiding hassle:

There's a native support patch here:
https://patchwork.ozlabs.org/patch/953454/

It's been reported working here:
https://lists.openwrt.org/pipermail/openwrt-devel/2018-October/014443.html

T.

which branches of openwrt realeses does this patch compatible with? i've tried unsuccessfully to apply the patch to 18.06.1 source code.

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
1 Like

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.

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.

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
1 Like

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

1 Like

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.

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

1 Like

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:

1 Like