Releases: NoTengoBattery/openwrt
v2.10
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:
- Flash the image as always.
- Once the device boots, go immediately to the
Backup / Flash Firmware
in LuCI. - Upload the
tar.gz
in theRestore
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 asysupgrade
image that will upgrade from another version or OpenWrt, and the other is afactory
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 ofunbound
resolver with TLS - Configured Unbound as a TLS forwarder for a secure DNS server (currently: Quad9)
- Disabled
- 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
- DNS: http://192.168.xx.1/cgi-bin/luci/admin/services/unbound
- IPv4: http://192.168.xx.1/cgi-bin/luci/admin
- IPv6: http://[fd00:192:168:xx::1]/cgi-bin/luci/admin
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 beOpenWrt 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
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:
- Flash the image as always.
- Once the device boots, go immediately to the
Backup / Flash Firmware
in LuCI. - Upload the
tar.gz
in theRestore
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 asysupgrade
image that will upgrade from another version or OpenWrt, and the other is afactory
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 ofunbound
resolver with TLS - Configured Unbound as a TLS forwarder for a secure DNS server (currently: Quad9)
- Disabled
- 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
- DNS: http://192.168.xx.1/cgi-bin/luci/admin/services/unbound
- IPv4: http://192.168.xx.1/cgi-bin/luci/admin
- IPv6: http://[fd00:192:168:xx::1]/cgi-bin/luci/admin
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 beOpenWrt 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
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
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
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:
- Flash the image as always.
- Once your device boots, go immediately to the
Backup / Flash Firmware
in
LuCI. - Upload the
hotfixes.tar.gz
in theRestore
section, as if it's a backup. - That's all!
A better feedback solution!
I've implemented the ramoops
feature. If you find your device crashing or
becoming inestable, please:
- Go to the settings in LuCI and enable the debug levels for the logs
1.1. Verify that the size is1536
and the file is/dev/pmsg0
. Change it
accordingly. - Wait the device to crash or to become inestable.
- If the device crashes, go to the point 5.
- 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. - Check the
/sys/fs/pstore
folder, and if it's not empty, collect a copy of
these files. - 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. - 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. - 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 afactory
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).
- using the OEM partition as
- DNS
- Disabled
dnsmasq
DNS forwarder in favour ofunbound
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.
- Disabled
- 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
- Governor:
- 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
governorschedutil
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 usinglzo-rle
, which is on...
v2.02
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:
- Flash the image as always.
- Once your device boots, go immediately to the
Backup / Flash Firmware
in
LuCI. - Upload the
hotfixes.tar.gz
in theRestore
section, as if it's a backup. - That's all!
A better feedback solution!
I've implemented the ramoops
feature. If you find your device crashing or
becoming inestable, please:
- Go to the settings in LuCI and enable the debug levels for the logs
1.1. Verify that the size is1536
and the file is/dev/pmsg0
. Change it
accordingly. - Wait the device to crash or to become inestable.
- If the device crashes, go to the point 5.
- 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. - Check the
/sys/fs/pstore
folder, and if it's not empty, collect a copy of
these files. - 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. - 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. - 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 afactory
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).
- using the OEM partition as
- DNS
- Disabled
dnsmasq
DNS forwarder in favour ofunbound
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.
- Disabled
- 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
- Governor:
- 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
governorschedutil
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 usinglzo-rle
, which is on...
v2.01
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:
- Flash your image as always.
- Once your device boots, go immediately to the
Backup / Flash Firmware
in
LuCI. - Upload the
hotfixes.tar.gz
in theRestore
section, as if it's a backup. - That's all!
A better feedback solution!
I've implemented the ramoops
feature. If you find your device crashing or
becoming inestable, please:
- Go to the settings in LuCI and enable the debug levels for the logs
1.1. Verify that the size is1536
and the file is/dev/pmsg0
. Change it
accordingly. - Wait the device to crash or to become inestable.
- If the device crashes, go to the point 5.
- 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. - Check the
/sys/fs/pstore
folder, and if it's not empty, collect a copy of
these files. - 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. - 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. - 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 afactory
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).
- using the OEM partition as
- DNS
- Disabled
dnsmasq
DNS forwarder in favour ofunbound
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.
- Disabled
- 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
- Governor:
- 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
governorschedutil
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 usinglzo-rle
, which is one
of the fastest compressors available. The system will eventually evict pages
to a real swapping device (which also includeszram
) when it can't compress
them, when they are too old or when the pool is getting depleted. - When
zram
comes online with thelzo-rle
compressor (the default unless you
change it in LuCI, when usigzswap
it will usezstd
instead), it will
adjust thezswap
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...
v2.00
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:
- Flash your image as always.
- Once your device boots, go immediately to the
Backup / Flash Firmware
in
LuCI. - Upload the
hotfixes.tar.gz
in theRestore
section, as if it's a backup. - That's all!
A better feedback solution!
I've implemented the ramoops
feature. If you find your device crashing or
becoming inestable, please:
- Go to the settings in LuCI and enable the debug levels for the logs
1.1. Verify that the size is1536
and the file is/dev/pmsg0
. Change it
accordingly. - Wait the device to crash or to become inestable.
- If the device crashes, go to the point 5.
- 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. - Check the
/sys/fs/pstore
folder, and if it's not empty, collect a copy of
these files. - 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. - 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. - 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 afactory
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).
- using the OEM partition as
- DNS
- Disabled
dnsmasq
DNS forwarder in favour ofunbound
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.
- Disabled
- 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
- Governor:
- 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
governorschedutil
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 usinglzo-rle
, which is one
of the fastest compressors available. The system will eventually evict pages
to a real swapping device (which also includeszram
) when it can't compress
them, when they are too old or when the pool is getting depleted. - When
zram
comes online with thelzo-rle
compressor (the default unless you
change it in LuCI, when usigzswap
it will usezstd
instead), it will
adjust thezswap
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...
v1.16.oc
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:
- Flash your image as always.
- Once your device boots, go immediately to the
Backup / Flash Firmware
in
LuCI. - Upload the
hotfixes.tar.gz
in theRestore
section, as if it's a backup. - That's all!
A better feedback solution!
I've implemented the ramoops
feature. If you find your device crashing or
becoming inestable, please:
- Go to the settings in LuCI and enable the debug levels for the logs
1.1. Verify that the size is1536
and the file is/dev/pmsg0
. Change it
accordingly. - Wait the device to crash or to become inestable.
- If the device crashes, go to the point 5.
- 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. - Check the
/sys/fs/pstore
folder, and if it's not empty, collect a copy of
these files. - 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. - 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. - 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 afactory
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.
- using the OEM partition as
- DNS
- Disabled
dnsmasq
DNS forwarder in favour ofunbound
resolver with TLS - Configured Unbound as a TLS forwarder for a secure DNS server (currently:
Quad9)
- Disabled
- 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
- Governor:
- 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
governorschedutil
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 usinglzo-rle
, which is one
of the fastest compressors available. The system will eventually evict pages
to a real swapping device (which also includeszram
) when it can't compress
them, when they are too old or when the pool is getting depleted. - When
zram
comes online with thelzo-rle
compressor (the default unless you
change it in LuCI, when usigzswap
it will usezstd
instead), it will
adjust thezswap
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 thezram
pool will be eventually evicted to
the storage, freeing the memory and lowering the compress...
v1.15.oc
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:
- Flash your image as always.
- Once your device boots, go immediately to the
Backup / Flash Firmware
in LuCI. - Upload the
hotfixes.tar.gz
in theRestore
section, as if it is a backup. - That's all.
A better feedback solution!
I've implemented the ramoops
feature. If you find your device crashing or
being inestable, please:
- 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 is1024
and
the file is/dev/pmsg0
- Wait the device to crash or to become inestable
- If the device crashes, go to the point 5
- If it doesn't crash, reboot as soon as you can
- Once it boots again, the
/sys/fs/pstore
folder, and if it's not empty, contact
me and send me all of these files. - 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 afactory
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.
- using the OEM partition as
- DNS
- Disabled
dnsmasq
DNS forwarder in favour ofunbound
resolver with TLS- Configured Unbound as a TLS forwarder for a secure DNS server (currently:
Quad9)
- Configured Unbound as a TLS forwarder for a secure DNS server (currently:
- Disabled
- 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
- Governor:
- 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
governorschedutil
to take better decisions - Changed clock latency from 256000ns to 100000ns (which is the value used by
Linksys)
- USB Support
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 usinglzo-rle
, which is one
of the fastest compressors available. The system will eventually evict pages
to a real swapping device (which also includeszram
) when it can't compress
them, when they are too old or when the pool is getting depleted. - When
zram
comes online with thelzo-rle
compressor (the default unless you
change it in LuCI, when usigzswap
it will usezstd
instead), it will
adjust thezswap
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 thezram
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:
- 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...