Skip to content

Fixes and new features from a couple months of daily driving (v2.7) - #8

Open
Bouteillepleine wants to merge 1 commit into
fatalcoder524:mainfrom
Bouteillepleine:v2.7-updates
Open

Fixes and new features from a couple months of daily driving (v2.7)#8
Bouteillepleine wants to merge 1 commit into
fatalcoder524:mainfrom
Bouteillepleine:v2.7-updates

Conversation

@Bouteillepleine

@Bouteillepleine Bouteillepleine commented Aug 11, 2026

Copy link
Copy Markdown

Hey! First off, thanks for this module — been using it daily on my OnePlus (OxygenOS 15, dual SIM, KernelSU) for a couple of months now. Along the way I ended up fixing a bunch of things and adding some features, and figured it was about time I sent it back upstream instead of sitting on it :)

Everything here has been verified live on-device.

The most important fixes:

  • initcwnd/initrwnd and the per-route congctl were only written to the main table, but Android keeps the default route in the per-interface table — so they never actually applied to internet traffic. I only caught this because the pin was sitting on the LAN subnet route and nothing else.
  • qdisc checks used a bare grep, so fq happily matched fq_codel — apply reported success and the monitor never fired.
  • switching bbr3 → bbr left stale congctl bbr3 pins on routes (the "already pinned" glob matches bbr against bbr3).
  • VoWiFi detection never matches on OxygenOS/ColorOS — their SystemUI doesn't print the AOSP slot='vowifi' line at all, so every wifi join just ate the full 20s timeout. Added the OPlus pattern and kept the AOSP one as fallback.
  • the cellular signal read the first level= in the telephony dump, which is the dead CDMA block — dual SIM phones sit at "poor" forever. Now it reads real dBm (RSRP/ssRsrp) from the active-data SIM's primary RAT.
  • the boot sysctl block overwrote ROM-tuned tcp_rmem/tcp_wmem min/default with fixed values — made it raise-only so it never downgrades what the ROM already tuned.
  • manual settings didn't stick while on wifi (force_apply was gated behind the VoWiFi connect timer, and re-tapping kept resetting it).
  • upgrades silently wiped user settings — everything is preserved now.
  • dropped system.prop: those are Android props nothing consumes, the real values are the sysctls the scripts set, and the stale props just confuse debugging.
  • tun/ppp/wg interfaces now resolve to the underlying wlan/rmnet.

New stuff:

  • a Tools tab: Auto-Optimize (benchmarks every CC the kernel exposes and picks a winner), an A/B duel between two CCs, a live BBR bandwidth/RTT graph from debugfs (mounted automatically when absent — Android 11+ doesn't mount it), and a bufferbloat test. The bloat test pulls from multiple mirrors in parallel because a single mirror under-saturates fast links — I was measuring ~88% of link speed on one server vs ~97% with three.
  • a Results tab that keeps a history of test runs (connection type, cc, qdisc, signal, download, pings, grade) across upgrades.
  • an opt-in "Advanced TCP buffers" toggle, also raise-only.
  • the qdisc monitor grew into a full drift guard: it now also watches global cc, the route pins and buffer ceilings, logs what drifted, and re-asserts quietly without ss -K so it never kills live connections. It also pauses itself while a WebUI test runs — otherwise it fights the Auto-Optimize probes and corrupts the scores (watched that happen live, four reverts in one run). And the qdisc match is anchored to the root line, since a foreign root with a matching leaf underneath used to pass.

One heads up: my local history predates your module/ restructure, so this comes as one squashed commit rebuilt on top of your current main. Totally happy to split things out or adjust anything to your taste — and if some of it feels too OnePlus-specific just say so, the OPlus detection bits all fall back to the AOSP behavior.

@Bouteillepleine Bouteillepleine changed the title v2.7: Tools/Results tabs, full drift guard, route-table fixes, VoWiFi/signal fixes Fixes and new features from a couple months of daily driving (v2.7) Aug 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant