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, theCardputerZeroandm5stackGitHub 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.”

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
| Repo | Role | Layer |
|---|---|---|
CardputerZero/cardputer-zero-os | System profile that turns stock Raspberry Pi OS / Debian into a Cardputer Zero appliance | OS profile |
CardputerZero/pi-gen | Fork of the official Raspberry Pi OS image builder, M5-oriented; produces the SD images | Image build |
CardputerZero/m5stack-imager | Raspberry-Pi-Imager-style tool to write the OS image to microSD | Imaging |
dianjixz/cm0-firmware | Pre-compiled kernel + modules for the CM0 | Kernel |
m5stack/m5stack-linux-dtoverlays | Device-tree overlays for M5Stack Linux devices | DT overlays |
CardputerZero/u-boot | Bootloader | Boot |
CardputerZero/circle-boot-splash | Bare-metal boot splash | Boot |
Note — “appliance profile,” not a fork of Linux.
cardputer-zero-osis 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 / component | Role |
|---|---|
cardputer-zero-shell | Lightweight 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-apps | The default bundle of small-screen Linux apps shipped with the shell |
cardputer-zero-notifyd | Notification daemon |
cardputer-zero-fcitx5-ui | Fcitx5 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 / VibApp | Application launcher + client |
Tip — this is conventional Linux, sized down.
cardputer-zero-shellis a Wayland compositor/shell with an app-grid launcher;notifydis a notification daemon;fcitx5-uiis 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 / property | Role |
|---|---|
m5stack/CardputerZeroRepository | Official .deb Debian repository, served via GitHub Pages |
CardputerZero/packages | APT repository for Cardputer Zero apps |
CardputerZero/AppStore | On-device app to browse + install apps |
cardputerzero.github.io | The 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
.debrepo is the curated, screen-sized catalog. But because this is Debian aarch64,apt install nmap kismet aircrack-ng tcpdumpworks 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;aptis 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 / repo | What it is | Why it matters |
|---|---|---|
2048 | The sliding-tile puzzle | Reference LVGL app — the “hello world” of the catalog |
Calculator | Calculator | Daily-driver utility |
Calendar | Calendar | Daily-driver utility |
AudioSpectrum | Audio visualizer | Exercises the ES8389 codec + MEMS mic |
StreamPlayer | Media / stream player | Exercises audio + networking |
LoFiBox-Zero | Linux-first music player | Built for the Zero specifically |
CameraApp | Camera app | Drives the 8 MP IMX219 (Full model) via the Pi camera stack |
RFID | NFC/RFID app | Hack-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 emulator | Nostalgia app; shows the platform can host full emulators |
geo-tp/Retro-Zero | libretro / RetroArch frontend | Retro gaming via RetroArch cores — a substantial Linux application |
CardputerZero/trail-mate | Outdoor assistant: GPS + LoRa Chat + Maps | Demonstrates the Cap EXT bus driving a LoRa module under Linux (Vol 4) |
W5DMH/microjs8 | JS8 weak-signal ham-radio controller | Real amateur-radio digital-mode software |
Key community developers in the org: eggfly, dianjixz, zhuzhe1983.
Tip — read the catalog as a capability map.
CameraAppproves the CSI camera works under libcamera;trail-mateproves the EXT bus drives a LoRa radio under Linux;Retro-Zeroproves RetroArch cores run;microjs8proves the device hosts real ham-radio software;RFIDis 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 LoRa →
meshtasticd(the Linux-native Meshtastic daemon) and thetrail-mateapp (§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.
- Cap LoRa →
- 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
RFIDapp + 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_433anddump1090are fine; a full GNU Radio companion flowgraph will thrash 512 MB. Lightweight tools over heavy frameworks.
Table 5 — 6.3 Honest limits
| Capability | On the Zero | Reach for instead |
|---|---|---|
| Wi-Fi recon / capture (USB adapter) | Good | — |
| Wi-Fi injection / 5 GHz (internal radio) | Limited | USB monitor-mode adapter |
| Network recon / orchestration / SSH | Good | — |
| BLE recon / Chameleon control | Good (Vol 9) | — |
| LoRa / Meshtastic (Cap LoRa) | Good | — |
RTL-SDR receive (rtl_433/dump1090) | Good | — |
| Full GNU Radio flowgraphs / heavy DSP | Poor (512 MB) | Laptop / Pi 5 |
| Large-wordlist cracking | Poor | GPU 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 noesptooltarget. 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-store | cardputer-zero-shell + AppStore + .deb repo (§3, §4) |
| Bruce / NEMO / Marauder / Evil-M5 firmwares | Linux-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/M5Unified | Native gcc/g++ / Python / Rust on Debian aarch64; czdev for LCD apps (Vol 7) |
| ESP-IDF | Linux 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
cardputer-zero-os(appliance profile): https://github.com/CardputerZero/cardputer-zero-ospi-gen(M5 image-builder fork): https://github.com/CardputerZero/pi-genm5stack-imager: https://github.com/CardputerZero/m5stack-imagercm0-firmware(kernel + modules): https://github.com/dianjixz/cm0-firmwarem5stack-linux-dtoverlays: https://github.com/m5stack/m5stack-linux-dtoverlaysu-boot: https://github.com/CardputerZero/u-boot ·circle-boot-splash: https://github.com/CardputerZero/circle-boot-splash
Shell / desktop
cardputer-zero-shell,cardputer-zero-default-apps,cardputer-zero-notifyd,cardputer-zero-fcitx5-ui: in theCardputerZeroorg — https://github.com/CardputerZero
Distribution / store
- CardputerZero Hub (Web UI + App Store): https://cardputerzero.github.io
CardputerZeroRepository(.deb repo): https://github.com/m5stack/CardputerZeroRepositorypackages(APT repo): https://github.com/CardputerZero/packagesAppStore(on-device): https://github.com/CardputerZero/AppStore
App catalog (examples)
Retro-Zero(libretro frontend): https://github.com/geo-tp/Retro-Zerotrail-mate(GPS/LoRa/Maps): https://github.com/CardputerZero/trail-matemicrojs8(JS8 ham radio): https://github.com/W5DMH/microjs8CardputerZero-NC2000(Wenquxing e-dict emulator): https://github.com/eggfly/CardputerZero-NC2000
Linux security tooling
- aircrack-ng: https://www.aircrack-ng.org · Kismet: https://www.kismetwireless.net · bettercap: https://www.bettercap.org
- nmap: https://nmap.org · Wireshark/tshark: https://www.wireshark.org · scapy: https://scapy.net · BlueZ: http://www.bluez.org
- Meshtastic (
meshtasticd): https://meshtastic.org
Pi / family references
- Raspberry Pi OS: https://www.raspberrypi.com/software/ (the CM0 shares the Pi Zero 2 W’s RP3A0 SiP)
- Cardputer ADV (ESP32-S3 family heritage, see §7):
../../M5Stack Cardputer ADV/ - Cyberdecks project (Linux-handheld siblings):
../../Cyberdecks/·cyberdecks.fubsypoly.com
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)