Comments ▾
Figures ▾
Tables ▾

M5Stack Cardputer Zero · Volume 6

M5Stack Cardputer Zero Volume 6 — Software & OS Ecosystem

The Linux stack: Raspberry Pi OS / Debian aarch64 on the CM0, the cardputer-zero-shell Wayland desktop, the .deb AppStore + app catalog, and the Linux-native security toolchain that replaces the old ESP32 firmware story — see Vol 4 for the Cap EXT bus the RF tools ride on


6.1 About this volume

CONFIRMED 2026-06-26 / 2026-06-30 — this device boots a real OS. The Cardputer Zero is a Raspberry Pi Compute Module 0 (CM0) pocket computer — the RP3A0 system-in-package (Broadcom BCM2710A1 die, quad-core ARM Cortex-A53 @ 1.0 GHz, ARMv8-A / aarch64), the same silicon as a Raspberry Pi Zero 2 W — with 512 MB LPDDR2 and a microSD boot device. It runs Raspberry Pi OS / Debian (aarch64), not flashed microcontroller firmware. There is no esptool, no Arduino sketch, no firmware-flashing step: you write an OS image to microSD and it boots like any Pi. This volume documents the software universe that follows from that fact. Sources: M5Stack launch blog + shop/docs, the CardputerZero and m5stack GitHub orgs, CNX-Software (2026-05-25), LinuxGizmos, Hackster. The §8 note explains why the earlier drafts of this series described an ESP32 firmware ecosystem instead.

Because the Zero is Raspberry Pi silicon, it inherits the entire Raspberry Pi software stack with zero porting effort. Anything that runs on a Pi Zero 2 W runs here, subject only to the 512 MB RAM ceiling and quad-A53 throughput. M5Stack frames it as bringing “the Cardputer series into the Linux era… standard Linux toolchains, remote SSH access, command-line workflows, lightweight coding and scripting, on-site troubleshooting.”

Figure 1 — The Raspberry Pi OS PIXEL desktop (Debian aarch64) — the entire Linux software stack the Zero's CM0 inherits with zero porting effort. Photo: raspberrytips.com.
Figure 1 — The Raspberry Pi OS PIXEL desktop (Debian aarch64) — the entire Linux software stack the Zero's CM0 inherits with zero porting effort. Photo: raspberrytips.com.

This volume covers four layers and one angle:

┌──────────────────────────────────────────────────────────┐
│  APPS          2048 · Calculator · RFID · Retro-Zero ·    │  ← §5
│  (.deb)        trail-mate · microjs8 · NC2000 · …         │
├──────────────────────────────────────────────────────────┤
│  DISTRIBUTION  AppStore (on-device) · CardputerZero-      │  ← §4
│                Repository / packages (APT .deb repos) ·   │
│                cardputerzero.github.io (hub)              │
├──────────────────────────────────────────────────────────┤
│  SHELL / UI    cardputer-zero-shell (Wayland) · notifyd · │  ← §3
│                fcitx5-ui (IME) · default-apps · VibApp    │
├──────────────────────────────────────────────────────────┤
│  OS            Raspberry Pi OS / Debian aarch64 ·         │  ← §2
│                cardputer-zero-os profile · cm0-firmware · │
│                dtoverlays · u-boot + circle-boot-splash   │
├──────────────────────────────────────────────────────────┤
│  HARDWARE      RP3A0 / BCM2710A1 · quad A53 · 512 MB      │  ← Vol 2
└──────────────────────────────────────────────────────────┘

Cross-references: the dev toolchain (the czdev CLI, the SDL2 desktop emulator, the LVGL app ABI) is Vol 7’s subject — this volume is the ecosystem, Vol 7 is how you build for it. The Cap EXT bus that the RF apps ride on is Vol 4. The Chameleon Ultra over BLE workflow is Vol 9, already authored CM0-correctly. The nearest software-siblings in Jeff’s collection are the Cyberdecks project’s Linux handhelds (Clockwork uConsole = Pi CM4; PicoCalc) — see ../../Cyberdecks/ (cyberdecks.fubsypoly.com); the Zero is the smallest and cheapest Linux handheld of that cohort.


6.2 The OS layer — Raspberry Pi OS / Debian on the CM0

The Zero’s “operating system” is not a monolithic vendor firmware blob. It is stock Raspberry Pi OS / Debian aarch64 plus a thin M5Stack appliance profile and the CM0-specific kernel + overlays. The relevant repositories live in the CardputerZero and m5stack GitHub orgs.

