2026-10-19 09:23:54 +03:00
2026-10-19 09:23:54 +03:00
2026-10-19 09:23:54 +03:00
2026-10-19 09:23:54 +03:00
2026-10-19 09:23:54 +03:00
2026-10-19 09:23:54 +03:00
2026-10-24 17:32:52 +03:00

Bananarchy Linux

Bananarchy Banner

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 GC2395 camera (/dev/video0), SY7807 torch LED (white:torch), and physical keypad/slider events.
  • Alpine Linux Edge base: Full access to the Alpine package ecosystem with < 95 MB idle 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 (240x320 vertical stack layout, < 2 ms slider/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 .Xresources color/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-t9 keypad input: Cycle with # between abc, Abc, ABC, Sym (all 32 ASCII punctuation symbols), Ctl (Ctrl sequences, arrows, PageUp/PageDown, F1–F12), and 123 numeric modes with a fixed bottom candidate bar.
  • First-class Linux terminal (st): Patched with HarfBuzz OpenType ligatures (Fira Code as the default system and terminal font), XIM T9 input, and live theme reloading.
  • On-device development & AI: Preinstalled gcc/g++, make, git, GNU coreutils, nano, ed, sqlite, perl, tcl, the Janet language & jpm, the Bantam coding agent, frotz (interactive fiction), and standalone X11 keypad games (Snake and Tetris).

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 and partitioned MBR .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 (partitioned MBR image for EDL userdata, fastboot flash userdata, or microSD card)
  • 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.

S
Description
A freedom-first hardfork of postmarketOS aimed at ex-KaiOS keypad smartphones from Nokia etc
https://bananarchy.top Readme
16 MiB
Languages
C 50.7%
C++ 25.8%
Shell 15.3%
Roff 6.1%
Python 0.9%
Other 1.2%