Build (UBI) for Belkin RT3200 (Linksys E8450)

I have created a build for the Belkin RT3200 that offers some basic functionality for my own personal use cases as well as some enhancements.

Important note 1: This is a Universal Base Image (UBI) build and not the "standard" build. You will first need to switch your router over to using UBI by following the instructions here.

Important note 2: I do not intend to provide much in the way of "support" for this build. If there are bugs I will try to resolve them since this build will be running on my personal router; but I do not intend (for example) to add packages to this build above and beyond what I personally would use. This is more of just a personal project / experiment.

The build is based on the master branch.
Current version: master-r16564-4f8da19572
I'm making the builds available here.

I will only be uploading the versions after successfully flashing my own router and running some basic verifications (i.e.: it boots, DNS works, speed test runs at the speed I'd expect). Configurations and build scripts I use are included at the link above.

Current Features

  • Support for DNS over HTTPS (luci-app-https-dns-proxy)
  • Support for SQM QoS (luci-app-sqm)
  • Support for SSL (luci-ssl)
  • Support for banIP (luci-app-banip)
  • Support for BCP38 (luci-app-bcp38)
  • Support for the Nano Editor (nano)

Current Enhancements

  • System entropy enhancements (haveged)
  • Interrupt distribution over CPUs to improve system latency and throughput (irqbalance)
  • Bottleneck Bandwidth and Round-trip propagation time (BBR) as a TCP congestion control algorithm (kmod-tcp-bbr)
  • Using GCC 10
  • Using the GCC "-O3" speed optimization flag during compilation
  • Using the GCC "-mcpu=cortex-a53+crypto" architecture optimization flag during compilation
  • Using the GCC "-mharden-sls=all" hardening flag during compilation
  • Using the GCC "-mbranch-protection=standard" hardening flag during compilation

Note that as of now, you can't enable 802.11ax (WiFi 6) radio in the Web GUI but rather that must be done via the CLI (see this topic).

4 Likes

What is your trouggpout bandwith ?? Thanks for your work is good for gaming fps ?

1 Like

With SQM (fq_codel + simple.qos) on the Belkin RT3200 I can get like 477.5/11.91 Mbps | DSLReports, ISP Information where I think my provisioned speeds are like 484/12.1 Mbps so it's basically maxing out. I don't know how far beyond that it could go if I had a faster connection.

2 Likes

I have test with sqm.

He seems than max limit with sqm

1 Like

Flashed your build and it seems quite good. Have used DoT in the past but will try your DoH.

3 Likes

I have flashed your build and have 1 issue. The file system seems to be Read Only as I cannot load any packages. What is the best way to fix that?

I reflashed everything, starting by flashing initramfs-recovery.itb and then the image. Here is what the file system looks like now. Presumably this is correct. Could you check and confim as everything but squashfs appears to be RW now.

root@OpenWrt:~# df -Th
Filesystem           Type            Size      Used Available Use% Mounted on
/dev/root            squashfs        6.3M      6.3M         0 100% /rom
tmpfs                tmpfs         241.4M    232.0K    241.2M   0% /tmp
/dev/ubi0_5          ubifs          79.6M     60.0K     75.5M   0% /overlay
overlayfs:/overlay   overlay        79.6M     60.0K     75.5M   0% /
tmpfs                tmpfs         512.0K         0    512.0K   0% /dev


root@OpenWrt:~# mount
/dev/root on /rom type squashfs (ro,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,noatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,noatime)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime)
/dev/ubi0_5 on /overlay type ubifs (rw,noatime,assert=read-only,ubi=0,vol=5)
overlayfs:/overlay on / type overlay (rw,noatime,lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/work)
tmpfs on /dev type tmpfs (rw,nosuid,relatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,mode=600,ptmxmode=000)
debugfs on /sys/kernel/debug type debugfs (rw,noatime)
none on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,noatime,mode=700)

Looks virtually identical to what I've got

root@heimdall:~# df -Th
Filesystem           Type            Size      Used Available Use% Mounted on
/dev/root            squashfs        6.3M      6.3M         0 100% /rom
tmpfs                tmpfs         241.4M    556.0K    240.9M   0% /tmp
/dev/ubi0_5          ubifs          79.7M     60.0K     75.6M   0% /overlay
overlayfs:/overlay   overlay        79.7M     60.0K     75.6M   0% /
tmpfs                tmpfs         512.0K         0    512.0K   0% /dev

root@heimdall:~# mount
/dev/root on /rom type squashfs (ro,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,noatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,noatime)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime)
/dev/ubi0_5 on /overlay type ubifs (rw,noatime,assert=read-only,ubi=0,vol=5)
overlayfs:/overlay on / type overlay (rw,noatime,lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/work)
tmpfs on /dev type tmpfs (rw,nosuid,relatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,mode=600,ptmxmode=000)
debugfs on /sys/kernel/debug type debugfs (rw,noatime)
none on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,noatime,mode=700)
1 Like

I still cannot remove packages. Are you able to remove packages?

Executing package manager
Removing package luci-app-banip from root...
banip was autoinstalled and is now orphaned, removing.
Removing package banip from root...
Removing package banip from root...
You can force removal of packages with failed prerm scripts with the option: 
	--force-remove
No packages removed.
Errors
rm: can't remove '/etc/rc.d/S30banip': Read-only file system
/sbin/uci: I/O error
Collected errors:
 * pkg_run_script: Internal error: banip has a NULL tmp_unpack_dir.
 * opkg_remove_pkg: not removing package "banip", prerm script failed
The opkg remove command failed with code 255.

It's my understanding that (by design) you cannot remove packages that have been included in the firmware image itself. You can only remove packages that were not included with the original firmware - like ones you install yourself later.

That being said, you can just disable the banip service by de-selecting this check box:

Well, you can remove the packages regardless, you just won't free up space that way (and rather use more space on the overlay, to store the whiteouts), but the package and its files will be removed (rather become invisible) for the (booted up-) system.

1 Like