The GL-MT300N A $20 hackable Linux Router

gl-mt300n

Introduction

The Gl.iNET GL-MT300N is a $21/£19 travel router designed for WIFI on the go. The device runs a custom version of OpenWRT that is easily replaced with a standard release of OpenWRT making this device an ultra cheap hackable Dual NIC router/SBC.

Specs

The Gl-MT300N is powered by a MediaTek MT7628AN SoC featuring a single core MIPS CPU @ 580Mhz, 128MB DDR2 RAM and 16Mb Flash storage. WiFi b/g/n and 2x 100Mb Ethernet Ports.

There is a single serial port internal to the case and several GPIO ports as follows:

GPIO pins on the Gl-MT300N
LabelGPIONote
No label0Controls power to the USB A port, export GPIO 0 and set its value 0/1 to control
WPS_PBC2Shared with WPS button according to docs, however this button appears not to exist
RST_PBC1Shared with Reset Button
3.3VD3.3V
LINK444Unused
LINK343Shared with toggle switch on side of device
Gl-MT300N GPIO ports

Installing OpenWRT on the Gl-MT300N

Installing OpenWRT is very simple as the device already runs a modified version of OpenWRT.

Download the latest release for the Gl-MT300N from here: http://downloads.openwrt.org/releases/19.07.5/targets/ramips/mt76x8/openwrt-19.07.5-ramips-mt76x8-gl-mt300n-v2-squashfs-sysupgrade.bin

Browse to the IP of your Gl-MT300N followed by /cgi-bin/luci/admin/system/flashops in a web browser and upload the OpenWRT image file. The system will soon reboot with a full featured openWRT image installed.

Configuring OpenWRT on the Gl-MT300N

As 16MB of flash storage isn’t a lot I purchased a 32GB SanDisk Ultra Fit flash drive from Amazon for around £6 Linked below:

Amazon UK
Amazon US

I then moved to rootfs from the flash to the USB Flash Drive using the instructions found here: https://openwrt.org/docs/guide-user/additional-software/extroot_configuration

I now have ~26GB of usable storage:

root@GL-MT300N-V2:~# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 2.5M      2.5M         0 100% /rom
tmpfs                    61.0M    944.0K     60.1M   2% /tmp
/dev/sda1                28.1G    202.3M     26.4G   1% /overlay
overlayfs:/overlay       28.1G    202.3M     26.4G   1% /
tmpfs                   512.0K         0    512.0K   0% /dev
/dev/mtdblock6           11.8M      2.3M      9.6M  19% /rwm

Benchmarks

Whilst UnixBench might seem like an unusual benchmark for a router lets look at this as if it was another cheap SBC. It performs about as expected coming in slightly faster than the first generation Raspberry Pi.

UnixBench

Bench.sh (Disk Speed)

The disk speed benchmarks below were taken using bench.sh. This is the speed of the rootfs running on a SanDisk Ultra Fit flash drive .

----------------------------------------------------------------------
 I/O Speed(1st run)    : 19.4 MB/s
 I/O Speed(2nd run)    : 12.0 MB/s
 I/O Speed(3rd run)    : 11.3 MB/s
 Average I/O speed     : 14.2 MB/s
----------------------------------------------------------------------

Power Consumption

I tested the power consumption using my Keweisi USB Power meter

Idle

The idle power consumption is tiny at 0.19A at 5.08V this is around 1 Watt which is tiny!

Gl-MT300N Power Consumption at idle

Full load

I fired up stress-ng with 4 CPU threads and a single IO thread to create an artificial load, this completely maxed out the CPU

Running stress-ng to create an artificial load on the Gl-MT300N

Amazingly the power consumption didn’t budge at all! Staying at a total of around 1W

Gl-MT300N Power Consumption at full load

Conclusion

Whilst this post doesn’t go into much of the details of how the Gl-MT300N functions as a router I hope it was entertaining to see how this device can function as a tiny Linux computer.

If you would like to try this for yourself it is currently available on Amazon at around £20:

Buy a GL.iNET GL-MT300N on Amazon UK

Buy a GL.iNET GL-MT300N on Amazon US

If you would like to see how this device functions as a router check out Ian Lim’s review here.

Leave a comment

Your email address will not be published. Required fields are marked *