Linksys WRT1900ACS

Linksys WRT1900ACS.

  • model: WRT1900ACS
  • network 2.4 GHz + 5 GHz simultaneously
  • hardware version: V2

back to network page.

Links

links: OpenWrt, OpenWRT - Linksys WRT ACS Series, LEDE Project, OpenWrt: upgrading to latest version when chipset migrated to DSA support, How to create user without useradd command in OpenWRT,

History

2026-04-12: check if the ubus packeges required for Home Assistant OpenWrt ubus integration is installed

root@kg-shelby-b:~# apk info | grep rpcd-mod-file
rpcd-mod-file
root@kg-shelby-b:~# apk info | grep uhttpd-mod-ubus
uhttpd-mod-ubus

yes, they are. I configured the necessary things in OpenWrt (create a user, set a password, update and create config files), then did the rest in Home Assistant.

2026-04-12: luci-mod-rpc, se if the fix from #576 will work:

root@kg-shelby-b:~# grep timeout /usr/lib/lua/luci/controller/rpc.lua
            #timeout  = tonumber(config.sauth.sessiontime)
            timeout  = 60

no, it doesn't appear to work.

2026-04-12: apk - install the luci-mod-rpc package

root@kg-shelby-b:~# apk install luci-mod-rpc
ERROR: 'install' is not an apk command. See 'apk --help'.

right - apk is different

root@kg-shelby-b:~# apk add luci-mod-rpc
( 1/12) Installing liblua5.1.5 (5.1.5-r11)
  Executing liblua5.1.5-5.1.5-r11.post-install
( 2/12) Installing liblucihttp-lua (2023.03.15~9b5b683f-r1)
  Executing liblucihttp-lua-2023.03.15~9b5b683f-r1.post-install
( 3/12) Installing libubus-lua (2025.12.02~3cc98db1-r1)
  Executing libubus-lua-2025.12.02~3cc98db1-r1.post-install
( 4/12) Installing lua (5.1.5-r11)
  Executing lua-5.1.5-r11.post-install
( 5/12) Installing luci-lib-ip (26.101.22673~0c81d2d)
  Executing luci-lib-ip-26.101.22673~0c81d2d.post-install
( 6/12) Installing luci-lib-jsonc (26.101.22673~0c81d2d)
  Executing luci-lib-jsonc-26.101.22673~0c81d2d.post-install
( 7/12) Installing luci-lib-nixio (26.101.22673~0c81d2d)
  Executing luci-lib-nixio-26.101.22673~0c81d2d.post-install
( 8/12) Installing luci-lib-base (26.101.22673~0c81d2d)
  Executing luci-lib-base-26.101.22673~0c81d2d.post-install
( 9/12) Installing ucode-mod-lua (1)
  Executing ucode-mod-lua-1.post-install
(10/12) Installing luci-lua-runtime (26.101.22673~0c81d2d)
  Executing luci-lua-runtime-26.101.22673~0c81d2d.post-install
(11/12) Installing luci-lib-json (26.101.22673~0c81d2d)
  Executing luci-lib-json-26.101.22673~0c81d2d.post-install
(12/12) Installing luci-mod-rpc (26.101.22673~0c81d2d)
  Executing luci-mod-rpc-26.101.22673~0c81d2d.post-install
OK: 12.0 MiB in 164 packages

verify

root@kg-shelby-b:~# apk info luci-mod-rpc
luci-mod-rpc-26.101.22673~0c81d2d description:
LuCI RPC - JSON-RPC API

luci-mod-rpc-26.101.22673~0c81d2d webpage:
https://github.com/openwrt/luci

luci-mod-rpc-26.101.22673~0c81d2d installed size:
10 KiB

2026-04-12: after the upgrade, we have

root@kg-shelby-b:~# cat /etc/banner
  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 25.12.2, r32802-f505120278 Dave's Guitar
 -----------------------------------------------------
root@kg-shelby-b:~# cat /tmp/sysinfo/board_name 
linksys,wrt1900acs
root@kg-shelby-b:~# cat /tmp/sysinfo/model 
Linksys WRT1900ACS

good.

2026-04-12: do the upgrade

root@kg-shelby-b:~# sysupgrade -F -n -v /tmp/openwrt-25.12.2-mvebu-cortexa9-linksys_wrt1900acs-squashfs-sysupgrade.bin
Device linksys,shelby not supported by this image
Supported devices: linksys,wrt1900acs armada-385-linksys-shelby linksys,shelby - Image version mismatch: image 1.1, device 1.0. Please wipe config during upgrade (force required) or reinstall. Reason: Config cannot be migrated from swconfig to DSA
Image check failed but --force given - will update anyway!
Commencing upgrade. Closing all shell sessions.
Connection to kg-shelby.kg4.no closed by remote host.
Connection to kg-shelby.kg4.no closed.

