User Tools

Site Tools


inbox:linksys:wrt_ac_series

Linksys WRT AC Series

Introduction

The Linksys WRT AC series is a set of high performance, multi-core, 802.11ac capable devices, designed to be supported by Openwrt out of the box. All of the devices use the mwlwifi driver, an opensource driver with closed source firmware. The look and shape of the devices is a throwback to the Linksys WRT54G.

Supported Hardware

OEM Source Code

ModelVersionSupported Since CommitSupported Since RelPackage architectureCPU MHzCPU CoresFlash MBRAM MBSwitchWLAN HardwarePower SupplyDevice TechdataComments
WRT1200ACv1 (caiman), v2 (caiman)https://git.lede-project.org/?p=source.git;a=commit;h=2705cda81389e84687fb0325d2bf6c8bc2756bee15.05arm_cortex-a9_vfpv313002128NAND512Marvell 88E6176Marvell 88W886412 VDC, 2.5AView/Edit data[Launch Date: 2015.04] OEM Firmware Name: caiman.img
WRT1900ACv1 (mamba)https://git.lede-project.org/?p=source.git;a=commit;h=ac91824b3675977edb391a6d801657e533d2905d15.05arm_cortex-a9_vfpv313002128NAND256Marvell 88E6172Marvell 88W886412 VDC, 4.0 AView/Edit data[Launch Date: 2014.03] Serial 13J1; OEM Firmware Name: blk-mamba.128mb.img
WRT1900ACv2 (cobra)https://git.lede-project.org/?p=source.git;a=commit;h=2705cda81389e84687fb0325d2bf6c8bc2756bee15.05arm_cortex-a9_vfpv316002128NAND512Marvell 88E6176Marvell 88W886412 VDC, 3.0 AView/Edit data[Launch Date: 2015.04] Serial 13J2; OEM Firmware Name: cobra.img
WRT1900ACSv1 (shelby), v2 (shelby)https://git.lede-project.org/?p=source.git;a=commit;h=8bb23cfb663f8870f431edba0dab218a746456a315.05arm_cortex-a9_vfpv316002128NAND512Marvell 88E6176Marvell 88W886412 VDC, 3.0 AView/Edit data[Launch Date: 2015.10] OEM Firmware Name: shelby.img. (Device Page: see revision notes)
WRT3200ACMv1 (rango)https://git.lede-project.org/?p=source.git;a=commit;h=3764caa93478e3472df3128b79b6d0f6b0fb999c17.01.0arm_cortex-a9_vfpv318662256NAND512Marvell 88E6352Marvell 88W896412 VDC, 3.0 AView/Edit data[Launch Date: 2016.10] OEM Firmware Name: rango.img
WRT32Xv1 (venom)https://git.openwrt.org/?p=openwrt/openwrt.git;a=commit;h=bfbdeeb3de3da31f7e5f9bd429e079c2d839644a18.06.0arm_cortex-a9_vfpv318662256NAND512Marvell 88E6352Marvell 88W896412 VDC, 3.0 AView/Edit dataOEM Firmware Name: venom.img

Dual Firmware Flashing

The WRT AC series of routers uses a dual firmware flash layout. This means that two separate firmware partitions are included on the device and are flashed in an alternating fashion.

If booting from the primary partition, the secondary (or alternate) partition will be flashed on next sysupgrade. The reverse logic is also true. See the Flash Layout section for more details.

A Luci plugin has been developed for managing dual firmware flash devices called luci-app-advanced-reboot.

Flashing Firmware

OEM install

  1. Login to Linksys WebUI (Default IP: 192.168.1.1; Password: admin)
  2. Connectivity Manual Update

  3. Select factory image [.img]
    1. Once flash completes, router will reboot

  4. If the image selected
    1. Has LuCI pre-installed:
    2. Does not have LuCI pre-installed:
        1. Linux/BSD: SSH client built in
        2. Windows: Download PuTTY

Sysupgrade

LuCI

  1. Login to the OpenWrt WebUI (Default IP: 192.168.1.1)

  2. System Backup/Flash Firmware Flash New Firmware Image Choose File
    1. Select Sysupgrade bin file [.bin]

  3. Untick Keep Settings, then select Flash Image

