Flash OpenWRT onto Mikrotik RB750Gr3
Introduction
Mikrotik is a very popular supplier of networking equipment.
They have their own operating system called RouterOS which most probably is Linux based.
RouterOS however is licensed and includes different levels of licensing for different functionalities.
To unlock a needed feature not included with the current license then requires you to upgrade which obviously involves cost.
However, the hardware itself is good and durable and it is easy to source all over the world.
Some of their models are also able to run OpenWRT as an alternative to RouterOS.
OpenWRT is OpenSource and there is no paid for licensing involved on OpenWRT.
This page will only cover the flash from RouterOS to OpenWRT on the Mikrotik RB750Gr3.
We will cover the configuration of the device once OpenWRT is running on it on a separate page.
You will need
Flash Process
Export the RouterOS License Key
It is recommended that you export the RouterOS license key in the event of returning to the original RouterOS, you might need to use it again to activate the RouterOS.
RouterOS can be accessed in various ways which include
Unfortunately the Webfig interface does not support the export of the license key. (Only upgrade)
We have to use WinBox for that.
Running WinBox on Ubuntu 20.04
sudo apt-get install wine
#cd to where the winbox64.exe program is
wine winbox64.exe
Configure the
LAN port of your Ubuntu machine to have an IP Address on the 192.168.88 subnet.
#Here our LAN interface is enp8s0
#Use ip a to discover what it is caleld on your machine
sudo ip addr add 192.168.88.10/24 dev enp8s0
Use the
LAN cable to connect to any of the
LAN ports on the Mikrotik (2-5) to your Ubuntu machine.
Go to the Neighbors tab and see if the device is listed.
Click on the listed device and click Connect to enter into its configuration.
Select System → License
Click on Export Key to export it.
Store it on a safe place
Now that we have the license key taken care of we can go to the next step which is to load the RAM based OpenWRT onto the device
Load a RAM based version of OpenWRT
Set up a BOOTP Environment
- loader.sh
#!/bin/bash
#HEADS UP substitute with the logged in user's name that you use to create this file e.g. whoami output
USER=system
#HEADS UP THIS MUST MATCH YOUR MACHINE'S LAN INTERFACE
IFNAME=enp8s0
/sbin/ip addr replace 192.168.1.10/24 dev $IFNAME
/sbin/ip link set dev $IFNAME up
/usr/sbin/dnsmasq --user=$USER \
--no-daemon \
--listen-address 192.168.1.10 \
--bind-interfaces \
-p0 \
--dhcp-authoritative \
--dhcp-range=192.168.1.100,192.168.1.200 \
--bootp-dynamic \
--dhcp-boot=openwrt-19.07.6-ramips-mt7621-mikrotik_rb750gr3-initramfs-kernel.bin \
--log-dhcp \
--enable-tftp \
--tftp-root=$(pwd)
As you can see we will serve the openwrt-19.07.6-ramips-mt7621-mikrotik_rb750gr3-initramfs-kernel.bin image to the Mikrotik.
Download this image (This was the latest 19.07 based image at the time of this writing - PLEASE CHECK IF ITS STILL THE LATEST!)
-
Make sure it is located in the same directory as the loader.sh script.
Do the following to start up the BOOTP service
#CD to where the RAM image and loader.sh files are
chmod 755 ./loader.sh
sudo ./loader.sh
#WE get the following output
[sudo] password for system:
dnsmasq: started, version 2.80 DNS disabled
dnsmasq: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth nettlehash DNSSEC loop-detect inotify dumpfile
dnsmasq-dhcp: DHCP, IP range 192.168.1.100 -- 192.168.1.200, lease time 1h
dnsmasq-tftp: TFTP root is /home/system/Documents/mt_flash
Force Mikrotik to use BOOTP
We add a note on setting the Mikrotik up to do BOOTP
Kicking off BOOTP
To force the Mikrotik to use the BOOTP environment you need to connect the Internet Port of the Mikrotik to your Linux machine. (Internet Port is Port 1 on the Mikrotik)
Press the RESET button while powering up the board.
Wait for the first beep and release the RESET button.
This is what our dnsmasq script outputs during the process
dnsmasq-dhcp: 274610437 available DHCP range: 192.168.1.100 -- 192.168.1.200
dnsmasq-dhcp: 274610437 vendor class: MMipsBoot
dnsmasq-dhcp: 274610437 tags: bootp, enp8s0
dnsmasq-dhcp: 274610437 BOOTP(enp8s0) 192.168.1.144 48:8f:5a:e3:d4:9c
dnsmasq-dhcp: 274610437 bootfile name: openwrt-19.07.6-ramips-mt7621-mikrotik_rb750gr3-initramfs-kernel.bin
dnsmasq-dhcp: 274610437 next server: 192.168.1.10
dnsmasq-dhcp: 274610437 sent size: 4 option: 1 netmask 255.255.255.0
dnsmasq-dhcp: 274610437 sent size: 4 option: 28 broadcast 192.168.1.255
dnsmasq-dhcp: 274610437 sent size: 4 option: 3 router 192.168.1.10
dnsmasq-tftp: sent /home/system/Documents/mt_flash/openwrt-19.07.6-ramips-mt7621-mikrotik_rb750gr3-initramfs-kernel.bin to 192.168.1.144
....
dnsmasq-dhcp: 3516861450 available DHCP range: 192.168.1.100 -- 192.168.1.200
dnsmasq-dhcp: 3516861450 vendor class: udhcp 1.30.1
dnsmasq-dhcp: 3516861450 client provides name: OpenWrt
dnsmasq-dhcp: 3516861450 DHCPDISCOVER(enp8s0) 48:8f:5a:e3:d4:9e
dnsmasq-dhcp: 3516861450 tags: enp8s0
dnsmasq-dhcp: 3516861450 DHCPOFFER(enp8s0) 192.168.1.146 48:8f:5a:e3:d4:9e
dnsmasq-dhcp: 3516861450 requested options: 1:netmask, 3:router, 6:dns-server, 12:hostname,
....
sudo ip addr add 192.168.1.10/24 dev enp8s0
We are all set now to flash the final version of OpenWRT onto the device.
At this stage you can still return the device back to the original RouterOS by simply rebooting it since the OpenWRT running is all in RAM.
We are however not going to do that since we want to move over to OpenWRT permanently

Flash the permanent version of OpenWRT
#Copy the *sysupgrade* file to the /tmp dir on the Mikrotik
scp openwrt-19.07.6-ramips-mt7621-mikrotik_rb750gr3-squashfs-sysupgrade.bin root@192.168.1.1:/tmp
#SSH into the Mikrotik
ssh root@192.168.1.1
#Change directory to /tmp
cd /tmp
#Do a sysupgrade
sysupgrade openwrt-19.07.6-ramips-mt7621-mikrotik_rb750gr3-squashfs-sysupgrade.bin
#USR LED will flash while it is writing to flash
#After ~2min it will stop and reboot (beeper will beep)
Congratulations you have now successfully migrated from RouterOS to OpenWRT
If it might happen so that in future you mess up the current version of OpenWRT so bad that it will not let you in, you can just repeat the BOOTP RAM image boot and repeat this step again.
This makes the RouterBoard pretty robust