Skip to content
This repository has been archived by the owner on Aug 12, 2021. It is now read-only.

Releases: NoTengoBattery/openwrt

v2.10

11 Jan 15:53
Compare
Choose a tag to compare

IPQ40xx Custom ROM v2.10

Based on OpenWrt commit 0f8fd1d

This build supports the following devices:

  • GL-iNet GL-S1300 [Convexa-S]
  • Linksys EA6350 v3 [Civic]
  • Linksys EA8300/MR8300 [Dallas]
  • EZVIZ CS-W3-WD1200G EUP [Vitzio]

Don't forget to apply the hotfixes!

For small fixes and annoyances, the hotfix mechanics allows providing a differential update that can be flashed without reinstalling the firmware.

Here is how it works:

  1. Flash the image as always.
  2. Once the device boots, go immediately to the Backup / Flash Firmware in LuCI.
  3. Upload the tar.gz in the Restore section, as if it's a backup.

How to decompress and install

Warning: the 'sysupgrade' procedure will reset some settings to their default values. To see the system's changes by looking at the 'bootz' files in /etc/bootz.

First, decompress the downloaded file. This file is compressed using xz, and it's a tarball.

  • If using Windows, install PeaZip
  • If using macOS, install Keka (beta)
  • If using Linux, macOS or other UNIX/UNIX-like, it's likely that they have all the tools

A folder will be decompressed. Inside this folder, there are the following subfolders:

  • bin: this contains the two "flashable" versions of the firmware. One is a sysupgrade image that will upgrade from another version or OpenWrt, and the other is a factory image that will flash directly from the OEM firmware.
  • info: this folder contains the manifests, the configuration seed, and the checksums.
  • patches: it contains all the patches that apply cleanly over the fork point.

From the OpenWrt firmware or another version of this firmware

Follow the instruction on the OpenWrt wiki page for upgrading using LuCI or CLI:

From the Linksys firmware

Follow the instruction on the OpenWrt wiki page for the device:

From the GL.iNet firmware

Follow the instruction on the GL.iNet Docs page for the device:

CAREFUL: the instructions for the Convexa-S are incomplete, and following them to flash the device with OpenWrt or this build will hard brick it, requiring hardware re-programming and assistance from the GL.iNet tech support. Follow the instructions from Dongming Han here.

Features and packages

The binary installable image contains the following packages and features:

  • Using the OEM partition as /overlay for extra storage (dual-partition devices only)
  • DNS
    • Disabled dnsmasq DNS forwarder in favor of unbound resolver with TLS
    • Configured Unbound as a TLS forwarder for a secure DNS server (currently: Quad9)
  • Utilities
    • Tools: bash, nano, nologin, sudo
    • Performance: haveged, schedutil, compressed-memory
  • LuCI
    • adblock, advanced-reboot, commands, compressed-memory, dashboard, uhttpd, unbound
  • File Systems
    • exfat, ext4, f2fs, msdos (FAT16/32)
  • Kernel features and modules
    • New Linux IOSCHEDs elevators and Governors
    • schedutil enabled by default for all CPU's
    • Fully preemptive @ 100 Hz kernel for more responsiveness
  • Patched VLAN to work as expected for all supported IPQ40xx targets

General notes

All kernel modules for a particular version, among with a wide set of LuCI apps, are automatically uploaded to GitHub, and opkg is configured to use them. The other software is available from OpenWrt's snapshots, but the ROM is not configured to use them by default. If there is some missing package or kernel module, please open a GitHub issue or send feedback to my email or my OpenWrt forum thread explaining exactly what's missing. It will be added to the next release.

This is a custom configuration optimized for IPQ40xx devices. The purpose of this build is to give the user a sensible selection of software for testing and using OpenWrt without too much extra effort. It's also optimized for lower latency and fixes for many annoyances. This build contains some important changes compared to OpenWrt. It contains some customizations that cannot be found in the official OpenWrt image or the OpenWrt repositories. However, most packages (excluding kernel modules) are 100% compatible.

Take into consideration

The default IP address is now 192.168.xx.1 and IPv6 is fd00:192:168:xx::1, the xx means that every supported device has a different subnet IP. The hostname is Civic, 'Convexa-B', 'Convexa-S', Dallas or Vitzio.

For LuCI Administration WebUI, go to

Wireless password:
 - [Hostname] -> OpenWrt on [Hostname]
Login password:
 - admin -> admin
 - root -> root

Note: [Hostname] refers to the device's default hostname. Replace that placeholder accordingly. For example, the SSID for Dallas will be Dallas, and the password will be OpenWrt on Dallas.

Give Me Love 💌

Don't hesitate to give this repository a golden star or forking it. This build is and will be free forever. The only thing that may I ask in exchange is proper feedback.

Downloads

Click the "Assets" button below and download the .tar.xz file. If you want to check the hotfix's integrity, here is the SHA256 checksum. Use the shasum command or PeaZip/7zip.

You should only flash the hotfixes file containing the hostname (in lowercase) of your device. If the hotfix file for your device is not present, but there is one called others or common, you should use both files first and finally the file for your device.

  No Hotfixes needed at the moment.

v2.06

14 Dec 02:22
Compare
Choose a tag to compare

EA6350v3/XX8300/Convexa Custom ROM v2.06

Based on OpenWrt commit 85caf21

IMPORTANT NOTICE

A user was kind enough to report the kernel's stack trace, and the module causing random crashes is the ath10k-ct driver. Candela Technologies was reported the problem, and their suggestion is to test the "non-ct" (that means, the stock driver from Linux and firmware from Qualcomm) to see if it is stable. This will be uploaded on 2021/01/10 by issuing a new update, v2.10, without the Candela driver and firmware.

Candela needs more reports about the issue to fix their driver. Any help to me is helping them and the whole community in the end. You can contact me via [email protected]. Start the subject of the message with IPQ40xx: followed by whatever relevant subject you want. I will explain to you how to extract, compress, and submit your logs.

Note that neither Candela nor I can work on an issue without proper bug reporting. I am not upset. The Grammarly app corrects the text to sound "direct," "informative," and "confident," which works well to write technical documentation but can sound upset when talking directly to people.

Don't forget to apply the hotfixes!

Sometimes I forget some details when the image is ready, and the problem is not worth re-build. Instead of just keeping the annoyances go along, I decided to implement the "hotfixes" mechanics.

Here is how it works:

  1. Flash the image as always.
  2. Once the device boots, go immediately to the Backup / Flash Firmware in LuCI.
  3. Upload the tar.gz in the Restore section, as if it's a backup.

That's all!

How to decompress and install

Warning: the 'sysupgrade' procedure will reset some settings to their default values. To see the system's changes by looking at the 'bootz' files in /etc/bootz.

First, decompress the downloaded file. This file is compressed using xz, and it's a tarball.

  • If using Windows, install PeaZip
  • If using macOS, install Keka (beta)
  • If using Linux, macOS or other UNIX/UNIX-like, it's likely that they have all the tools

A folder will be decompressed. Inside this folder, there are the following subfolders:

  • bin: this contains the two "flashable" versions of the firmware. One is a sysupgrade image that will upgrade from another version or OpenWrt, and the other is a factory image that will flash directly from the OEM firmware.
  • info: this folder contains the manifests, the configuration seed, and the checksums.
  • patches: it contains all the patches that apply cleanly over the fork point.

From the OpenWrt firmware or another version of this firmware

Go to LuCI and apply the sysupgrade image. Either from the OpenWrt firmware or another version of this firmware. This firmware will not apply cleanly over the stock OpenWrt firmware.

Note: Perform the upgrade from stock OpenWrt without keeping/saving settings. Otherwise, the device will likely soft-brick. If it does brick, trigger a recovery as documented in the wiki. Failsafe mode will work to reset settings from there.

Go to http://192.168.xx.1/cgi-bin/luci/admin/system/flash if using another version of this firmware. Go to https://192.168.1.1/cgi-bin/luci/admin/system/flash if using the OpenWrt firmware. Use the command line if LuCI is not installed.

