Adding OpenWrt support for Netgear WNR1000v4

Just added https://openwrt.org/toh/netgear/wnr1000_v4


https://wikidevi.com/wiki/Netgear_WNR1000v4

Was able to access via telnet so I found out that the required target is most likely "ramips". According to wikidev, CPU is most likely MediaTek MT7620N.

With those specs, only four Netgear devices are currently listed here for OpenWRT: https://openwrt.org/toh/views/toh_fwdownload?dataflt[0]=supported+current+rel_%3D18.06.2&dataflt[Target_target*~]=ramips&dataflt[Brand*~]=netgear&dataflt[Subtarget*~]=mt7620

All of these appear to be repeaters.

Where do I go from here in order to get OpenWRT running on the device?
Just flash one of the four above and hope for the best?

Currently the devices runs OEM firmware 1.1.0.54.

1 Like

Flashing “seemingly related” firmware is a recipe for unrecoverable damage.

Boot log and/or dmesg from OEM firmware is the first step. From there is could range from “lucky” to weeks of work, or “not feasible”. Manufacturers offer very different hardware under the same model number with different versions.

You should be aware that the WNR1000v4 is a 4/32 device.

Suggested reading: https://openwrt.org/supported_devices/432_warning

1 Like

Not sure if okay to paste inline, but cannot find any attachment option:

# dmesg                                                                                                                                                              [358/385]
 "raspi":
0x000000000000-0x000000020000 : "Bootloader"
0x000000020000-0x000000160000 : "Kernel"
0x000000160000-0x0000003c0000 : "Rootfs"
0x0000003c0000-0x0000003e0000 : "Chinese UI"
0x0000003e0000-0x0000003f0000 : "SC Nvram"
0x0000003f0000-0x000000400000 : "WiFi Data"
rdm_major = 253
SMACCR1 -- : 0x0000000c
SMACCR0 -- : 0x43288022
Ralink APSoC Ethernet Driver Initilization. v3.0  256 rx/tx descriptors allocated, mtu = 1500!
SMACCR1 -- : 0x0000000c
SMACCR0 -- : 0x43288095
PROC INIT OK!
PPP generic driver version 2.4.2
PPP MPPE Compression module registered
NET: Registered protocol family 24
PPTP driver version 0.8.5


=== pAd = c0045000, size = 947464 ===

 RTMPAllocTxRxRingMemory, Status=0
 RTMPAllocAdapterBlock, Status=0
AP Driver version-2.7.1.6_edcca_monitor_20131222
Netfilter messages via NETLINK v0.30.
nf_conntrack version 0.5.0 (432 buckets, 1728 max)
nf_conntrack_rtsp v0.6.21 loading
GRE over IPv4 demultiplexor driver
gre: can't add protocol
nf_nat_rtsp v0.6.21 loading
ip_tables: (C) 2000-2006 Netfilter Core Team, Type=Restricted Cone
TCP cubic registered
NET: Registered protocol family 17
L2TP core driver, V2.0
PPPoL2TP kernel driver, V2.0
L2TP IP encapsulation support (L2TPv3)
L2TP netlink interface
L2TP ethernet pseudowire support (L2TPv3)
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
VFS: Mounted root (squashfs filesystem) readonly on device 31:2.
Freeing unused kernel memory: 164k freed
Algorithmics/MIPS FPU Emulator v1.5
led_pb_api: module license 'Sercomm' taints kernel.
Disabling lock debugging due to kernel taint
Register LED ID <70>
Register LED ID <40>                                                                                                                                                 [310/385]
Register LED ID <90>
Register LED ID <20>
Register LED ID <10>
Register LED ID <11>
Register LED ID <12>
Register LED ID <13>
netfilter dnshj choose interested dns queries module loaded !
init common module successful
insert firewall block module success
fake source dos protect modules is inserted
netfilter PSD and TCP/UDP Echo/Chargen Attack loaded
netfilter tcp syn flood module loaded
netfilter clamp total session for one src ip module loaded
netfilter other dos module loaded
Raeth v3.0 (Tasklet,SkbRecycle)

phy_tx_ring = 0x01635000, tx_ring = 0xa1635000

