Installing OpenWRT on Linksys RE7000 Extender

I recently found a need for this old RE7000 wifi extender which has been in the closet for several years. I need to be able to create VAPs on this so wanting to install Owrt on it. I even see there is actually a recent OpenWRT build available for it.

https://openwrt.org/toh/hwdata/linksys/linksys_re7000

Attempting to flash it from the GUI is failing because the factory firmware is apparently signed (no surprise really), which means to me that I must flash it using UBOOT. However, I cannot find any documentation to do this. I took the unit apart and I see four pin holes which I am assuming is the serial port, so I would need to solder on some pins first. Not a biggie.

Has anybody successfully flashed OpenWRT onto one of these devices? If so, please advise how to do it.

Thanks!

Okay, I did find most of the information I am looking for here:
https://git.openwrt.org/?p=openwrt/openwrt.git;a=commit;h=e882af2850ff7077f610eaf0ecee18c371ddf98f

From the link:

Hardware specification:

- SoC: MediaTek MT7621AT (880 MHz)
- Flash: 16 MB (Macronix MX25L12835FM2I-10G)
- RAM: 128 MB (Nanya NT5CC64M16GP-DI)
- WLAN 2.4 GHz: 2x2 MediaTek MT7603EN
- WLAN 5 GHz: 2x2 MediaTek MT7615N
- Ethernet: 1x 10/100/1000 Mbps
- LED: Power, Wifi, WPS
- Button: Reset, WPS
- UART: 1:VCC, 2:GND, 3:TX, 4:RX (from LAN port)
  Serial console @ 57600,8n1



Flash instructions:

Connect to serial console and start up the device. As the bootloader got
locked you need to type in a password to unlock U-Boot access.
When you see the following output on the console:

relocate_code Pointer at: 87f1c000

type in the super secure password:

1234567890

Then select TFTP boot from RAM by selecting option 1 in the boot menu.
As Linksys decided to leave out a basic TFTP configuration you need to
set server- & client ip as well as the image filename the device will
search for. You need to use the initramfs openwrt image for the TFTP
boot process.

Once openwrt has booted up, upload the sysupgrade image via scp and run
sysupgrade as normal.
1 Like

Well I got it flashed and booted to OpenWRT. I had to vary a little on the install instructions however. Found this Interesting: both htop and cat /proc/cpuinfo report this is a quad core CPU. Nice!

I am going to configure it with 2 WAPs and 6 VAPs. I will probably need those 4 cores.

Flash Serial Log:

===================================================================
     		MT7621   stage1 code Mar 12 2015 14:43:30 (ASIC)
     		CPU=500000000 HZ BUS=166666666 HZ
==================================================================
Change MPLL source from XTAL to CR...
do MEMPLL setting..
MEMPLL Config : 0x31100000
3PLL mode + External loopback
=== XTAL-40Mhz === DDR-800Mhz ===
PLL3 FB_DL: 0xa, 1/0 = 616/408 29000000
PLL2 FB_DL: 0x13, 1/0 = 604/420 4D000000
PLL4 FB_DL: 0x1a, 1/0 = 674/350 69000000
do DDR setting..[01F40000]
Apply DDR3 Setting...(use customer AC)
          0    8   16   24   32   40   48   56   64   72   80   88   96  104  112  120
      --------------------------------------------------------------------------------
0000:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
0001:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
0002:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
0003:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
0004:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
0005:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
0006:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
0007:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
0008:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
0009:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
000A:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
000B:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
000C:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
000D:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
000E:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    1    1
000F:|    0    0    0    0    0    0    0    1    1    1    1    1    1    1    1    1
0010:|    1    1    1    1    1    1    1    1    1    1    1    1    1    1    0    0
0011:|    1    1    1    1    1    1    1    0    0    0    0    0    0    0    0    0
0012:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
0013:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
0014:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
0015:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
0016:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
0017:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
0018:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
0019:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
001A:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
001B:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
001C:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
001D:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
001E:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
001F:|    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
DRAMC_DQSCTL1[0e0]=14000000
DRAMC_DQSGCTL[124]=80000000
rank 0 coarse = 16
rank 0 fine = 56
B:|    0    0    0    0    0    0    0    0    0    1    1    1    0    0    0    0
opt_dle value:10
DRAMC_DDR2CTL[07c]=C287222D
DRAMC_PADCTL4[0e4]=000022B3
DRAMC_DQIDLY1[210]=0C0C090C
DRAMC_DQIDLY2[214]=070A0A0A
DRAMC_DQIDLY3[218]=0B080807
DRAMC_DQIDLY4[21c]=0A090B09
DRAMC_R0DELDLY[018]=00002E2F
==================================================================
		RX	DQS perbit delay software calibration 