From the Linksys firmware

Follow the instruction on the OpenWrt wiki page for the device:

From the GL.iNet firmware

Follow the instruction on the GL.iNet Docs page for the device:

CAREFUL: the instructions for the Convexa-S are incomplete, and following them to flash the device with OpenWrt or this build will hard brick it, requiring hardware re-programming and assistance from the GL.iNet tech support. Follow the instructions from Dongming Han here.

Features and packages

The binary installable image contains the following packages and features:

  • Using the OEM partition as /overlay for extra storage (dual-partition devices only)
  • DNS
    • Disabled dnsmasq DNS forwarder in favor of unbound resolver with TLS
    • Configured Unbound as a TLS forwarder for a secure DNS server (currently: Quad9)
  • Utilities
    • Tools: bash, nano, nologin, sudo
    • Performance: haveged, schedutil, compressed-memory
  • LuCI
    • adblock, advanced-reboot, compressed-memory, dashboard, uhttpd, unbound
  • File Systems
    • exfat, ext4, f2fs, msdos (FAT16/32)
  • Kernel features and modules
    • USB Support
    • USB Attached SCSI and USB Mass Storage
    • New Linux IOSCHEDs elevators and Governors
    • schedutil enabled by default for all CPU's
    • Fully preemptive @ 100 Hz kernel for more responsiveness
  • Minimum CPU frequency set to 512 MHz instead of 48 MHz
  • Patched VLAN to work as expected for all supported IPQ40xx targets

General notes

All kernel modules for a particular version, among with a wide set of LuCI apps, are automatically uploaded to GitHub, and opkg is configured to use them. The other software is available from OpenWrt's snapshots, but the ROM is not configured to use them by default. If there is some missing package or kernel module, please open a GitHub issue or send feedback to my email or my OpenWrt forum thread explaining exactly what's missing. It will be added to the next release.

This is a custom configuration optimized for IPQ40xx devices. The purpose of this build is to give the user a sensible selection of software for testing and using OpenWrt without too much extra effort. It's also optimized for lower latency and fixes for many annoyances. This build contains some important changes compared to OpenWrt. It contains some customizations that cannot be found in the official OpenWrt image or the OpenWrt repositories. However, most packages (excluding kernel modules) are 100% compatible.

Take into consideration

LuCI has full OpenSSL support. However, for convenience, accessing the HTTP version of LuCI is possible. Use the HTTP version, restore the certificate, and optionally disable the HTTP access.

The default IP address is now 192.168.xx.1 and IPv6 is fd00:192:168:xx::1, the xx means that every supported device has a different subnet IP. The hostname is Civic, 'Convexa-B', 'Convexa-S' or Dallas, respectively.

For LuCI Administration WebUI, go to

Wireless password:
 - [Hostname] -> OpenWrt on [Hostname]
Login password:
 - admin -> admin
 - root -> root

Note: [Hostname] refers to the device's default hostname. Replace that placeholder accordingly. For example, the SSID for Dallas will be Dallas, and the password will be OpenWrt on Dallas.

Give Me Love 💌

Don't hesitate to give this repository a golden star or forking it. This build is and will be free forever. The only thing that may I ask in exchange is proper feedback.

Downloads

Click the "Assets" button below and download the .tar.xz file. If you want to check the hotfix's integrity, here is the SHA256 checksum. Use the shasum command or PeaZip/7zip.

You should only flash the hotfixes file containing the hostname (in lowercase) of your device. If the hotfix file for your device is not present, but there is one called others, you should use that file on your device. If there is a file called common, you have to flash both files.

candela_common.tar.gz: SHA256 fd367548e8d05e3a0661ba404f69ab896716aad049fcb5155f2181b83126bb71

v2.05

07 Dec 03:02
Compare
Choose a tag to compare

Warning

There are reports of multiple devices, from different architectures and CPUs, crashing randomly when running OpenWrt snapshots and this build is also affected. Do not install or upgrade to the following versions:

  • v2.04
  • v2.05

Until this problem is solved, no new releases will be made and this warning will persist at the top. Sorry for the inconvenience, however, this is not an isolated case, is a generally known issue.

Further reading: forum

v2.04

22 Nov 15:37
Compare
Choose a tag to compare

Warning

There are reports of multiple devices, from different architectures and CPUs, crashing randomly when running OpenWrt snapshots and this build is also affected. Do not install or upgrade to the following versions:

  • v2.04
  • v2.05

Until this problem is solved, no new releases will be made and this warning will persist at the top. Sorry for the inconvenience, however, this is not an isolated case, is a generally known issue.

Further reading: forum

v2.03

15 Nov 20:49
Compare
Choose a tag to compare

EA6350v3/XX8300/Convexa Custom ROM v2.03

Based on OpenWrt commit 41b8671
If you want to apply the patches, first checkout the above commit and git-apply
the patches accordingly. After that, you can build, update and modify your copy.

NOTE: The download link is at the very bottom of this text. Please: read all
the notes and then continue to download. This page is designed to force you to
do that.

Don't forget to apply the hotfixes!

Since I'm not perfect, and I have not a team of engineers to support my work;
some times I do forget some details when the image is ready and it's not worth
to re-build. Instead of just keeping the annoyances go along, I decided to
implement the "hotfixes" mechanics.

Here is how it works:

  1. Flash the image as always.
  2. Once your device boots, go immediately to the Backup / Flash Firmware in
    LuCI.
  3. Upload the hotfixes.tar.gz in the Restore section, as if it's a backup.
  4. That's all!

A better feedback solution!

I've implemented the ramoops feature. If you find your device crashing or
becoming inestable, please:

  1. Go to the settings in LuCI and enable the debug levels for the logs
    1.1. Verify that the size is 1536 and the file is /dev/pmsg0. Change it
    accordingly.
  2. Wait the device to crash or to become inestable.
  3. If the device crashes, go to the point 5.
  4. If it doesn't crash, reboot as soon as you can. Try to not force reboot, if
    you can, by unplugging since it will clear the data from RAM and with it, the
    logs.
  5. Check the /sys/fs/pstore folder, and if it's not empty, collect a copy of
    these files.
  6. Along with the files from point 5, if any, collect a copy of the directory
    tree inside /bootfs/pstore, which are the collected logs over time.
  7. Send these files to my e-mail. Don't expect an answer by email and instead
    open a GitHub issue. If you don't have a GitHub account, explain it in your
    email and I will open the issue and document the problem for you.
  8. Over time, your boot partition may become full. Please cleanup your the logs
    from /bootfs/pstore if you are short in space. You can disable the
    automatic collection of logs by deleting /etc/hotplug.d/ntp/00-pstore, but
    PSTORE itself is a kernel feature that cannot be disabled, unless you build
    your own kernel. All logs will be removed automatically after a system
    upgrade.

Discussion about this work, feature requests and questions in my OpenWrt
thread. Bug reports in the GitHub Issues page.

How to install

Warning: the 'sysupgrade' procedure will reset some settings to their default
values. You can see the changes made to your system by looking at the 'bootz'
files in /etc/bootz.

First, decompress the downloaded file. This file is compressed using zstd and
it's a tarball.

  • If you are using Windows, you can install PeaZip
  • If you are using macOS, you can install Keka (beta)
  • If you are using Linux, you probably have all the tools already installed

You will find a folder once decompressed. Inside this folder, you will find the
following folders:

  • bin: this contains the two "flasheable" versions of the firmware. One is a
    sysupgrade image that you will use to update from another version or from
    OpenWrt; and the other is a factory image which you will use to flash
    directly from the Linksys firmware.
  • info: this folder contains the manifests, the configuration seed and the
    checksums. Also, it contains a copy of this document.
  • patches: it contains all the patches that apply cleanly over the fork
    point. Use them if you download the source code and want to build your own
    firmware form a working copy. Also, they need to be distributed due to the
    software licence.

From the OpenWrt firmware or from another version of this firmware