phy_rx_ring0 = 0x01636000, rx_ring0 = 0xa1636000
SMACCR1 -- : 0x0000000c
SMACCR0 -- : 0x43288095
CDMA_CSG_CFG = 81000000
GDMA1_FWD_CFG = 20710000
device eth2.1 entered promiscuous mode
device eth2 entered promiscuous mode
br0: port 1(eth2.1) entering learning state
br0: port 1(eth2.1) entering learning state
device eth2 left promiscuous mode
br0: port 1(eth2.1) entering learning state
device eth2 entered promiscuous mode
br0: port 1(eth2.1) entering learning state
br0: port 1(eth2.1) entering learning state
switch register base addr to 0xb0117014
write offset 0x0, value 0xe0000c
switch register base addr to 0xb0000000
write offset 0x60, value 0x18379d
Can't find DB for id==41
Can't find DB for id==42
Can't find DB for id==45
Can't find DB for id==45
Can't find DB for id==61
Can't find DB for id==62
Can't find DB for id==63
Can't find DB for id==64
Can't find DB for id==65
Can't find DB for id==66
Can't find DB for id==67

Can't find DB for id==68                                                                                                                                             [262/385]
device ra0 entered promiscuous mode
device ra0 left promiscuous mode
RX DESC a1ec3000  size = 2048
RTMP_TimerListAdd: add timer obj c00eda30!
RTMP_TimerListAdd: add timer obj c00a7138!
RTMP_TimerListAdd: add timer obj c00a9984!
RTMP_TimerListAdd: add timer obj c00a9a44!
RTMP_TimerListAdd: add timer obj c00a9b04!
RTMP_TimerListAdd: add timer obj c00a9bc4!
RTMP_TimerListAdd: add timer obj c00a9c84!
RTMP_TimerListAdd: add timer obj c00a9d44!
RTMP_TimerListAdd: add timer obj c00a9e04!
RTMP_TimerListAdd: add timer obj c00a9ec4!
RTMP_TimerListAdd: add timer obj c00a9f84!
RTMP_TimerListAdd: add timer obj c00aa044!
RTMP_TimerListAdd: add timer obj c00aa104!
RTMP_TimerListAdd: add timer obj c00aa1c4!
RTMP_TimerListAdd: add timer obj c00aa284!
RTMP_TimerListAdd: add timer obj c00aa344!
RTMP_TimerListAdd: add timer obj c00aa404!
RTMP_TimerListAdd: add timer obj c00aa4c4!
RTMP_TimerListAdd: add timer obj c00a710c!
RTMP_TimerListAdd: add timer obj c00a9958!
RTMP_TimerListAdd: add timer obj c00a9a18!
RTMP_TimerListAdd: add timer obj c00a9ad8!
RTMP_TimerListAdd: add timer obj c00a9b98!
RTMP_TimerListAdd: add timer obj c00a9c58!
RTMP_TimerListAdd: add timer obj c00a9d18!
RTMP_TimerListAdd: add timer obj c00a9dd8!
RTMP_TimerListAdd: add timer obj c00a9e98!
RTMP_TimerListAdd: add timer obj c00a9f58!
RTMP_TimerListAdd: add timer obj c00aa018!
RTMP_TimerListAdd: add timer obj c00aa0d8!
RTMP_TimerListAdd: add timer obj c00aa198!
RTMP_TimerListAdd: add timer obj c00aa258!
RTMP_TimerListAdd: add timer obj c00aa318!
RTMP_TimerListAdd: add timer obj c00aa3d8!
RTMP_TimerListAdd: add timer obj c00aa498!
RTMP_TimerListAdd: add timer obj c00a70e0!
RTMP_TimerListAdd: add timer obj c00a99b0!
RTMP_TimerListAdd: add timer obj c00a9a70!
RTMP_TimerListAdd: add timer obj c00a9b30!
RTMP_TimerListAdd: add timer obj c00a9bf0!
RTMP_TimerListAdd: add timer obj c00a9cb0!
RTMP_TimerListAdd: add timer obj c00a9d70!
RTMP_TimerListAdd: add timer obj c00a9e30!
RTMP_TimerListAdd: add timer obj c00a9ef0!