then do the tethered dance; connect to the WRT1900ACS with a ethernet cable, and change things that needs change. I had to do the ipv4 address change twice, the first time I waited to long before connecting, and the device reverted to previous config. Oh well, live and learn.

2026-04-12: put the network config here

root@kg-shelby-b:/etc# cat /etc/config/network

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

config globals 'globals'
    option ula_prefix 'fd8c:2fd0:94bd::/48'

config interface 'lan'
    option type 'bridge'
    option ifname 'eth0.1'
    option proto 'static'
    option ip6assign '60'
    option netmask '255.255.0.0'
    option ipaddr '10.1.10.14'
    option gateway '10.1.10.1'

config interface 'wan'
    option ifname 'eth1.2'
    option proto 'dhcp'

config interface 'wan6'
    option ifname 'eth1.2'
    option proto 'dhcpv6'

config switch
    option name 'switch0'
    option reset '1'
    option enable_vlan '1'

config switch_vlan
    option device 'switch0'
    option vlan '1'
    option ports '0 1 2 3 5t'

config switch_vlan
    option device 'switch0'
    option vlan '2'
    option ports '4 6t'

and the wireless config too (remove sensitive data)

root@kg-shelby-b:/etc# cat /etc/config/wireless 

config wifi-device 'radio0'
    option type 'mac80211'
    option channel '36'
    option hwmode '11a'
    option path 'soc/soc:pcie/pci0000:00/0000:00:01.0/0000:01:00.0'
    option htmode 'VHT80'
    option country 'NO'

config wifi-iface 'default_radio0'
    option device 'radio0'
    option network 'lan'
    option mode 'ap'
    option macaddr '60:38:e0:0c:2c:51'
    option ssid 'kg6-5Ghz'
    option encryption 'psk2'
    option key '<key>'

config wifi-device 'radio1'
    option type 'mac80211'
    option hwmode '11g'
    option path 'soc/soc:pcie/pci0000:00/0000:00:02.0/0000:02:00.0'
    option country 'DE'
    option htmode 'HT40'
    option channel '13'

config wifi-iface 'default_radio1'
    option device 'radio1'
    option network 'lan'
    option mode 'ap'
    option macaddr '60:38:e0:0c:2c:50'
    option encryption 'psk2'
    option key '<key>'
    option ssid 'kg5'

radio1 country should be changed.

2026-04-12 - find any user-installed packages

cat << "EOF" > /tmp/listuserpackages.awk
#!/usr/bin/awk -f
BEGIN {
    ARGV[ARGC++] = "/usr/lib/opkg/status"
    cmd="opkg info busybox | grep '^Installed-Time: '"
    cmd | getline FLASH_TIME
    close(cmd)
    FLASH_TIME=substr(FLASH_TIME,17)
}
/^Package:/{PKG= $2}
/^Installed-Time:/{
    INSTALLED_TIME= $2
    # Find all packages installed after FLASH_TIME
    if ( INSTALLED_TIME > FLASH_TIME ) {
        cmd="opkg whatdepends " PKG " | wc -l"
        cmd | getline WHATDEPENDS
        close(cmd)
        # If nothing depends on the package, it is installed by user
        if ( WHATDEPENDS == 3 ) print PKG
    }
}
EOF

run the script

root@kg-shelby-b:/tmp# chmod +x /tmp/listuserpackages.awk
root@kg-shelby-b:/tmp# /tmp/listuserpackages.awk /usr/lib/opkg/status > /etc/opkg-beforeupgrade

check it

root@kg-shelby-b:/tmp# ls -l /etc/opkg-beforeupgrade
-rw-r--r--    1 root     root             0 Apr 12 17:28 /etc/opkg-beforeupgrade

so "no user installed packages" then. Check for custom conf files

root@kg-shelby-b:/tmp#  cat /lib/upgrade/keep.d/* | grep -v /etc
# Essential files that will be always kept
root@kg-shelby-b:/tmp# cat /etc/sysupgrade.conf | grep -v /etc
## This file contains files and directories that should
## be preserved during an upgrade.

root@kg-shelby-b:/tmp# opkg list-changed-conffiles | grep -v /etc

none of those either. create a backup of /etc