Go to LuCI and apply the sysupgrade image. Either from the OpenWrt firmware or
from another version of this firmware. This firmware will not apply cleanly
over the stock OpenWrt firmware.

Note: You should perform the upgrade without keeping/saving your settings,
otherwise, your device will likely soft-brick. If it does brick, you will need
to trigger a recovery as documented in the wiki. This happens because this
build contains patches to make the switch work, but they will stop the device
from running with the OpenWrt's default configuration and viceversa.

Go to http://192.168.xx.1/cgi-bin/luci/admin/system/flash if you are using
another version of this firmware. Go to https://192.168.1.1/cgi-bin/luci/admin/system/flash
if you are using the OpenWrt firmware. Or you can use the command line if you
have not installed LuCI. Then, apply the update accordingly.

From the Linksys EA6350v3/XX8300 firmware

From the OpenWrt web page for the device:

  • Attach to a LAN port on the router
  • Connect to the Linksys Smart Wi-Fi Page (default 192.168.1.1) and login
  • Select the "Connectivity" tab on the left
  • Find the option for manual upgrade on the panel
  • Select browse, and browse to the factory binary image
  • Click update
  • Read and accept the warning
  • The router LED will start blinking. Wait for the device to boot up
  • When the router LED goes in a slow blinking, you can now navigate to
    http://192.168.xx.1 to your new OpenWrt installation

From the GL.iNet firmware

For the Convexa-B, you should follow the steps documented in the GL.iNet web
page. It involves booting into the recovery u-boot mode and upgrading the
firmware from there.

Note that for the Convexa-S, you will need to flash a "Factory to OpenWrt"
image first and then flash this firmware. Otherwise, your device will brick and
you will need to use a SPI programmer, contact the GL.iNet support team and
flash the NAND chip with the file they will make for you.

Reverting back to OEM in one click (dual partition devices only)

WARNING: this method only works if you installed the provided factory image
directly from the Linksys firmware. If you have already "sysupgraded", this
method will not work.

If you have not installed another update of this firmware or OpenWrt, you can go
to: http://192.168.xx.1/cgi-bin/luci/admin/system/advanced_reboot

Then, you can click the "Reboot to alternative partition..." to revert back to
the OEM firmware. Wait for the device to reboot and load te Linksys firmware.

If you have installed either OpenWrt or this firmware twice or more, refer to
the OpenWrt forum for reverting back to stock (EA6350v3 only): wiki

Features and packages

The binary installable image contains the following packages and features:

  • testcalibration script for easily and safely testing calibration board files
    if your wireless performance is not optimal (EA6350v3 only).
  • BackToStock script for easily and safely reverting back from the OpenWrt
    firmware to the Linksys stock firmware. Refer to the documentation in the
    wiki here (EA6350v3 only).
  • extroot by default
    • using the OEM partition as /overlay for added storage to install packages
      and for extending the firmware ROM lifespan (EA6350v3/XX8300/Convexa-S only).
  • DNS
    • Disabled dnsmasq DNS forwarder in favour of unbound resolver with TLS
    • Configured Unbound as a TLS forwarder for a secure DNS server (currently:
      Quad9)
    • Note that Quad9 already implements DNSSEC, you don't need to configure the
      router's slow CPU to do perform the validation again.
  • Utilities
    • kernel features: taskstats (for atop/htop)
    • hardware: blkid, lsblk
    • tools: bash, nano, nologin, sudo
    • performance: haveged, schedutil, compressed-memory
  • LuCI
    • uhttpd-openssl
    • apps
      • advanced-reboot, compressed-memory, uhttpd, unbound
  • File Systems
    • exfat, ext4, f2fs, msdos (FAT16/32)
  • Kernel features and modules
    • USB Support
    • USB Attached SCSI and USB Mass Storage
    • New Linux IOSCHEDs evelators and Governors
      • Governor: schedutil enabled by default for all CPU's
      • IOSCHED: kyber by default for non rotational disks
      • IOSCHED: bfq by default for rotational disks
      • IOSCHED: noop by default for single-queue devices
    • Fully preemptive @ 100 Hz kernel for more responsiveness
  • Minimum CPU frequency set to 512 MHz instead of 48 MHz
  • Enabled and unlocked all operation points to allow the CPU frequency scaling
    governor schedutil to take better decisions
  • Changed clock latency from 256000ns to 100000ns (which is the value used by
    Qualcomm)
  • Patched VLAN to work as expected for all supported IPQ40xx targets
  • Patched SQUASHFS to avoid crashes due to spurious SPI errors

General notes

All kernel modules for a particular version, among with a wide set of LuCI apps,
are automatically uploaded to GitHub and opkg is configured to use them. All
of the other software is available from OpenWrt's snapshots, but the ROM is not
configured to use them [by default].

If there is some missing package or kernel module, please open a GitHub issue or
send feedback to my e-mail or OpenWrt forum thread explaining exactly what's
missing. It will be added to the next release.

Memory subsystem

The device has only 256/512 MB of RAM. That's plenty but sometimes it might get
a little short (i.e. when indexing a huge library with ReadyMedia). For this,
the memory subsystem has been tuned to support almost any NAS or adblocker load:

  • The system will use the swap cache when possible. It's a pool of the 30.00% of
    the system memory (when used alone), compressed using lzo-rle, which is on...
Read more

v2.02

20 Oct 02:31
Compare
Choose a tag to compare

EA6350v3/XX8300/Convexa Custom ROM v2.02

Based on OpenWrt commit dd20ba9
If you want to apply the patches, first checkout the above commit and git-apply
the patches accordingly. After that, you can build, update and modify your copy.

NOTE: The download link is at the very bottom of this text. Please: read all
the notes and then continue to download. This page is designed to force you to
do that.

Don't forget to apply the hotfixes!

Since I'm not perfect, and I have not a team of engineers to support my work;
some times I do forget some details when the image is ready and it's not worth
to re-build. Instead of just keeping the annoyances go along, I decided to
implement the "hotfixes" mechanics.

Here is how it works:

  1. Flash the image as always.
  2. Once your device boots, go immediately to the Backup / Flash Firmware in
    LuCI.
  3. Upload the hotfixes.tar.gz in the Restore section, as if it's a backup.
  4. That's all!

A better feedback solution!

I've implemented the ramoops feature. If you find your device crashing or
becoming inestable, please:

  1. Go to the settings in LuCI and enable the debug levels for the logs
    1.1. Verify that the size is 1536 and the file is /dev/pmsg0. Change it
    accordingly.
  2. Wait the device to crash or to become inestable.
  3. If the device crashes, go to the point 5.
  4. If it doesn't crash, reboot as soon as you can. Try to not force reboot, if
    you can, by unplugging since it will clear the data from RAM and with it, the
    logs.
  5. Check the /sys/fs/pstore folder, and if it's not empty, collect a copy of
    these files.
  6. Along with the files from point 5, if any, collect a copy of the directory
    tree inside /bootfs/pstore, which are the collected logs over time.
  7. Send these files to my e-mail. Don't expect an answer by email and instead
    open a GitHub issue. If you don't have a GitHub account, explain it in your
    email and I will open the issue and document the problem for you.
  8. Over time, your boot partition may become full. Please cleanup your the logs
    from /bootfs/pstore if you are short in space. You can disable the
    automatic collection of logs by deleting /etc/hotplug.d/ntp/00-pstore, but
    PSTORE itself is a kernel feature that cannot be disabled, unless you build
    your own kernel. All logs will be removed automatically after a system
    upgrade.

Discussion about this work, feature requests and questions in my OpenWrt
thread. Bug reports in the GitHub Issues page.

How to install

Warning: the 'sysupgrade' procedure will reset some settings to their default
values. You can see the changes made to your system by looking at the 'bootz'
files in /etc/bootz.

First, decompress the downloaded file. This file is compressed using zstd and
it's a tarball.

  • If you are using Windows, you can install PeaZip
  • If you are using macOS, you can install Keka (beta)
  • If you are using Linux, you probably have all the tools already installed

