ramips: add support for MikroTik RouterBOARD RBM11g
authorTobias Schramm <tobleminer@gmail.com>
Mon, 25 Jun 2018 20:51:43 +0000 (22:51 +0200)
committerMathias Kresin <dev@kresin.me>
Tue, 3 Jul 2018 23:20:02 +0000 (01:20 +0200)
This commit adds support for the MikroTik RouterBOARD RBM11g.

=Hardware=

The RBM11g is a mt7621 based device featuring one GbE port and one
miniPCIe slot with a sim card socket and USB 2.0.

==Switch==

The single onboard Ethernet port is connected the CPU directly.
The internal switch of the mt7621 SoC is disabled.

==Flash==

The device has one spi nor flash chip. It is a 128 Mbit winbond 25Q128FVS
connected to CS0.

==PCIe==

The board features a single miniPCIe slot. It has a dedicated mini SIM
socket and a USB 2.0 port. Power to the miniPCIe slot is controlled via
GPIO9.

==USB==

There are no external USB ports.

==Power==

The board can accept both, passive PoE and external power via a 2.1 mm
barrel jack (center-positive). The input voltage range is 11-32 V.

==Serial port==

The device does have an onboard UART on an unpopulated header next to the
flash chip:

GND: pin 2
 TX: pin 7
 RX: pin 6

Settings: 115200, 8N1

See below illustration for positioning of the header.

0 = screw hole
* = some pin
T = TX  pin
R = RX  pin
G = GND pin

Pinout:
+---------------
|O
|             __
|            /  \
|            \__/
|
|
|
|               +---+
|               |RAM|
| +--+          |   |
| |**|  <- unpopulated header with UART
| |*T|          +---+
| |R*|        +--------+
| |**|        |        |
| |G*|        |  CPU   |
| +--+        |        |
|    +--+     |        |
|    |  |     +--------+
|    +--+  <- flash chip
|O
|       +-----+
|       |     |
|+--+   |     |
||  |   |     |
+---------------------

=Installation=

To install an OpenWRT image to the device two components must be built:

1. A openwrt initramfs image
2. A openwrt sysupgrade image

===initramfs & sysupgrade image===

Select target devices "Mikrotik RBM11G" in
openwrt menuconfig and build the images. This will create the images
"openwrt-ramips-mt7621-mikrotik_rbm11g-initramfs-kernel.bin" and
"openwrt-ramips-mt7621-mikrotik_rbm11g-squashfs-sysupgrade.bin" in the
output directory.

==Installing==

**Make sure to back up your RouterOS license in case you do ever want to
go back to RouterOS using "/system license output" and back up the
created license file.**

When rebooted the board will try booting via ethernet first. If your
board does not boot via ethernet automatically you will have to attach
to the serial port and set ethernet as boot device within RouterBOOT.

1. Set up a dhcp server that points the bootfile to tftp server serving
   the "openwrt-ramips-mt7621-mikrotik_rbm11g-initramfs-kernel.bin"
   initramfs image
2. Connect to ethernet port on board
3. Power on the board
4. Wait for OpenWrt to boot

Right now OpenWrt will be running with a SSH server listening. Now
OpenWrt must be flashed to the devices flash:

1. Copy "openwrt-ramips-mt7621-mikrotik_rbm11g-squashfs-sysupgrade.bin"
   to the device using scp.
2. Write openwrt to flash using "sysupgrade
   openwrt-ramips-mt7621-mikrotik_rbm11g-squashfs-sysupgrade.bin"

Once the flashing completes the board will reboot. Disconnect from the
devices ethernet port or stop the DHCP/TFTP server to prevent the device
from booting via ethernet again.
The device should now boot straight to OpenWrt.

Signed-off-by: Tobias Schramm <tobleminer@gmail.com>
target/linux/ramips/base-files/etc/board.d/01_leds
target/linux/ramips/base-files/etc/board.d/02_network
target/linux/ramips/base-files/etc/diag.sh
target/linux/ramips/base-files/lib/upgrade/platform.sh
target/linux/ramips/dts/RBM11G.dts [new file with mode: 0644]
target/linux/ramips/image/mt7621.mk

index 9ed834eb5bede105c0c7957e3254f98d7cdcaa58..b424c759dbd7dbba2936241b4aa8086d4d04cc51 100755 (executable)
@@ -262,6 +262,14 @@ m2m)
        set_wifi_led "$boardname:blue:wifi"
        ucidef_set_led_netdev "eth" "Ethernet" "$boardname:green:wan" "eth0"
        ;;
+mikrotik,rbm11g)
+       ucidef_set_rssimon "wlan0" "200000" "1"
+       ucidef_set_led_rssi "rssilow" "RSSILOW" "$boardname:green:rssi0" "wlan0" "1" "100"
+       ucidef_set_led_rssi "rssimediumlow" "RSSIMEDIUMLOW" "$boardname:green:rssi1" "wlan0" "20" "100"
+       ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "$boardname:green:rssi2" "wlan0" "40" "100"
+       ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "$boardname:green:rssi3" "wlan0" "60" "100"
+       ucidef_set_led_rssi "rssiveryhigh" "RSSIVERYHIGH" "$boardname:green:rssi4" "wlan0" "80" "100"
+       ;;
 miniembplug)
        set_wifi_led "$boardname:red:wlan"
        set_usb_led "$boardname:green:mobile"
