GL.iNet GL-AR150 vs GL.iNET GL-MT300N-V2: FIGHT!

I need to replace a small fleet of older ar9331-based travel routers because they only have 8MB of onboard storage, so I was looking for something similar with at least 16MB of storage, a USB2 port, and 2x ethernet ports. I use these in client-mode as serial console servers rather than actual routers.

The GL.iNet GL-AR150 and GL.iNET GL-MT300N-V2 are good fits, so I decided to compare the two.

I remember looking at the yellow/mango GL.iNET GL-MT300N-V2 a couple of years ago and was not impressed. OpenWRT didn't officially support it until 2018, and the MT7628 wifi was known to be unstable and bad. But I gave it another try anyway. Fortunately it looks like most of these reliability issues are no longer a problem.

The white GL.iNet GL-AR150 has the same old super common ar9331 SoC, so it's characteristics are well known. Unfortunately, the ar9331 has an interesting bug where the USB and wifi share a clock source. IF the wifi is scanning frequencies, AND you have a USB1 device in-use, the USB port will often break and need to be reset, which is exactly what happens to me when using serial USB adapters. I usually work around it by using a USB2 hub in between.

Both devices have the same 3x LEDs, a switch, a reset button, 2.4Ghz 802.11, 2x 10/100 ethernet ports, 1 USB2 port (with GPIO on/off control), 16MB NOR flash, and use the same size chassis/boards. The GL-MT300N-V2 has the advantage of 128MB of RAM compared to the 64MB on the GL-AR150. The GL-MT300N-V2 also has a higher Mhz rated CPU, so theoretically it should be faster.

I ran a few tests with openssl and gzip to test those CPU differences and overall I'd say the mt76 CPU is 50-90% faster than the ar9331. For example a 20MB file compressed with gzip took 69 seconds on the GL-AR150, but only 40 seconds on the GL-MT300N-V2.

One downside of the GL-MT300N-V2 is that it gets much warmer than the GL-AR150; like 10C hotter at idle. It's obviously using much more USB input power. I even found that it had problems booting on one of my shitty chinese USB hubs where the GL-AR150 worked fine, because the hub wasn't putting out enough current. I blame the hub more than the router, but the problem made the power requirements apparent.

The GL-AR150 costs $2-5 USD more than the GL-MT300N-V2. Either Mediatek is giving GL.iNet a better deal on their SoCs or the historic use of the lesser-supported mt76 warranted a lower price.

Something I did not benchmark or compare with these devices was network performance beyond reliability. It's just not important to the way I use these devices. I did check iperf over the 802.11 wifi and the GL-MT300N-V2 unsurprisingly gets much better bandwidth, double overall. Note that both devices had a similar range and reliability. For most of my tests at a typical one-side-of-the-house-to-the-other distance I was doing about 15Mbps on the GL-AR150 and 30Mbps on the GL-MT300N-V2, though I did see far far more retransmits on the GL-MT300N-V2's connection. Such is the price of speed.

One strange attribute of the GL-MT300N-V2, which could be important, is that it only has a single real ethernet interface, eth0, whereas the GL-AR150 and other ar9331 devices have two, eth0 and eth1. To get the two ethernet jacks, the built-in switch is used and so the GL-MT300N-V2 has an eth0.1 and eth0.2 for it's LAN and WAN interfaces. This also means that swconfig use is mandatory, whereas it's optional on ar9331 devices like this.

Overall the GL-MT300N-V2 has come far enough along to replace my fleet so I'm probably going to go with those instead of the GL-AR150. It will fix that annoying USB port bug I sometimes run into, it will be a few dollars cheaper, I'll get double the RAM, and more performance.

1 Like

here are the openssl benchmarks

GL-AR150