You will find a folder once decompressed. Inside this folder, you will find the
following folders:

  • bin: this contains the two "flasheable" versions of the firmware. One is a
    sysupgrade image that you will use to update from another version or from
    OpenWrt; and the other is a factory image which you will use to flash
    directly from the Linksys firmware.
  • info: this folder contains the manifests, the configuration seed and the
    checksums. Also, it contains a copy of this document.
  • patches: it contains all the patches that apply cleanly over the fork
    point. Use them if you download the source code and want to build your own
    firmware form a working copy. Also, they need to be distributed due to the
    software licence.

From the OpenWrt firmware or from another version of this firmware

Go to LuCI and apply the sysupgrade image. Either from the OpenWrt firmware or
from another version of this firmware. This firmware will not apply cleanly
over the stock OpenWrt firmware.

Note: You should perform the upgrade without keeping/saving your settings,
otherwise, your device will likely soft-brick. If it does brick, you will need
to trigger a recovery as documented in the wiki. This happens because this
build contains patches to make the switch work, but they will stop the device
from running with the OpenWrt's default configuration and viceversa.

Go to http://192.168.xx.1/cgi-bin/luci/admin/system/flash if you are using
another version of this firmware. Go to https://192.168.1.1/cgi-bin/luci/admin/system/flash
if you are using the OpenWrt firmware. Or you can use the command line if you
have not installed LuCI. Then, apply the update accordingly.

From the Linksys EA6350v3/XX8300 firmware

From the OpenWrt web page for the device:

  • Attach to a LAN port on the router
  • Connect to the Linksys Smart Wi-Fi Page (default 192.168.1.1) and login
  • Select the "Connectivity" tab on the left
  • Find the option for manual upgrade on the panel
  • Select browse, and browse to the factory binary image
  • Click update
  • Read and accept the warning
  • The router LED will start blinking. Wait for the device to boot up
  • When the router LED goes in a slow blinking, you can now navigate to
    http://192.168.xx.1 to your new OpenWrt installation

From the GL.iNet firmware

For the Convexa-B, you should follow the steps documented in the GL.iNet web
page. It involves booting into the recovery u-boot mode and upgrading the
firmware from there.

Note that for the Convexa-S, you will need to flash a "Factory to OpenWrt"
image first and then flash this firmware. Otherwise, your device will brick and
you will need to use a SPI programmer, contact the GL.iNet support team and
flash the NAND chip with the file they will make for you.

Reverting back to OEM in one click (dual partition devices only)

WARNING: this method only works if you installed the provided factory image
directly from the Linksys firmware. If you have already "sysupgraded", this
method will not work.

If you have not installed another update of this firmware or OpenWrt, you can go
to: http://192.168.xx.1/cgi-bin/luci/admin/system/advanced_reboot

Then, you can click the "Reboot to alternative partition..." to revert back to
the OEM firmware. Wait for the device to reboot and load te Linksys firmware.

If you have installed either OpenWrt or this firmware twice or more, refer to
the OpenWrt forum for reverting back to stock (EA6350v3 only): wiki

Features and packages

The binary installable image contains the following packages and features:

  • testcalibration script for easily and safely testing calibration board files
    if your wireless performance is not optimal (EA6350v3 only).
  • BackToStock script for easily and safely reverting back from the OpenWrt
    firmware to the Linksys stock firmware. Refer to the documentation in the
    wiki here (EA6350v3 only).
  • extroot by default
    • using the OEM partition as /overlay for added storage to install packages
      and for extending the firmware ROM lifespan (EA6350v3/XX8300/Convexa-S only).
  • DNS
    • Disabled dnsmasq DNS forwarder in favour of unbound resolver with TLS
    • Configured Unbound as a TLS forwarder for a secure DNS server (currently:
      Quad9)
    • Note that Quad9 already implements DNSSEC, you don't need to configure the
      router's slow CPU to do perform the validation again.
  • Utilities
    • kernel features: taskstats (for atop/htop)
    • hardware: blkid, lsblk
    • tools: bash, nano, nologin, sudo
    • performance: haveged, schedutil, compressed-memory
  • LuCI
    • uhttpd-openssl
    • apps
      • advanced-reboot, compressed-memory, uhttpd, unbound
  • File Systems
    • exfat, ext4, f2fs, msdos (FAT16/32)
  • Kernel features and modules
    • USB Support
    • USB Attached SCSI and USB Mass Storage
    • New Linux IOSCHEDs evelators and Governors
      • Governor: schedutil enabled by default for all CPU's
      • IOSCHED: kyber by default for non rotational disks
      • IOSCHED: bfq by default for rotational disks
      • IOSCHED: noop by default for single-queue devices
    • Fully preemptive @ 100 Hz kernel for more responsiveness
  • Minimum CPU frequency set to 512 MHz instead of 48 MHz
  • Enabled and unlocked all operation points to allow the CPU frequency scaling
    governor schedutil to take better decisions
  • Changed clock latency from 256000ns to 100000ns (which is the value used by
    Qualcomm)
  • Patched VLAN to work as expected for all supported IPQ40xx targets
  • Patched SQUASHFS to avoid crashes due to spurious SPI errors

General notes

All kernel modules for a particular version, among with a wide set of LuCI apps,
are automatically uploaded to GitHub and opkg is configured to use them. All
of the other software is available from OpenWrt's snapshots, but the ROM is not
configured to use them [by default].

If there is some missing package or kernel module, please open a GitHub issue or
send feedback to my e-mail or OpenWrt forum thread explaining exactly what's
missing. It will be added to the next release.

Memory subsystem

The device has only 256/512 MB of RAM. That's plenty but sometimes it might get
a little short (i.e. when indexing a huge library with ReadyMedia). For this,
the memory subsystem has been tuned to support almost any NAS or adblocker load:

  • The system will use the swap cache when possible. It's a pool of the 30.00% of
    the system memory (when used alone), compressed using lzo-rle, which is on...
Read more

v2.01

30 Sep 23:51
Compare
Choose a tag to compare

EA6350v3/XX8300/Convexa Custom ROM v2.01

Based on OpenWrt commit cba4120
If you want to apply the patches, first checkout the above commit and git-apply
the patches accordingly. After that, you can build, update and modify your copy.

NOTE: The download link is at the very bottom of this text. Please: read all
the notes and then continue to download. This page is designed to force you to
do that.

Don't forget to apply the hotfixes!

Since I'm not perfect, some times I do forget some details when the image is
ready and it's not worth to re-build. Instead of just keeping the annoyances go
along, I decided to implement the "hotfixes" mechanics.

Here is how it works:

  1. Flash your image as always.
  2. Once your device boots, go immediately to the Backup / Flash Firmware in
    LuCI.
  3. Upload the hotfixes.tar.gz in the Restore section, as if it's a backup.
  4. That's all!

A better feedback solution!

I've implemented the ramoops feature. If you find your device crashing or
becoming inestable, please:

  1. Go to the settings in LuCI and enable the debug levels for the logs
    1.1. Verify that the size is 1536 and the file is /dev/pmsg0. Change it
    accordingly.
  2. Wait the device to crash or to become inestable.
  3. If the device crashes, go to the point 5.
  4. If it doesn't crash, reboot as soon as you can. Try to not force reboot, if
    you can, by unplugging since it will clear the data from RAM and with it, the
    logs.
  5. Check the /sys/fs/pstore folder, and if it's not empty, collect a copy of
    these files.
  6. Along with the files from point 5, if any, collect a copy of the directory
    tree inside /rom/bootfs/pstore, which are the collected logs over time.
  7. Send these files to my e-mail. Don't expect an answer by email and instead
    open a GitHub issue. If you don't have a GitHub account, explain it in your
    email and I will open the issue and document the problem for you.
  8. Over time, your boot partition may become full. Please cleanup your the logs
    from /rom/bootfs/pstore if you are short in space. You can disable the
    automatic collection of logs by deleting /etc/hotplug.d/ntp/00-pstore, but
    PSTORE itself is a kernel feature that cannot be disabled, unless you build
    your own kernel. All logs will be removed automatically after a system
    upgrade.

