Skip to content

Commit

Permalink
ath79: support Mikrotik RouterBOARD 2011-UiAS-2HnD
Browse files Browse the repository at this point in the history
Mikrotik RouterBOARD 2011 series are AR9344-based wired routers, with
optional 2,4GHz 802.11n 2x2:2 Wi-Fi radio, with desktop or rack-mount
capability, featuring 5 gigabit Ethernet ports and 5 fast Ethernet
ports. Different variants of the board are supported using a single
image.
Bare-bones RouterBOARD 2011LS is supported using the same image.

Specification:
- Power: 10-28V input via 5,5/2,1 DC barrel jack, or terminal block on
  some boards
- CPU: AR9344 at 600 to 750MHz (configurable)
- RAM: 128MB (64MB in budget versions) DDR2
- Flash: 128MB (64MB in budget versions) NAND flash
- Gigabit Ethernet: 5 ports via AR8327 switch (eth1 to eth5)
- Fast Ethernet: 5 ports via AR9344 built-in switch (eth6 to eth10)
- SFP: single port through AR8327 switch (SGMII at port 6) - currently
  unsuppoorted
- PoE in: passive input up to 28V at eth1
- PoE out: passive output up to 28V at eth10
- USB: optional micro-AB host port or type-A host port
- Console: optional Cisco-style RS232 console at the back of the device,
  on budget devices available as 3.3V UART via testpoints
- LCD: 2" touchscreen-equipped LCD (unsupported)

Installation:
- perform TFTP boot of initramfs image as for netinstall procedure
  typical for Mikrotik devices
- when initramfs image boots, use sysupgrade to perform final
  installation.

If upgrading from ar71xx, clean installation should be performed, as the
devices now uses yafut to handle kernel image.

TODO:
- SFP port probes over I²C but neither link status information is
  available, nor data traffic or link establishment occurs.
- Unknown connection to display and touch panel, but some documentation
  is available (seemingly connected via SPI, according to Mikrotik's
  open source code at [1])

[1] https://github.com/robimarko/routeros-GPL

Signed-off-by: Lech Perczak <[email protected]>
  • Loading branch information
Leo-PL committed Jan 15, 2025
1 parent 63d59e6 commit cdfd75d
Show file tree
Hide file tree
Showing 8 changed files with 369 additions and 0 deletions.
319 changes: 319 additions & 0 deletions target/linux/ath79/dts/ar9344_mikrotik_routerboard-2011uias-2hnd.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,319 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT

#include "ar9344.dtsi"

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>

/ {
model = "MikroTik RouterBOARD 2011UiAS-2HnD";
compatible = "mikrotik,routerboard-2011uias-2hnd", "qca,ar9344";

aliases {
led-boot = &led_user;
led-failsafe = &led_user;
led-running = &led_user;
led-upgrade = &led_user;
};

keys {
compatible = "gpio-keys";

reset {
label = "reset";
linux,code = <KEY_RESTART>;
gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};

poe-in {
label = "poe-in";
linux,input-type = <EV_SW>;
linux,code = <BTN_1>;
gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
};

beeper {
compatible = "gpio-beeper";
gpios = <&gpio 22 GPIO_ACTIVE_HIGH>;
};

sfp_i2c: i2c-gpio {
status = "disabled";
compatible = "i2c-gpio";
#address-cells = <1>;
#size-cells = <0>;

pictrl-names = "default";
pinctrl-0 = <&pmx_sfp_i2c>;

sda-gpios = <&gpio 11 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
scl-gpios = <&gpio 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
i2c-gpio,delay-us = <2>;
};

sfp_port: sfp {
/*
* SFP port attached throug AR8327 port 6 isn't functional for now
* The module detects sucessfully, but lacks some GPIO definitions,
* and proper SGMII configuration isn't known yet.
*/
status = "disabled";
compatible = "sff,sfp";
i2c-bus = <&sfp_i2c>;
los-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
maximum-power-milliwatt = <1000>;
};

leds {
compatible = "gpio-leds";

led-0 {
label = "green:wlan2g";
gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
linux,default-trigger = "phy0tpt";
};
};
};

&ref {
clock-frequency = <25000000>;
};

&gpio {
nand-nce {
gpio-hog;
gpios = <14 GPIO_ACTIVE_LOW>;
output-high;
line-name = "nand-nce";
};
};

&nand {
status = "okay";

nand-ecc-mode = "soft";
nand-ecc-step-size = <2048>;
qca,nand-swap-dma;
qca,nand-scan-fixup;

partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;

partition@0 {
label = "booter";
reg = <0x0000000 0x0040000>;
read-only;
};

partition@40000 {
label = "kernel";
reg = <0x0040000 0x03c0000>;
};

partition@400000 {
label = "ubi";
reg = <0x0400000 0x0>;
};
};
};