CLI

  1. Login to OpenWrt via SSH (DropBear / OpenSSH)
    1. Linux/BSD: SSH client built in
    2. Windows: Download PuTTY
  2. Download/Upload firmware image to router
    1. Download via SSH Terminal:
      cd /tmp && opkg update && opkg install wget && wget <Image-Link>

      OR

    2. Upload via Client Machine Terminal:
      scp -r -i "C:\OpenWrt.ppk" -2 -scp -P 22 "D:\Path\To\Firmware.img" root@192.168.1.1:/tmp
      1. For PuTTY, change: scp to pscp -scp

      • -scp = force use of SCP protocol
      • -r = copy directories recursively
      • -i = private key file for user authentication
      • -2 = force use of particular SSH protocol version [2]
      • -p = connect to specified port

  3. Flash image
    1. SSH Terminal:
      cd /tmp && sysupgrade -n -v <image-name>
      • -n = do not save configuration over reflash
      • -v = more verbose

Firmware Recovery

If the firmware has become unresponsive and won't boot, chances are you can recover it easily due to the Dual Firmware partition layout, by switching to the alternate firmware.
For this reason, it is recommended to always keep at least one known good version of the firmware on either partition.

Switch router from primary to alternate partition or vice versa using any of the 4 below methods:

LuCI

  1. Install luci-app-advanced-reboot:
    1. SSH:
      opkg update && opkg install luci-app-advanced-reboot
    2. WebUI:
      1. System Software
        1. Actions Update Lists
        2. Actions Filter
          1. luci-app-advanced-reboot Find Package
        3. Status: Available packages
          1. Install luci-app-advanced-reboot

  2. System Advanced Reboot

Serial

  1. Connect via Serial:
    reboot
  2. At 3 second autoboot interrupt delay, press any key
  3. Boot
    1. Primary Partition
      1. Armada XP
        run linksysnandboot
      2. Armada 385
        run nandboot
    2. Alternate Partition:
      1. Armada XP
        run linksysaltnandboot
      2. Armada 385
        run altnandboot

SSH

  1. Determine current partition:
    /usr/sbin/fw_printenv -n boot_part
  2. Boot
    1. Primary Partition:
      /usr/sbin/fw_setenv boot_part 1 && reboot
    2. Alternate Partition:
      /usr/sbin/fw_setenv boot_part 2 && reboot

Power Switch

  1. Power off router with power switch.

  2. Turn power back on and Power LED will light.
    1. As soon as all LEDs turn off (~2s), power off router with power switch

  3. Turn power back on and Power LED will light.
    1. As soon as all LEDs turn off (~2s), power off router with power switch

  4. Turn power back on and Power LED will light.
    1. As soon as all LEDs turn off (~2s), power off router with power switch

  5. Turn power back on and allow router to fully boot.
    • It should now be booted to the alternate firmware partition (partitions)

Serial Port

Synopsis

Serial Port is labeled J1 on the board, utilizing a JST PH 6 pin connector with a 2.0mm pitch, operating at 3.3v

  • The more common 2.54mm pitch will not fit properly.
    • In a pinch, removing the plastic casing from 2.54mm female connectors allows for a stable enough connection.
      • Ensure leads are insulated with electrical tape
  • If flashing regularly, you may wish to invest in a USB-TTL AJ cable
    • USB-TTL AJ cables require installation of a 3.5mm Jack (F) on the router

Serial Header

Pin Out
Pins 1 2 3 4 5 6
Function Gnd Tx n/a Rx n/a n/a

Bootloader

Corrupt Environment Recovery

If the U-Boot bootloader environment becomes corrupted, it can be reset or restored

Reset

Issue the following at the Marvell » prompt:

env default -a
saveenv
reset

Restore

WRT3200ACM

WRT32X

Corrupt Bootloader Recovery

Prerequisites

Hardware

  • PC running Linux
    • x86 libraries if x64
  • USB – TTL Cable

UART Boot Files