index 7b624090c34137fa1554d220870c5dfdea310b8b..1303bcf8ca0905f940bf9c8ddd4cbdc2f3080a94 100755 (executable)
@@ -52,6 +52,7 @@ ramips_setup_interfaces()
        linkits7688 | \
        m2m|\
        microwrt|\
+       mikrotik,rbm11g|\
        mpr-a2|\
        ncs601w|\
        omega2 | \
index dd7a646a04b1f870aed1570c93129da90efd2424..ed6c409e0f3ab6a80a982bd1882b2b895e65b9ec 100644 (file)
@@ -209,8 +209,9 @@ get_status_led() {
        m4-8M)
                status_led="m4:blue:status"
                ;;
+       mikrotik,rbm11g|\
        mikrotik,rbm33g)
-               status_led="rbm33g:green:usr"
+               status_led="$boardname:green:usr"
                ;;
        miwifi-mini|\
        zte-q7)
index 26236047b442221ce631c7fa0c1bc3a89b37c7db..3511f828ce4ee227ed39931ddcf1b36512c68e0a 100755 (executable)
@@ -297,6 +297,7 @@ platform_check_image() {
                nand_do_platform_check "$board" "$1"
                return $?;
                ;;
+       mikrotik,rbm11g|\
        mikrotik,rbm33g|\
        re350-v1)
                [ "$magic" != "01000000" ] && {
@@ -323,6 +324,7 @@ platform_pre_upgrade() {
        local board=$(board_name)
 
        case "$board" in
+       mikrotik,rbm11g|\
        mikrotik,rbm33g)
                [ -z "$(rootfs_type)" ] && mtd erase firmware
                ;;
diff --git a/target/linux/ramips/dts/RBM11G.dts b/target/linux/ramips/dts/RBM11G.dts
new file mode 100644 (file)
index 0000000..9288e96
--- /dev/null
@@ -0,0 +1,131 @@
+/dts-v1/;
+
+#include "mt7621.dtsi"
+
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       compatible = "mikrotik,rbm11g", "mediatek,mt7621-soc";
+       model = "MikroTik RBM11G";
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x10000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200";
+       };
+
+       gpio-leds {
+               compatible = "gpio-leds";
+
+               usr {
+                       label = "rbm11g:green:usr";
+                       gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>;
+               };
+
+               rssi0 {
+                       label = "rbm11g:green:rssi0";
+                       gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
+               };
+
+               rssi1 {
+                       label = "rbm11g:green:rssi1";
+                       gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
+               };
+
+               rssi2 {
+                       label = "rbm11g:green:rssi2";
+                       gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
+               };
+
+               rssi3 {
+                       label = "rbm11g:green:rssi3";
+                       gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
+               };
+
+               rssi4 {
+                       label = "rbm11g:green:rssi4";
+                       gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       gpio-keys-polled {
+               compatible = "gpio-keys-polled";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               poll-interval = <20>;
+               res {
+                       label = "reset";
+                       gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+       };
+
+       pcie0_vcc_reg {
+               compatible = "regulator-fixed";
+               regulator-name = "pcie0_vcc";
+
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&gpio0 9 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+};
+
+
+&spi0 {
+       status = "okay";
+
+       w25q128@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <3125000>;
+
+               partition@0 {
+                       label = "routerboot";
+                       reg = <0x000000 0x00F000>;
+                       read-only;
+               };
+
+               factory: partition@f000 {
+                       label = "factory";
+                       reg = <0x00F000 0x031000>;
+                       read-only;
+               };
+
+               partition@40000 {
+                       label = "firmware";
+                       reg = <0x040000 0xFC0000>;
+               };
+       };
+};
+
+&ethernet {
+       mtd-mac-address = <&factory 0x0010>;
+       mtd-mac-address-increment = <1>;
+};
+
+
+&pinctrl {
+       state_default: pinctrl0 {
+               gpio {
+                       ralink,group = "uart2", "wdt", "rgmii2";
+                       ralink,function = "gpio";
+               };
+       };
+};
+
+&i2c {
+       status = "okay";
+};
+
+&pcie {
+       status = "okay";
+};
index 778f3d6bf84a51c737209208ac6bb754576a97ac..eedca7d1907809ebac28a95bb2f7aa970eb40123 100644 (file)
@@ -247,6 +247,19 @@ define Device/mikrotik_rbm33g
 endef
 TARGET_DEVICES += mikrotik_rbm33g
 
+define Device/mikrotik_rbm11g
+  DTS := RBM11G
+  BLOCKSIZE := 64k
+  IMAGE_SIZE := 16128k
+  DEVICE_TITLE := MikroTik RBM11G
+  LOADER_TYPE := elf
+  PLATFORM := mt7621
+  KERNEL := kernel-bin | patch-dtb | lzma | loader-kernel
+  IMAGE/sysupgrade.bin := append-kernel | kernel2minor -s 1024 | pad-to $$$$(BLOCKSIZE) | \
+       append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
+endef
+TARGET_DEVICES += mikrotik_rbm11g
+
 define Device/re350-v1
   DTS := RE350
   DEVICE_TITLE := TP-LINK RE350 v1