&pinmux {
pmx_sfp_i2c: pinmux_sfp_i2c {
pinctrl-single,bits = <0x8 0x00000000 0xff000000>; /* set GPIO11 back as GPIO */
};
};

&spi {
status = "okay";

flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <25000000>;

partitions {
compatible = "mikrotik,routerboot-partitions";
#address-cells = <1>;
#size-cells = <1>;

partition@0 {
label = "routerboot";
reg = <0x0 0x0>;
read-only;
};

hard_config {
read-only;

nvmem-layout {
compatible = "fixed-layout";
#address-cells = <1>;
#size-cells = <1>;

macaddr_hardconfig_10: macaddr@10 {
compatible = "mac-base";
reg = <0x10 0x6>;
#nvmem-cell-cells = <1>;
};
};
};

bios {
size = <0x1000>;
read-only;
};

soft_config {
};
};
};
};

&mdio0 {
status = "okay";

phy0: ethernet-phy@0 {
reg = <0>;
phy-mode = "rgmii";

qca,ar8327-initvals = <
0x04 0x07C00000 /* PORT0 PAD MODE CTRL */
0x0C 0x00000080 /* PORT6 PAD MODE CTRL */
0x10 0x80000080 /* POWER_ON_STRAP */
0x50 0xc731c731 /* LED_CTRL0 */
0x54 0x00000000 /* LED_CTRL1 */
0x58 0x00000000 /* LED_CTRL2 */
0x5c 0x0030c300 /* LED_CTRL3 */
0x7c 0x0000007e /* PORT0_STATUS */
0x94 0x0000007e /* PORT6_STATUS */
0xE0 0xc70167d0 /* SGMII_CTRL */
>;

leds {
led@0 {
reg = <0>;
label = "green:eth1";
qca,led_mode = <0>;
};

led@1 {
reg = <1>;
label = "green:eth6";
qca,led_mode = <1>;
};

led@2 {
reg = <2>;
label = "backlight";
linux,default-trigger = "backlight";
// active-low; // causes the kernel to crash in driver
qca,led_mode = <1>;
};

led@3 {
reg = <3>;
label = "green:eth2";
qca,led_mode = <0>;
};

led@4 {
reg = <4>;
label = "green:eth7";
qca,led_mode = <1>;
};

led@6 {
reg = <6>;
label = "green:eth3";
qca,led_mode = <0>;
};

led@7 {
reg = <7>;
label = "green:eth8";
qca,led_mode = <1>;
};

led@9 {
reg = <9>;
label = "green:eth4";
qca,led_mode = <0>;
};

led@10 {
reg = <10>;
label = "green:eth9";
qca,led_mode = <1>;
};

led@12 {
reg = <12>;
label = "green:eth5";
qca,led_mode = <0>;
};

led@13 {
reg = <13>;
label = "green:eth10";
qca,led_mode = <1>;
};

led_user: led@14 {
reg = <14>;
label = "green:user";
qca,led_mode = <1>;
};
};
};
};

&eth0 {
status = "okay";

/* default for ar934x, except for 1000M */
pll-data = <0x6f000000 0x00000101 0x00001616>;

phy-mode = "rgmii";
phy-handle = <&phy0>;

nvmem-cells = <&macaddr_hardconfig_10 0>;
nvmem-cell-names = "mac-address";

gmac-config {
device = <&gmac>;
rgmii-gmac0 = <1>;
switch-phy-swap = <0>;
switch-only-mode = <1>;
rxd-delay = <1>;
};
};