Table 1 — 2. The OS layer — Raspberry Pi OS / Debian on the CM0

RepoRoleLayer
CardputerZero/cardputer-zero-osSystem profile that turns stock Raspberry Pi OS / Debian into a Cardputer Zero applianceOS profile
CardputerZero/pi-genFork of the official Raspberry Pi OS image builder, M5-oriented; produces the SD imagesImage build
CardputerZero/m5stack-imagerRaspberry-Pi-Imager-style tool to write the OS image to microSDImaging
dianjixz/cm0-firmwarePre-compiled kernel + modules for the CM0Kernel
m5stack/m5stack-linux-dtoverlaysDevice-tree overlays for M5Stack Linux devicesDT overlays
CardputerZero/u-bootBootloaderBoot
CardputerZero/circle-boot-splashBare-metal boot splashBoot

Note — “appliance profile,” not a fork of Linux. cardputer-zero-os is a profile layered on Raspberry Pi OS, not a bespoke distribution. That is the whole point: the Zero is a normal Debian aarch64 box that happens to have a 320×170 LCD and a 46-key matrix keyboard. apt install <anything-in-the-Pi-universe> works.

6.2.1 Boot chain and image build

The boot path mirrors a Raspberry Pi’s, with M5’s u-boot + circle-boot-splash providing the early-boot experience before the kernel hands off to userland:

power-on
  → SoC ROM loads bootcode from microSD (Pi boot ROM behavior)
  → u-boot (CardputerZero/u-boot)
  → circle-boot-splash (bare-metal splash on the ST7789v3 LCD)
  → Linux kernel (dianjixz/cm0-firmware) + DT + dtoverlays
  → systemd / Debian userland
  → cardputer-zero-shell (Wayland desktop)  ← §3

You produce the SD image one of two ways, both Pi-idiomatic and neither involving any flashing tool:

# Option A — build the image yourself from the M5 pi-gen fork
git clone https://github.com/CardputerZero/pi-gen
cd pi-gen && ./build.sh          # standard Raspberry Pi OS image-builder workflow

# Option B — write a prebuilt image with the M5 imager (or plain dd / Raspberry Pi Imager)
#   m5stack-imager  →  pick image  →  pick microSD  →  write
sudo dd if=cardputer-zero-os.img of=/dev/sdX bs=4M status=progress conv=fsync

Tip — the “Full” model ships a 32 GB microSD pre-imaged; “Lite” ships none. On Lite you bring your own card and image it before first boot (see Vol 1 for the Lite/Full delta). Either way the card is trivially removable and readable in any card reader — an operational-posture consideration carried in Vol 11.

6.2.2 Kernel, modules, and device-tree overlays

dianjixz/cm0-firmware supplies the CM0 kernel + modules; m5stack/m5stack-linux-dtoverlays supplies the device-tree overlays that wire the board’s peripherals (the ST7789v3 SPI LCD, the matrix keyboard, the ES8389 audio codec, the IMX219 CSI camera on the Full, the IMU, IR, RTC) into the running kernel. This is the same config.txt + dtoverlay= mechanism every Raspberry Pi uses — overlays are how a stock kernel learns about board-specific hardware without a kernel rebuild.

Because it is a real kernel on real Pi silicon, the standard Pi userland tooling applies directly: raspi-config, libcamera/rpicam-apps for the IMX219, libgpiod/gpioset for the EXT-bus GPIO (Vol 4), i2c-tools, spi via spidev, and bluetoothctl/BlueZ for the BT 4.2 + BLE radio. None of this was “ported” — it is the Pi ecosystem, unmodified.


6.3 The desktop / shell layer — small-screen Wayland

A 320×170 landscape LCD is too small for a stock desktop environment, so M5Stack ships a purpose-built Wayland small-screen UI. These are normal Linux user-space components, distributed as packages.

Table 2 — 3. The desktop / shell layer — small-screen Wayland

Repo / componentRole
cardputer-zero-shellLightweight Wayland graphical shell: the small-screen desktop, APPLaunch-compatible app discovery + launching, post-login interaction. (It does not handle login/PAM — that is standard Linux below it.)
cardputer-zero-default-appsThe default bundle of small-screen Linux apps shipped with the shell
cardputer-zero-notifydNotification daemon
cardputer-zero-fcitx5-uiFcitx5 input-method bridge — a Wayland layer-shell panel that follows the focused input cursor on the 320×170 display, so CJK / complex-script input is usable on the tiny screen
M5CardputerZero-Launcher / VibAppApplication launcher + client