Discussion about this work, feature requests and questions in my OpenWrt
thread. Bug reports in the GitHub Issues page.

How to install

Warning: the 'sysupgrade' procedure will reset some settings to their default
values. You can see the changes made to your system by looking at the 'bootz'
files in /etc/bootz.

First, decompress the downloaded file. This file is compressed using zstd and
it's a tarball.

  • If you are using Windows, you can install PeaZip
  • If you are using macOS, you can install Keka (beta)
  • If you are using Linux, you probably have all the tools already installed

You will find a folder once decompressed. Inside this folder, you will find the
following folders:

  • bin: this contains the two "flasheable" versions of the firmware. One is a
    sysupgrade image that you will use to update from another version or from
    OpenWrt; and the other is a factory image which you will use to flash
    directly from the Linksys firmware.
  • info: this folder contains the manifests, the configuration seed and the
    checksums. Also, it contains a copy of this document.
  • patches: it contains all the patches that apply cleanly over the fork
    point. Use them if you download the source code and want to build your own
    firmware form a working copy. Also, they need to be distributed due to the
    software licence.

From the OpenWrt firmware or from another version of this firmware

Go to LuCI and apply the sysupgrade image. Either from the OpenWrt firmware or
from another version of this firmware. This firmware will not apply cleanly
over the stock OpenWrt firmware.

Note: You should perform the upgrade without keeping/saving your settings,
otherwise, your device will likely soft-brick. If it does brick, you will need
to trigger a recovery as documented in the qiki. This happens because this
build contains patches to make the switch work, but they will stop the device
from running with the OpenWrt's default configuration and viceversa.

Go to http://192.168.50.1/cgi-bin/luci/admin/system/flash if you are using
another version of this firmware. Go to https://192.168.1.1/cgi-bin/luci/admin/system/flash
if you are using the OpenWrt firmware. Or you can use the command line if you
have not installed LuCI. Then, apply the update accordingly.

From the Linksys EA6350v3/XX8300 firmware

From the OpenWrt web page for the device:

  • Attach to a LAN port on the router
  • Connect to the Linksys Smart Wi-Fi Page (default 192.168.1.1) and login
  • Select the "Connectivity" tab on the left
  • Find the option for manual upgrade on the panel
  • Select browse, and browse to the factory binary image
  • Click update
  • Read and accept the warning
  • The router LED will start blinking. Wait for the device to boot up
  • When the router LED goes in a slow blinking, you can now navigate to
    http://192.168.50.1 to your new OpenWrt installation

Reverting back to OEM in one click

WARNING: this method only works if you installed the provided factory image
directly from the Linksys firmware. If you have already "sysupgraded", this
method will not work.

If you have not installed another update of this firmware or OpenWrt, you can go
to: http://192.168.50.1/cgi-bin/luci/admin/system/advanced_reboot

Then, you can click the "Reboot to alternative partition..." to revert back to
the OEM firmware. Wait for the device to reboot and load te Linksys firmware.

If you have installed either OpenWrt or this firmware twice or more, refer to
the OpenWrt forum for reverting back to stock (EA6350v3 only): wiki

Features and packages

The binary installable image contains the following packages and features:

  • testcalibration script for easily and safely testing calibration board files
    if your wireless performance is not optimal (EA6350v3 only).
  • BackToStock script for easily and safely reverting back from the OpenWrt
    firmware to the Linksys stock firmware. Refer to the documentation in the
    wiki here (EA6350v3 only).
  • extroot
    • using the OEM partition as /overlay for added storage to install packages
      and for extending the firmware ROM lifespan (EA6350v3/XX8300 only).
  • DNS
    • Disabled dnsmasq DNS forwarder in favour of unbound resolver with TLS
    • Configured Unbound as a TLS forwarder for a secure DNS server (currently:
      Quad9)
    • Note that Quad9 already implements DNSSEC, you don't need to configure your
      slow CPU to do it again.
  • Utilities
    • kernel features: taskstats (for atop/htop)
    • hardware: blkid, lsblk
    • tools: bash, nano, nologin, sudo
    • performance: haveged, schedutil, compressed-memory
  • LuCI
    • uhttpd-openssl
    • apps
      • advanced-reboot, compressed-memory, uhttpd, unbound
  • File Systems
    • exfat, ext4, f2fs, msdos (FAT16/32), ntfs
  • Kernel features and modules
    • USB Support
    • USB Attached SCSI and USB Mass Storage
    • New Linux IOSCHEDs evelators and Governors
      • Governor: schedutil enabled by default for all CPU's
      • IOSCHED: kyber by default for non rotational disks
      • IOSCHED: bfq by default for rotational disks
      • IOSCHED: noop by default for single-queue devices
    • Fully preemptive @ 100 Hz kernel for more responsiveness
  • Minimum CPU frequency set to 512 MHz instead of 48 MHz
  • Enabled and unlocked all operation points to allow the CPU frequency scaling
    governor schedutil to take better decisions
  • Changed clock latency from 256000ns to 100000ns (which is the value used by
    Qualcomm)
  • Patched VLAN to work as expected for all supported IPQ40xx targets
  • Patched SQUASHFS to avoid crashes due to spurious SPI errors

General notes

All kernel modules for a particular version, among with a wide set of LuCI apps,
are automatically uploaded to GitHub and opkg is configured to use them. All
of the other software is available from OpenWrt's snapshots, but the ROM is not
configured to use them [by default].

If there is some missing package or kernel module, please open a GitHub issue or
send feedback to my e-mail explaining exactly what's missing. It will be added
to the next release.

Memory subsystem

The device has only 256/512 MB of RAM. That's plenty but sometimes it might get
a little short (i.e. when indexing a huge library with ReadyMedia). For this,
the memory subsystem has been tuned to support almost any NAS or adblocker load:

  • The system will use the swap cache when possible. It's a pool of the 30.00% of
    the system memory (when used alone), compressed using lzo-rle, which is one
    of the fastest compressors available. The system will eventually evict pages
    to a real swapping device (which also includes zram) when it can't compress
    them, when they are too old or when the pool is getting depleted.
  • When zram comes online with the lzo-rle compressor (the default unless you
    change it in LuCI, when usig zswap it will use zstd instead), it will
    adjust the zswap pool, so both pools (torgether) will use the user's
    requested space; and then the system will set this space for swapping. zram
    has a slower but yet more powerful compressor.
  • If the backing file/device is setup correctly, pag...
Read more

v2.00

08 Sep 02:41
Compare
Choose a tag to compare

EA6350v3/EA8300 Custom ROM v2.00

Based on OpenWrt commit 787de43
If you want to apply the patches, first checkout the above commit and git-apply
the patches accordingly. After that, you can build, update and modify your copy.

NOTE: The download link is at the very bottom of this text. Please: read all
the notes and then continue to download. This page is designed to force you to
do that.

Don't forget to apply the hotfixes!

Since I'm not perfect, some times I do forget some details when the image is
ready and it's not worth to re-build. Instead of just keeping the annoyances go
along, I decided to implement the "hotfixes" mechanics.

Here is how it works:

  1. Flash your image as always.
  2. Once your device boots, go immediately to the Backup / Flash Firmware in
    LuCI.
  3. Upload the hotfixes.tar.gz in the Restore section, as if it's a backup.
  4. That's all!

A better feedback solution!