==================================================================
1.0-15 bit dq delay value
==================================================================
bit|     0  1  2  3  4  5  6  7  8  9
--------------------------------------
0 |    10 8 11 11 8 9 9 7 6 8 
10 |    7 9 8 10 9 9 
--------------------------------------

==================================================================
2.dqs window
x=pass dqs delay value (min~max)center 
y=0-7bit DQ of every group
input delay:DQS0 =47 DQS1 = 46
==================================================================
bit	DQS0	 bit      DQS1
0  (1~90)45  8  (1~90)45
1  (0~92)46  9  (1~92)46
2  (1~92)46  10  (1~89)45
3  (1~92)46  11  (1~88)44
4  (1~89)45  12  (1~90)45
5  (1~92)46  13  (1~90)45
6  (1~91)46  14  (1~92)46
7  (1~93)47  15  (1~90)45
==================================================================
3.dq delay value last
==================================================================
bit|    0  1  2  3  4  5  6  7  8   9
--------------------------------------
0 |    12 9 12 12 10 10 10 7 7 8 
10 |    8 11 9 11 9 10 
==================================================================
==================================================================
     TX  perbyte calibration 
==================================================================
DQS loop = 15, cmp_err_1 = ffff0000 
dqs_perbyte_dly.last_dqsdly_pass[0]=15,  finish count=1 
dqs_perbyte_dly.last_dqsdly_pass[1]=15,  finish count=2 
DQ loop=15, cmp_err_1 = ffff0000
dqs_perbyte_dly.last_dqdly_pass[0]=15,  finish count=1 
dqs_perbyte_dly.last_dqdly_pass[1]=15,  finish count=2 
byte:0, (DQS,DQ)=(8,8)
byte:1, (DQS,DQ)=(8,8)
DRAMC_DQODLY1[200]=88888888
DRAMC_DQODLY2[204]=88888888
20,data:88
[EMI] DRAMC calibration passed

===================================================================
     		MT7621   stage1 code done 
     		CPU=500000000 HZ BUS=166666666 HZ
===================================================================


U-Boot 1.1.3 (Jan 12 2016 - 14:20:42)

Board: Ralink APSoC DRAM:  128 MB
relocate_code Pointer at: 87f1c000

Config XHCI 40M PLL 
******************************
Software System Reset Occurred
******************************
flash manufacture id: c2, device id 20 18
find flash: MX25L12805D
============================================ 
Ralink UBoot Version: 4.3.0.0
-------------------------------------------- 
ASIC MT7621A DualCore (MAC to MT7530 Mode)
DRAM_CONF_FROM: Auto-Detection 
DRAM_TYPE: DDR3 
DRAM bus: 16 bit
Xtal Mode=3 OCP Ratio=1/3
Flash component: 16 MBytes NOR Flash
Date:Jan 12 2016  Time:14:20:42
============================================ 
icache: sets:256, ways:4, linesz:32 ,total:32768
dcache: sets:256, ways:4, linesz:32 ,total:32768 

 ##### The CPU freq = 880 MHZ #### 
 estimate memory size =128 Mbytes
#Reset_MT7530
set LAN/WAN LLLLW

=================================================
Check image validation:
Image1 Header Magic Number --> OK
Image2 Header Magic Number --> OK
Image1 Header Checksum --> OK
Image2 Header Checksum --> OK
Image1 Stable Flag --> Stable
Image1 Try Counter --> 0

Image1: OK Image2: OK