&builtin_switch {
/delete-property/ qca,phy4-mii-enable;
};

&eth1 {
status = "okay";

nvmem-cells = <&macaddr_hardconfig_10 5>;
nvmem-cell-names = "mac-address";
};

&usb {
status = "okay";
};

&usb_phy {
status = "okay";
};

&wmac {
status = "okay";

qca,no-eeprom;
};
11 changes: 11 additions & 0 deletions target/linux/ath79/image/mikrotik.mk
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
include ./common-mikrotik.mk

define Device/mikrotik_routerboard-2011uias-2hnd
$(Device/mikrotik_nand)
SOC := ar9344
DEVICE_MODEL := RouterBOARD 2011UiAS-2HnD
DEVICE_PACKAGES += kmod-usb2 kmod-i2c-gpio kmod-sfp kmod-gpio-beeper
SUPPORTED_DEVICES += rb-2011l rb-2011il rb-2011ils \
rb-2011uas rb-2011uas-2hnd rb-2011uias \
rb-2011uias-2hnd rb-2011uias-2hnd-r2
endef
TARGET_DEVICES += mikrotik_routerboard-2011uias-2hnd

define Device/mikrotik_routerboard-493g
$(Device/mikrotik_nand)
SOC := ar7161
Expand Down
7 changes: 7 additions & 0 deletions target/linux/ath79/mikrotik/base-files/etc/board.d/01_leds
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,13 @@ board_config_update
board=$(board_name)

case "$board" in
mikrotik,routerboard-2011uias-2hnd)
ucidef_set_led_switch "eth6" "eth6" "green:eth6" "switch1" "0x20"
ucidef_set_led_switch "eth7" "eth7" "green:eth7" "switch1" "0x10"
ucidef_set_led_switch "eth8" "eth8" "green:eth8" "switch1" "0x08"
ucidef_set_led_switch "eth9" "eth9" "green:eth9" "switch1" "0x04"
ucidef_set_led_switch "eth10" "eth10" "green:eth10" "switch1" "0x02"
;;
mikrotik,routerboard-911-lite|\
mikrotik,routerboard-lhg-5nd)
ucidef_set_led_netdev "lan" "lan" "green:lan" "eth0"
Expand Down
7 changes: 7 additions & 0 deletions target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ ath79_setup_interfaces()
local board="$1"

case "$board" in
mikrotik,routerboard-2011uias-2hnd)
ucidef_add_switch "switch0" \
"0@eth0" "2:lan" "3:lan" "4:lan" "5:lan" "6:lan" "1:wan"
ucidef_add_switch "switch1" \
"0@eth1" "1:lan:5" "2:lan:4" "3:lan:3" "4:lan:2" "5:lan:1"
;;
mikrotik,routerboard-493g)
ucidef_set_interfaces_lan_wan "eth0.1 eth1.1" "eth0.2"
ucidef_add_switch "switch0" \
Expand Down Expand Up @@ -76,6 +82,7 @@ ath79_setup_macs()
label_mac="$mac_base"
lan_mac="$mac_base"
;;
mikrotik,routerboard-2011uias-2hnd|\
mikrotik,routerboard-921gs-5hpacd-15s|\
mikrotik,routerboard-922uags-5hpacd)
label_mac="$mac_base"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#
# Copyright (C) 2025 OpenWrt.org
#

. /lib/functions/uci-defaults.sh

board_config_update

board=$(board_name)

case "$board" in
mikrotik,routerboard-2011uias-2hnd)
ucidef_add_gpio_switch "usb_power_n" "USB host power" "532" "0"
ucidef_add_gpio_switch "poe_port10_out_power" "PoE outuput on port 10" "514" "1"
;;
esac

board_config_flush

exit 0
Loading

0 comments on commit cdfd75d

Please sign in to comment.