[OpenWrt-Devel] ramips: add support for GL.iNet microuter-N300
diff mbox series

Message ID 20200126222605.152990-1-mail@david-bauer.net
State Accepted
Delegated to: David Bauer
Headers show
Series
  • [OpenWrt-Devel] ramips: add support for GL.iNet microuter-N300
Related show

Commit Message

David Bauer Jan. 26, 2020, 10:26 p.m. UTC
The GL.iNet microuter-N300 (internally referred as MT300N-v4) is a
pocket-size travel router. It is essentially identical to the VIXMINI
(internally referred as MT300N-v3) but with double the RAM and
SPI-flash.

Hardware
--------
SoC:   MediaTek MT7628NN
RAM:   128M DDR2
FLASH: 16M
LED:   Power - WLAN
BTN:   Reset
UART:  115200 8N1
       TX and RX are labled on the board as pads next to the SoC

Installation via web-interface
------------------------------
1. Visit the web-interface at 192.168.8.1
   Note: The ethernet port is by default WAN. So you need to connect to
   the router via WiFi

2. Navigate to the Update tab on the left side.

3. Select "Local Update"

4. Upload the OpenWrt sysupgrade image.
   Note: Make sure you select not to preserve the configuration.

Installation via U-Boot
-----------------------
1. Hold down the reset button while powering on the device.
   Wait for the LED to flash 5 times.

2. Assign yourself a static IPv4 in 192.168.1.0/24

3. Upload the OpenWrt sysupgrade image at 192.168.1.1.

Signed-off-by: David Bauer <mail@david-bauer.net>
---
 .../dts/mt7628an_glinet_microuter-n300.dts    |  21 ++++
 .../ramips/dts/mt7628an_glinet_vixmini.dts    |  97 ++--------------
 .../mt7628an_glinet_vixmini_microuter.dtsi    | 104 ++++++++++++++++++
 target/linux/ramips/image/mt76x8.mk           |   8 ++
 .../mt76x8/base-files/etc/board.d/02_network  |   1 +
 5 files changed, 141 insertions(+), 90 deletions(-)
 create mode 100644 target/linux/ramips/dts/mt7628an_glinet_microuter-n300.dts
 create mode 100644 target/linux/ramips/dts/mt7628an_glinet_vixmini_microuter.dtsi

Comments

Adrian Schmutzler Jan. 28, 2020, 4:34 p.m. UTC | #1
Hi David,

some nitpick comments below.

> -----Original Message-----
> From: openwrt-devel [mailto:openwrt-devel-bounces@lists.openwrt.org] On
> Behalf Of David Bauer
> Sent: Sonntag, 26. Januar 2020 23:26
> To: openwrt-devel@lists.openwrt.org
> Subject: [OpenWrt-Devel] [PATCH] ramips: add support for GL.iNet microuter-
> N300
> 
> The GL.iNet microuter-N300 (internally referred as MT300N-v4) is a
> pocket-size travel router. It is essentially identical to the VIXMINI
> (internally referred as MT300N-v3) but with double the RAM and
> SPI-flash.

One could consider adding the v3/v4 names with the DEVICE_ALT0 syntax.