=================================================
Erasing SPI Flash...
.
Writing to SPI Flash...
.
done

Please choose the operation: 
   1: Load system code to SDRAM via TFTP. 
   2: Load system code then write to Flash via TFTP. 
   3: Boot system code via Flash (default).
   4: Entr boot command line interface.
   7: Load Boot Loader code then write to Flash via Serial. 
   9: Load Boot Loader code then write to Flash via TFTP. 
 4  3 
You choosed 1

 0 

   
1: System Load Linux to SDRAM via TFTP. 
 Please Input new ones /or Ctrl-C to discard
	Input device IP (10.10.10.123) ==:10.10.10.123            192.168.254.1
	Input server IP (10.10.10.3) ==:10.10.10.3          192.168.254.15
	Input Linux Kernel filename () ==:openwrt-23.05.3-ramips-mt7621-linksys_re7000-initramfs-kernel.bin

 netboot_common, argc= 3 

 KSEG1ADDR(NetTxPacket) = 0xA7F9C240 

 NetLoop,call eth_halt ! 

 NetLoop,call eth_init ! 
Trying Eth0 (10/100-M)

 Waitting for RX_DMA_BUSY status Start... done


 ETH_STATE_ACTIVE!! 
TFTP from server 192.168.254.15; our IP address is 192.168.254.1
Filename 'openwrt-23.05.3-ramips-mt7621-linksys_re7000-initramfs-kernel.bin'.

 TIMEOUT_COUNT=10,Load address: 0x80a00000
Loading: *Got ARP REPLY, set server/gtwy eth addr (30:9c:23:c8:b8:f5)
Got it
#################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 ###############################################regValue=8cd5f006
reset button pressing, Bootp trigger!!
b_bootp_not_ac_on=1
##################
	 ###################
done
Bytes transferred = 5749820 (57bc3c hex)
NetBootFileXferSize= 0057bc3c
Erasing SPI Flash...
.
Writing to SPI Flash...
.
done
Automatic boot of image at addr 0x80A00000 ...
## Booting image at 80a00000 ...
   Image Name:   MIPS OpenWrt Linux-5.15.150
   Image Type:   MIPS Linux Kernel Image (uncompressed)
   Data Size:    5749756 Bytes =  5.5 MB
   Load Address: 80001000
   Entry Point:  80001000
   Verifying Checksum ... OK
OK
No initrd
## Transferring control to Linux (at address 80001000) ...
## Giving linux memsize in MB, 128

Starting kernel ...



OpenWrt kernel loader for MIPS based SoC
Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
Decompressing kernel... done!
Starting kernel at 80001000...

An here is a snapshot of the serial connection with newly added header.

1 Like

I guess getting OpenWRT installed on this RE7000 was the easy part. I have reset this thing probably 30 times already because I cannot get ANY VLANs to work. I am a bit overwhelmed with OWRT. Having been a DD-WRT user since 2006, this is quite different and I cannot wrap my head around it.

This setup was easy on both my EA8500 and R7800, both running DD-WRT. But since this RE7000 does not have a built in Ethernet switch, I can find no logical way to make the VLANs even remotely work. I lock myself out every time (the 90 second revert only works part of the time).

What I need to do is create VLANs 1t, 10t, 11t and 12t carried over a trunk line. This single Ethernet port is connected to a managed switch configured exactly the same. Next I want to create four WAPs/VAPs and tie each one to its own VLAN. The multiple DHCP server is running on my EA8500 running DD-WRT and serving IPs for 192.168.254.x (Main), 10.1.0.x (IoT), 192.168.5.x (Guest) and 10.2.0.x (Media).

I am at a total loss. Any suggestions would be highly appreciated.

We can help you with this.

To confirm, you need 4 VLANs -- 1, 10, 11, 12 -- all tagged.
Which is the VLAN that is used for managing the AP itself? And what IP address do you want it to use?

Please post your default config:

ubus call system board
cat /etc/config/network
1 Like

Oh thank you! Yes, four vlans, all tagged.

The management vlan will be vlan1. It's already on 192.168.254.11 via br-lan.