root@kg-shelby-b:/etc# tar zcvf /tmp/etc.tar.gz *
[..]

and copy it off with scp.

2026-04-12: check what we have

root@kg-shelby-b:/tmp# cat /etc/banner
  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt SNAPSHOT, r13059-9fac9168c6
 -----------------------------------------------------
root@kg-shelby-b:/tmp# cat /tmp/sysinfo/board_name
linksys,shelby
root@kg-shelby-b:/tmp# cat /tmp/sysinfo/model
Linksys WRT1900ACS

2026-04-12: ok, upgrade to a supported OpenWRT version this way then. fetch

root@kg-shelby-b:~# cd /tmp
root@kg-shelby-b:/tmp# wget https://downloads.openwrt.org/releases/25.12.2/targets/mvebu/cortexa9/openwrt-25.12.2-mvebu-cortexa9-linksys_wrt1900acs-squashfs-sysupgrade.bin
--2026-04-12 17:06:23--  https://downloads.openwrt.org/releases/25.12.2/targets/mvebu/cortexa9/openwrt-25.12.2-mvebu-cortexa9-linksys_wrt1900acs-squashfs-sysupgrade.bin
Resolving downloads.openwrt.org... 151.101.2.132, 151.101.194.132, 151.101.130.132, ...
Connecting to downloads.openwrt.org|151.101.2.132|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7987853 (7.6M) [application/octet-stream]
Saving to: 'openwrt-25.12.2-mvebu-cortexa9-linksys_wrt1900acs-squashfs-sysupgrade.bin'

openwrt-25.12.2-mvebu-cortexa9-linksys_w 100%[=================================================================================>]   7.62M  --.-KB/s    in 0.09s   

2026-04-12 17:06:23 (83.4 MB/s) - 'openwrt-25.12.2-mvebu-cortexa9-linksys_wrt1900acs-squashfs-sysupgrade.bin' saved [7987853/7987853]

check

root@kg-shelby-b:/tmp# wget https://downloads.openwrt.org/releases/25.12.2/targets/mvebu/cortexa9/sha256sums
--2026-04-12 17:11:52--  https://downloads.openwrt.org/releases/25.12.2/targets/mvebu/cortexa9/sha256sums
Resolving downloads.openwrt.org... 151.101.2.132, 151.101.66.132, 151.101.130.132, ...
Connecting to downloads.openwrt.org|151.101.2.132|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 191276 (187K) [text/plain]
Saving to: 'sha256sums'

sha256sums                                         100%[==============================================================================================================>] 186.79K  --.-KB/s    in 0.005s  

2026-04-12 17:11:52 (38.7 MB/s) - 'sha256sums' saved [191276/191276]

root@kg-shelby-b:/tmp# sha256sum -c sha256sums 2>/dev/null | grep OK
openwrt-25.12.2-mvebu-cortexa9-linksys_wrt1900acs-squashfs-sysupgrade.bin: OK

upgrade

root@kg-shelby-b:/tmp# sysupgrade -v /tmp/openwrt-25.12.2-mvebu-cortexa9-linksys_wrt1900acs-squashfs-sysupgrade.bin
Device linksys,shelby not supported by this image
Supported devices: linksys,wrt1900acs armada-385-linksys-shelby linksys,shelby - Image version mismatch: image 1.1, device 1.0. Please wipe config during upgrade (force required) or reinstall. Reason: Config cannot be migrated from swconfig to DSA
Image check failed.

2026-04-12: opkg - opkg update, fails

root@kg-shelby-b:~# opkg update
Downloading https://dc502wrt.org/snapshots/r13059/targets/mvebu/cortexa9/packages/Packages.gz
*** Failed to download the package list from https://dc502wrt.org/snapshots/r13059/targets/mvebu/cortexa9/packages/Packages.gz

Downloading https://dc502wrt.org/snapshots/r13059/packages/arm_cortex-a9_vfpv3-d16/base/Packages.gz
*** Failed to download the package list from https://dc502wrt.org/snapshots/r13059/packages/arm_cortex-a9_vfpv3-d16/base/Packages.gz

Downloading https://dc502wrt.org/snapshots/r13059/packages/arm_cortex-a9_vfpv3-d16/darkmatter/Packages.gz
*** Failed to download the package list from https://dc502wrt.org/snapshots/r13059/packages/arm_cortex-a9_vfpv3-d16/darkmatter/Packages.gz

