Linksys EA6900

From DD-WRT Wiki

Revision as of 13:34, 25 November 2023 by Tmittelstaedt (Talk | contribs)
Jump to: navigation, search

This guide is only for the EA6900 v1.x!
WARNING: The EA6900 v2 is a Mediatek MT7621AT device and not supported by DD-WRT! [FCC link]

Contents

Hardware Specifications

The XAC1900, which comes as part of a kit with a separate DSL modem (APM105), appears to be the same device as a user has flashed one to the EA6900 firmware.

FCC ID Q87-EA6900
Industry Canada ID 3839A-EA6900
Power 12 VDC, 3.5 A
CPU Broadcom BCM4708A0
CPU Speed 800 MHz (2 cores)
Flash/RAM 128 MiB / 256 MiB
WI1 chip Broadcom BCM4360
WI1 protocols an+ac
WI1 MIMO config 3x3:3
WI2 chip Broadcom BCM4360
WI2 protocols bgn
WI2 MIMO config 3x3:3
Antenna connectors U.FL, RP-SMA
Switch Broadcom BCM4708A0
LAN / WAN ports 4 / 1 (up to 1 Gb/s)
USB ports 2 (USB 3.0, USB 2.0)
Serial 6-pin header, internal

Installation

Please refer to this forum thread for the latest info: "Linksys EA 6900 Install Guide"

Note that nowadays virtually all of these devices will have auto-updated themselves to the most current Linksys firmware and so will need to be unlocked. The only unlock procedure that I found to work is the one related by bronzemaxwell in the thread referenced which involves back-reving the device to an older Linksys firmware. This process, from the forum, is as follows:


1) download an old Linksys oem firmware 1.1.42.161129 (see the forum thread to download this)
2) download the Linksys tftp utility. See "TFTP Flash"
3) launch the utility (tftp.exe) and select the Linksys firmware, use admin as the password for the utility
4) Set your PC to a static IP and open a ping window, ping 192.168.1.1 -t
5) Power-cycle the router and click Upload on the utility. The utility will try tftp uploading 3 times by itself. When it times out, click Upload again. Continue doing this until the TTL in the ping window is 64, if by then the utility has not uploaded the older Linksys firmware, power cycle the router and start over again.

When I did one of these that I picked up used, it pinged probably 25-30 times at the ttl=100 level before the tftp upload blue bar in the Linksys utility started to move. Unlike other routers where the CFE in the device checks very early in the boot process almost right after power up, the CFE in this router checks for an incoming TFTP much later on. So the best way is to just start clicking the upload button as soon as you see the pings back with the TTL=100 because sometime during that period it will accept tftp from the utility.

Once you get it uploaded the router may reboot into newer firmware on the other alternate partition. If this happens just login and go to diagnostics and revert to earlier firmware and it will then reboot from the partition with the old Linksys firmware you uploaded. Once you are on that firmware you can then webflash dd-wrt as usual, and then once you have done this you can telnet into the router and flash the alternate partition so that both partitions have dd-wrt on them.

Note that the build 23158 of dd-wrt from 12/18/13 is included in the Flash Linksys EA6900v1.0 & EA6900v1.1 with 3rd Party Firmware.zip file in the forum thread, it is filename linksys_ea6900_ddwrt.bin and will work as an initial flash from the Linksys GUI in Linksys firmware 1.1.42.161129. After that, firmware file r54109 "linksys-ea6900-webflash.bin" and be uploaded via the dd-wrt webinterface

Boot Partitions

The Linksys CFE partitions flash with two linux boot partitions, switching between them after three (consecutive?) incomplete or failed boots. It also has a bug that limits NVRAM to 32KB, for which a third-party XVortex CFE (ported from an Asus RT-AC68U) is available to mitigate. The XVortex CFE only uses a single linux boot partition.

To check the boot partitions, run this from telnet or ssh:

cat /proc/mtd

The main boot partition is 'linux' and the Linksys CFE will also have 'linux2'.

To force switching to the other partition from current, unplug the router after ~10 seconds into boot. After the third try, it will switch the 'bootpartition' which is stored in nvram. It can also be manually altered:

nvram get bootpartition	

This returns the current boot partition (0 for linux, or 1 for linux2). To change the boot e.g. to 1:

nvram set bootpartition=1	

The number of partial boots to switch linux partitions is controlled by maxpartialboots (default is 3):

nvram get maxpartialboots	

And can be changed with 'set' as well. The current number of incomplete boots is tracked with 'partialboots':

nvram get partialboots

The partitions can be directly written to 'linux' (or use 'linux2' for that partition) from command prompt:

wget {firmware path}

Or enable SSH and then WinSCP (or similar) can be used to copy the file.

mtd unlock linux
mtd write {firmware file} linux
reboot

Note: if an error returns from the mtd commands, instead try 'write {firmware file} linux' (no mtd command)

WARNING!: Current builds will exceed 32k nvram size! One symptom of this is after a reset of nvram variables and logging in with the GUI and setting the password, further access of dd-wrt configuration pages will cause the router to stop responding to either a web browser or telnet. If using the Linksys CFE the "second method" listed in the thread MUST be immediately employed.

Once the router password is set at the initial page, telnet into the router and at the command line issue the following two commands:
for line in `nvram show | grep =$ `; do var=${line%*=}; nvram unset $var; done
nvram commit

If you use WireGuard this can remove the WG keys as those end in =. Then use this (experimental) script for Wireguard devices:
for line in $(nvram show | grep '=$' | grep -v '=.*=' ); do var=${line%*=}; nvram unset $var; done

You can set the first line: “for line in `nvram show | grep =$ `; do var=${line%*=}; nvram unset $var; done” without the quotes in your startup script at the Administration/Commands tab so that after a reboot your NVRAM size stays low. (If you try to run it directly from the Administration/Commands tab then you will get an error, because the special characters must then be preceded with escape characters)

Links

DD-WRT Firmware_FAQ