Tip — this is conventional Linux, sized down. cardputer-zero-shell is a Wayland compositor/shell with an app-grid launcher; notifyd is a notification daemon; fcitx5-ui is an IME panel. If you already know the Linux desktop, nothing here is exotic — the engineering effort went into making it legible at 320×170, not into reinventing the platform. You can equally drop to a TTY or SSH in and ignore the shell entirely.

Because the shell is APPLaunch-compatible and discovers installed apps, an app that ships a proper .desktop entry (or the org’s app-builder.json metadata) appears in the launcher grid automatically once its .deb is installed — which is what makes the app store in §4 a genuine browse-and-install experience rather than a manual apt chore.


6.4 Distribution — a Debian app store

Apps install as Debian packages from APT repositories. There is a real on-device store, a web hub, and the underlying .deb repos.

Table 3 — 4. Distribution — a Debian app store

Repo / propertyRole
m5stack/CardputerZeroRepositoryOfficial .deb Debian repository, served via GitHub Pages
CardputerZero/packagesAPT repository for Cardputer Zero apps
CardputerZero/AppStoreOn-device app to browse + install apps
cardputerzero.github.ioThe CardputerZero Hub — online Web UI + App Store

Installation is therefore exactly what a Debian user expects — the AppStore is a friendly front-end over apt:

# Add the repo (the AppStore does this for you; shown here for the engineer)
echo "deb [trusted=yes] https://m5stack.github.io/CardputerZeroRepository ./" \
  | sudo tee /etc/apt/sources.list.d/cardputerzero.list
sudo apt update

# Install an app — it lands as a normal Debian package and appears in the shell grid
sudo apt install cardputer-zero-app-2048

Note — the entire Debian universe is also “the store.” The org’s .deb repo is the curated, screen-sized catalog. But because this is Debian aarch64, apt install nmap kismet aircrack-ng tcpdump works identically — those just aren’t 320×170 GUI apps, they’re CLI tools you run in a terminal or over SSH. The app store is for the touch-the-grid experience; apt is for everything else (§6).

This is the mechanism that replaces the old “M5Launcher bootloader-app-store” model wholesale: there is no boot-time app picker that swaps firmware images, because there is no firmware. There is an OS, and you install packages into it.


6.5 The app catalog — ecosystem maturity evidence

The strongest signal that this is a real Linux platform — not a hypothetical — is the catalog of real apps already in the CardputerZero org and community repos. These double as concrete examples of what the device does.

Table 4 — 5. The app catalog — ecosystem maturity evidence

App / repoWhat it isWhy it matters
2048The sliding-tile puzzleReference LVGL app — the “hello world” of the catalog
CalculatorCalculatorDaily-driver utility
CalendarCalendarDaily-driver utility
AudioSpectrumAudio visualizerExercises the ES8389 codec + MEMS mic
StreamPlayerMedia / stream playerExercises audio + networking
LoFiBox-ZeroLinux-first music playerBuilt for the Zero specifically
CameraAppCamera appDrives the 8 MP IMX219 (Full model) via the Pi camera stack
RFIDNFC/RFID appHack-Tools-relevant — reader hardware it drives is TBD; verify on receipt (likely Cap CC1101 / a USB reader — see §6)
eggfly/CardputerZero-NC2000文曲星/Wenquxing NC2000 e-dictionary PDA emulatorNostalgia app; shows the platform can host full emulators
geo-tp/Retro-Zerolibretro / RetroArch frontendRetro gaming via RetroArch cores — a substantial Linux application
CardputerZero/trail-mateOutdoor assistant: GPS + LoRa Chat + MapsDemonstrates the Cap EXT bus driving a LoRa module under Linux (Vol 4)
W5DMH/microjs8JS8 weak-signal ham-radio controllerReal amateur-radio digital-mode software

Key community developers in the org: eggfly, dianjixz, zhuzhe1983.

Tip — read the catalog as a capability map. CameraApp proves the CSI camera works under libcamera; trail-mate proves the EXT bus drives a LoRa radio under Linux; Retro-Zero proves RetroArch cores run; microjs8 proves the device hosts real ham-radio software; RFID is the seed of the Hack-Tools workflow. That spread — games, media, camera, GPS/LoRa, emulation, ham radio, RFID — is what a maturing general-purpose Linux handheld looks like, not a single-purpose appliance.


6.6 The Hack Tools angle — Linux-native security tooling

