Linksys WRT1900AC

From DD-WRT Wiki

Jump to: navigation, search

NOTE: I am still working on these instructions and will have them finished by the middle of September, 2017. /u/Kleinbottle


[edit] Intro, Versions

These instructions have only been tested on the Linksys WRT1900AC v1.

The other models: WRT1200AC, WRT1900ACS, and WRT3200ACM are so similar that these instructions will probably also apply to the other versions, but it's not guaranteed. See this page for differences.

[edit] How to Flash

  1. Follow the standard procedure described for Linksys routers.
  2. There are two firmware files to download and install. Do them both; in order.
    1. Firmware: factory to dd-wrt, initial installation image factory-to-ddwrt.img
    2. Firmware: webflash image ddwrt-linksys-wrt1900ac-webflash.bin
    3. See Where do I download firmware? for links.

To see what's included, look here. As this is a Marvell based unit, builds are customized, just because it is standard, does not mean much, it can have more than a Broadcom standard.

[edit] Setup

Since the WRT1900 family uses Marvell chips, the "wl radio on" command does not work for turning the wifi on and off. Instead use the command "ifconfig ath0 up".

[edit] Wireless setup

The WRT1900AC is a dual band router. The two bands correspond to two physical interfaces in the Wireless/Basic Settings webpage.

  • ath0 is the 2.4 GHz band (also listed as TurboQAM)
  • ath1 is the 5GHz band (described as 802.11ac)

Follow the guide for wireless setup.

For ath0, my settings are:

 Wireless Mode: AP
 Wireless Network Mode: Mixed
 Channel Width: wide (40MHz)
 Wireless Channel: 9
 Extension Channel: Lower

Please choose a channel that is not on top of all of the others in your neighbourhood. Use the Android app "WiFi Data" or similar to see which channels in your area are not being used.

[edit] Advanced WiFi Settings

  • Don't bother changing the TX power. Increasing it from 30dBm doesn't seem to have any effect.
  • If you do not plan to use the 5GHz wifi band, turn it off by adding the command ifconfig ath1 down to the startup commands (webpage: Administration/Commands "Save Startup". Thus less power will be consumed and less heat generated.

[edit] 5 GHz wifi setup

In order to get the 5 GHz band working, all of the following must be set

  • SSID: the two interfaces (ath0, ath1) must have different SSIDs
  • Channel: even though there are a number of channels that can be used for the 5GHz band, many do not work, as this DFS page explains. Basically, the only usable ones are channels 36-48 and 149-165.
  • Wireless Network Mode: the webpage GUI lists various possibilities, but some do not work, notably "N-only". This is probably because the interface is called 802.11ac. "AC/N-mixed" is one of the few modes that works for me. A chart showing the difference between AC and N is here.
  • Channel Width: The smallest width is 20MHz. Increasing this can increase the speed, but may also increase noise. The DFS page linked above explains channel width well. You'll have to see how many other 5 GHz routers are nearby and experiment. The Extension Channel of Upper/Lower is also important based on where the DFS/radar channels are with respect to the channel that you have selected.

[edit] Guest WiFi setup

When adding virtual interfaces, make a NVRAM backup beforehand in case something goes wrong and you need to restore the previous settings.

  1. ADD a virtual interface. then SAVE.
  2. Configure the virtual interface, then SAVE again.

I followed all of the instructions at Guest Wifi for beginners

My Settings

  • set private network to (completely different subnet from 192.168.x.x)
  • use OpenDNS dns server

my NAT/QOS settings:

 Start QoS:  Enable
 Port: WAN
 Packet Scheduler: HTB
 Queueing Discipline: SFQ 
 Downlink (kbps): 27000
 Uplink (kbps): 4500

As explained in the link above, the downlink and uplink speeds must NOT be more than 95% of your ISPs speeds. My ISP provides 30Mbps down and 5 Mpbs up. Thus my QOS speed settings are

 Downlink speed = .9 * 30,000 kbps = 27000
 Uplink speed = .9 * 5000 kbps = 4500

  • Set bandwidth limiting to maximum for private network and bulk for guest.
  • I have not had a lot of traffic to test the QOS for the guest network. If there are problems change change SFQ to FQ_CODEL
  • I have not implemented any abuse control yet.

[edit] Hardware

[edit] USB LEDs

The LEDS for USB1 and USB2 do not seem to work as advertised. This may be a bug in DD-WRT. They both turn on when USB ports are enabled (see services) and turn off when they are disabled, regardless of whether something is plugged in or not.

[edit] LED brightness

The LEDs seem to lose brightness over time according to this. My router is second-hand and it's quite evident that the frequently used LEDs are dimmer than the others.

[edit] Changing LED brightness

To see the list of LEDs, type in the command: ls -l /sys/class/leds

The results are


NOTE: (1) mamba is the codename for the 1900AC v1. cobra is the codename for v2. (2) The 4 ethernet ports have two LEDs each, but they do not show up here.

The brightness of the LEDs can be adjusted by using this command

 echo 255 > /sys/class/leds/mamba\:white\:wan/brightness 

Where the brightness value can be from 0 to 255 (and as mentioned above, even at 255 they are not that bright).

[edit] LEDs and GPIO pins

Most of the LEDs above are connected to / controlled by GPIO pins. The command /sbin/gpio allows one to examine and manipulate the GPIO pin status.

  • /sbin/gpio poll 9 (this tells if pin 9 is 00 = off or 01 = on)
  • /sbin/gpio enable 9 (this enables pin 9, ie. sets it to 1)
  • /sbin/gpio disable 9 (this disables pin 9, ie, sets it to 0)


  1. The /sbin/gpio command works better over wifi than from a computer connected via ethernet cable. I don't know why. In the latter case, CTRL-C does not work to end the poll command.
  2. Even doing a poll will often mess up the router so much that it just freezes. You'll have to reboot it after experimenting with the /sbin/gpio commands.

The LEDs that have GPIO pins that can be accessed are the following:

 [pin # = LED name]
 6=white internet
 7=amber internet
 8=USB2 dot
 9= WPS (white)  This is the far right LED that has an UP/Down arrow.
 10= WPS (amber)

I have not been able to find out what pins 1,2,3 do, although it seems logical that they would be wlan_2g, wlan_5g and esata.

It looks like pins 9 and 10 are available and most easily used as customizable indicator lights.

The GPIO pin information is important for the scripting below ...

[edit] Scripting

to be completed later

[edit] Contact

For any corrections or additions, please email me at . This email address will work until it gets inundated with spam and I delete it.