openwrt Insomnia
  Uptime Robot ratio (30 days)      

☕ OpenWrt with latest NodeJs for Linksys WRT


The main reason is to be able to use the latest NodeJs for Linksys WRT (the default NodeJs is old) UPnP and the crypto accelerator.

Also, a docker container with all the firmwares and packages are in /build/source/bin @


The default UPnP is using (about since OpenWrt v18) IGDV2 which is not compatible with consoles and Windows, so, installed UPnP IGDV1 in the firmware. So, now, all consoles are working with UPnP.

Crypto accelerator 

Since OpenWrt 19, the crypto accelerator is enabled by default.

You can verify 

Not enabled:

root@hawk:~# openssl engine -t -c
(dynamic) Dynamic engine loading support
     [ unavailable ]


root@hawk:~# openssl engine -t -c
(dynamic) Dynamic engine loading support
     [ unavailable ]
(devcrypto) /dev/crypto engine
 [DES-CBC, DES-EDE3-CBC, AES-128-CBC, AES-192-CBC, AES-256-CBC, AES-128-ECB, AES-192-ECB, AES-256-ECB]
     [ available ]

European version 

If you have a 3rd Radio and you have the European version of WRT and have a 3rd radio, to get it to work on DFS/Radar, create this file:


with this content:

mwifiex reg_alpha2=FR

Then, set all radio 1 and 2 to be FR as well and the DTS/Radar perfectly works.


There are at least about 9000 packages built for Linksys WRT.

  • Enabled NGINX HTTP2
  • NodeJs latest version and many pre-built packages (including binaries)

See what is in create from scratch.

Routers pre-built 

If you want to install right away with LUCI:

The release 

If you want some of the packages 


Linksys WRT or compatible alike mvebu / arm 9 (arm_cortex-a9_vfpv3-d16) 

What is very useful is (many NodeJs built packages as well as binary builds):

src/gz openwrt_node

The rest, you can find on OpenWrt as well, so you do not need it:

src/gz openwrt_core
src/gz openwrt_base
src/gz openwrt_luci
src/gz openwrt_packages
src/gz openwrt_routing
src/gz openwrt_telephony


If you do not want to have the hassle, there are multiple solutions below. 

If you use an insomnia firmware, then you are done, but if you want one or more feeds from a non insomnia firmware, your router still needs a verified signature.

If you just use one or a few feeds non insomnia firmware, your router needs a signature 

You can enable foreign keys from this directory: to



If you see something like untrusted comment: OpenWrt usign key of Patrik Laszlo / patrikx3 as it says, you do not have to be afraid. It means, that the comment itself is not verified.

Option 2 

The easiest solution I know is via LUCI :

In the Configuration tab, comment like this:
#option check_signature 1

Option 3 manual with SSH 

You can also set it up via SSH as:

root@digi:~# cat /etc/opkg.conf
dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay
#option check_signature 1

Just edit there, nano is installed, just comment the option check_signature 1 as it shows above.

Ext-root issue 

Based on the OpenWrt forum discussions, after sysupgrade, the ext-root has to be re-built, no other solution.

Wifi and WPS Issue 

It is only working, if only these are built in the firmware: hostapd-common wpad-mini, nothing other like that. If not, it will not work. WPS info.

Upgrade errors 

  • Linksys WRT1900ACS / Linksys WRT3200ACM / Linksys WRT32X
    • For Linksys the firmwares that start with insomnia worth trying, because you can use latest NodeJs.
    • or specific version eg.
      • If you get the error The uploaded image file does not contain a supported format. Make sure that you choose the generic image format for your platform., you have to do it via SSH with sysupgrade -F FIRMWARE, then it works.
      • If you have a bricked firmware, you need a USB-TTL. Linksys USB-TTL.
      • Error code: 18005
        • When trying to install a firmware image, I get the following error:
          • Error code: 18005, Upgrade unsuccessfully because the version of the upgraded file was incorrect. Please check the file name.
        • Solution: Rename the firmware image to something short, like e.g. factory.bin



Docker CE

For your workstation, you don't really NodeJs, but GitHub actions and auto generated websites are required...

This is a OpenWrt Docker builder and a living Docker repo as well, ready to build, a lot already built. (A big image / full firmware, the most important packages are built. Ready to use.)

Changing the firmware pre-built, so the build will be fast!!! 

All the latest stable OpenWrt versions.

  • docker pull patrikx3/openwrt-insomnia:linksys-wrt
  • RAW
    • docker pull patrikx3/openwrt-insomnia:latest

You run them, but these here, the built is in: , all the built packages and firmwares in /build/source/bin, you move to a host, install the firmware and you are done, because in the insomnia firmwares there is a lot in, but this is the default, so you need to change your own hostname here: at Configuration tab. If you do not want to build at all you can choose to your host

All built packages and firmwares including the insomnia firmwares are in /build/source/bin.

README about how I build the firmwares in order

My repos

Linksys WRT Radar Detection 

Tested on WRT1900ACSv2 and WRT3200ACM, works.




Docker commands 


Create packages, not neeed anymore 

My first package

Create from scratch 


Copy configs 


Firmware sizes 




Packages and patches 


Linksys WRT 3200ACM 160 Mhz 


Linksys USB-TTL 


Linksys WRT 3200ACM / WRT32X 

For some reason it needs this:

# based on this
echo "except-interface=eth1.2" >> /etc/dnsmasq.conf
onenoteGithub onenoteredis-uiGithub redis-uiangular-compileGithub angular-compilegitlistGithub gitlistramdiskGithub ramdiskfreenomGithub freenomopenwrt-insomniaGithub openwrt-insomniaredis-ui-serverGithub redis-ui-serversystemd-managerGithub systemd-managercorifeusGithub corifeusxml2jsonGithub xml2jsonredis-ui-materialGithub redis-ui-materialangular-http-cache-interceptorGithub angular-http-cache-interceptorhtml-pdfGithub html-pdfverdaccio-cliGithub verdaccio-clibinary-search-closestGithub binary-search-closestcorifeus-app-web-pagesGithub corifeus-app-web-pagesgrunt-p3x-expressGithub grunt-p3x-expressjson2xls-worker-threadGithub json2xls-worker-threadcorifeus-builderGithub corifeus-buildercorifeus-utilsGithub corifeus-utilstoolsGithub tools