RTMP_TimerListAdd: add timer obj c00a9fb0!                                                                                                                           [214/385]
RTMP_TimerListAdd: add timer obj c00aa070!
RTMP_TimerListAdd: add timer obj c00aa130!
RTMP_TimerListAdd: add timer obj c00aa1f0!
RTMP_TimerListAdd: add timer obj c00aa2b0!
RTMP_TimerListAdd: add timer obj c00aa370!
RTMP_TimerListAdd: add timer obj c00aa430!
RTMP_TimerListAdd: add timer obj c00aa4f0!
RTMP_TimerListAdd: add timer obj c004e1a8!
RTMP_TimerListAdd: add timer obj c004dd9c!
RTMP_TimerListAdd: add timer obj c004e178!
RTMP_TimerListAdd: add timer obj c004e520!
RTMP_TimerListAdd: add timer obj c004e270!
RTMP_TimerListAdd: add timer obj c004e2a0!
RTMP_TimerListAdd: add timer obj c004e460!
RTMP_TimerListAdd: add timer obj c004e490!
RTMP_TimerListAdd: add timer obj c00513e0!
RTMP_TimerListAdd: add timer obj c0050fd4!
RTMP_TimerListAdd: add timer obj c00513b0!
RTMP_TimerListAdd: add timer obj c0051758!
RTMP_TimerListAdd: add timer obj c00514a8!
RTMP_TimerListAdd: add timer obj c00514d8!
RTMP_TimerListAdd: add timer obj c0051698!
RTMP_TimerListAdd: add timer obj c00516c8!
RTMP_TimerListAdd: add timer obj c0054618!
RTMP_TimerListAdd: add timer obj c005420c!
RTMP_TimerListAdd: add timer obj c00545e8!
RTMP_TimerListAdd: add timer obj c0054990!
RTMP_TimerListAdd: add timer obj c00546e0!
RTMP_TimerListAdd: add timer obj c0054710!
RTMP_TimerListAdd: add timer obj c00548d0!
RTMP_TimerListAdd: add timer obj c0054900!
RTMP_TimerListAdd: add timer obj c0057850!
RTMP_TimerListAdd: add timer obj c0057444!
RTMP_TimerListAdd: add timer obj c0057820!
RTMP_TimerListAdd: add timer obj c0057bc8!
RTMP_TimerListAdd: add timer obj c0057918!
RTMP_TimerListAdd: add timer obj c0057948!
RTMP_TimerListAdd: add timer obj c0057b08!
RTMP_TimerListAdd: add timer obj c0057b38!
RTMP_TimerListAdd: add timer obj c005aa88!
RTMP_TimerListAdd: add timer obj c005a67c!
RTMP_TimerListAdd: add timer obj c005aa58!
RTMP_TimerListAdd: add timer obj c005ae00!
RTMP_TimerListAdd: add timer obj c005ab50!
RTMP_TimerListAdd: add timer obj c005ab80!
RTMP_TimerListAdd: add timer obj c005ad40!
RTMP_TimerListAdd: add timer obj c005ad70!

