# Bananarchy Linux (`v0.0.1`) ![Bananarchy Banner](artwork/banner-800x240.png) **Bananarchy (`v0.0.1`)** 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](./MANIFESTO.md) for the rationale behind this entire project. Bananarchy targets the **Sxmo (`sxmo-de-sway`)** environment exclusively, tuned for 1:1 native `240x320` resolution, enlarged high-contrast typography, sub-115 MB idle RAM footprint on 512 MB devices, full Qualcomm QDSP6/Q6Voice audio and LTE modem routing, pre-integrated **Bantam** AI agent (`https://code.luxferre.top/luxferre/bantam-cpp`), a complete on-device development & scripting stack (`git`, `gcc`/`g++`, `make`, `nano`, `janet` + `jpm`, `perl` + `IO::Socket::SSL`, `tcl` + `tcllib`/`tcl-tls`/`sqlite-tcl`, `sqlite`), and a custom **6-mode `fcitx5-t9` input engine** supporting lowercase, one-shot Shift, Caps Lock, all 32 ASCII punctuation symbols, terminal control codes (`^A`-`^Z`, `Esc`, `Tab`, `F1`-`F12`), and direct numeric entry. --- ## 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 ```text bananarchy/ ├── README.md # Project architecture, build system, and quickstart guide ├── MANIFESTO.md # The Bananarchy Manifesto ├── MANUAL.md # Complete flashing, keypad, T9, Bantam, 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 │ ├── icon-large.png # Master 1024x1024 Bananarchy emblem │ ├── icon-{512..16}.png # Downsampled RGB square icons │ ├── icon-transparent-{512..32}.png # Alpha-keyed RGBA icons for UI themes │ ├── favicon.ico # Multi-resolution ICO │ ├── wallpaper-240x320.png / .jpg # Default Sxmo 240x320 portrait wallpaper │ ├── wallpaper-240x320-centered.png/.jpg# Centered 240x320 portrait wallpaper │ ├── wallpaper-320x240.png / .jpg # Landscape 320x240 QVGA wallpaper │ ├── wallpaper-240x240.png # Square 240x240 wallpaper (Nokia 2720 Flip external display) │ ├── splash-240x320.png / .ppm # 240x320 boot splash image │ └── banner-800x240.png # Project header banner ├── bootloader/ │ ├── lk2nd-msm8909.img # lk2nd secondary bootloader for MSM8905/MSM8909 │ └── loaders/ │ └── 8110.mbn # Qualcomm Sahara/Firehose programmer (05c6:9008) ├── devices/ # Device definitions, DTBs, and MIPI-DBI panel init sequences │ ├── common-msm8909/ # Shared udev keypad rules, WirePlumber S16LE, ALSA UCM2, zram │ ├── nokia-argon/ # Nokia 8110 4G device package, DTS/DTB, and GC9305 panel init │ ├── nokia-beatles/ # Nokia 2720 Flip device package, DTS/DTB, and GC9305 panel init │ ├── nokia-tough/ # Nokia 800 Tough device package, DTS/DTB, and GC9305 panel init │ └── nokia-sparkler/ # Nokia 8000 4G & 6300 4G device package, DTS/DTB, and GC9307/9305 init ├── patches/ │ ├── kernel/ │ │ ├── 0001-msm8909-qdsp6-voice-sound-nokia-argon-6.12.patch │ │ ├── 0002-msm8905-nokia-beatles-and-coconut-dts.patch │ │ └── config-bananarchy-msm8909.armv7 │ ├── edl/ │ │ └── 0001-edl-msm8909-32bit-elf-and-multi-cmd-firehose.patch │ ├── sxmo/ │ │ └── 0001-bananarchy-sxmo-240x320-keypad-ui.patch │ └── fcitx5-t9/ │ └── 0001-bananarchy-multimode-t9-and-fcitx5-5.1.19.patch ├── src/ │ ├── fcitx5-t9/ # C++20 source of Bananarchy's 6-mode fcitx5-t9 input method │ └── leds-msm8905-torch/ # Kernel driver for SY7807 rear torch LED & PM8909 PON shutdown ├── overlay/ │ └── rootfs/ # Complete Bananarchy rootfs overlay (OS branding, Sxmo, audio, T9) ├── prebuilt/ │ ├── kernel-6.12.1-msm8916/ # Prebuilt QDSP6/Q6Voice .ko modules, torch .ko, and 5 device DTBs │ ├── fcitx5-t9/ # Prebuilt armv7 libt9.so and fcitx5 addon/inputmethod configs │ └── bantam/ # Prebuilt armv7 bantam AI agent binary └── scripts/ ├── generate-artwork.py # Generates all wallpapers, icons, and splashes from icon-large.png ├── mipi-dbi-cmd.py # Compiles MIPI-DBI panel .txt init sequences into .bin firmware ├── build-kernel-audio.sh # Cross-compiles Linux 6.12.1-msm8916 QDSP6/torch modules & DTBs ├── build-fcitx5-t9.sh # Cross-compiles src/fcitx5-t9 for armv7 ├── build-bantam.sh # Fetches master from https://code.luxferre.top/luxferre/bantam-cpp & cross-compiles for armv7 ├── apply-bananarchy-overlay.sh # Applies overlay, prebuilts, artwork, and device DTB to rootfs └── configure-rootfs-from-scratch.sh # Full rootfs configuration script from base Alpine/pmOS packages ``` --- ## Build & Customization Workflow ### 1. Regenerate Artwork Assets Whenever `artwork/icon-large.png` is updated, regenerate all icons, `240x320` wallpapers, and boot splashes: ```bash ./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`): ```bash # Rebuild multi-mode fcitx5-t9 input engine (src/fcitx5-t9 -> prebuilt/fcitx5-t9) ./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 & DTBs ./scripts/build-kernel-audio.sh ``` ### 3. Customize Rootfs Packages or Configs ```bash ./chroot-shell.sh # Inside the container shell: # pkg-add # pkg-del # pkg-search ``` ### 4. Build Flashable Device Images ```bash # 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-.img` (Raw partitioned MBR image for EDL `userdata` or microSD card) - `images/bananarchy-.sparse.img` (Android sparse image for `fastboot flash userdata`) - `images/boot-bananarchy-.img` (Kernel + initramfs + DTB boot image) --- ## Flashing via USB EDL (`05c6:9008`) ```bash sudo ./flash-edl.sh nokia-argon ``` See [MANUAL.md](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.