10 KiB
Bananarchy Linux
Bananarchy is a keypad-first Linux distribution hardforked from postmarketOS (v26.06 / Alpine edge armv7), purpose-built for Qualcomm MSM8905 (Snapdragon 205) and Qualcomm MSM8909 (Snapdragon 210) smart feature phones with 240x320 QVGA non-touch displays and physical 12-key T9 keypads.
See The Bananarchy Manifesto for the rationale behind this entire project.
Key features
System & hardware support
- Mainline Linux 6.12 kernel: Custom patches and out-of-tree kernel drivers for Qualcomm QDSP6/Q6Voice audio routing, Dual-SIM modem control, the rear 2MP GalaxyCore
GC2395camera (/dev/video0),SY7807torch LED (white:torch), and physical keypad/slider events. - Alpine Linux Edge base: Full access to the Alpine package ecosystem with
< 95 MBidle RAM usage on 512 MB devices. - Pure X11 graphical stack: Cross-compiled Xlibre (
X11Libre/xserver) display server paired with a heavily optimized Sxmo (sxmo-de-dwm) window manager (240x320vertical stack layout,< 2 msslider/key wake latency, and zero Wayland overhead).
Keypad-first user experience & native DWM plugins
Instead of spawning slow shell scripts for everyday phone tasks, Bananarchy runs a suite of preloaded resident C/C++ plugins inside DWM that open in < 2 ms:
- System & context menus (
dmenu): Instant full-screen 10-line vertical menus with live T9 filtering and built-in submenus. - Global controls drawer (
xdrawer): Press both softkeys together from anywhere to adjust speaker/earpiece volume, ringer mode, flashlight, mic/sound mute, screen brightness, and keypad backlight. - Phone dialer (
xdialer), call log (xcalllog) & call screen (xcallscreen): Press any digit on the home screen to start dialing with live T9 contact matching, run carrier USSD codes (*100#, etc.) interactively, or type*#06#to inspect both IMEIs. Incoming and active calls open a dedicated call screen with earpiece/speaker routing, microphone mute, DTMF keypad, and one-key call recording (~/Recordings/). - Contacts (
xcontacts) & SMS manager (xsms): Full phonebook editor and threaded conversation/draft SMS manager with multi-tap keypad text entry. - Modem & Dual-SIM manager (
xmodem): 4-tab cellular control center (1:SIMs,2:Radio,3:AT,4:Log) supporting physical SIM 1 / SIM 2 active slot switching, SIM PIN unlock and PUK unblock wizards, 2G/3G/4G mode selection, interactive USSD sessions, and a live AT command console. - Networks & Bluetooth manager (
xnetworks): 3-tab connectivity manager (1:Wi-Fi,2:Cell/APN,3:Bluetooth) for Wi-Fi networks, WPA2 password entry, hotspot/USB tethering, mobile data & APN editing, and Bluetooth pairing. - File manager (
xfiles) & camera (xcamera): Graphical directory browser with built-in text and image viewers, plus a live V4L2 camera viewfinder with digital zoom, flash/torch control, self-timer, and photo gallery. - Themes (
xthemes), wallpapers (xwallpapers) & ringtones (xringtones): Installable.Xresourcescolor/font themes (~/.xthemes/*.xth, 20 preinstalled schemes) with live zero-restart reload across the entire UI and terminal, alongside dedicated managers for desktop wallpapers and call ringtones/vibration.
Input, terminal & developer tools
- 6-mode
fcitx5-t9keypad input: Cycle with#betweenabc,Abc,ABC,Sym(all 32 ASCII punctuation symbols),Ctl(Ctrlsequences, arrows,PageUp/PageDown,F1–F12), and123numeric modes with a fixed bottom candidate bar. - First-class Linux terminal (
st): Patched with HarfBuzz OpenType ligatures (Fira Codeas the default system and terminal font), XIM T9 input, and live theme reloading. - On-device development & AI: Preinstalled
gcc/g++,make,git, GNUcoreutils,nano,ed,sqlite,perl,tcl, the Janet language &jpm, the Bantam coding agent,frotz(interactive fiction), and standalone X11 keypad games (SnakeandTetris).
Supported MSM8909 / MSM8905 devices
| Device | Codename | SoC | CPU / RAM | Display & panel firmware | Device tree (.dtb) |
|---|---|---|---|---|---|
| Nokia 8110 4G | nokia-argon |
Qualcomm MSM8905 (SD205) | 2x Cortex-A7 @ 1.1 GHz, 512 MB | 2.4" 240x320 SPI (nokia,argon-gc9305-v2-panel.bin) |
qcom-msm8905-nokia-argon.dtb |
| Nokia 2720 Flip | nokia-beatles |
Qualcomm MSM8905 (SD205) | 2x Cortex-A7 @ 1.1 GHz, 512 MB | 2.8" 240x320 SPI (nokia,beatles-gc9305-panel.bin) |
qcom-msm8905-nokia-beatles.dtb |
| Nokia 800 Tough | nokia-tough (nokia-coconut) |
Qualcomm MSM8905 (SD205) | 2x Cortex-A7 @ 1.1 GHz, 512 MB | 2.4" 240x320 SPI (nokia,coconut-gc9305-panel.bin) |
qcom-msm8905-nokia-coconut.dtb |
| Nokia 8000 4G | nokia-sparkler |
Qualcomm MSM8909 (SD210) | 4x Cortex-A7 @ 1.1 GHz, 512 MB | 2.8" 240x320 SPI (nokia,sparkler-gc9307-hlt-28-panel.bin) |
qcom-msm8909-nokia-sparkler.dtb |
| Nokia 6300 4G (sibling) | nokia-leo |
Qualcomm MSM8909 (SD210) | 4x Cortex-A7 @ 1.1 GHz, 512 MB | 2.4" 240x320 SPI (nokia,leo-gc9305-hlt-24-panel.bin) |
qcom-msm8909-nokia-leo.dtb |
Repository structure
bananarchy/
├── README.md # Project overview, repository layout, and build workflow
├── MANIFESTO.md # The Bananarchy Manifesto
├── MANUAL.md # Complete flashing, keypad, plugin, T9, camera, and modem manual
├── flash-edl.sh # Automated USB EDL flasher wrapper (sudo + ModemManager handling)
├── flash-edl.py # Multi-device Qualcomm Sahara/Firehose EDL flasher
├── rebuild-image.sh # Builds boot.img, MBR raw .img, and Android .sparse.img
├── chroot-shell.sh # Rootless Docker armv7 package & rootfs customization shell
├── artwork/ # Bananarchy master icon, generated icons, wallpapers, and splashes
├── bootloader/ # lk2nd secondary bootloader and Sahara/Firehose programmer (8110.mbn)
├── devices/ # Device definitions, DTBs, and MIPI-DBI panel init sequences
├── patches/ # Upstream kernel, EDL, Sxmo, Xlibre, and fcitx5-t9 patch sets
├── src/
│ ├── sxmo-dwm/ # Patched sxmo-dwm (240x320 bstack, Pango bar, softkey bar & plugin API)
│ ├── dwm-plugins/ # DWM plugins (dialer, calllog, callscreen, contacts, sms, files, camera,
│ │ # themes, modem, networks, ringtones, wallpapers), theme.h & runner
│ ├── xdrawer/ # XDrawer global phone controls DWM plugin (xdrawer.so / xdrawer)
│ ├── sxmo-dmenu/ # Resident DWM menu plugin (dmenu.so) & client (dmenu / xdmenu)
│ ├── sxmo-st/ # Patched sxmo-st terminal with HarfBuzz Fira Code ligatures & XIM
│ ├── xf86-input-libinput/ # Xlibre xf86-input-libinput DDX driver
│ ├── xf86-video-fbdev/ # Xlibre xf86-video-fbdev fallback DDX driver
│ ├── fcitx5-t9/ # 6-mode fcitx5-t9 keypad input method
│ ├── games/ # Standalone keypad X11 games (snake.cpp, tetris.cpp)
│ ├── leds-msm8905-torch/ # Kernel driver for SY7807 torch LED, WCD codec init & PON shutdown
│ └── msm8905-cam/ # Kernel V4L2 driver for GC2395 2MP rear camera (/dev/video0)
├── overlay/rootfs/ # System configuration overlay applied over the target rootfs
├── prebuilt/ # Pre-compiled armv7 binaries and kernel modules
└── scripts/ # Cross-compilation, artwork generation, and overlay scripts
Build & customization workflow
1. Regenerate artwork assets
Whenever artwork/icon-large.png is updated, regenerate all icons, 240x320 wallpapers, and boot splashes:
./scripts/generate-artwork.py
2. Recompile core components (optional — prebuilts included)
All components are pre-compiled in prebuilt/ and overlay/rootfs/, and can be rebuilt from source at any time using rootless Docker (alpine:3.24):
# Rebuild cross-compiled Xlibre (X11Libre/xserver) + libinput/fbdev DDX drivers
./scripts/build-xlibre.sh
# Rebuild patched sxmo-st, sxmo-dmenu, sxmo-dwm & all 13 C++ DWM plugins
./scripts/build-sxmo-x11.sh
# Rebuild standalone X11 games (snake, tetris)
./scripts/build-games.sh
# Rebuild multi-mode fcitx5-t9 input engine
./scripts/build-fcitx5-t9.sh
# Fetch latest master from https://code.luxferre.top/luxferre/bantam-cpp and cross-compile Bantam AI agent
./scripts/build-bantam.sh
# Rebuild Linux 6.12.1-msm8916 QDSP6/Q6Voice audio modules, torch LED module, camera module & DTBs
./scripts/build-kernel-audio.sh
3. Customize rootfs packages or configs
./chroot-shell.sh
# Inside the container shell:
# pkg-add <pkg>
# pkg-del <pkg>
# pkg-search <pattern>
4. Build flashable device images
# Build for Nokia 8110 4G (default)
./rebuild-image.sh nokia-argon
# Or build for Nokia 2720 Flip, Nokia 800 Tough, or Nokia 8000 4G:
./rebuild-image.sh nokia-beatles --mkinitfs
./rebuild-image.sh nokia-tough --mkinitfs
./rebuild-image.sh nokia-sparkler --mkinitfs
Output images are written to images/:
images/bananarchy-<device>.img(raw partitioned MBR image for EDLuserdataor microSD card)images/bananarchy-<device>.sparse.img(Android sparse image forfastboot flash userdata)images/boot-bananarchy-<device>.img(kernel + initramfs + DTB boot image)
Flashing via USB EDL (05c6:9008)
sudo ./flash-edl.sh nokia-argon
See MANUAL.md for complete EDL, Fastboot, and microSD installation instructions, keypad navigation shortcuts, and the multi-mode T9 reference.
Credits
All Bananarchy-specific components were initially created by Luxferre and released into the public domain with no warranties.
Alpine Linux, postmarketOS/Nura and other third-party components are guided by their respective licensing terms.