Instructions

  1. Terminal root access:
    sudo –i
  2. Download kwboot & kwboot-patched:

  3. Set kwboot as executable:
    Chmod 755 kwboot
  4. Connect USB-TTL to router and PC (don’t power on router) & issue:
    dmesg | grep USB
    1. Make note of the number after /dev/ttyUSB (usually 0), then:
      chmod 666 /dev/ttyUSB0
  5. Boot router using UART image and power on router:
    ./kwboot -t /dev/ttyUSB0 -b WRT1200AC_uboot_v2.0.13.bin -p

    OR

    ./kwboot-patched -f -t -p -b WRT1200AC_uboot_v2.0.13.bin -B 115200 /dev/ttyUSB0
    • Turn router on at the same time you press [ENTER] for the kwboot command
      • You may need to power cycle the router a few times before the script poll succeeds, as the timing is crucial

  6. After the transfer finishes, you should be at the Marvell » prompt:
    1. If you are not:
      1. Power Off Router Disconnect USB-TTL Cable from PC Go Back to Step 4
    2. If you are:
      1. Set up TFTP server on PC (such as Ubuntu’s tftpd package)
      2. Put WRT1200AC_uboot_v2.0.13.bin in it’s tftpboot/ directory

  7. Connect PC to router (ethernet), set PC IP to 192.168.1.254/24, and issue at the Marvell » prompt:
    setenv serverip 192.168.1.254
    setenv netmask 255.255.255.0
    ping 192.168.1.254
    tftp 2000000 WRT1200AC_uboot_v2.0.13.bin
    nand erase 0 200000
    nand write 2000000 0 200000
  8. If the above commands complete successfully, reboot router via:
    reset
    • Router should boot and stop at the Marvell » prompt

  9. Download firmware image for your device and save it to tftpboot/:
    1. Issue the following at the Marvell » prompt:
      tftp 192.168.1.254
      get <firmware_image_name>
  10. IMPORTANT:
    • After transfer completes successfully, DO NOT issue:
      • run flash_pri_image || run flash_alt_image || run update_both_images
        • These will brick the router again sending you back to Step 3

    1. Instead:
      run_linksysnandboot

      IF FAILS:

      run_linksysaltnandboot
  11. Allow router to fully boot:
    1. Verify it’s up and running correctly via the WebUI
    2. Power Off Router Disconnect USB-TTL Cable Power Back On

Marvell WiFi

WiFi Bug Reports

If experiencing instability, see WiFi Stability Issues

mwlwifi 88W8864 / 88W8964

Query Installed Version

opkg list-installed | grep mwlwifi

Source Code : Repo

WiFi Stability Issues

Missing Drop Down Values

To accommodate a wider variety of kernels for compatibility with the series, path values were modified.
If experiencing missing drop down values, add platform back to path in /etc/config/wireless.

Armada XP

radio0 2.4GHz

option  path    'platform/soc/soc:pcie-controller/pci0000:00/0000:00:02.0/0000:02:00.0'

radio1 5GHz

option  path    'platform/soc/soc:pcie-controller/pci0000:00/0000:00:03.0/0000:03:00.0'
Armada 385

radio0 2.4GHz

option  path    'platform/soc/soc:pcie-controller/pci0000:00/0000:00:01.0/0000:01:00.0'

radio1 5GHz

option  path    'platform/soc/soc:pcie-controller/pci0000:00/0000:00:02.0/0000:02:00.0'

Slow Throughput w/ Intel WiFi

In the Windows Creators Update, Intel enabled Receive Side Coalescing (RSC) in their 18.x drivers, which has reportedly slowed down some wifi adapters.
A possible solution can be found here: Step by Step Fix

ESP chip devices won't connect

This is a known issue with this driver. Please see the ongoing bug report here: ESP8266/Embedded devices unable to connect to 2.4Ghz Radio

Solutions that are reported to workaround the issue:
- Disable WMM on the interface (note: this will also disable 802.11n/ac capability)
- Setup radio2 with the mwifiex driver, which does not appear to have this problem

OEM Firmware Images

Official Linksys OEM Firmware (Updated February 23rd, 2018)
Based on kernel versions 3.2.40 & 3.10.39

Linksys OEM Firmware
Device Version Repository Changelog Build Date
WRT1200AC v1 1.0.5.187766 Repo txt 2018.05.01
v2 2.0.5.187766 txt 2018.05.01
WRT1900AC v1 1.1.10.187766 Repo txt 2018.04.12
v2 2.0.8.187766 txt 2018.04.26
WRT1900ACS v1 1.0.3.187766 Repo txt 2017.04.20
v2 2.0.2.188405 txt 2018.05.15
WRT3200ACM v1 1.0.6.186168 Repo txt 2018.01.16
WRT32X v1 1.0.180404.58 Repo txt 2018.04.23

Hardware Mods

USB-TTL Audio Jack Install

Pin Out

Cable

3.5mm Jack Install

Troubleshooting

Dependency Errors

Problem: Dependency errors are received when installing pkgs

Solution: This is an either / or occurrence

  1. /etc/opkg.conf is pointing to the wrong repository
    rm /etc/opkg.conf && cp /rom/etc/opkg.conf /etc/opkg.conf && opkg update
  2. Package repository has been updated to comply with an updated kernel version
    • Flash, or build, a new image with the updated kernel version