I've implemented the ramoops feature. If you find your device crashing or
becoming inestable, please:

  1. Go to the settings in LuCI and enable the debug levels for the logs
    1.1. Verify that the size is 1536 and the file is /dev/pmsg0. Change it
    accordingly.
  2. Wait the device to crash or to become inestable.
  3. If the device crashes, go to the point 5.
  4. If it doesn't crash, reboot as soon as you can. Try to not force reboot, if
    you can, by unplugging since it will clear the data from RAM and with it, the
    logs.
  5. Check the /sys/fs/pstore folder, and if it's not empty, collect a copy of
    these files.
  6. Along with the files from point 5, if any, collect a copy of the directory
    tree inside /rom/bootfs/pstore, which are the collected logs over time.
  7. Send these files to my e-mail. Don't expect an answer by email and instead
    open a GitHub issue. If you don't have a GitHub account, explain it in your
    email and I will open the issue and document the problem for you.
  8. Over time, your boot partition may become full. Please cleanup your the logs
    from /rom/bootfs/pstore if you are short in space. You can disable the
    automatic collection of logs by deleting /etc/hotplug.d/ntp/00-pstore, but
    PSTORE itself is a kernel feature that cannot be disabled, unless you build
    your own kernel. All logs will be removed automatically after a system
    upgrade.

Discussion about this work, feature requests and questions in my OpenWrt
thread. Bug reports in the GitHub Issues page.

How to install

Warning: the 'sysupgrade' procedure will reset some settings to their default
values. You can see the changes made to your system by looking at the 'bootz'
files in /etc/bootz.

First, decompress the downloaded file. This file is compressed using zstd and
it's a tarball.

  • If you are using Windows, you can install PeaZip
  • If you are using macOS, you can install Keka (beta)
  • If you are using Linux, you probably have all the tools already installed

You will find a folder once decompressed. Inside this folder, you will find the
following folders:

  • bin: this contains the two "flasheable" versions of the firmware. One is a
    sysupgrade image that you will use to update from another version or from
    OpenWrt; and the other is a factory image which you will use to flash
    directly from the Linksys firmware.
  • info: this folder contains the manifests, the configuration seed and the
    checksums. Also, it contains a copy of this document.
  • patches: it contains all the patches that apply cleanly over the fork
    point. Use them if you download the source code and want to build your own
    firmware form a working copy. Also, they need to be distributed due to the
    software licence.

From the OpenWrt firmware or from another version of this firmware

Go to LuCI and apply the sysupgrade image. Either from the OpenWrt firmware or
from another version of this firmware. This firmware will not apply cleanly
over the stock OpenWrt firmware.

Note: You should perform the upgrade without keeping/saving your settings,
otherwise, your device will likely soft-brick. If it does brick, you will need
to trigger a recovery as documented in the qiki. This happens because this
build contains patches to make the switch work, but they will stop the device
from running with the OpenWrt's default configuration and viceversa.

Go to http://192.168.50.1/cgi-bin/luci/admin/system/flash if you are using
another version of this firmware. Go to https://192.168.1.1/cgi-bin/luci/admin/system/flash
if you are using the OpenWrt firmware. Or you can use the command line if you
have not installed LuCI. Then, apply the update accordingly.

From the Linksys EA6350v3/EA8300 firmware

From the OpenWrt web page for the device:

  • Attach to a LAN port on the router
  • Connect to the Linksys Smart Wi-Fi Page (default 192.168.1.1) and login
  • Select the "Connectivity" tab on the left
  • Find the option for manual upgrade on the panel
  • Select browse, and browse to the factory binary image
  • Click update
  • Read and accept the warning
  • The router LED will start blinking. Wait for the device to boot up
  • When the router LED goes in a slow blinking, you can now navigate to
    http://192.168.50.1 to your new OpenWrt installation

Reverting back to OEM in one click

WARNING: this method only works if you installed the provided factory image
directly from the Linksys firmware. If you have already "sysupgraded", this
method will not work.

If you have not installed another update of this firmware or OpenWrt, you can go
to: http://192.168.50.1/cgi-bin/luci/admin/system/advanced_reboot

Then, you can click the "Reboot to alternative partition..." to revert back to
the OEM firmware. Wait for the device to reboot and load te Linksys firmware.

If you have installed either OpenWrt or this firmware twice or more, refer to
the OpenWrt forum for reverting back to stock (EA6350v3 only): wiki

Features and packages

The binary installable image contains the following packages and features:

  • testcalibration script for easily and safely testing calibration board files
    if your wireless performance is not optimal (EA6350v3 only).
  • BackToStock script for easily and safely reverting back from the OpenWrt
    firmware to the Linksys stock firmware. Refer to the documentation in the
    wiki here (EA6350v3 only).
  • extroot
    • using the OEM partition as /overlay for added storage to install packages
      and for extending the firmware ROM lifespan (EA6350v3/EA8300 only).
  • DNS
    • Disabled dnsmasq DNS forwarder in favour of unbound resolver with TLS
    • Configured Unbound as a TLS forwarder for a secure DNS server (currently:
      Quad9)
    • Note that Quad9 already implements DNSSEC, you don't need to configure your
      slow CPU to do it again.
  • Utilities
    • kernel features: taskstats (for atop/htop)
    • hardware: blkid, lsblk
    • tools: bash, nano, nologin, sudo
    • performance: haveged, schedutil, compressed-memory
  • LuCI
    • uhttpd-openssl
    • apps
      • advanced-reboot, compressed-memory, uhttpd, unbound
  • File Systems
    • exfat, ext4, f2fs, msdos (FAT16/32), ntfs
  • Kernel features and modules
    • USB Support
    • USB Attached SCSI and USB Mass Storage
    • New Linux IOSCHEDs evelators and Governors
      • Governor: schedutil enabled by default for all CPU's
      • IOSCHED: kyber by default for non rotational disks
      • IOSCHED: bfq by default for rotational disks
      • IOSCHED: noop by default for single-queue devices
    • Fully preemptive @ 100 Hz kernel for more responsiveness
  • Minimum CPU frequency set to 512 MHz instead of 48 MHz
  • Enabled and unlocked all operation points to allow the CPU frequency scaling
    governor schedutil to take better decisions
  • Changed clock latency from 256000ns to 100000ns (which is the value used by
    Qualcomm)
  • Patched VLAN to work as expected for the EA6350v3/EA8300
  • Patched SQUASHFS to avoid crashes due to spurious SPI errors

General notes

All kernel modules for a particular version, among with a wide set of LuCI apps,
are automatically uploaded to GitHub and opkg is configured to use them. All
of the other software is available from OpenWrt's snapshots, but the ROM is not
configured to use them [by default].

If there is some missing package or kernel module, please open a GitHub issue or
send feedback to my e-mail explaining exactly what's missing. It will be added
to the next release.

Memory subsystem

The device has only 256/512 MB of RAM. That's plenty but sometimes it might get
a little short (i.e. when indexing a huge library with ReadyMedia). For this,
the memory subsystem has been tuned to support almost any NAS or adblocker load:

  • The system will use the swap cache when possible. It's a pool of the 30.00% of
    the system memory (when used alone), compressed using lzo-rle, which is one
    of the fastest compressors available. The system will eventually evict pages
    to a real swapping device (which also includes zram) when it can't compress
    them, when they are too old or when the pool is getting depleted.
  • When zram comes online with the lzo-rle compressor (the default unless you
    change it in LuCI, when usig zswap it will use zstd instead), it will
    adjust the zswap pool, so both pools (torgether) will use the user's
    requested space; and then the system will set this space for swapping. zram
    has a slower but yet more powerful compressor.
  • If the backing file/device is setup correctly, pages that are hard t...
Read more

v1.16.oc

12 Aug 17:57
Compare
Choose a tag to compare

EA6350v3 Custom ROM v1.16.oc

Based on OpenWrt commit b59a98b
If you want to apply the patches, first checkout the above commit and git-apply
the patches accordingly. After that, you can build, update and modify your copy.

NOTE: The download link is at the very bottom of this text. Please: read all
the notes and then continue to download. This page is designed to force you to
do that.

Don't forget to apply the hotfixes!

Since I'm not perfect, some times I do forget some details when the image is
ready and it's not worth to re-build. Instead of just keeping the annoyances go
along, I decided to implement the "hotfixes" mechanics.

Here is how it works:

  1. Flash your image as always.
  2. Once your device boots, go immediately to the Backup / Flash Firmware in
    LuCI.
  3. Upload the hotfixes.tar.gz in the Restore section, as if it's a backup.
  4. That's all!