RTMP_TimerListAdd: add timer obj c005dcc0!                                                                                                                           [166/385]
RTMP_TimerListAdd: add timer obj c005d8b4!
RTMP_TimerListAdd: add timer obj c005dc90!
RTMP_TimerListAdd: add timer obj c005e038!
RTMP_TimerListAdd: add timer obj c005dd88!
RTMP_TimerListAdd: add timer obj c005ddb8!
RTMP_TimerListAdd: add timer obj c005df78!
RTMP_TimerListAdd: add timer obj c005dfa8!
RTMP_TimerListAdd: add timer obj c0060ef8!
RTMP_TimerListAdd: add timer obj c0060aec!
RTMP_TimerListAdd: add timer obj c0060ec8!
RTMP_TimerListAdd: add timer obj c0061270!
RTMP_TimerListAdd: add timer obj c0060fc0!
RTMP_TimerListAdd: add timer obj c0060ff0!
RTMP_TimerListAdd: add timer obj c00611b0!
RTMP_TimerListAdd: add timer obj c00611e0!
RTMP_TimerListAdd: add timer obj c0064130!
RTMP_TimerListAdd: add timer obj c0063d24!
RTMP_TimerListAdd: add timer obj c0064100!
RTMP_TimerListAdd: add timer obj c00644a8!
RTMP_TimerListAdd: add timer obj c00641f8!
RTMP_TimerListAdd: add timer obj c0064228!
RTMP_TimerListAdd: add timer obj c00643e8!
RTMP_TimerListAdd: add timer obj c0064418!
RTMP_TimerListAdd: add timer obj c00a953c!
RTMP_TimerListAdd: add timer obj c00a9130!
RTMP_TimerListAdd: add timer obj c00a950c!
RTMP_TimerListAdd: add timer obj c00a98b4!
RTMP_TimerListAdd: add timer obj c00a9604!
RTMP_TimerListAdd: add timer obj c00a9634!
RTMP_TimerListAdd: add timer obj c00a956c!
RTMP_TimerListAdd: add timer obj c00a959c!
RTMP_TimerListAdd: add timer obj c00a95cc!
RTMP_TimerListAdd: add timer obj c00c439c!
RTMP_TimerListAdd: add timer obj c00c44b8!
RTMP_TimerListAdd: add timer obj c00c43c8!
RTMP_TimerListAdd: add timer obj c00ab66c!
RTMP_TimerListAdd: add timer obj c004b668!
RTMP_TimerListAdd: add timer obj c004e8a0!
RTMP_TimerListAdd: add timer obj c0051ad8!
RTMP_TimerListAdd: add timer obj c0054d10!
RTMP_TimerListAdd: add timer obj c0057f48!
RTMP_TimerListAdd: add timer obj c005b180!
RTMP_TimerListAdd: add timer obj c005e3b8!
RTMP_TimerListAdd: add timer obj c00615f0!
RTMP_TimerListAdd: add timer obj c00ab380!
APSDCapable[0]=0
APSDCapable[1]=0
APSDCapable[2]=0                                                                                                                                                     [118/385]
APSDCapable[3]=0
APSDCapable[4]=0
APSDCapable[5]=0
APSDCapable[6]=0
APSDCapable[7]=0
APSDCapable[8]=0
APSDCapable[9]=0
APSDCapable[10]=0
APSDCapable[11]=0
APSDCapable[12]=0
APSDCapable[13]=0
APSDCapable[14]=0
APSDCapable[15]=0
default ApCliAPSDCapable[0]=0
Key1Str is Invalid key length(0) or Type(0)
Key1Str is Invalid key length(0) or Type(0)
Key1Str is Invalid key length(0) or Type(0)
Key1Str is Invalid key length(0) or Type(0)
Key2Str is Invalid key length(0) or Type(0)
Key2Str is Invalid key length(0) or Type(0)
Key2Str is Invalid key length(0) or Type(0)
Key2Str is Invalid key length(0) or Type(0)
Key3Str is Invalid key length(0) or Type(0)
Key3Str is Invalid key length(0) or Type(0)
Key3Str is Invalid key length(0) or Type(0)
Key3Str is Invalid key length(0) or Type(0)
Key4Str is Invalid key length(0) or Type(0)
Key4Str is Invalid key length(0) or Type(0)
Key4Str is Invalid key length(0) or Type(0)
Key4Str is Invalid key length(0) or Type(0)
start ch = 1, ch->num = 2
32 32 32 32
34 34 34 34 34 34 34 34
34 34 34 34 34 34 34 34 20 20 20 20 20 20 20 20
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
start ch = 3, ch->num = 9
32 32 32 32
34 34 34 34 34 34 34 34
34 34 34 34 34 34 34 34 20 20 20 20 20 20 20 20
34 34 34 34 34 34 34 34 20 20 20 20 20 20 20 20
start ch = 12, ch->num = 2
32 32 32 32
34 34 34 34 34 34 34 34
34 34 34 34 34 34 34 34 20 20 20 20 20 20 20 20
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
start ch = 14, ch->num = 1
30 30 30 30
0 0 0 0 0 0 0 0                                                                                                                                                       [70/385]
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1. Phy Mode = 9
2. Phy Mode = 9
E2PROM: D0 target power=0x20
E2PROM: 40 MW Power Delta= -2
3. Phy Mode = 9
RTMP_TimerListAdd: add timer obj c004b264!
AntCfgInit: primary/secondary ant 0/1
Initialize RF Central Registers for E2 !!!
Initialize RF Central Registers for E3 !!!
Initialize RF Channel Registers for E2 !!!
Initialize RF Channel Registers for E3 !!!
Initialize RF DCCal Registers for E2 !!!
Initialize RF DCCal Registers for E3 !!!
D1 = -1, D2 = 7, CalCode = 19 !!!
RT6352_Temperature_Init : BBPR49 = 0xffffffff
RT6352_Temperature_Init : TemperatureRef25C = 0xfffffff5
Current Temperature from BBP_R49=0x5
RT6352_TssiTableAdjust: upper_bound = 0x7F decimal: 127
RT6352_TssiTableAdjust: lower_bound = 0xFFFFFF80 decimal: -128
*** RT6352_TssiTableAdjust: G Tssi[-7 .. +7] = -128 -1 -1 -1 -128 -1 -1
 - -1 - -1 -1 -1 -1 -1 -1 -1, offset=-11, tuning=0
 RT6352_TssiTableAdjust: G Tssi[-7 .. +7] = -128 -12 -12 -12 -128 -12 -12 - -12 - -12 -12 -12 -12 -12 -12 -12, offset=-11, tuning=0
 mp_temperature=0x00, step = +7
 E2PROM: G Tssi[-7 .. +7] = -128 -12 -12 -12 -128 -12 -12 - -12 - -12 -12 -12 -12 -12 -12 -12, offset=-11, tuning=0
  TX BW Filter Calibration !!!
   RX BW Filter Calibration !!!
   LOFT Calibration Done!
   IQCalibration Start!
   IQCalibration Done! CH = 0, (gain= 0, phase= 2)
   IQCalibration Start!
   IQCalibration Done! CH = 1, (gain= 4, phase=1c)
   TX IQ Calibration Done!
   RXIQ Sigma_i=0, Sigma_q=0, R_iq=0
   RXIQ calibration FAIL
   internal ALC is not enabled in NVM !
   bAutoTxAgcG = 0
   RTMPSetPhyMode: channel is out of range, use first channel=0
   MCS Set = ff 00 00 00 01
   SYNC - BBP R4 to 20MHz.l
   SYNC - BBP R4 to 20MHz.l
   SYNC - BBP R4 to 20MHz.l
   SYNC - BBP R4 to 20MHz.l
   SYNC - BBP R4 to 20MHz.l
   SYNC - BBP R4 to 20MHz.l
   SYNC - BBP R4 to 20MHz.l