# ubus call system board
{
        "kernel": "5.15.150",
        "hostname": "OpenWrt",
        "system": "MediaTek MT7621 ver:1 eco:3",
        "model": "Linksys RE7000",
        "board_name": "linksys,re7000",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "23.05.3",
                "revision": "r23809-234f1a2efa",
                "target": "ramips/mt7621",
                "description": "OpenWrt 23.05.3 r23809-234f1a2efa"
        }
}

And the network configuration, which is only br-lan and IoT at the moment.

# cat /etc/config/network

config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fdd1:2d61:9f1e::/48'
        option packet_steering '1'

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'lan'
        option vlan_filtering '0'

config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option ipaddr '192.168.254.11'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option gateway '192.168.254.9'
        list dns '192.168.254.254'

config bridge-vlan
        option device 'br-lan'
        option vlan '1'
        list ports 'lan'

config device
        option type 'bridge'
        option name 'br1-IoT'
        list ports 'lan'
        option stp '1'

config bridge-vlan
        option device 'br1-IoT'
        option vlan '10'
        list ports 'lan:t'

config interface 'IoT'
        option proto 'static'
        option device 'br1-IoT'
        option ipaddr '10.1.0.11'
        option netmask '255.255.255.0'
        option gateway '10.1.0.1'
        list dns '10.1.0.1'

Remove the last line of this:

Edit your br-lan bridge-vlan to look like this:

config bridge-vlan
        option device 'br-lan'
        option vlan '1'
        list ports 'lan:t'

edit your lan to use br-lan.1:

config interface 'lan'
        option device 'br-lan.1'
        option proto 'static'
        option ipaddr '192.168.254.11'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option gateway '192.168.254.9'
        list dns '192.168.254.254'

Delete these:

Add another bridge-vlan:

config bridge-vlan
        option device 'br-lan'
        option vlan '10'
        list ports 'lan:t'

Edit the IoT network to use br-lan.10 and make it unmanaged:

config interface 'IoT'
        option proto 'none'
        option device 'br-lan.10'

For VLANs 11 and 12, do the same (add bridge-vlans and unamanged network interfaces; I'm assuming VLAN 11 is guest, VLAN 12 is media):

config bridge-vlan
        option device 'br-lan'
        option vlan '11'
        list ports 'lan:t'

config bridge-vlan
        option device 'br-lan'
        option vlan '12'
        list ports 'lan:t'

config interface 'guest'
        option proto 'none'
        option device 'br-lan.11'

config interface 'media'
        option proto 'none'
        option device 'br-lan.12'

Now setup your SSIDs against the networks and it should work.

Wow! This worked right out of the box! You really are an OpenWRT Guru for sure. Thank you so much. I think I was making it way more complicated than it needed to be. I still want to know a few things that I am unclear on.

  • Unmanaged Interfaces: So they do not need any IP addresses obviously. This surprised me. But since they are not running a DHCP server it does make some sense.

  • This method of editing the config file directly does seem to be much more efficient than using Luci. Is this the preferred method?

  • I was able to get one Wifi interface set up on 2.4ghz and obtain the correct subnet address, but I cannot seem to get 5ghz working at all. I'm thinking maybe a driver issue.

Appreciate your help very much! Thank you again. I will continue to work on this and will post my results as I work on this.

Your AP only needs an address on one network -- the one that is used to manage the device. The other networks are typically unmanaged because
a) the routing is handled upstream
b) you probably don't want/need an address on the other networks. Specifically, guest and IoT and other untrusted devices don't need to be able to access the AP.

In the forums, yes, this is much easier. In most situations, you can get the entire picture with just 4 config files, as compared to far more screenshots. It's also easier to track/compare everything via config files.

Otherwise, I actually use both LuCI and CLI, depending on what I'm doing. You can and should use whatever is most comfortable to you, but having familiarity with both is useful.

Possibly. I cannot comment on this, but you could open a new thread for this specific issue.

you're welcome!

If your problem is solved, please consider marking this topic as [Solved]. See How to mark a topic as [Solved] for a short how-to.
Thanks! :slight_smile:

1 Like

I was unable to mark as [solved] but I did tag a solution. Thanks.