Serial Port

Armada 385

Serial Interfaces

Arduino

Pin Out

Header

MAX232

Pin Out

Line Driver

USB-to-UART

Pin Out

Adapter

Serial Flash

Prerequisites

  1. USB-TTL Cable

  2. Serial Interface

  3. TFTP Server

  4. OEM Firmware Names

Instructions

Flash via Serial:

Flash Output

Successful

Unsuccessful


Historical

The following information has been superceded by current builds and is included only for historical interest.

Drivers

  • On Christmas Eve 2014, Marvell released an updated driver for the 88W8864 WiFi chip as found in the WRT1900AC to the OpenWrt developers mailing list
  • Wireless driver was announced to stay closed source on 30th of July. It'll likely consist of pre-built closed source part (so called “library”) and probably some open source file calling kernel APIs.
    • Oddly, the wireless driver source was later distributed as part of the GPL release of the stock Linksys firmware. This driver requires significant refactoring before it can be included in OpenWrt.

Firmware

  • Chadster's McWRT release, based on Attitude Adjustment [AA], which is obsolete, and not supported: McWRT
  • Kaloz's evolving snapshots of the Development Branch Kaloz's Build (incorporating latest bug fixes/features, LuCI, & other packages).
  • Lifehacksback evolving snapshots of the Development Branch (both 3.18 and 4.0 kernel builds) Lifehacksback Testing CC
  • At this time it is now possible to compile an image off the Development Branch with this new driver. A prebuilt image can be found here: Development Branch

Hardware

News

Patches

  • On the 3rd of April 2014, Belkin posted a link to ftp server containing patches, adding WRT1900AC support. They couldn't be applied because of being incorrectly posted, not signed off, and adding binary wireless driver ap8x.ko.
    • 5 days later a patchset in the form of single e-mail was posted to the openwrt-devel. It was malformed and not signed off, so still couldn't be applied. Release of wireless driver has been postponed.

Troubleshooting

LuCI

  • Chrome & HTTPS
    • Problem: LuCI will not load when utilizing Chrome [due to PolarSSL]
      • Chrome[v51+] requires AES-GCM and CAMELLIA-GCM ciphersuites to handshake with a server utilizing the ustream-polarssl backend.
        • If CONFIG_GCM is disabled, ssl_ciphersuite_from_id() returns NULL when cipher 0x9d is queried <sup> TLS_RSA_WITH_AES_256_GCM_SHA384
          • This results with the call ssl_ciphersuite_match() to fail with POLARSSL_ERR_SSL_INTERNAL_ERROR (RFC 5288)
    • Solution:
      • Utilize this backport, enabling AES-GM and CAMELLIA-GCM ciphersuites in PolarSSL;
        OR
      • Completely remove all PolarSSL related components from your build environment, switching to OpenSSL
        • Certain packages default to PolarSSL[libustream-polarssl] and will require edited makefiles
        • In the case of cshark, it is not compatible with OpenSSL (unsure about other SSL platforms)

  • DHCP & DNS
    • Problem: Active DHCP Leases list enumerates all statically assigned IPs as active, listing all with a netmask of /32.
      • If utilizing Kernels 4.1.x or 4.4.x, there appears to be an issue with how odhcpd interacts with dnsmasq, resulting in the aforementioned
    • Solution:
      • Uninstall odhcpd & odhcpd6 and install dnsmasq-full in lieu of;
        OR
      • Comment it out of /etc/config/dhcp
  • Corrupt Bootloader Recovery
    • contributed by: nitroshift & Stefan Roese

PDF Nitroshift's GitHub DOCx

  • Prerequisites:
    • Hardware:
      • PC running Linux
        • x86 libraries if x64
      • USB – TTL Cable
  • Armada XP
      • kwboot.tar
      • u-boot-nand.kwb
        • For transferring to router and writing to NAND
      • u-boot-uart.kwb
        • For booting from UART
  • Armada 385
      • u-boot-a38x-spi-uart.bin
        • For booting from UART
      • u-boot-a38x-spi.bin
        • For booting from NAND
  • Information:
    • This wouldn't have been possible without the help of Stefan Roese
    • If utilized, please send a thank you to:

Armada XP