SYNC - BBP R4 to 20MHz.l                                                                                                                                              [22/385]
SYNC - BBP R4 to 20MHz.l
RTMP_TimerListAdd: add timer obj c00abc24!
The 8-BSSID mode is enabled, the BSSID byte5 MUST be the multiple of 8
@@@ ed_monitor_init : ===>
@@@ ed_monitor_init : <===
Main bssid = a4:2b:8c:5a:96:b2
== rt28xx_init, Status=0
0x1300 = 00064380
@@@ ed_monitor_init : ===>
@@@ ed_monitor_init : <===
The 8-BSSID mode is enabled, the BSSID byte5 MUST be the multiple of 8
device ra1 entered promiscuous mode
br0: port 2(ra1) entering learning state
br0: port 2(ra1) entering learning state
Can't find DB for id==42
Can't find DB for id==45
br0: port 2(ra1) entering learning state
br0: port 1(eth2.1) entering learning state
br0: port 2(ra1) entering learning state
br0: port 2(ra1) entering learning state
br0: port 1(eth2.1) entering learning state
br0: port 1(eth2.1) entering learning state
br0: port 2(ra1) entering forwarding state
br0: port 1(eth2.1) entering forwarding state
block items:
input:clear

clamp total entry used:0
total count:0
input str:clear

psd clear oldest entry
 proc_write_echo_chargen receive: len: 6, input: clear
  proc_write_echo_chargen receive: clear list
   Leaving proc_write_echo_chargen : size: 6
   wan interface=[eth2.2], index=6
   br interface=[br0], index=4
   device ra0 entered promiscuous mode
   br0: port 3(ra0) entering learning state
   br0: port 3(ra0) entering learning state
   Can't find DB for id==42
   Can't find DB for id==45
   br0: port 3(ra0) entering forwarding state
   switch register base addr to 0xb0117014
   write offset 0x0, value 0x1ee0000c
   RTMP_TimerListAdd: add timer obj c0103870!
   RTMP_TimerListAdd: add timer obj c0103a58!

SYNC - BBP R4 to 20MHz.l                                                                                                                                              [22/385]
SYNC - BBP R4 to 20MHz.l
RTMP_TimerListAdd: add timer obj c00abc24!
The 8-BSSID mode is enabled, the BSSID byte5 MUST be the multiple of 8
@@@ ed_monitor_init : ===>
@@@ ed_monitor_init : <===
Main bssid = a4:2b:8c:5a:96:b2
== rt28xx_init, Status=0
0x1300 = 00064380
@@@ ed_monitor_init : ===>
@@@ ed_monitor_init : <===
The 8-BSSID mode is enabled, the BSSID byte5 MUST be the multiple of 8
device ra1 entered promiscuous mode
br0: port 2(ra1) entering learning state
br0: port 2(ra1) entering learning state
Can't find DB for id==42
Can't find DB for id==45
br0: port 2(ra1) entering learning state
br0: port 1(eth2.1) entering learning state
br0: port 2(ra1) entering learning state
br0: port 2(ra1) entering learning state
br0: port 1(eth2.1) entering learning state
br0: port 1(eth2.1) entering learning state
br0: port 2(ra1) entering forwarding state
br0: port 1(eth2.1) entering forwarding state
block items:
input:clear