This is where the old “pentest fork compatibility table” is replaced. The previous draft of this volume tried to answer “will Bruce / Marauder / NEMO flash onto the Zero?” That question is moot: the Zero is a Linux computer, so the honest answer is it runs the same CLI security tooling as a Linux laptop — just slower. There is nothing to port and no firmware to flash; you apt install the tools and run them as ordinary processes. Two independent reviewers framed the device as “a full Linux pentest toolkit.”

What it genuinely is: a $59–89 pocket Linux box with a keyboard, a screen, 10/100 Ethernet, 2.4 GHz Wi-Fi + BT/BLE, a USB-A host port, a 1500 mAh battery, and an RF expansion bus (Vol 4). That makes it a credible recon / orchestration / drop-box machine — not a cracking rig (§6.3).

6.6.1 Wi-Fi recon and audit

Linux-native, installed from Debian, no porting:

sudo apt install aircrack-ng kismet bettercap hostapd hcxtools hcxdumptool mdk4 wifite
  • aircrack-ng suite — airodump-ng capture, airmon-ng, etc.
  • Kismet — passive wireless discovery / logging
  • hcxdumptool / hcxtools — PMKID / handshake capture + conversion
  • bettercap — MITM / recon framework (Wi-Fi + BLE modules)
  • hostapd — rogue AP / evil-twin
  • mdk4, wifite — attack automation

Warn — on-module Wi-Fi is recon-grade, not injection-grade. The CM0’s on-module 2.4 GHz b/g/n radio has driver-limited monitor/injection support (it is the Pi Zero 2 W radio, never a strong monitor-mode part) and there is no 5 GHz. For serious Wi-Fi attack work, attach a known monitor-mode USB adapter via the USB-A host port. The on-module radio is fine for connectivity, scanning, and light recon; treat reliable injection/5 GHz as a USB-adapter capability. This is the honest framing — do not assume airodump injection works off the internal radio.

6.6.2 Network, BLE, and RF

sudo apt install nmap tcpdump tshark netcat-openbsd python3-scapy responder bluez
  • Network: nmap, tcpdump, tshark/Wireshark-CLI, netcat, scapy (Python), responder.
  • Bluetooth / BLE: BlueZ, bettercap’s BLE module, gatttool. The Chameleon Ultra over BLE workflow is already documented CM0-correctly in Vol 9 §9.
  • RF via the Cap EXT bus (Vol 4):
    • Cap LoRameshtasticd (the Linux-native Meshtastic daemon) and the trail-mate app (§5). This is the real Meshtastic path — and it is the inverse of the old draft’s claim (see §8).
    • Cap CC1101 → sub-GHz / NFC work.
  • RF via USB-A host: RTL-SDR (rtl_433, dump1090), and heavier SDRs like HackRF are electrically fine but DSP-heavy (see §6.3). Proxmark3 client, USB NFC readers, etc.
  • RFID/NFC: the org’s RFID app + Cap CC1101 + USB readers; Chameleon Ultra over BLE.

It is also, simply, a portable SSH / orchestration box and a battery-powered drop box (Ethernet + Wi-Fi + 1500 mAh), and a teaching Linux machine.

6.6.3 Honest limits

Warn — 512 MB RAM + quad A53 @ 1 GHz is modest. It is fine for recon, scripting, single-tool runs, and drop-box duty. It is not a cracking rig or a heavy-SDR/DSP host. Big-wordlist cracking, full GNU Radio flowgraphs, and many-VM work belong on a laptop or a Pi 5. rtl_433 and dump1090 are fine; a full GNU Radio companion flowgraph will thrash 512 MB. Lightweight tools over heavy frameworks.

Table 5 — 6.3 Honest limits

CapabilityOn the ZeroReach for instead
Wi-Fi recon / capture (USB adapter)Good
Wi-Fi injection / 5 GHz (internal radio)LimitedUSB monitor-mode adapter
Network recon / orchestration / SSHGood
BLE recon / Chameleon controlGood (Vol 9)
LoRa / Meshtastic (Cap LoRa)Good
RTL-SDR receive (rtl_433/dump1090)Good
Full GNU Radio flowgraphs / heavy DSPPoor (512 MB)Laptop / Pi 5
Large-wordlist crackingPoorGPU box / laptop

Danger — it’s a full computer, so it has a full computer’s attack surface. SSH credentials, no secure-boot by default, and a microSD that is trivially removable and readable in any card reader. The operational-posture implications (disk encryption, credential hygiene, drop-box handling) are carried in Vol 11.


6.7 Lineage — the ESP32 firmwares are heritage, not OS