OpenSSL 1.1.1g  21 Apr 2020
built on: Fri Jun 12 17:01:47 2020 UTC
options:bn(64,32) rc4(char) des(long) aes(partial) blowfish(ptr) 
compiler: mips-openwrt-linux-musl-gcc -fPIC -pthread -mabi=32 -Wa,--noexecstack -Wall -O3 -Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -fpic -ffunction-sections -fdata-sections -znow -zrelro -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DAES_ASM -DNDEBUG -DOPENSSL_PREFER_CHACHA_OVER_GCM -DOPENSSL_SMALL_FOOTPRINT
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
md5               4502.31k    12074.03k    24321.20k    32577.98k    36246.15k    36263.98k
sha1              3631.28k     9211.75k    17376.04k    22373.37k    24498.77k    24537.51k
des cbc           2893.40k     3032.82k     3064.67k     3060.66k     3065.13k     3083.07k
des ede3          1078.55k     1086.75k     1090.92k     1088.39k     1091.35k     1090.40k
aes-128 cbc       4836.40k     5365.93k     5524.27k     5564.31k     5574.96k     5563.96k
aes-192 cbc       4268.08k     4666.98k     4771.65k     4785.40k     4807.99k     4799.74k
aes-256 cbc       3764.35k     4117.85k     4195.82k     4223.83k     4230.70k     4250.98k
sha256            1967.74k     4530.81k     7889.37k     9670.27k    10363.70k    10402.19k
sha512             402.96k     1615.94k     2235.36k     3021.49k     3364.77k     3386.76k
                  sign    verify    sign/s verify/s
rsa 2048 bits 0.224667s 0.005920s      4.5    168.9
                  sign    verify    sign/s verify/s
dsa 2048 bits 0.078661s 0.074552s     12.7     13.4

| | Atheros AR9330 rev 1 | GL.iNet GL-AR150 | MIPS 24Kc V7.4 | 265.98 | 1.1.1g | 32577980 | 22373370 | 9670270 | 3021490 | 3060660 | 1088390 | 5564310 | 4785400 | 4223830 | 4.5 | 168.9 | 12.7 | 13.4 |

GL-MT300N-V2

OpenSSL 1.1.1g  21 Apr 2020
built on: Mon May 18 10:44:58 2020 UTC
options:bn(64,32) rc4(char) des(long) aes(partial) blowfish(ptr) 
compiler: mipsel-openwrt-linux-musl-gcc -fPIC -pthread -mabi=32 -Wa,--noexecstack -Wall -O3 -Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -fpic -ffunction-sections -fdata-sections -znow -zrelro -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DAES_ASM -DNDEBUG -DOPENSSL_PREFER_CHACHA_OVER_GCM -DOPENSSL_SMALL_FOOTPRINT
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
md5               6698.93k    17942.66k    36332.99k    48826.03k    54519.27k    54930.38k
sha1              5139.03k    13043.61k    24474.46k    31269.67k    34183.73k    34088.58k
des cbc           4165.53k     4360.17k     4385.85k     4380.94k     4392.89k     4345.32k
des ede3          1542.12k     1564.82k     1570.36k     1566.48k     1561.94k     1561.43k
aes-128 cbc       6906.73k     7734.98k     7915.09k     7994.05k     8029.81k     7972.08k
aes-192 cbc       6096.56k     6691.87k     6834.60k     6900.18k     6977.04k     6877.98k
aes-256 cbc       5438.89k     5884.84k     6035.86k     6067.29k     6068.66k     6073.66k
sha256            2783.30k     6406.49k    11179.47k    13669.72k    14745.60k    14751.10k
sha512             573.08k     2304.99k     3184.71k     4274.18k     4780.50k     4778.21k
                  sign    verify    sign/s verify/s
rsa 2048 bits 0.155781s 0.004093s      6.4    244.3
                  sign    verify    sign/s verify/s
dsa 2048 bits 0.054505s 0.052474s     18.3     19.1

| | MediaTek MT7628AN ver:1 eco:2 | GL-MT300N-V2 | MIPS 24KEc V5.5 | 380.92 | 1.1.1g | 48826030 | 31269670 | 13669720 | 4274180 | 4380940 | 1566480 | 7994050 | 6900180 | 6067290 | 6.4 | 244.3 | 18.3 | 19.1 |