> 
> Hardware
> --------
> SoC:   MediaTek MT7628NN
> RAM:   128M DDR2
> FLASH: 16M
> LED:   Power - WLAN
> BTN:   Reset
> UART:  115200 8N1
>        TX and RX are labled on the board as pads next to the SoC
> 
> Installation via web-interface
> ------------------------------
> 1. Visit the web-interface at 192.168.8.1
>    Note: The ethernet port is by default WAN. So you need to connect to
>    the router via WiFi
> 
> 2. Navigate to the Update tab on the left side.
> 
> 3. Select "Local Update"
> 
> 4. Upload the OpenWrt sysupgrade image.
>    Note: Make sure you select not to preserve the configuration.
> 
> Installation via U-Boot
> -----------------------
> 1. Hold down the reset button while powering on the device.
>    Wait for the LED to flash 5 times.
> 
> 2. Assign yourself a static IPv4 in 192.168.1.0/24
> 
> 3. Upload the OpenWrt sysupgrade image at 192.168.1.1.
> 
> Signed-off-by: David Bauer <mail@david-bauer.net>
> ---
>  .../dts/mt7628an_glinet_microuter-n300.dts    |  21 ++++
>  .../ramips/dts/mt7628an_glinet_vixmini.dts    |  97 ++--------------
>  .../mt7628an_glinet_vixmini_microuter.dtsi    | 104 ++++++++++++++++++
>  target/linux/ramips/image/mt76x8.mk           |   8 ++
>  .../mt76x8/base-files/etc/board.d/02_network  |   1 +
>  5 files changed, 141 insertions(+), 90 deletions(-)
>  create mode 100644 target/linux/ramips/dts/mt7628an_glinet_microuter-
> n300.dts
>  create mode 100644
> target/linux/ramips/dts/mt7628an_glinet_vixmini_microuter.dtsi
> 
> diff --git a/target/linux/ramips/dts/mt7628an_glinet_microuter-n300.dts
> b/target/linux/ramips/dts/mt7628an_glinet_microuter-n300.dts
> new file mode 100644
> index 0000000000..742cd6a8ef
> --- /dev/null
> +++ b/target/linux/ramips/dts/mt7628an_glinet_microuter-n300.dts
> @@ -0,0 +1,21 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
> +/dts-v1/;
> +
> +#include "mt7628an_glinet_vixmini_microuter.dtsi"
> +
> +/{

Typically we have a space in-between here "/{" -> "/ {", but looks like it's
missing for vixmini as well.

> +	compatible = "glinet,microuter-n300", "mediatek,mt7628an-soc";
> +	model = "GL.iNet microuter-N300";
> +};
> +
> +&led_power_blue {

If there is only one color per type, I'd personally remove the color from the
label (-> led_power for this case).

> +	label = "microuter-n300:blue:power";
> +};
> +
> +&led_wlan_white {
> +	label = "microuter-n300:white:wlan";
> +};
> +
> +&firmware_part {
> +		reg = <0x50000 0xfb0000>;
> +};
> diff --git a/target/linux/ramips/dts/mt7628an_glinet_vixmini.dts
> b/target/linux/ramips/dts/mt7628an_glinet_vixmini.dts
> index 0935ec869b..9cdd9a0e14 100644
> --- a/target/linux/ramips/dts/mt7628an_glinet_vixmini.dts
> +++ b/target/linux/ramips/dts/mt7628an_glinet_vixmini.dts
> @@ -1,104 +1,21 @@
>  // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
>  /dts-v1/;
> 
> -#include "mt7628an.dtsi"
> -
> -#include <dt-bindings/gpio/gpio.h>
> -#include <dt-bindings/input/input.h>
> +#include "mt7628an_glinet_vixmini_microuter.dtsi"
> 
>  /{

Space?

>  	compatible = "glinet,vixmini", "mediatek,mt7628an-soc";
>  	model = "GL.iNet VIXMINI";
> -
> -	aliases {
> -		led-boot = &led_power;
> -		led-failsafe = &led_power;
> -		led-running = &led_power;
> -		led-upgrade = &led_power;
> -	};
> -
> -	chosen {
> -		bootargs = "console=ttyS0,115200";
> -	};
> -
> -	leds {
> -		compatible = "gpio-leds";
> -
> -		led_power: power {
> -			label = "vixmini:blue:power";
> -			default-state = "on";
> -			gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
> -		};
> -
> -		wlan {
> -			label = "vixmini:white:wlan";
> -			gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
> -			linux,default-trigger = "phy0tpt";
> -		};
> -	};
> -
> -	keys {
> -		compatible = "gpio-keys";
> -
> -		reset {
> -			label = "reset";
> -			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
> -			linux,code = <KEY_RESTART>;
> -		};
> -	};
>  };
> 
> -&state_default {
> -	gpio {
> -		ralink,group = "wdt", "wled_an", "p1led_an";
> -		ralink,function = "gpio";
> -	};
> +&led_power_blue {
> +	label = "vixmini:blue:power";
>  };
> 
> -&ethernet {
> -	mtd-mac-address = <&factory 0x4>;
> +&led_wlan_white {
> +	label = "vixmini:white:wlan";
>  };
> 
> -&wmac {
> -	status = "okay";
> -};
> -
> -&spi0 {
> -	status = "okay";
> -
> -	flash@0 {
> -		compatible = "jedec,spi-nor";
> -		reg = <0>;
> -		spi-max-frequency = <10000000>;
> -
> -		partitions {
> -			compatible = "fixed-partitions";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -
> -			partition@0 {
> -				label = "u-boot";
> -				reg = <0x0 0x30000>;
> -				read-only;
> -			};
> -
> -			partition@30000 {
> -				label = "u-boot-env";
> -				reg = <0x30000 0x10000>;
> -				read-only;
> -			};
> -
> -			factory: partition@40000 {
> -				label = "factory";
> -				reg = <0x40000 0x10000>;
> -				read-only;
> -			};
> -
> -			partition@50000 {
> -				compatible = "denx,uimage";
> -				label = "firmware";
> -				reg = <0x50000 0x7b0000>;
> -			};
> -		};
> -	};
> +&firmware_part {
> +		reg = <0x50000 0x7b0000>;
>  };
> diff --git a/target/linux/ramips/dts/mt7628an_glinet_vixmini_microuter.dtsi
> b/target/linux/ramips/dts/mt7628an_glinet_vixmini_microuter.dtsi
> new file mode 100644
> index 0000000000..b5611ac11e
> --- /dev/null
> +++ b/target/linux/ramips/dts/mt7628an_glinet_vixmini_microuter.dtsi
> @@ -0,0 +1,104 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
> +
> +#include "mt7628an.dtsi"
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +
> +/{

Space missing here again (see above).

> +	aliases {
> +		led-boot = &led_power_blue;
> +		led-failsafe = &led_power_blue;
> +		led-running = &led_power_blue;
> +		led-upgrade = &led_power_blue;
> +
> +		label-mac-device = &ethernet;

I'd have done this in a separate commit, or at least added a comment to the
commit message.

> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200";
> +	};
> +
> +	leds {
> +		compatible = "gpio-leds";
> +
> +		led_power_blue: power {
> +			/* Name is set device-specific */
> +			gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
> +		};
> +
> +		led_wlan_white: wlan {
> +			/* Name is set device-specific */
> +			gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
> +			linux,default-trigger = "phy0tpt";
> +		};
> +	};
> +
> +	keys {
> +		compatible = "gpio-keys";
> +
> +		reset {
> +			label = "reset";
> +			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
> +			linux,code = <KEY_RESTART>;
> +		};
> +	};
> +};
> +
> +&state_default {
> +	gpio {
> +		ralink,group = "wdt", "wled_an", "p1led_an";
> +		ralink,function = "gpio";
> +	};
> +};
> +
> +&ethernet {
> +	mtd-mac-address = <&factory 0x4>;
> +};
> +
> +&wmac {
> +	status = "okay";
> +};
> +
> +&spi0 {
> +	status = "okay";
> +
> +	flash@0 {
> +		compatible = "jedec,spi-nor";
> +		reg = <0>;
> +		spi-max-frequency = <10000000>;
> +
> +		partitions: partitions {
> +			compatible = "fixed-partitions";
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +
> +			partition@0 {
> +				label = "u-boot";
> +				reg = <0x0 0x30000>;
> +				read-only;
> +			};
> +
> +			partition@30000 {
> +				label = "u-boot-env";
> +				reg = <0x30000 0x10000>;
> +				read-only;
> +			};
> +
> +			factory: partition@40000 {
> +				label = "factory";
> +				reg = <0x40000 0x10000>;
> +				read-only;
> +			};
> +
> +			/*
> +			 * Firmware-partition size is model-specific
> +			 * due to different flash sizes.
> +			 */
> +			firmware_part: partition@50000 {

Why not just call it "firmware" corresponding to the label and how we do it with
factory?

> +				compatible = "denx,uimage";
> +				label = "firmware";
> +			};
> +		};
> +	};
> +};
> diff --git a/target/linux/ramips/image/mt76x8.mk
> b/target/linux/ramips/image/mt76x8.mk
> index 5ddeec14d5..37cac84229 100644
> --- a/target/linux/ramips/image/mt76x8.mk
> +++ b/target/linux/ramips/image/mt76x8.mk
> @@ -70,6 +70,14 @@ define Device/glinet_gl-mt300n-v2
>  endef
>  TARGET_DEVICES += glinet_gl-mt300n-v2
> 
> +define Device/glinet_microuter-n300
> +  IMAGE_SIZE := 16064k
> +  DEVICE_VENDOR := GL.iNet
> +  DEVICE_MODEL := microuter-N300
> +  SUPPORTED_DEVICES += microuter-n300

That's needed for GLinet's OpenWrt?

Best

Adrian

> +endef
> +TARGET_DEVICES += glinet_microuter-n300
> +
>  define Device/glinet_vixmini
>    IMAGE_SIZE := 7872k
>    DEVICE_VENDOR := GL.iNet
> diff --git a/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
> b/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
> index b036eb76e6..259a257f16 100755
> --- a/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
> +++ b/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
> @@ -33,6 +33,7 @@ ramips_setup_interfaces()
>  		ucidef_add_switch "switch0" \
>  			"1:lan" "0:wan" "6@eth0"
>  		;;
> +	glinet,microuter-n300|\
>  	glinet,vixmini)
>  		ucidef_add_switch "switch0" \
>  			"0:lan" "6@eth0"
> --
> 2.25.0
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
David Bauer Jan. 28, 2020, 6:47 p.m. UTC | #2
Hello Adrian,

On 1/28/20 5:34 PM, Adrian Schmutzler wrote:
>> The GL.iNet microuter-N300 (internally referred as MT300N-v4) is a
>> pocket-size travel router. It is essentially identical to the VIXMINI
>> (internally referred as MT300N-v3) but with double the RAM and
>> SPI-flash.
> 
> One could consider adding the v3/v4 names with the DEVICE_ALT0 syntax.

The naming for these devices is only used in their OpenWrt fork. I wouldn't
include this in OpenWrt, as it's too abstract.

> Typically we have a space in-between here "/{" -> "/ {", but looks like it's
> missing for vixmini as well.

You are right, will fix this.

> 
>> +	compatible = "glinet,microuter-n300", "mediatek,mt7628an-soc";
>> +	model = "GL.iNet microuter-N300";
>> +};
>> +
>> +&led_power_blue {
> 
> If there is only one color per type, I'd personally remove the color from the
> label (-> led_power for this case).

This is one LED on the casing with two colors and two independent functions,
therefore including full information here.

>> diff --git a/target/linux/ramips/dts/mt7628an_glinet_vixmini_microuter.dtsi
>> b/target/linux/ramips/dts/mt7628an_glinet_vixmini_microuter.dtsi
>> new file mode 100644
>> index 0000000000..b5611ac11e
>> --- /dev/null
>> +++ b/target/linux/ramips/dts/mt7628an_glinet_vixmini_microuter.dtsi
>> @@ -0,0 +1,104 @@
>> +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
>> +
>> +#include "mt7628an.dtsi"
>> +
>> +#include <dt-bindings/gpio/gpio.h>
>> +#include <dt-bindings/input/input.h>
>> +
>> +/{
> 
> Space missing here again (see above).
> 
>> +	aliases {
>> +		led-boot = &led_power_blue;
>> +		led-failsafe = &led_power_blue;
>> +		led-running = &led_power_blue;
>> +		led-upgrade = &led_power_blue;
>> +
>> +		label-mac-device = &ethernet;
> 
> I'd have done this in a separate commit, or at least added a comment to the
> commit message.

Will add this to the commit message.

>> +	};
>> +
>> +	chosen {
>> +		bootargs = "console=ttyS0,115200";
>> +	};
>> +
>> +	leds {
>> +		compatible = "gpio-leds";
>> +
>> +		led_power_blue: power {
>> +			/* Name is set device-specific */
>> +			gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
>> +		};
>> +
>> +		led_wlan_white: wlan {
>> +			/* Name is set device-specific */
>> +			gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
>> +			linux,default-trigger = "phy0tpt";
>> +		};
>> +	};
>> +
>> +	keys {
>> +		compatible = "gpio-keys";
>> +
>> +		reset {
>> +			label = "reset";
>> +			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
>> +			linux,code = <KEY_RESTART>;
>> +		};
>> +	};
>> +};
>> +
>> +&state_default {
>> +	gpio {
>> +		ralink,group = "wdt", "wled_an", "p1led_an";
>> +		ralink,function = "gpio";
>> +	};
>> +};
>> +
>> +&ethernet {
>> +	mtd-mac-address = <&factory 0x4>;
>> +};
>> +
>> +&wmac {
>> +	status = "okay";
>> +};
>> +
>> +&spi0 {
>> +	status = "okay";
>> +
>> +	flash@0 {
>> +		compatible = "jedec,spi-nor";
>> +		reg = <0>;
>> +		spi-max-frequency = <10000000>;
>> +
>> +		partitions: partitions {
>> +			compatible = "fixed-partitions";
>> +			#address-cells = <1>;
>> +			#size-cells = <1>;
>> +
>> +			partition@0 {
>> +				label = "u-boot";
>> +				reg = <0x0 0x30000>;
>> +				read-only;
>> +			};
>> +
>> +			partition@30000 {
>> +				label = "u-boot-env";
>> +				reg = <0x30000 0x10000>;
>> +				read-only;
>> +			};
>> +
>> +			factory: partition@40000 {
>> +				label = "factory";
>> +				reg = <0x40000 0x10000>;
>> +				read-only;
>> +			};
>> +
>> +			/*
>> +			 * Firmware-partition size is model-specific
>> +			 * due to different flash sizes.
>> +			 */
>> +			firmware_part: partition@50000 {
> 
> Why not just call it "firmware" corresponding to the label and how we do it with
> factory?

For me, adding contextual information to a label makes it easier to
understand it's origin. As neither the specification nor upstream does
specify a naming convention for labels, this should be fine.

>> diff --git a/target/linux/ramips/image/mt76x8.mk
>> b/target/linux/ramips/image/mt76x8.mk
>> index 5ddeec14d5..37cac84229 100644
>> --- a/target/linux/ramips/image/mt76x8.mk
>> +++ b/target/linux/ramips/image/mt76x8.mk
>> @@ -70,6 +70,14 @@ define Device/glinet_gl-mt300n-v2
>>  endef
>>  TARGET_DEVICES += glinet_gl-mt300n-v2
>>
>> +define Device/glinet_microuter-n300
>> +  IMAGE_SIZE := 16064k
>> +  DEVICE_VENDOR := GL.iNet
>> +  DEVICE_MODEL := microuter-N300
>> +  SUPPORTED_DEVICES += microuter-n300
> 
> That's needed for GLinet's OpenWrt?

Yes, otherwise the upgrade GUI rejects the image.

Best wishes
David
Adrian Schmutzler Jan. 29, 2020, 1:51 p.m. UTC | #3
Hi David,

On 1/28/20 5:34 PM, Adrian Schmutzler wrote:
>> The GL.iNet microuter-N300 (internally referred as MT300N-v4) is a
>> pocket-size travel router. It is essentially identical to the VIXMINI
>> (internally referred as MT300N-v3) but with double the RAM and
>> SPI-flash.

thanks for the response, all fine with me.

Best

Adrian

Patch
diff mbox series

diff --git a/target/linux/ramips/dts/mt7628an_glinet_microuter-n300.dts b/target/linux/ramips/dts/mt7628an_glinet_microuter-n300.dts
new file mode 100644
index 0000000000..742cd6a8ef
--- /dev/null
+++ b/target/linux/ramips/dts/mt7628an_glinet_microuter-n300.dts
@@ -0,0 +1,21 @@ 
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "mt7628an_glinet_vixmini_microuter.dtsi"
+
+/{
+	compatible = "glinet,microuter-n300", "mediatek,mt7628an-soc";
+	model = "GL.iNet microuter-N300";
+};
+
+&led_power_blue {
+	label = "microuter-n300:blue:power";
+};
+
+&led_wlan_white {
+	label = "microuter-n300:white:wlan";
+};
+
+&firmware_part {
+		reg = <0x50000 0xfb0000>;
+};
diff --git a/target/linux/ramips/dts/mt7628an_glinet_vixmini.dts b/target/linux/ramips/dts/mt7628an_glinet_vixmini.dts
index 0935ec869b..9cdd9a0e14 100644
--- a/target/linux/ramips/dts/mt7628an_glinet_vixmini.dts
+++ b/target/linux/ramips/dts/mt7628an_glinet_vixmini.dts
@@ -1,104 +1,21 @@ 
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 /dts-v1/;
 
-#include "mt7628an.dtsi"
-
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
+#include "mt7628an_glinet_vixmini_microuter.dtsi"
 
 /{
 	compatible = "glinet,vixmini", "mediatek,mt7628an-soc";
 	model = "GL.iNet VIXMINI";
-
-	aliases {
-		led-boot = &led_power;
-		led-failsafe = &led_power;
-		led-running = &led_power;
-		led-upgrade = &led_power;
-	};
-
-	chosen {
-		bootargs = "console=ttyS0,115200";
-	};
-
-	leds {
-		compatible = "gpio-leds";
-
-		led_power: power {
-			label = "vixmini:blue:power";
-			default-state = "on";
-			gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
-		};
-
-		wlan {
-			label = "vixmini:white:wlan";
-			gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
-			linux,default-trigger = "phy0tpt";
-		};
-	};
-
-	keys {
-		compatible = "gpio-keys";
-
-		reset {
-			label = "reset";
-			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
-			linux,code = <KEY_RESTART>;
-		};
-	};
 };
 
-&state_default {
-	gpio {
-		ralink,group = "wdt", "wled_an", "p1led_an";
-		ralink,function = "gpio";
-	};
+&led_power_blue {
+	label = "vixmini:blue:power";
 };
 
-&ethernet {
-	mtd-mac-address = <&factory 0x4>;
+&led_wlan_white {
+	label = "vixmini:white:wlan";
 };
 
-&wmac {
-	status = "okay";
-};
-
-&spi0 {
-	status = "okay";
-
-	flash@0 {
-		compatible = "jedec,spi-nor";
-		reg = <0>;
-		spi-max-frequency = <10000000>;
-
-		partitions {
-			compatible = "fixed-partitions";
-			#address-cells = <1>;
-			#size-cells = <1>;
-
-			partition@0 {
-				label = "u-boot";
-				reg = <0x0 0x30000>;
-				read-only;
-			};
-
-			partition@30000 {
-				label = "u-boot-env";
-				reg = <0x30000 0x10000>;
-				read-only;
-			};
-
-			factory: partition@40000 {
-				label = "factory";
-				reg = <0x40000 0x10000>;
-				read-only;
-			};
-
-			partition@50000 {
-				compatible = "denx,uimage";
-				label = "firmware";
-				reg = <0x50000 0x7b0000>;
-			};
-		};
-	};
+&firmware_part {
+		reg = <0x50000 0x7b0000>;
 };
diff --git a/target/linux/ramips/dts/mt7628an_glinet_vixmini_microuter.dtsi b/target/linux/ramips/dts/mt7628an_glinet_vixmini_microuter.dtsi
new file mode 100644
index 0000000000..b5611ac11e
--- /dev/null
+++ b/target/linux/ramips/dts/mt7628an_glinet_vixmini_microuter.dtsi
@@ -0,0 +1,104 @@ 
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7628an.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/{
+	aliases {
+		led-boot = &led_power_blue;
+		led-failsafe = &led_power_blue;
+		led-running = &led_power_blue;
+		led-upgrade = &led_power_blue;
+
+		label-mac-device = &ethernet;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_power_blue: power {
+			/* Name is set device-specific */
+			gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
+		};
+
+		led_wlan_white: wlan {
+			/* Name is set device-specific */
+			gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy0tpt";
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		reset {
+			label = "reset";
+			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+		};
+	};
+};
+
+&state_default {
+	gpio {
+		ralink,group = "wdt", "wled_an", "p1led_an";
+		ralink,function = "gpio";
+	};
+};
+
+&ethernet {
+	mtd-mac-address = <&factory 0x4>;
+};
+
+&wmac {
+	status = "okay";
+};
+
+&spi0 {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <10000000>;
+
+		partitions: partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				label = "u-boot";
+				reg = <0x0 0x30000>;
+				read-only;
+			};
+
+			partition@30000 {
+				label = "u-boot-env";
+				reg = <0x30000 0x10000>;
+				read-only;
+			};
+
+			factory: partition@40000 {
+				label = "factory";
+				reg = <0x40000 0x10000>;
+				read-only;
+			};
+
+			/*
+			 * Firmware-partition size is model-specific
+			 * due to different flash sizes.
+			 */
+			firmware_part: partition@50000 {
+				compatible = "denx,uimage";
+				label = "firmware";
+			};
+		};
+	};
+};
diff --git a/target/linux/ramips/image/mt76x8.mk b/target/linux/ramips/image/mt76x8.mk
index 5ddeec14d5..37cac84229 100644
--- a/target/linux/ramips/image/mt76x8.mk
+++ b/target/linux/ramips/image/mt76x8.mk
@@ -70,6 +70,14 @@  define Device/glinet_gl-mt300n-v2
 endef
 TARGET_DEVICES += glinet_gl-mt300n-v2
 
+define Device/glinet_microuter-n300
+  IMAGE_SIZE := 16064k
+  DEVICE_VENDOR := GL.iNet
+  DEVICE_MODEL := microuter-N300
+  SUPPORTED_DEVICES += microuter-n300
+endef
+TARGET_DEVICES += glinet_microuter-n300
+
 define Device/glinet_vixmini
   IMAGE_SIZE := 7872k
   DEVICE_VENDOR := GL.iNet
diff --git a/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network b/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
index b036eb76e6..259a257f16 100755
--- a/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
@@ -33,6 +33,7 @@  ramips_setup_interfaces()
 		ucidef_add_switch "switch0" \
 			"1:lan" "0:wan" "6@eth0"
 		;;
+	glinet,microuter-n300|\
 	glinet,vixmini)
 		ucidef_add_switch "switch0" \
 			"0:lan" "6@eth0"