Armada XP

  1. Terminal root access:
    sudo –i
  2. Install kwboot:
    cd /home/kwboot
    1. Unzip the archive, then:
      tar –xvf kwboot.tar
      • Actual compilation of kwboot:
        gcc kwboot.c
    2. Save u-boot-nand.kwb and u-boot-uart.kwb in /home/kwboot

  3. Set kwboot as executable:
    Chmod 755 kwboot
  4. Connect USB-TTL to router and PC (don’t power on router) & issue:
    dmesg | grep USB
    1. Make note of the number after /dev/ttyUSB (it’s usually 0), then:
      chmod 666 /dev/ttyUSB0
  5. Boot router using UART image and power on router:
    ./kwboot –a –t /dev/ttyUSB0 –b u-boot-uart.kwb
    • -a = use Armada XP timings
    • -t = open terminal in same window after transfer
    • -b = boot file

  6. After transfer finishes, you should be at the Marvell » prompt:
    1. If you are not:
      1. Power Off Router → Disconnect USB-TTL Cable from PC → Go Back to Step 3
    2. If you are:
      1. Set up TFTP server on PC (such as Ubuntu’s tftpd package)
      2. Put u-boot-nand.kwb in it’s tftpboot/ directory

  7. Connect PC to router (ethernet), set PC IP Address 192.168.1.254, and issue the following at the Marvell » prompt:
    setenv ipaddr 192.168.1.1
    setenv serverip 192.168.1.254
    tftp 2000000 u-boot-nand.kwb
    nand erase 0 e0000
    nand write 2000000 0 e0000
  8. If the above commands complete successfully, reboot router via:
    reset
    • Router should boot and stop at the Marvell » prompt

  9. Download firmware image for WRT1900AC v1 and save it to tftpboot/:
    1. Issue the following at the Marvell » prompt:
      tftp 192.168.1.254
      get <firmware_image_name>
  10. IMPORTANT:
    • After transfer completes successfully, DO NOT issue:
      • run flash_pri_image or run flash_alt_image or run update_both_images
        • These will brick the router again sending you back to Step 3

    1. Instead:
      run_linksysnandboot

      IF FAILS:

      run_linksysaltnandboot
  11. Allow router to fully boot:
    1. Verify it’s up and running correctly via the WebUI
    2. Power Off Router → Disconnect USB-TTL Cable → Power Back On

Armada 385

Armada 385

  1. Terminal root access:
    sudo –i
  2. Install kwboot:
    cd /home/kwboot
    1. Unzip the archive, then:
      tar –xvf kwboot.tar
      • Actual compilation of kwboot:
        gcc kwboot.c
    2. Save u-boot-a38x-spi-uart.bin and u-boot-a38x-spi.bin in /home/kwboot

  3. Set kwboot as executable:
    Chmod 755 kwboot
  4. Connect USB-TTL to router and PC (don’t power on router) & issue:
    dmesg | grep USB
    1. Make note of the number after /dev/ttyUSB (usually 0), then:
      chmod 666 /dev/ttyUSB0
  5. Boot router using UART image and power on router:
    ./kwboot -t /dev/ttyUSB0 -b u-boot-a38x-spi-uart.bin
    • -t = open terminal in same window after transfer
    • -b = boot file

  6. After transfer finishes, you should be at the Marvell » prompt:
    1. If you are not:
      1. Power Off Router → Disconnect USB-TTL Cable from PC → Go Back to Step 3
    2. If you are:
      1. Set up TFTP server on PC (such as Ubuntu’s tftpd package)
      2. Put u-boot-a38x-spi.bin in it’s tftpboot/ directory

  7. Connect PC to router (ethernet), set PC IP Address 192.168.1.254, and issue the following at the Marvell » prompt:
    setenv ipaddr 192.168.1.1
    setenv serverip 192.168.1.254
    bubt u-boot-a38x-spi.bin
  8. If the above commands complete successfully, reboot router via:
    reset
    • Router should boot and stop at the Marvell » prompt

  9. Download firmware image for your Armada 38x based device and save it to tftpboot/:
    1. Issue the following at the Marvell » prompt:
      tftp 192.168.1.254
      get <firmware_image_name>
  10. IMPORTANT:
    • After transfer completes successfully, DO NOT issue:
      • run flash_pri_image or run flash_alt_image or run update_both_images
        • These will brick the router again sending you back to Step 3

    1. Instead:
      run_linksysnandboot

      IF FAILS:

      run_linksysaltnandboot
  11. Allow router to fully boot:
    1. Verify it’s up and running correctly via the WebUI
    2. Power Off Router → Disconnect USB-TTL Cable → Power Back On

Tags

How to add tags

inbox/linksys/wrt_ac_series.txt · Last modified: 2019/01/20 04:52 by lantis1008