clamp total entry used:0
total count:0
input str:clear

psd clear oldest entry
 proc_write_echo_chargen receive: len: 6, input: clear
  proc_write_echo_chargen receive: clear list
   Leaving proc_write_echo_chargen : size: 6
   wan interface=[eth2.2], index=6
   br interface=[br0], index=4
   device ra0 entered promiscuous mode
   br0: port 3(ra0) entering learning state
   br0: port 3(ra0) entering learning state
   Can't find DB for id==42
   Can't find DB for id==45
   br0: port 3(ra0) entering forwarding state
   switch register base addr to 0xb0117014
   write offset 0x0, value 0x1ee0000c
   RTMP_TimerListAdd: add timer obj c0103870!
   RTMP_TimerListAdd: add timer obj c0103a58!


RTMP_TimerListAdd: add timer obj c0103a84!
RTMP_TimerListAdd: add timer obj c0103c28!
RTMP_TimerListAdd: add timer obj c01038a0!
RTMP_TimerListAdd: add timer obj c0123e64!
AP SETKEYS DONE - WPA2, AuthMode(7)=WPA2PSK, WepStatus(6)=AES, GroupWepStatus(6)=AES

MulticastFilterTableDeleteEntry: the Group doesn't exist.
MulticastFilterTableInsertEntry: already in Members list.
MulticastFilterTableInsertEntry: already in Members list.
MulticastFilterTableInsertEntry: already in Members list.
MulticastFilterTableInsertEntry: already in Members list.
MulticastFilterTableInsertEntry: already in Members list.
MulticastFilterTableInsertEntry: already in Members list.
MulticastFilterTableInsertEntry: already in Members list.
switch register base addr to 0xb0117014
write offset 0x0, value 0xe0000c
MulticastFilterTableDeleteEntry: the Group doesn't exist.
RTMP_TimerListAdd: add timer obj c0123ea0!
Rcv Wcid(1) AddBAReq
Start Seq = 0000004b
RTMP_TimerListAdd: add timer obj c0126c64!

Mainly what I want to accomplish is using one of the LAN ports as WAN port. (The WAN port broke for some reason during the last power outage - maybe some overload on the RJ45 jack ...)

So I figured OpenWRT might allow for doing so ... but is there a chance I can accomplish the same with stock firmware?

If it's not ported already, it's not worth the effort. Good-quality devices with current chip sets and sufficient resources for current Linux (minimum of 16 MB flash and 128 MB RAM) start around US$20.

To get an idea of what would have to be thrown out, there is a recent "advertisement" here for a semi-functional build of the V2 device (different SoC), and 6 MB of free RAM isn't what I'd call safe operating margin.

Unlikely that OEM firmware can do that kind of re-configuration, and pretty much certain that any OEM firmware not released in the last few days contains serious, unpatched security flaws that can be remotely exploited. If it's years old, then make that "many".

1 Like

Thanks for your explanations!

Just ordered two TPE-R1100 - hope these are good!

Doesn't look like they're supported by OpenWrt. If that matters to you (consider that their firmware is still running on Linux 4.4, while LTS, is getting rather old at this point, dating back to Jan, 2016), you might want to consider different hardware. (Their firmware is based on the 2017 release of OpenWrt, which is now EOLed and will receive no further patches from OpenWrt.)

Based on https://www.thinkpenguin.com/gnu-linux/free-software-wireless-n-mini-vpn-router-tpe-r1100, that looks to be a rebranded GL.iNet GL-AR150 (US$25, not the US$38 for the "bare" Think Penguin device). While I consider GL.iNet to produce excellent hardware, I'd strongly recommend the GL-AR300M (about US$40) due to a much faster processor, 128 MB of RAM, and 16 + 128 MB of flash.

The GL.iNet devices come with excellent firmware, a friendly GUI and package set, closely based on v18 OpenWrt, with excellent support, a full package repo, and "standard" LuCI / config-file access as well. They can easily be flashed to OpenWrt if you desire the "stock" experience.

Looks solid. I'll keep these options in mind for future purchases!