A better feedback solution!

I've implemented the ramoops feature. If you find your device crashing or
becoming inestable, please:

  1. Go to the settings in LuCI and enable the debug levels for the logs
    1.1. Verify that the size is 1536 and the file is /dev/pmsg0. Change it
    accordingly.
  2. Wait the device to crash or to become inestable.
  3. If the device crashes, go to the point 5.
  4. If it doesn't crash, reboot as soon as you can. Try to not force reboot, if
    you can, by unplugging since it will clear the data from RAM and with it, the
    logs.
  5. Check the /sys/fs/pstore folder, and if it's not empty, collect a copy of
    these files.
  6. Along with the files from point 5, if any, collect a copy of the directory
    tree inside /rom/bootfs/pstore, which are the collected logs over time.
  7. Send these files to my e-mail. Don't expect an answer by email and instead
    open a GitHub issue. If you don't have a GitHub account, explain it in your
    email and I will open the issue and document the problem for you.
  8. Over time, your boot partition may become full. Please cleanup your the logs
    from /rom/bootfs/pstore if you are short in space. You can disable the
    automatic collection of logs by deleting /etc/hotplug.d/ntp/00-pstore, but
    PSTORE itself is a kernel feature that cannot be disabled, unless you build
    your own kernel. All logs will be removed automatically after a system
    upgrade.

Discussion about this work, feature requests and questions in my OpenWrt
thread. Bug reports in the GitHub Issues page.

How to install

Warning: the 'sysupgrade' procedure will reset some settings to their default
values. You can see the changes made to your system by looking at the 'bootz'
files in /etc/bootz.

First, decompress the downloaded file. This file is compressed using zstd and
it's a tarball.

  • If you are using Windows, you can install PeaZip
  • If you are using macOS, you can install Keka (beta)
  • If you are using Linux, you probably have all the tools already installed

You will find a folder once decompressed. Inside this folder, you will find the
following folders:

  • bin: this contains the two "flasheable" versions of the firmware. One is a
    sysupgrade image that you will use to update from another version or from
    OpenWrt; and the other is a factory image which you will use to flash
    directly from the Linksys firmware.
  • info: this folder contains the manifests, the configuration seed and the
    checksums. Also, it contains a copy of this document.
  • patches: it contains all the patches that apply cleanly over the fork
    point. Use them if you download the source code and want to build your own
    firmware form a working copy. Also, they need to be distributed due to the
    software licence.

From the OpenWrt firmware or from another version of this firmware

Go to LuCI and apply the sysupgrade image. Either from the OpenWrt firmware or
from another version of this firmware. This firmware will not apply cleanly
over the stock OpenWrt firmware.

Note: You should perform the upgrade without keeping/saving your settings,
otherwise, your device will likely soft-brick. If it does brick, you will need
to trigger a recovery as documented in the Wiki. This happens because this
build contains patches to make the switch work, but they will stop the device
from running with the OpenWrt's default configuration and viceversa.

Go to http://ea6350v3/cgi-bin/luci/admin/system/flash if you are using another
version of this firmware. Go to https://192.168.1.1/cgi-bin/luci/admin/system/flash
if you are using the OpenWrt firmware. Or you can use the command line if you
have not installed LuCI. Then, apply the update accordingly.

From the Linksys firmware

From the OpenWrt web page for the device:

  • Attach to a LAN port on the router
  • Connect to the Linksys Smart Wi-Fi Page (default 192.168.1.1) and login
  • Select the "Connectivity" tab on the left
  • Find the option for manual upgrade on the panel
  • Select browse, and browse to the factory binary image
  • Click update
  • Read and accept the warning
  • The router LED will start blinking. Wait for the device to boot up
  • When the router LED goes in a slow blinking, you can now navigate to
    http://ea6350v3 to your new OpenWrt installation

Reverting back to OEM in one click

WARNING: this method only works if you installed the provided factory image
directly from the Linksys firmware. If you have already "sysupgraded", this
method will not work.

If you have not installed another update of this firmware or OpenWrt, you can go
to: http://ea6350v3/cgi-bin/luci/admin/system/advanced_reboot

Then, you can click the "Reboot to alternative partition..." to revert back to
the OEM firmware. Wait for the device to reboot and load te Linksys firmware.

If you have installed either OpenWrt or this firmware twice or more, refer to
the OpenWrt forum for reverting back to stock: wiki

Features and packages