Downloading https://dc502wrt.org/snapshots/r13059/packages/arm_cortex-a9_vfpv3-d16/luci/Packages.gz
*** Failed to download the package list from https://dc502wrt.org/snapshots/r13059/packages/arm_cortex-a9_vfpv3-d16/luci/Packages.gz

Downloading https://dc502wrt.org/snapshots/r13059/packages/arm_cortex-a9_vfpv3-d16/opentomato/Packages.gz
*** Failed to download the package list from https://dc502wrt.org/snapshots/r13059/packages/arm_cortex-a9_vfpv3-d16/opentomato/Packages.gz

Downloading https://dc502wrt.org/snapshots/r13059/packages/arm_cortex-a9_vfpv3-d16/packages/Packages.gz
*** Failed to download the package list from https://dc502wrt.org/snapshots/r13059/packages/arm_cortex-a9_vfpv3-d16/packages/Packages.gz

Downloading https://dc502wrt.org/snapshots/r13059/packages/arm_cortex-a9_vfpv3-d16/routing/Packages.gz
*** Failed to download the package list from https://dc502wrt.org/snapshots/r13059/packages/arm_cortex-a9_vfpv3-d16/routing/Packages.gz

Downloading https://dc502wrt.org/snapshots/r13059/packages/arm_cortex-a9_vfpv3-d16/telephony/Packages.gz
*** Failed to download the package list from https://dc502wrt.org/snapshots/r13059/packages/arm_cortex-a9_vfpv3-d16/telephony/Packages.gz

Collected errors:
 * opkg_download: Failed to download https://dc502wrt.org/snapshots/r13059/targets/mvebu/cortexa9/packages/Packages.gz, wget returned 4.
 * opkg_download: Check your network settings and connectivity.

 * opkg_download: Failed to download https://dc502wrt.org/snapshots/r13059/packages/arm_cortex-a9_vfpv3-d16/base/Packages.gz, wget returned 4.
 * opkg_download: Check your network settings and connectivity.

 * opkg_download: Failed to download https://dc502wrt.org/snapshots/r13059/packages/arm_cortex-a9_vfpv3-d16/darkmatter/Packages.gz, wget returned 4.
 * opkg_download: Check your network settings and connectivity.

 * opkg_download: Failed to download https://dc502wrt.org/snapshots/r13059/packages/arm_cortex-a9_vfpv3-d16/luci/Packages.gz, wget returned 4.
 * opkg_download: Check your network settings and connectivity.

 * opkg_download: Failed to download https://dc502wrt.org/snapshots/r13059/packages/arm_cortex-a9_vfpv3-d16/opentomato/Packages.gz, wget returned 4.
 * opkg_download: Check your network settings and connectivity.

 * opkg_download: Failed to download https://dc502wrt.org/snapshots/r13059/packages/arm_cortex-a9_vfpv3-d16/packages/Packages.gz, wget returned 4.
 * opkg_download: Check your network settings and connectivity.

 * opkg_download: Failed to download https://dc502wrt.org/snapshots/r13059/packages/arm_cortex-a9_vfpv3-d16/routing/Packages.gz, wget returned 4.
 * opkg_download: Check your network settings and connectivity.

 * opkg_download: Failed to download https://dc502wrt.org/snapshots/r13059/packages/arm_cortex-a9_vfpv3-d16/telephony/Packages.gz, wget returned 4.
 * opkg_download: Check your network settings and connectivity.

aha, dc502wrt.org doesn't exist anymore.

2026-04-05: web gui - I changed SSID of the 2.4 GHz radio to "kg5" and enabled it.

2024-01-07: check uptime (for some reason this AP is not in my DNS)

tingo@kg-core2:~ $ ssh root@10.1.10.14
root@10.1.10.14's password: 


BusyBox v1.31.1 () built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt SNAPSHOT, r13059-9fac9168c6
 -----------------------------------------------------
root@kg-shelby-b:~# uptime
 17:04:10 up 254 days,  9:03,  load average: 0.08, 0.01, 0.00

2023-09-09: check uptime

root@kg-shelby-b:~# date;uptime
Sat Sep  9 13:17:08 CEST 2023
 13:17:08 up 134 days,  4:16,  load average: 0.00, 0.00, 0.00

2022-10-29: reboot again - Jolla Tablet couldn't connect.

2022-05-30: my Jolla Tablet couldn't connect to this AP, so I rebooted it. It had 276 days of uptime.

2021-07-07: I re-created this page on my self-hosted web server.

2020-09-11: it seems like the box rebooted on its own:

root@kg-shelby-b:~# date;uptime
Sun May 10 19:25:06 CEST 2020
 19:25:06 up 18 min,  load average: 0.02, 0.09, 0.11

and the date is totally wrong too. Hmm,

root@kg-shelby-b:~# uci show system.ntp
system.ntp=timeserver
system.ntp.server='0.openwrt.pool.ntp.org' '1.openwrt.pool.ntp.org' '2.openwrt.pool.ntp.org' '3.openwrt.pool.ntp.org'

looks correct. I did 'sync with NTP server from System, system and that fixed it:

root@kg-shelby-b:~# date;uptime
Fri Sep 11 07:57:56 CEST 2020
 07:57:56 up 27 min,  load average: 0.00, 0.03, 0.06

ok

2020-05-10: OpenWRT - uci - network.lan

root@kg-shelby-b:~# uci show network.lan
network.lan=interface
network.lan.type='bridge'
network.lan.ifname='eth0.1'
network.lan.proto='static'
network.lan.ipaddr='192.168.1.1'
network.lan.netmask='255.255.255.0'
network.lan.ip6assign='60'

and

root@kg-shelby-b:~# uci get network.lan.netmask
255.255.255.0

so change it

root@kg-shelby-b:~# uci set network.lan.netmask='255.255.0.0'
root@kg-shelby-b:~# uci get network.lan.netmask
255.255.0.0
root@kg-shelby-b:~# uci set network.lan.ipaddr='10.1.10.14'
root@kg-shelby-b:~# uci get network.lan.ipaddr
10.1.10.14

and commit

root@kg-shelby-b:~# uci commit

verify

root@kg-shelby-b:~# uci show network.lan
network.lan=interface
network.lan.type='bridge'
network.lan.ifname='eth0.1'
network.lan.proto='static'
network.lan.ip6assign='60'
network.lan.netmask='255.255.0.0'
network.lan.ipaddr='10.1.10.14'

now I just need to activate it.

root@kg-shelby-b:~# service network reload

(my ssh connection broke, but it worked)

2020-05-10: OpenWRT - config via uci then:

root@kg-shelby-b:~# uci
Usage: uci [<options>] <command> [<arguments>]

Commands:
    batch
    export     [<config>]
    import     [<config>]
    changes    [<config>]
    commit     [<config>]
    add        <config> <section-type>
    add_list   <config>.<section>.<option>=<string>
    del_list   <config>.<section>.<option>=<string>
    show       [<config>[.<section>[.<option>]]]
    get        <config>.<section>[.<option>]
    set        <config>.<section>[.<option>]=<value>
    delete     <config>[.<section>[[.<option>][=<id>]]]
    rename     <config>.<section>[.<option>]=<name>
    revert     <config>[.<section>[.<option>]]
    reorder    <config>.<section>=<position>

ok

2020-05-10: firmware - I flashed the latest image from dc502wrt.org, which went well. For some rerason I have trouble getting the ip (v4) address to stick, so now I have ssh'ed to the AP via IPv6:

tingo@z30b:~$ ssh -6 root@fe80::6238:e0ff:fe0c:2c4f%wlp2s0
root@fe80::6238:e0ff:fe0c:2c4f%wlp2s0's password:


BusyBox v1.31.1 () built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt SNAPSHOT, r13059-9fac9168c6
 -----------------------------------------------------
root@kg-shelby-b:~#

good

2020-03-27: firmware - there is also the community builds over at dc502wrt.org, with LuCi "OpenTomato" web interface.

2020-03-27: firmware - OpenWRT 19.07.2 is recommended.

2018-10-14: firmware - OpenWRT - the page now recommends OpenWRT 18.06.1 for the WRT1900ACS. Hmmm,,,

2018-08-08: firmware - OpenWRT have a page one the WRT1900ACS (and the rest of the series). Unsure if OpenWRT 18.06.0 works on this device.

2017-08-05: firmware - custom LEDE image here: https://davidc502sis.dynamic-dns.net/releases/#1900acs

2017-08-05: firmware - latest official firmware is download, release notes,

Ver. 2.0.1.182461
Latest Date:  7/21/2017

2017-08-05: unboxed the router this afternoon. On the underside it says model no. WRT1900ACS V2.

2016-11-11: hardware - v1 or v2?

2016-10-11: I got a pickup message (text message) during the day and picked up the package at Coop Extra Birkelunden in the evening.

2016-10-10: my order was shipped.

2016-10-09: there was a sale on Komplett, and I ordered the WRT1900ACS which sold for NOK 1695.- (the order included another item).