Files

31 KiB
Raw Permalink Blame History

Bananarchy Linux — user, flashing, and customization manual

Bananarchy Banner

This manual covers flashing, operating, and customizing Bananarchy Linux (240x320 native edition) on Qualcomm MSM8905 and MSM8909 Nokia feature phones:

  • Nokia 8110 4G (nokia-argon)
  • Nokia 2720 Flip (nokia-beatles)
  • Nokia 800 Tough (nokia-tough / nokia-coconut)
  • Nokia 8000 4G (nokia-sparkler) and Nokia 6300 4G (nokia-leo)

1. System overview and workspace contents

1.1 System images (images/)

  • images/bananarchy-nokia-argon.img: partitioned MBR image (256 MiB ext2 pmOS_boot + ext4 pmOS_root) ready for EDL flashing to userdata, fastboot flash userdata, or raw dd to a microSD card.
  • Additional device images (bananarchy-nokia-beatles.img, bananarchy-nokia-tough.img, bananarchy-nokia-sparkler.img) can be generated at any time via ./rebuild-image.sh <device> --mkinitfs.

1.2 Bootloader and EDL programmer (bootloader/)

  • bootloader/lk2nd-msm8909.img: secondary bootloader (lk2nd) providing Fastboot and extlinux boot discovery for MSM8905 and MSM8909 devices.
  • bootloader/loaders/8110.mbn: signed Qualcomm Sahara/Firehose programmer (05c6:9008).

