Bannerlator 2.9.7
Run Windows apps and games on Android — no PC and no root required.
2.9.7 is a small, focused update over 2.9.6 — a big controller-reliability overhaul plus a Task Manager fix, landing incrementally on the road to 3.0. Everything from 2.9.6 is included. As always it's entirely app-side — no ImageFS reinstall — your containers, themes, custom accent and per-game settings carry over untouched. Install straight over 2.9.6.
🎮 Controller reliability overhaul
The headline of 2.9.7 — controllers that stay connected and land on the right player.
- Hot-plug that actually holds — physical controllers survive mid-game reconnects and Bluetooth sleep/wake without dropping, via stable descriptor-keyed player slots and debounced reconnect handling.
- On-screen controls no longer die — the touch / on-screen gamepad used to stop responding after ~15 minutes; a rewritten input transport (a shared-memory ring buffer) fixes that at the root.
- No more stolen Player 1 — handheld "extra" input devices (such as the AYANEO's aux buttons) were grabbing Player 1; a capability filter now only counts real gamepads, so your actual controller stays Player 1.
- Player Slots — assign who's who — a new Players panel lets you pin each controller (and the on-screen pad) to a specific Player 1–4, or Auto / Ignore. Available live in-game, and out-of-game per-container and per-game. Includes shared-slot control (two devices driving one player) and on-screen auto-yield (hand Player 1 to a real pad when it connects).
- Controller-status toast — a brief on-screen card shows each detected controller and its assigned player on launch and whenever assignments change, so you can confirm the mapping without opening a tester.
- Reset Input — one tap re-initializes the whole input pipeline without relaunching the game.
- Every option carries a "?" explanation.
🧠 Free Memory — honest and effective
The "Free memory" action is now two clearly labeled tiers: a light Drop file caches (what the old button actually did), and a root-only Deep clean that force-stops background apps to free real RAM — while sparing your running game and system apps. There's also an optional auto deep-clean on launch.
🧩 Task Manager — Processor Affinity now reflects your choice
Setting a process's Processor Affinity always took effect, but the dialog used to reopen showing all cores checked — it wasn't reading back the cores you'd picked. It now shows your real selection every time you reopen it.
🔜 Coming next: a deeper affinity fix — pinning every worker thread of the process, not just most — is already written and lands in a following release. See the road to 3.0 below.
🛣️ On the road to 3.0
2.9.7 is a deliberate step toward a smooth 3.0, landing pieces incrementally so each is proven on real devices before the big version bump:
- Processor Affinity — Part 2 — the in-guest helper gets rebuilt to pin every worker thread, closing the small gap where a few threads could drift back onto disabled cores.
- More controller and stability polish building on the overhaul above.
3.0 rolls these up once each is device-proven — no big-bang surprises.
➕ Everything from 2.9.6, carried forward
All of 2.9.6 is included — the portrait container-editor tabs, backgrounded games staying alive (foreground service), Turnip GMEM / TU_DEBUG tuning, the cross-vendor performance HUD, "?" help + glossary everywhere, bundled AIO Graphics Test 2.0.1 / Banner File Manager 1.2.0 / Pale Moon, the D7VK DirectDraw→Vulkan wrapper (bundled + catalog), and the IPv4 DNS container fix.
📦 Where to get Proton 9
The APK does not bundle Proton 9 — Wine installs from the in-app catalog on first run.
⚠️ A fresh install ships with no Wine at all. On first run, open Containers → the download icon and install a Proton before creating a container. Updating from 2.9.6 changes nothing — your existing containers and Wine installs are untouched.
Proton 9.0 — not bundled; grab whichever matches your setup (both also appear in the in-app catalog):
arm64ec (default for most devices):
https://github.com/The412Banner/Nightlies/releases/download/Proton/wine/proton-9.0-arm64ec.wcp
66.7 MB · sha256 f8a99fed387f1b097009129dc49368c8f500927640a9d4c7a192d850b1b2068c
x86_64:
https://github.com/The412Banner/Nightlies/releases/download/Proton/wine/proton-9.0-x86_64.wcp
50.7 MB · sha256 ec90286b2b266aaa9dd4c5265383a48f05ccc96890d078cb3529e78b89cba2ea
Install via Containers → download icon → install the .wcp. (Compiled as wcps by Xnick417x.)
🙏 Credits
- Controller reliability overhaul — built on the controller-detection work across the community forks:
- WinNative — the shared-memory input transport and the descriptor-keyed player-slot design our hot-plug is built on.
- palazos (
winlatorCmod,controller-detection-fix) — the hot-plug reconnect hooks, in the brunodev85 Winlator → Pipetto-cryptowinlator_bioniclineage the fix originates from. - GameNative — the progressive input-device capability handling folded into the hot-plug path.
- isygold — Vegas DXVK, the community DXVK builds so much of our performance rides on.
- Xnick417x — the Proton 9.0 arm64ec + x86_64
.wcps linked above. - Everyone filing Mali reports and issues with logs attached — the cross-vendor HUD and Mali paths keep getting proven on real hardware.
- And everyone reporting, testing build after build, and adding games and configs to BannerHub & Bannerlator. ❤️
ℹ️ Root is only needed for the root-gated performance tier (governor / CPU-clock / thermal / fan) and the new Deep clean memory tier. Everything else — including non-root GPU max-clock on Adreno — needs no root. The root tier stays opt-in, gated behind an explicit "use at your own risk" agreement, and every change auto-reverts when you leave the game.
Entirely app-side — no ImageFS reinstall. Install over 2.9.6; everything carries over.
