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, 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 is using only
zswap
, then great I/O operations will be
avoided, making the system work faster at the cost of a portion of the memory.
zswap
will evict the never-used pages to the slow, real device over time,
reducing the footprint by keeping only the actually needed in memory. - If the system is using only
zram
, then all of the I/O is avoided. The
zram
compressor is not as fast aszswap
, but can guarantee good savings,
because it can compress better as it's a block device and not a LRU cache. - If the system is using both, pages that the kernel needs constantly will land
inzswap
which is really fast and offers decent savings. Older and not so
easy to compress pages will be evicted tozram
, where they may be compressed
better at the cost of more time required to do so. This way, users can benefit
from the fastzswap
and from the goodzram
at the same time.
4.1. When using a real swap device,zram
will be filled first and only when
the system cannot write more pages to it, it will begin to use the real
swap. The benefit: avoiding swapping at all costs. The bad side: older and
never-used pages will remain in memory, they cannot be sent to the swap
device.
4.2. In order to alleviate problems in 4.1,zram
can evict pages to a
"backing storage" device, so when using the "triple layer" (zswap -> zram
-> device), the system can use the memory more efficiently than the
default configuration.
By using compressed memory, the kernel will delay the memory starvation. This is
because most of the memory loaded by programs is only used once, most of the
time. If the kernel cannot reproduce the memory, for example, anonymous memory,
it's forced to keep it, either in RAM or in swap.
Notes for this release
This is a full custom configuration optimized for the devices. The purpose of
this build is to give the user a sensible selection of software for testing and
using OpenWrt without too much effort. It's also optimized for lower latency and
fixes 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, making both kind of incompatible. Specially because it contains
several kernel patches.
Please: perform a factory reset if you are replacing OpenWrt with this and
viceversa or else your device will soft brick, and you'll see yourself doing a
recovery.
Take into consideration
For saving space, install the OpenSSL version of the software if another SSL
version is available. This is because OpenSSL and libopenssl
are already
installed (and compressed in the firmware image, therefore saving space).
LuCI has full OpenSSL support. However, for your convenience, you can access the
HTTP version of LuCI. This is because it's not convenient to install a random
self-signed certificate every single time. You can use the HTTP version, restore
your certificate and then disable the HTTP access.
Be careful if you are using a public IPv4 or IPv6. Try to keep the access to
your device as tidy as possible, for your security. It is totally safe to use
HTTP in your LAN (if you trust your clients) but do not expose it to WAN, you
will be leaking yourroot
password that way.
The default IP address is now 192.168.50.1
and IPv6 is fd00:192:168:50::1
.
Hostname is Civic
, Convexa-B
, Convexa-S
or Dallas
.
For LuCI Administration WebUI, go to
- DNS: http://192.168.50.1/cgi-bin/luci/admin/services/unbound
- IPv4: http://192.168.50.1/cgi-bin/luci/admin
- IPv6: http://[fd00:192:168:50::1]/cgi-bin/luci/admin
Wireless password:
- 2.4GHz WRT -> OpenWrt 2.4GHz
- 5.1GHz WRT -> OpenWrt 5.1GHz
Login password:
- admin -> admin
- root -> root
Dowloads
Click the "Assets" button below and download the .tar.zst
file. If you want to
check the hotfixes integrity, here is the SHA256 checksum. Use the shasum
command or PeaZip/7zip, if you use Windows.
hotfixes.tar.gz: SHA256 [currently, no hotfixes are needed]