1.3 Core architecture highlights

  1. Pure X11 (Xlibre + sxmo-de-dwm) for 240x320 QVGA displays:
    • Uses a lightweight cross-compiled Xlibre server with modesetting KMS, partial-rectangle ShadowFB SPI updates, and zero Wayland overhead.
    • Patched dwm provides a 240x320 vertical bottom-stack (bstack) layout, a 24px top status bar, a transparent "Menu" / "Names" desktop softkey bar, a Conky desktop clock and status widget (which refreshes automatically when changing time, timezone, or wallpaper, or when logging out), and < 2 ms handling of physical slider (SW_LID) and wake keys.
  2. Preloaded resident DWM plugins (< 2 ms wakeup):
    • Core phone applications (dmenu, xdrawer, dialer, calllog, callscreen, contacts, sms, files, camera, themes, modem, networks, ringtones, wallpapers, music) run as preloaded resident daemons (dwm-plugin <name> --preload) that sleep at 0% CPU and open instantaneously over FIFO/socket IPC.
    • All UI elements share a single XRDB theming engine (~/.xthemes/*.xth -> ~/.Xresources) with 20 preinstalled color schemes, proportional font sizing (theme.baseFontSize), and live reload without restarting X11.
  3. First-class terminal (st) and 6-mode fcitx5-t9 keypad input:
    • st is patched with HarfBuzz OpenType ligature shaping (Fira Code default) and live .Xresources reload.
    • fcitx5-t9 provides 6 keypad input modes (abc, Abc, ABC, Sym, Ctl, 123 + * long-press Ctrl+ latch) in a fixed bottom candidate bar (Y = 290, H = 30).
  4. Mainline Linux 6.12 hardware drivers:
    • QDSP6 / Q6Voice audio and Dual-SIM modem: loudspeaker, boosted (+6 dB) earpiece, internal MEMS and headset microphones, ModemManager + q6voiced call audio routing, and direct Qualcomm QMI UIM Dual-SIM slot switching, PIN/PUK management, and SIM phonebook access.
    • Rear 2MP camera and torch LED: msm8905-cam V4L2 driver (/dev/video0 800x600 RGB3 for GalaxyCore GC2395) and leds-msm8905-torch (white:torch + PM8909 clean poweroff).
  5. Preinstalled developer and utility stack:
    • gcc/g++, make, git, GNU coreutils, nano, ed, less, rlwrap, janet + jpm, bantam coding agent, perl (IO::Socket::SSL), tcl (tcllib, tcl-tls, sqlite-tcl), sqlite3, frotz, ffmpeg, mpv, imv, and standalone snake and tetris X11 games.

2. Flashing instructions

Run the automated EDL flasher from the repository root on your host machine:

sudo ./flash-edl.sh

(To flash another target device image, pass its codename, e.g. sudo ./flash-edl.sh nokia-sparkler.)

The script performs the following steps automatically:

  1. Temporarily pauses host ModemManager so it does not interfere with 05c6:9008.
  2. Waits for the phone to appear in Qualcomm EDL mode (05c6:9008):
    • From Bananarchy Linux: open the Power menu (End / Power key or System menu -> Power), select Reboot to loader (sxmo_power.sh loader) to enter the lk2nd Fastboot menu, and select EDL (or let flash-edl.sh automatically send fastboot oem reboot-edl).
    • Button combo: power off the phone, hold D-Pad up + D-Pad down, and plug in the USB cable.
    • EDL cable: hold the EDL cable button while plugging in USB.
    • From ADB or Fastboot: the script automatically sends adb reboot edl or fastboot oem reboot-edl if detected.
  3. Uploads bootloader/loaders/8110.mbn via Sahara and connects to eMMC via Firehose.
  4. Backs up gpt.bin, fsc, fsg, modemst1, modemst2, persist, and boot into ./backup/ if not already backed up.
  5. Flashes lk2nd-msm8909.img to boot, flashes images/bananarchy-<device>.img to userdata, clears the stock system superblock, and reboots into Bananarchy Linux.

Method B: Fastboot flashing (once lk2nd is installed)

  1. Enter the lk2nd Fastboot menu either by selecting Reboot to loader from the Power menu (sxmo_power.sh loader) or by holding D-Pad down while powering on the phone.
  2. Flash the system image to userdata:
    fastboot flash userdata ./images/bananarchy-nokia-argon.img
    fastboot erase system
    fastboot reboot
    

Method C: booting from a microSD card

lk2nd automatically checks the microSD card for a pmOS_boot partition before internal eMMC:

sudo dd if=./images/bananarchy-nokia-argon.img of=/dev/sdX bs=4M status=progress conv=fsync

3. Keypad controls and native applications

3.1 Global keypad controls (240x320)

Physical key Linux keysym / event Action
Left softkey (Menu) XF86KbdLcdMenu1 (KEY_MENU) Open System menu, close open menu, or wake and unlock when locked
Right softkey (Names / Back) XF86KbdLcdMenu2 / BackSpace (KEY_BACK) On empty desktop: open Contacts (Names); inside apps: open App context menu (or close menu if open); in T9 preedit: BackSpace
Both softkeys together KEY_MENU + KEY_BACK Toggle XDrawer (xdrawer) global phone controls overlay from anywhere
Digits 0–9, *, # (on idle desktop) 0–9, asterisk, numbersign Open Dialer (xdialer) and immediately insert the pressed digit, *, or #
Call (green) XF86PickupPhone / XF86Phone (KEY_SEND) Answer incoming call when ringing; on empty desktop: open Call Log (xcalllog); when locked: wake and unlock; in menus: confirm (Return); in apps: 2x focus next window, 3x cycle tiling layout
End / Power (red) XF86PowerOff Wake and unlock when locked, close open plugin/menu, or: 1x open Power menu, 2x cycle screen state, 3x (or hold 400ms) launch a new terminal
D-Pad up / down Up / Down Navigate menus and apps; in st: Shift+Up/Shift+Down (or ScrlUp/ScrlDn in Ctl mode) scrolls terminal history; in T9 preedit: toggle letter case (a <-> A) or jump +4 / -4 candidates
D-Pad left / right Left / Right On empty desktop: switch workspace tags (-1 / +1); in T9 preedit: step back 1 candidate (Left) or commit candidate (Right); in idle Ctl mode: Home / End
Center OK Return (KEY_OK) Confirm / Enter, or commit active T9 preedit candidate immediately
Slider close / open SW_LID (lid:on / lid:off) Close: close open menu, turn off keypad backlight, and lock/turn screen off; Open: restore keypad backlight, unlock, and turn screen on

Screen blanking, locking, and waking: X11 screensaver/DPMS blanking is disabled so screen state is controlled cleanly by Sxmo. Automatic idle locking is disabled so the phone only locks when you explicitly ask it to (Power -> Lock, XDrawer -> Lock, 2x End / Power, or closing the physical slider). To save battery, the display blanks after inactivity (SXMO_UNLOCK_IDLE_TIME, default 30s; SXMO_LOCK_IDLE_TIME, default 8s once locked) without locking. When the screen is off, wake and unlock in a single action by opening the slider or pressing End / Power, Left softkey, Right softkey, or Call (green).

3.1.1 Window tiling modes and switching combos

By default, dwm uses the vertical bottom-stack (bstack, TTT) layout so multiple st terminals stack vertically (one under another) to preserve full line width on the 240x320 portrait screen.

You can switch layouts and focus using either physical keypad multi-presses or an external keyboard (Mod4 / Super):

  • Triple-press Call (green) (3x Call): cycle the active layout (TTT -> []= -> [D] -> [M] -> TTT).
  • Double-press Call (green) (2x Call): move focus to the next open window (Super+j).
  • Triple-press End / Power (red) (3x End): launch a new st terminal in the active workspace.
  • External keyboard shortcuts (Mod4):
    • Mod4+space: cycle layout (TTT -> []= -> [D] -> [M]).
    • Mod4+Shift+slash: vertical stack layout (bstack, TTT).
    • Mod4+slash: horizontal tile layout (tile, []=).
    • Mod4+m: fullscreen monocle layout (monocle, [M]).
    • Mod4+Up / Mod4+Down (or Mod4+k / Mod4+j): move focus between tiled windows.
    • Mod4+Shift+k / Mod4+Shift+j: move the focused window up or down in the stack.
    • Mod4+1..4: switch to workspace tag 1..4.
    • Mod4+Shift+q: close the focused window.

3.1.2 Preloaded native DWM applications

All fifteen phone applications are compiled as shared-object plugins (/usr/lib/dwm/plugins/*.so), preloaded at dwm startup, and awakened over /tmp/dwm_plugin_<name>.fifo in < 2 ms:

  1. System and context menus (dmenu.so / dmenu / xdmenu):

    • Open / close: press Left softkey (Menu) for the System menu or Right softkey (Back) inside an application for its Context menu; press the same softkey or Escape to close.
    • Built-in submenus and instant toggles: renders sys, applications, scripts, modem, config, power (including Logout, Reboot, Reboot to loader, Reboot to EDL, and Poweroff), audio, notifications, wm, timezone, games, st, and nano menus in place in < 0.5 ms without spawning external processes.
    • Script compatibility: any script piping items into /usr/bin/dmenu or sxmo_dmenu.sh communicates with the resident daemon over /tmp/dwm_plugin_dmenu.sock.
  2. Global phone controls (xdrawer.so / xdrawer):

    • Open / close: press both softkeys simultaneously (KEY_MENU + KEY_BACK) from anywhere, or select XDrawer from the System menu.
    • Controls: use Up/Down (or 1–9/0) to select Speaker, Earpiece, Ring Vol, Ringer (Ring+Vib / Vibrate / Silent / DND), Vibration (Light / Medium / Strong with instant tactile feedback), Flashlight, Sound, Microphone, Screen, or Keypad; use Left/Right or Return to adjust or toggle.
  3. Phone dialer (dialer.so / xdialer):

    • Open: press any 0–9, *, or # key on the empty desktop, or open Dialer from the System menu or Call Log.
    • Dialing and T9 search: typing digits filters saved contacts and recent numbers by phone number and T9 name in real time. Hold 0 (>= 420 ms) or press Right / Left softkey (+Sign) to insert +.
    • USSD codes and *#06# Dual-SIM IMEI display:
      • Typing *#06# immediately opens the Device IMEI (*#06#) dialog showing IMEI 1, IMEI 2, and IMEI SV.
      • Typing any USSD code (*...# or #...#, such as *100#) switches the center softkey to SEND. Pressing Call (green) or Center OK runs the USSD session inside an interactive in-dialer modal with scrollable carrier output and multi-step reply support.
  4. Call history (calllog.so / xcalllog):

    • Open: press Call (green) on the empty desktop, or select Call Log from the System menu or Dialer.
    • Controls: Left/Right switches between All, Missed, In, and Out tabs; Up/Down scrolls; Call (green) or Center OK dials the selected entry; Left softkey (Dialer) loads the number into the Dialer.
  5. Incoming and active call screen (callscreen.so / xcallscreen):

    • Automatic activation: wakes the screen and opens automatically on incoming and outgoing calls. Pressing Call (green) during an active call reopens xcallscreen from anywhere.
    • Incoming call actions: press Call (green), Left softkey (Accept), 1, or Center OK to answer; press * or 0 to silence the ringer; press End (red), Right softkey (Reject), or # to decline.
    • In-call controls and recording:
      • [1] / * — microphone mute: toggles hardware QDSP6 and PipeWire microphone mute (ON / MUTED).
      • [2] / # — call recording: starts or stops recording call audio (8 kHz mono S16_LE WAV via MultiMedia2 hw:0,1 with automatic peak normalization) to ~/Recordings/rec_HHMMSS_<caller>.wav, displaying a live REC MM:SS timer while recording and a persistent green SAVED MM:SS badge once saved.
      • [3] — audio route: switches between EARPIECE (default for all calls) and SPEAKER.
      • Left / Right — call volume: adjusts in-call volume in 5% steps.
      • [0] / Left softkey (DTMF): toggles DTMF tone keypad mode.
      • End (red) or Right softkey (Hangup): hangs up the call.
  6. Contacts phonebook (contacts.so / xcontacts):

    • Open: press the Right softkey (Names) on the empty desktop, or select Contacts from the System menu.
    • Search and actions: type 0–9 for live T9/number filtering; press Call (green) to dial immediately; press Center OK for the contact details card (Call Contact, Send SMS, Read Messages, Open in Dialer, Copy to SIM, Edit Contact, Delete Contact); or press Left softkey (Options) for phonebook-wide actions.
    • Direct Dual-SIM QMI phonebook import and export: select Import from SIM or Export to SIM in the Options menu (or Copy to SIM on an individual contact) to read or write EF_ADN SIM phonebook records directly over Qualcomm QMI UIM (qrtr://0) on either SIM 1 or SIM 2 — even on the inactive SIM slot.
    • Built-in contact editor: create or edit contacts directly on the keypad (# cycles input mode, * inserts space, hold 0 or press Right for +, or pick from recent unknown callers).
  7. SMS manager and composer (sms.so / xsms):

    • Open: select Texts from the System menu, or choose Send SMS / Read Messages from Contacts.
    • Conversations and thread view: browse SMS threads and drafts with contact name resolution, unread indicators, and message bubbles (Recv and Sent).
    • Multi-tap composer: pick a recipient from Contacts/Recents or type a number (hold 0 for +), compose messages with multi-tap keypad entry (# cycles input mode), monitor live character/segment counts (0/160), save drafts automatically, and send via Call (green), Center OK, or Left softkey.
  8. File manager (files.so / xfiles):

    • Open: select Files from the System menu or press Mod4+d.
    • Controls and viewers: navigate directories with Up/Down/Left/Right/Return, filter with 0–9, toggle dotfiles with *, and cycle sort order (Name / Date / Size) with #.
    • Image preview and wallpaper installation: pressing Return on any image file (.jpg, .png, .bmp, .gif, .webp, .ppm, .tif, .ico, .svg) opens the built-in image viewer (* toggles full-screen preview; Left softkey (Set Wall) installs the image into ~/Pictures/Wallpapers/, applies it via feh, and refreshes Conky). You can also select Preview Image or Set as Wallpaper directly from the Left softkey (Actions) menu.
    • Audio playback and ringtone installation: pressing Return on any audio or tracker module file opens it immediately in Music (xmusic). From the Left softkey (Actions) menu on any audio/tracker file, select Play in Music Player to play it in xmusic, or Set as Ringtone to copy it to ~/Ringtones/ and set it as the active phone ringtone.
    • File management actions: the Left softkey (Actions) menu also provides View Text, Edit in Nano, New Folder, New File, Rename, Copy, Cut / Move, Paste Here, Properties, Open Terminal Here, and Delete.
  9. Camera (camera.so / xcamera):

    • Open: select Camera from the System menu or run xcamera.
    • Viewfinder and gallery: streams live 800x600 frames from /dev/video0 (GC2395) into a 240x180 4:3 viewfinder. Press Center OK, 5, or Call (green) to capture a JPEG to ~/Pictures/photo-YYYYMMDD-HHMMSS.jpg; * or 1 toggles Auto-Flash; 0 or 2 toggles continuous Torch; Up/Down adjusts Digital Zoom (1.0x / 2.0x / 4.0x); # or 3 toggles the 3-second Self-Timer; Left softkey (Gallery) opens the built-in photo gallery.
  10. Theme manager (themes.so / xthemes):

    • Open: select Themes from the System, Apps, or Config menu, or run xthemes.
    • Live theme switching and customizer: browse 20 preinstalled .xth schemes (~/.xthemes/*.xth) with live color swatches and press Center OK or Call (green) to apply across dwm, dmenu, st, and all plugins with zero restart. Press * or Left softkey to customize individual colors and font sizes, save a custom theme (#), or edit the .xth file in Nano.
  11. Modem, Dual-SIM, and PIN/PUK manager (modem.so / xmodem):

    • Open: select Modem from the System menu, or run xmodem. Also opens automatically when a SIM card requires PIN or PUK unlock.
    • Four control tabs (Left/Right or 1–4):
      • 1:SIMs: inspects both physical SIM slots via QMI UIM (PRESENT/EMPTY, [ACTIVE], READY/PIN-LOCK/PUK-LOCK, remaining retries, operator, and ICCID). Press Return on a slot to Activate SIM Slot 1 / 2, Unlock SIM PIN, Unblock SIM with PUK, Enable / Disable PIN Lock, or Change SIM PIN (with automatic ModemManager reprobe after unlock).
      • 2:Radio: shows signal bar, registration status, access technology (LTE/UMTS/GSM), operator, both IMEIs, and phone number, with actions to switch Network Mode (4G/3G/2G, 3G/2G, 4G Only, 3G Only, 2G Only), Send USSD Code, toggle Modem Power, or Restart ModemManager.
      • 3:AT: interactive AT command console with presets (AT, ATI, AT+CSQ, AT+CPIN?, AT+COPS?, etc.) and custom keypad entry.
      • 4:Log: scrollable history of calls, SMS events, and USSD responses.
  12. Networks and Bluetooth manager (networks.so / xnetworks / xbluetooth):

    • Open: select Networks or Bluetooth from the System menu, or run xnetworks / xbluetooth.
    • Three connectivity tabs (Left/Right or 1–3):
      • 1:Wi-Fi: toggle Wi-Fi radio, rescan (*), toggle Wi-Fi Hotspot, and connect to WPA2/open networks with a multi-tap password dialog (* toggles password visibility).
      • 2:Cell/APN: toggle Mobile Data (configuring the QMI bam-dmux wwan0 static IPv4 bearer, default route, and DNS automatically), inspect wwan0 IPv4 status, edit APN Configuration, and toggle USB Tethering.
      • 3:Bluetooth: toggle Bluetooth power, scan nearby devices (*), and pair, connect, disconnect, or remove devices.
  13. Ringtones and ringer manager (ringtones.so / xringtones):

    • Open: select Ringtones from the System, Config, or Audio menu, or run xringtones.
    • Controls: preview built-in, tracker module (.mod, .xm, .it, .s3m, etc.), and user ringtones (~/Ringtones/, ~/Music/, /usr/share/sxmo/ringtones/, /usr/share/sxmo/music/) at the configured ringtone volume with * or Left softkey (Play / Stop), press Return to set the active ringtone, and switch to 2:Settings to configure Ringer Mode, Ring Volume (0%–100%, also adjustable in XDrawer), Ring Duration, Ring Loop Count, and 3-level hardware Vibrate Strength (Level 1 (Light) pulsed 1600 mV, Level 2 (Medium) pulsed 2100 mV, Level 3 (Strong) continuous 3100 mV, also adjustable in XDrawer).
  14. Desktop wallpaper manager (wallpapers.so / xwallpapers / xbackground):

    • Open: select Wallpapers from the System, Config, or Apps menu, or run xwallpapers.
    • Controls: browse system and user wallpapers with a live portrait thumbnail, cycle scaling mode (Fill, Scale, Fit, Center, Tile) with Left/Right or #, toggle full-screen preview with *, and press Return to apply the wallpaper and immediately refresh the Conky desktop overlay.
  15. Music and tracker module player (music.so / xmusic / xplayer):

    • Open: select Music from the System, Applications, or Audio menu, open any audio/tracker file from Files (xfiles), or run xmusic [file_or_dir].
    • Supported formats: plays standard audio (.wav, .mp3, .ogg, .flac, .opus, .m4a, .aac) as well as classic chiptune/tracker modules (.mod, .xm, .it, .s3m, .mptm, .stm, .med, .okt, .669, .ult, .far, .mtm, .ptm, .amf, .dsm, .imf, .gdm, .stx, .umx, .mo3) via an embedded mpv + FFmpeg + libopenmpt backend that automatically pauses on incoming calls.
    • Three tabs (1:Player, 2:Queue, 3:Files — switch with 1–3 or Left/Right in Queue/Files):
      • 1:Player: displays format badge (MOD, XM, MP3, etc.), scrolling track title, artist/metadata, animated equalizer bars, elapsed/total progress bar, repeat mode (Off, All, One), shuffle state, and volume. Press Return or 5 to Play/Pause, Left/Right (4/6) to Seek -5s/+5s, Up/Down (2/8) to adjust Volume, 7/9 for Prev/Next track, * to cycle Repeat, # to toggle Shuffle, 0 to Stop, or Left softkey (Options) to install the current track as the phone ringtone.
      • 2:Queue: browse the active playlist queue, filter with 0–9, press Return to jump to a track, * to remove a track, # to shuffle, or Left softkey (Actions) to set the selected track as ringtone or clear the queue.
      • 3:Files: browse the filesystem (~/Music, /usr/share/sxmo/music, /usr/share/sxmo/ringtones, or any folder), press Return to play a file and load its folder into the queue, * to append a file or folder to the queue, or # to play the entire current folder.

3.1.3 Standalone keypad games (Snake and Tetris)

Two classic X11 games (/usr/bin/snake and /usr/bin/tetris) are accessible from System menu -> Games:

  • Snake (snake): steer with 2/8/4/6 or D-Pad; pause or restart with 5/Return/#/*; quit with Right softkey/BackSpace/Escape.
  • Tetris (tetris): move with 4/6 (Left/Right), rotate with 2 (Up), soft drop with 8 (Down), hard drop with 0/5/Return, pause with #/*, and quit with Right softkey/BackSpace/Escape.

3.2 Multi-mode fcitx5-t9 keypad reference

  • Short-press # (when no character is in preedit): cycles through the 6 input modes (abc -> Abc -> ABC -> Sym -> Ctl -> 123 -> abc), showing a 1500ms mode banner at the bottom of the screen.
  • Auto-commit timeout: 1500ms for keys with <= 10 candidates, or 1800ms for keys with > 10 candidates. Pressing a different key immediately commits the active candidate.
  • While a candidate is highlighted ([item]) in preedit:
    • Press # or D-Pad Up: toggles letter case (a <-> A) on the fly, or jumps forward +4 candidates for non-alphabetic items.
    • Press D-Pad Down: toggles letter case (a <-> A) for alphabetic items, or jumps backward -4 candidates for non-alphabetic items.
    • Press D-Pad Left: steps backward 1 candidate on the same key.
    • Press D-Pad Right or Center OK (Return): commits the highlighted candidate immediately.
    • Press BackSpace: cancels the uncommitted preedit candidate without deleting already committed text.
  • Long-press (>= 550ms):
    • Hold 0–9: commits the digit (0–9) immediately in any mode.
    • Hold *: in 123 mode, commits . (decimal point); in all other modes, toggles a one-shot Ctrl+ modifier latch (+^) so the next key is sent as Ctrl+<key>.
    • Hold #: commits a literal # character immediately in any mode.

Modes 1–3: abc (lowercase), Abc (one-shot Shift), and ABC (Caps Lock)

(In Abc and ABC modes, uppercase letters precede the digit and lowercase letters on keys 2–9. In Abc mode, committing an alphabetic character automatically reverts to abc.)

Key Tap sequence (abc mode)
1 . , - _ ! ? / @ : ; ' " + = * # $ % ^ & ( ) [ ] { } < > | \ ~ ` 1
2 a b c 2 A B C
3 d e f 3 D E F
4 g h i 4 G H I
5 j k l 5 J K L
6 m n o 6 M N O
7 p q r s 7 P Q R S
8 t u v 8 T U V
9 w x y z 9 W X Y Z
0 Space (SPC) 0 Ent (Return) Tab
* * # + - = _ / \ | ~ ` @ $ % ^ & ( ) [ ] { } < > ' " . , ! ? : ; Tab Esc ^C ^D ^Z (hold 450ms for Ctrl+ latch)

Mode 4: Sym (grouped ASCII punctuation, symbols, and special keys)

Key Symbols / keys
1 . , ! ? : ; - _ 1
2 @ # $ % ^ & 2
3 ( ) [ ] { } < > 3
4 + - * / = _ 4
5 | \ ~ ` ' " 5
6 ' " ` ~ ^ 6
7 / \ | _ - + 7
8 < > ! = ? & 8
9 $ % ^ & * # @ 9
0 Space (SPC) 0 Tab Ent (Return) Esc
* * # + - = _ / \ | ~ ` @ $ % ^ & ( ) [ ] { } < > ' " . , ! ? : ;

Mode 5: Ctl (terminal control characters, navigation, and function keys)

  • Direct D-Pad navigation (when no preedit candidate is active in Ctl mode):
    • D-Pad Up / Down: sends Page_Up (PgUp) / Page_Down (PgDn) immediately.
    • D-Pad Left / Right: sends Home / End immediately.
  • Keypad multi-tap:
Key Control sequences / special keys
1 Esc Tab Del Ins Bksp
2 ^C ^D ^Z ^X ^\
3 ^A ^E ^U ^K ^W
4 ^R ^L ^P ^N ^G
5 ^S ^Q ^O ^T ^Y
6 ^B ^F ^V ^H ^[ ^] ^^ ^_
7 PgUp PgDn Home End ScrlUp ScrlDn
8 Up Down Left Right
9 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
0 Space (SPC) Tab Ent (Return) Esc
* Esc Tab ^C ^D ^Z ^X ^L ^R ^W

Mode 6: 123 (instant numeric entry)

Key Action
0–9 Commits digit 0–9 immediately on single tap
* Commits * immediately on single tap; hold 450ms to commit . (decimal point)
# Short-press: cycle back to abc mode; hold 450ms: commit #

4. Default credentials, USB SSH, and Bantam AI agent

  • Username: user
  • Password: 147147 (doas and sudo enabled, with passwordless doas configured for wheel in /etc/doas.d/50-sxmo.conf)
  • USB networking SSH:
    ssh user@172.16.42.1
    
  • Bantam AI agent: Launch Bantam directly from the System menu (Left softkey -> Applications -> Bantam), or run bantam in any terminal (st) or over SSH. Configure your endpoint and API key via environment variables or ~/.bantam.cfg when needed.

5. Command-line hardware reference

5.1 Taking photos from the CLI (bananarchy-photo and /dev/video0)

The msm8905-cam kernel module drives the rear 2MP GalaxyCore GC2395 sensor through MSM8909 CAMSS and registers /dev/video0 (800x600 24-bit RGB3).

  • Using bananarchy-photo:
    # Capture to ~/Pictures/photo-YYYYMMDD-HHMMSS.jpg and print path
    bananarchy-photo
    
    # Capture with rear LED flash enabled and open in imv
    bananarchy-photo -f -v
    
    # Capture to a custom JPEG or PNG file path
    bananarchy-photo ~/my-shot.png
    
  • Direct low-level capture (v4l2-ctl + ffmpeg -f rawvideo):
    v4l2-ctl -d /dev/video0 \
      --set-fmt-video=width=800,height=600,pixelformat=RGB3 \
      --stream-mmap --stream-count=1 --stream-to=/tmp/frame.rgb && \
    ffmpeg -hide_banner -loglevel error \
      -f rawvideo -pixel_format rgb24 -video_size 800x600 \
      -i /tmp/frame.rgb -frames:v 1 -y ~/photo.jpg && \
    rm -f /tmp/frame.rgb
    

5.2 Audio routing, music playback, and microphone recording

Both the rear loudspeaker (Speaker, with boosted RX3 Digital Volume for loud, clear ringtones and media) and the front earpiece speaker (Earpiece, boosted by +6 dB), as well as the internal MEMS microphone (Mic1) and 3.5mm headset microphone (Mic2), are managed through PipeWire/WirePlumber and sxmo_audio.sh:

  • Open an audio file, tracker module (.mod, .xm, .it, .s3m), or folder in the native music player (xmusic):
    xmusic ~/Music/Bananarchy_Chip.mod
    
  • List available audio outputs (Speaker, Earpiece, Headphones):
    sxmo_audio.sh out list
    
  • Switch active output to the rear loudspeaker or front earpiece:
    sxmo_audio.sh out set "Speaker"
    sxmo_audio.sh out set "Earpiece"
    
  • Record from the internal MEMS microphone (Mic1):
    pw-record --rate=48000 --channels=1 --format=s16 ~/recording.wav
    

5.3 Flashlight (white:torch), keypad backlight (white:kbd_backlight), and vibration (sxmo_vibrate)

  • Turn rear flashlight on or off:
    brightnessctl -d white:torch set 1
    brightnessctl -d white:torch set 0
    
  • Set keypad backlight brightness (0–255):
    brightnessctl -d white:kbd_backlight set 255
    
  • Trigger PM8909 vibration motor (duration_ms [strength_1_to_3]):
    sxmo_vibrate 350 1   # light (1600 mV, 38% duty cycle)
    sxmo_vibrate 350 2   # medium (2100 mV, 67% duty cycle)
    sxmo_vibrate 350 3   # strong (3100 mV, 100% continuous)
    

5.4 Cellular modem, Dual-SIM, and QMI UIM helper

  • Inspect Dual-SIM card status, PIN/PUK state, and active slot:
    doas /usr/libexec/msm-modem-uim-selection status
    
  • Inspect ModemManager registration, operator, and signal quality:
    mmcli -m any