M5Stack’s own launch blog name-drops M5Launcher, Bruce, and Evil-Cardputer — but as heritage of the Cardputer series, describing how community firmware grew the original ESP32-S3 Cardputer and the Cardputer ADV. Those are ESP32 firmwares for the original/ADV, and they do not run on the Zero’s Linux.

Warn — do not confuse lineage with compatibility. Bruce, Marauder, NEMO, Evil-M5, M5Launcher, MicroHydra: all are ESP32 microcontroller firmwares. They flash onto the original Cardputer and the Cardputer ADV (../M5Stack Cardputer ADV/), which are ESP32-S3 devices. None of them boots on the Zero — the Zero has no ESP32, runs no flashed firmware, and exposes no esptool target. They are mentioned here only as the family’s heritage. The Zero’s equivalents are the Linux-native tools of §6 (aircrack-ng, bettercap, Kismet, meshtasticd, …), which are strictly more capable per category because they are full programs, not constrained MCU firmware.

The mapping from the old (wrong, ESP32) model to the real (Linux CM0) model:

Table 6 — The mapping from the old (wrong, ESP32) model to the real (Linux CM0) model

Old (ESP32 framing — WRONG for the Zero)Real (Linux CM0)
Flash firmware (M5Burner / web flasher / esptool.py)Write an OS image to microSD (Raspberry Pi Imager / m5stack-imager / dd); boots like any Pi
M5Launcher bootloader-app-storecardputer-zero-shell + AppStore + .deb repo (§3, §4)
Bruce / NEMO / Marauder / Evil-M5 firmwaresLinux-native aircrack-ng, Kismet, bettercap, hostapd, nmap, scapy (§6)
MicroHydra (MicroPython apps)czdev LVGL apps (.deb) + any Linux GUI/CLI program (Vol 7)
Arduino IDE + M5Cardputer/M5UnifiedNative gcc/g++ / Python / Rust on Debian aarch64; czdev for LCD apps (Vol 7)
ESP-IDFLinux kernel + Pi userland; cm0-firmware + dtoverlays (§2)
ESP-NOW (Espressif proprietary)Not available (not an ESP32). Use Wi-Fi / BLE / LoRa under Linux

6.8 Why earlier drafts described a firmware ecosystem

This volume was originally authored (2026-05-13) as a research-baseline hypothesis, before the product shipped. At that time there was no authoritative source for the “Cardputer Zero,” only the M5Stack portfolio’s naming convention — where “Zero” had historically meant a budget ESP32 variant of an existing product. The textbook-reasonable inference was: every prior Cardputer (original K132, ADV K132-Adv) is an ESP32-S3 device, so a “Cardputer Zero” would be a cheaper ESP32-S3 Cardputer, and its software story would therefore be the family’s ESP32 firmware ecosystem — M5Launcher as a bootloader-app-store, Bruce/Marauder/NEMO pentest forks, MicroHydra, PlatformIO env files. The whole of the old §2–§6 followed from that one assumption.

The assumption was wrong. The “Zero” in the name refers to the Raspberry Pi Compute Module 0, not a budget tier. The Kickstarter launch (2026-05-26) and subsequent coverage (CNX-Software, LinuxGizmos, Hackster) confirmed a Pi CM0 Linux computer: it boots a real OS off microSD, runs Linux binaries, and has no ESP32, no firmware to flash, and (contrary to another old assumption) a full Cap EXT 14-pin bus (Vol 4). The consequence for this volume is total: there is no “firmware-port maturity question,” because there is no firmware — there is a Debian package ecosystem (§4) and the full Pi/Linux software universe (§2, §6). The old draft’s claim that the Zero “cannot run Meshtastic” is exactly inverted: it runs meshtasticd, the Linux-native Meshtastic, over a Cap LoRa module (§6.2). The ESP32 firmwares survive in this volume only as family lineage (§7).


6.9 Resources

OS / boot / kernel

Shell / desktop

  • cardputer-zero-shell, cardputer-zero-default-apps, cardputer-zero-notifyd, cardputer-zero-fcitx5-ui: in the CardputerZero org — https://github.com/CardputerZero

Distribution / store

App catalog (examples)

Linux security tooling

Pi / family references

End of Vol 6. Next: Vol 7 covers the programming/dev toolchain — the czdev CLI, the LVGL app ABI (cz_app.h, app_main/app_event), the SDL2 desktop emulator, and the native gcc/Python/Rust path on Debian aarch64.

Comments (0)

  1. Loading…

Comments are held for moderation — nothing appears until approved.