Compile Gargoyle for Netgear R6220

I recently got a Netgear R6220 router, an AC1200 dual-band router with very impressive specs. It was awarded the best router in 2016 and now in 2019, I still think it is a very good router. It has a 2 core Mediatek MT7621 (MIPS) processor with 128 MB RAM & 128 MB ROM i.e. ample space with some good processing power. Below you can see the impressive specs. BTW: I got this for almost 15 USD which was a steal!

root@OpenWrt:~# cat /proc/cpuinfo
system type             : MediaTek MT7621 ver:1 eco:3
machine                 : Netgear R6220
processor               : 0
cpu model               : MIPS 1004Kc V2.15
BogoMIPS                : 584.90
wait instruction        : yes
microsecond timers      : yes
tlb_entries             : 32
extra interrupt vector  : yes
hardware watchpoint     : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa                     : mips1 mips2 mips32r1 mips32r2
ASEs implemented        : mips16 dsp mt
shadow register sets    : 1
kscratch registers      : 0
package                 : 0
core                    : 0
VPE                     : 0
VCED exceptions         : not available
VCEI exceptions         : not available

processor               : 1
cpu model               : MIPS 1004Kc V2.15
BogoMIPS                : 584.90
wait instruction        : yes
microsecond timers      : yes
tlb_entries             : 32
extra interrupt vector  : yes
hardware watchpoint     : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa                     : mips1 mips2 mips32r1 mips32r2
ASEs implemented        : mips16 dsp mt
shadow register sets    : 1
kscratch registers      : 0
package                 : 0
core                    : 0
VPE                     : 1
VCED exceptions         : not available
VCEI exceptions         : not available
root@OpenWrt:~# cat /proc/meminfo
MemTotal:         124016 kB
MemFree:           67696 kB
MemAvailable:      50560 kB
Buffers:            2460 kB
Cached:            12820 kB
SwapCached:            0 kB
Active:            25640 kB
Inactive:           5116 kB
Active(anon):      18372 kB
Inactive(anon):      144 kB
Active(file):       7268 kB
Inactive(file):     4972 kB
Unevictable:           0 kB
Mlocked:               0 kB
HighTotal:             0 kB
HighFree:              0 kB
LowTotal:         124016 kB
LowFree:           67696 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         15476 kB
Mapped:             2920 kB
Shmem:              3040 kB
Slab:               9628 kB
SReclaimable:       2636 kB
SUnreclaim:         6992 kB
KernelStack:         448 kB
PageTables:          336 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:       62008 kB
Committed_AS:      23588 kB
VmallocTotal:    1040376 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB

I am running OpenWRT on this router. You can use the OpenWRT information page to install OpenWRT over the stock FW.

Now OpenWRT is good but I miss some of the user-friendly features from Gargoyle FW, which is another open source FW based on OpenWRT. One of the best features is the Quota & throttling support in the UI. I can do all these things in OpenWRT but again, it is a lot of manual steps and I also want somebody like my wife to be able to manage the router as well if needed.

The current binaries available for the MT7621 does not have R6220 profile and also, it does not have the latest OpenWRT base. Hence the only option is to compile Gargoyle and create a working FW. Below are the steps for the same. The code below is self-documenting but do ask me your questions in comments as needed.

The original source is: https://github.com/ericpaulbishop/gargoyle. I have a forked version available at: https://github.com/wolverine2k/gargoyle. Start working on the master branch since that is up-to-date and being actively worked upon upstream.

git clone git@github.com:wolverine2k/gargoyle.git
cd gargoyle
git checkout master
make ramips.mt7621

If the compilation is successful, you should have the necessary binaries generated in: ramips-src/bin/targets/ramips/mt7621

Gargoyle R6220 Firmware Images

You might face error with obfsproxy-legacy which I faced. So I had to apply the patch to get it to compile. Now simply do a sysupgrade on your OpenWRT FW to enjoy Gargoyle. I will put another blog post if I find any instabilities.

More documentation on the same can be found at: https://www.gargoyle-router.com/wiki/doku.php?id=developer_documentation