The binary installable image contains the following packages and features:

  • testcalibration script for easily and safely testing calibration board files
    if your wireless performance is not optimal.
  • BackToStock script for easily and safely reverting back from the OpenWrt
    firmware to the Linksys stock firmware. Refer to the documentation in the
    wiki here.
  • extroot
    • using the OEM partition as /overlay for added storage to install packages
      and for extending the firmware ROM lifespan.
  • DNS
    • Disabled dnsmasq DNS forwarder in favour of unbound resolver with TLS
    • Configured Unbound as a TLS forwarder for a secure DNS server (currently:
      Quad9)
  • Utilities
    • kernel features: taskstats (for atop/htop)
    • hardware: blkid, lsblk
    • tools: bash, nano, nologin, sudo
    • performance: haveged, schedutil, compressed-memory
  • LuCI
    • uhttpd-openssl
    • apps
      • advanced-reboot, compressed-memory, uhttpd, unbound
  • Filesystems
    • exfat, ext4, f2fs, msdos (FAT16/32), ntfs
  • Kernel features and modules
    • USB Support
    • USB Attached SCSI and USB Mass Storage
    • New Linux IOSCHEDs evelators and Governors
      • Governor: schedutil enabled by default for all CPU's
      • IOSCHED: kyber by default for non rotational disks
      • IOSCHED: bfq by default for rotational disks
      • IOSCHED: noop by default for single-queue devices
    • Fully preemptive @ 100 Hz kernel for more responsiveness
    • Minimum CPU frequency set to 512 MHz instead of 48 MHz (OEM firmware sets the
      CPU at top speed, but that's a bit aggressive)
    • Enabled and unlocked all operation points to allow the CPU frequency scaling
      governor schedutil to take better decisions
    • Changed clock latency from 256000ns to 100000ns (which is the value used by
      Qualcomm)
    • Patched VLAN to work as expected
    • Patched SQUASHFS to avoid crashes due to spurious SPI errors

General notes

All kernel modules for a particular version, among with a wide set of LuCI apps,
are automatically uploaded to GitHub and opkg is configured to use them. All
of the other software is available from OpenWrt's snapshots, but the ROM is not
configured to use them [by default].

If there is some missing package or kernel module, please open a GitHub issue or
send feedback to my e-mail explaining exactly what's missing. It will be added
to the next release.

Memory subsystem

The device has only 256 MB of RAM. That's plenty but sometimes it might get a
little short (i.e. when indexing a huge library with miniDLNA). For this, the
memory subsystem has been tuned to support almost any NAS or adblocke load:

  • The system will use the swap cache when possible. It's a pool of the 30.00% of
    the system memory (when used alone), compressed using lzo-rle, which is one
    of the fastest compressors available. The system will eventually evict pages
    to a real swapping device (which also includes zram) when it can't compress
    them, when they are too old or when the pool is getting depleted.
  • When zram comes online with the lzo-rle compressor (the default unless you
    change it in LuCI, when usig zswap it will use zstd instead), it will
    adjust the zswap pool, so both pools (torgether) will use the user's
    requested space; and then the system will set this space for swapping. zram
    has a slower but yet more powerful compressor.
  • If the backing file/device is setup correctly, pages that are hard to
    compress, or that are too old in the zram pool will be eventually evicted to
    the storage, freeing the memory and lowering the compress...
Read more

v1.15.oc

29 Jul 19:54
Compare
Choose a tag to compare

Wireless performance

Support the efforts for improving the wireless performance of this device. Please
go to this post to help us to improve the wireless performance.

Don't forget to apply the hotfixes!

Since I'm not perfect, some times I do forget some details when the image is
ready and it's not worth to re-build. Instead of just keeping the annoyances go
along, I decided to implement the "hotfixes" mechanics.

Here is how it works:

  1. Flash your image as always.
  2. Once your device boots, go immediately to the Backup / Flash Firmware
    in LuCI.
  3. Upload the hotfixes.tar.gz in the Restore section, as if it is a backup.
  4. That's all.

A better feedback solution!

I've implemented the ramoops feature. If you find your device crashing or
being inestable, please:

  1. Go to the settings in LuCI and enable the debug levels for the logs
    1.1. Do NOT change to log file and size, and verify that the size is 1024 and
    the file is /dev/pmsg0
  2. Wait the device to crash or to become inestable
  3. If the device crashes, go to the point 5
  4. If it doesn't crash, reboot as soon as you can
  5. Once it boots again, the /sys/fs/pstore folder, and if it's not empty, contact
    me and send me all of these files.
  6. Along with these files, if any, send me the whole /rom/bootfs/pstore directory.

EA6350v3 Custom ROM v1.15.oc

Based on OpenWrt commit c536089
If you want to apply the patches, first checkout the above commit and git-apply
the patches accordingly. After that, you can build, update and modify your copy.

NOTE: The download link is at the very bottom of this text. Please: read all
the notes and then continue to download. This page is designed to force you to
do that.

Discussion about this work, feature requests and questions in my OpenWrt
thread.
Bug reports in the GitHub Issues page.

How to install

Warning: the 'sysupgrade' procedure will reset some settings to their default
values. You can see the changes made to your system by looking at the 'bootz'
files in /etc/bootz.

First, decompress the downloaded file. This file is compressed using zstd and
it's a tarball.

  • If you are using Windows, you can install PeaZip
  • If you are using macOS, you can install Keka (beta)
  • If you are using Linux, you probably have all the tools already installed

You will find a folder once decompressed. Inside this folder, you will find the
following folders:

  • bin: this contains the two "flasheable" versions of the firmware. One is a
    sysupgrade image that you will use to update from another version or from
    OpenWrt; and the other is a factory image which you will use to flash
    directly from the Linksys firmware.
  • info: this folder contains the manifests, the configuration seed and the
    checksums. Also, it contains a copy of this document.
  • patches: it contains all the patches that apply cleanly over the fork
    point. Use them if you download the source code and want to build your own
    firmware form a working copy. Also, they need to be distributed due to the
    software licence.

From the OpenWrt firmware or from another version of this firmware

Go to LuCI and apply the sysupgrade image. Either from the OpenWrt firmware of
from another version of this firmware. This firmware will not apply cleanly
over the stock OpenWrt firmware.

Note: You should perform the upgrade without keeping/saving your settings,
otherwise, your device will likely soft-brick. If it does brick, you will need
to trigger a recovery as documented in the wiki. This happens because this
build contains patches to make the switch work, but they will stop the device
from running with the OpenWrt's default configuration and viceversa.

Go to http://ea6350v3/cgi-bin/luci/admin/system/flash if you are using another
version of this firmware. Go to https://192.168.1.1/cgi-bin/luci/admin/system/flash
if you are using the OpenWrt firmware. Or you can use the command line if you
have not installed LuCI. Then, apply the update accordingly.

From the Linksys firmware

From the OpenWrt web page for the device:

  • Attach to a LAN port on the router.
  • Connect to the Linksys Smart Wi-Fi Page (default 192.168.1.1) and login
  • Select the "Connectivity" tab on the left
  • Find the option for manual upgrade on the panel
  • Select browse, and browse to the factory binary image
  • Click update
  • Read and accept the warning
  • The router LED will start blinking. Wait for the device to boot up
  • When the router LED goes in a slow blinking, you can now navigate to
    http://ea6350v3 to your new OpenWrt installation

Reverting back to OEM in one click

WARNING: this method only works if you installed the provided factory image
directly from the Linksys firmware. If you have already "sysupgraded", this
method will not work.

If you have not installed another update of this firmware or OpenWrt, you can go
to: http://ea6350v3/cgi-bin/luci/admin/system/advanced_reboot

Then, you can click the "Reboot to alternative partition..." to revert back to
the OEM firmware. Wait for the device to reboot and load te Linksys firmware.

If you have installed either OpenWrt or this firmware twice or more, refer to
the OpenWrt forum for reverting back to stock: wiki

Features and packages

The binary installable image contains the following packages and features:

  • testcalibration script for easily and safely testing calibration board files
    if your wireless performance is not optimal.
  • BackToStock script for easily and safely reverting back from the OpenWrt
    firmware to the Linksys stock firmware. Refer to the documentation in the
    wiki here.
  • extroot
    • using the OEM partition as /overlay for added storage to install packages
      and for extending the firmware ROM lifespan.
  • DNS
    • Disabled dnsmasq DNS forwarder in favour of unbound resolver with TLS
      • Configured Unbound as a TLS forwarder for a secure DNS server (currently:
        Quad9)
  • Utilities
    • kernel features: taskstats (for atop/htop)
    • hardware: blkid, lsusb, lsblk
    • tools: bash, chsh, nano, nologin, sudo
    • performance: haveged, irqbalance, schedutil, zram, zswap
  • LuCI
    • uhttpd-openssl
    • apps
      • advanced-reboot, compressed-memory, uhttpd, unbound
  • Filesystems
    • exfat, ext4, f2fs, hfs, hfs+, msdos (FAT16/32), ntfs, xfs
  • Kernel modules
    • USB Support
      • USB Attached SCSI and USB Mass Storage
    • New Linux IOSCHEDs and Governors
      • Governor: schedutil enabled by default for all CPU's
      • IOSCHED: kyber by default for non rotational disks
      • IOSCHED: bfq by default for rotational disks
      • IOSCHED: noop by default for single-queue devices
    • Fully preemptive @ 100 Hz kernel for more responsiveness
    • Minimum CPU frequency set to 512 MHz instead of 48 MHz (OEM firmware sets
      the CPU at top speed, but that's a bit aggressive)
    • Enabled and unlocked all operation points to allow the CPU frequency scaling
      governor schedutil to take better decisions
    • Changed clock latency from 256000ns to 100000ns (which is the value used by
      Linksys)

General notes

All kernel modules for a particular version, among with a wide set of LuCI apps,
are automatically uploaded to GitHub and opkg is configured to use them. All
of the other software is available from OpenWrt's snapshots which is also
configured for you.

LuCI will show that the kernel version is not compatible or that the kernel is
not found, but it's only a warning. If the modules are available, you can
continue and your software will install.

If the software does fail to install, please open a Issue in the GitHub page in
order to grab my attention. This way, I will provide the module in the next
release and you will be free to install your software.

Memory subsystem

The device has only 256 MB of RAM. That's plenty but sometimes it might get a
little short (i.e. when indexing a huge library with miniDLNA). For this, the
memory subsystem has been tuned to support almost any NAS or adblocker load:

  • The system will use the swap cache when possible. It's a pool of the 30.00% of
    the system memory (when used alone), compressed using lzo-rle, which is one
    of the fastest compressors available. The system will eventually evict pages
    to a real swapping device (which also includes zram) when it can't compress
    them, when they are too old or when the pool is getting depleted.
  • When zram comes online with the lzo-rle compressor (the default unless you
    change it in LuCI, when usig zswap it will use zstd instead), it will
    adjust the zswap pool, so both pools (torgether) will use the user's
    requested space; and then the system will set this space for swapping. zram
    has a slower but yet more powerful compressor.
  • If the backing file/device is setup correctly, pages that are hard to
    compress, or that are too old in the zram pool will be eventually evicted to
    the storage, freeing the memory and lowering the compressor overhead, in a
    process called "compaction".

What's the gain?

There are several use cases for this:

  1. If the system has no swap, neither real swap or zram, all of this is
    useless. If using memory hungry applications, they will crash.
    2...
Read more