Comments ▾
Figures ▾
Tables ▾

M5Stack Cardputer Zero · Volume 12

M5Stack Cardputer Zero Volume 12 — Cheatsheet

Laminate-ready field card for the CM0 Linux pocket computer — confirmed quick-facts, receipt checks, OS imaging, czdev quick-start, battery math, region rules, troubleshooting, pre-engagement checklist


12.1 About this volume

Vol 12 is the laminate-ready field card for the Cardputer Zero. It is the synthesis of Vol 1 through Vol 11: the one page you carry to the bench or the field. Every spec here is confirmed fact from M5Stack’s shop/docs, the CardputerZero/m5stack GitHub orgs, and the CNX-Software/LinuxGizmos/Hackster coverage of the 2026-05-26 Kickstarter launch — not the pre-launch ESP32 guesswork the earlier drafts carried.

Figure 1 — A Linux command-line quick-reference card — the laminate-ready, field-card spirit of this volume applied to the CM0's Debian userland. Image: cheatography.com (DaveChild).
Figure 1 — A Linux command-line quick-reference card — the laminate-ready, field-card spirit of this volume applied to the CM0's Debian userland. Image: cheatography.com (DaveChild).

Why earlier drafts said “ESP32-S3.” The whole 2026-05-13 research-baseline series was written before the product shipped, extrapolating from the ESP32-S3 Cardputer and Cardputer ADV — a plausible-but-wrong textbook assumption: “a budget Cardputer = a cheaper ESP32 Cardputer.” It is not. The Cardputer Zero is a Raspberry Pi Compute Module 0 (CM0) that boots Linux from a microSD card — the same RP3A0 silicon class as a Raspberry Pi Zero 2 W. There is no firmware to flash, no esptool, no Arduino sketch. It runs ordinary Linux binaries. This volume has been fully reframed to that reality; one such note per volume is the standing doc-audit convention.

This card stays field-grade and terse. For the schematic-grade theory, follow the cross-references back into Vols 2–11.


12.2 Confirmed quick-facts panel

┌──────────────────────────────────────────────────────────────────────┐
│ M5Stack Cardputer Zero — CONFIRMED (Kickstarter, launched 2026-05-26) │
├──────────────────────────────────────────────────────────────────────┤
│ Class          Pocket Linux computer (NOT a microcontroller)         │
│ Core module    Raspberry Pi Compute Module 0 (CM0)                    │
│ SoC / SiP      RP3A0 → Broadcom BCM2710A1 (BCM2837 family)            │
│ CPU            Quad-core ARM Cortex-A53 @ 1.0 GHz, ARMv8-A / aarch64  │
│ GPU            VideoCore IV (OpenGL ES 1.1 / 2.0)                     │
│ RAM            512 MB LPDDR2 (on-package, fixed)                      │
│ OS / boot      Boots Raspberry Pi OS / Debian aarch64 from microSD   │
│ Storage        microSD (Full bundles 32 GB; Lite ships none)         │
│ Display        1.9" IPS, ST7789v3, 320×170 landscape, PWM backlight  │
│ Keyboard       46-key matrix QWERTY                                   │
│ Camera         8 MP Sony IMX219, 4-lane CSI  ── FULL ONLY             │
│ IMU            BMI270 (6-axis) + BMM150 (mag) = 9-axis ── FULL ONLY   │
│ Audio          ES8389 codec + AW8737A amp + 1W spkr + MEMS mic + jack │
│ IR             TX + RX                                                │
│ RTC            RX8130CE                                               │
│ Wi-Fi          2.4 GHz 802.11 b/g/n (on-module, IPEX antenna)        │
│ Bluetooth      BT 4.2 + BLE                                           │
│ Ethernet       10/100 Mbps RJ45 (wired)                              │
│ Video out      Digital HD A/V, up to 1080p30                         │
│ USB            2× USB-C (host/device switch) + 1× USB-A host         │
│ Expansion      Cap EXT 14-pin (SPI/UART/I²C/USB/GPIO/5V/GND) + Grove │
│ Cap modules    Optional Cap CC1101 (NFC/sub-GHz) + Cap LoRa over EXT │
│ Battery        3.7V / 1500 mAh LiPo, BQ27220 gauge, USB-C charge     │
│ Idle power     ~2.5 W (Linux SoC; no MCU µA deep-sleep)              │
│ Dimensions     84.0 × 54.0 × 23.1 mm                                 │
│ Price          $59 Lite / $89 Full (KS early bird); $99 / $149 reg.  │
└──────────────────────────────────────────────────────────────────────┘

12.3 What to verify on receipt — the first-boot Linux checklist

The Zero boots a real OS, so verification is done from a shell, not from a flasher. Image a known-good microSD (§ 5), boot, then either type at the on-device keyboard or SSH in and run these. Determine Lite vs Full by probing for the camera + IMU.

12.3.1 Identification + provenance

  • Box / SKU matches what you ordered (Lite vs Full)
  • Bundled 32 GB microSD present (Full) / absent (Lite)
  • Photograph unit + any serial for records
  • Visual: no case damage, no LiPo swelling, display uncracked, connectors clean

12.3.2 Core platform — confirm it’s a CM0 running Linux

cat /proc/cpuinfo        # expect 4× "ARMv8" cores; Hardware: BCM2835/2837; Revision/Serial
uname -a                 # expect aarch64 Linux, Pi-class kernel
cat /proc/device-tree/model 2>/dev/null   # board model string
free -h                  # total ≈ 512 MB  (NOT 8 MB flash — this is RAM on a real computer)
vcgencmd measure_temp    # SoC temp (Pi userland present = it really is BCM silicon)
lsblk                    # microSD as mmcblk0 with rootfs + boot partitions

12.3.3 Radios + network interfaces

ip a                     # expect eth0 (10/100 RJ45) AND wlan0 (2.4 GHz)
rfkill list              # Wi-Fi + BT present and unblocked
hciconfig -a   # or: bluetoothctl show     # BT 4.2 + BLE adapter
iw dev wlan0 info        # confirm 2.4 GHz only (no 5 GHz band)
lsusb                    # USB-A host enumerates; attach a known device to confirm

12.3.4 Lite vs Full — camera + IMU probe

# Camera (Full only): IMX219 on CSI
libcamera-hello --list-cameras   # or: vcgencmd get_camera   (detected=1 supported=1)
# IMU (Full only): BMI270 + BMM150 over I²C
i2cdetect -y 1           # BMI270 commonly 0x68/0x69; BMM150 0x10-0x13 (addresses verify on receipt)

If the camera + IMU are absent, you have a Lite; if present, a Full. Record which.

12.3.5 Audio, IR, RTC, battery telemetry

aplay -l ; arecord -l    # ES8389 codec: playback + capture devices present
#   → quick test: arecord -d 3 t.wav && aplay t.wav   (MEMS mic + 1W speaker)
i2cdetect -y 1           # RX8130CE RTC + ES8389 codec also appear on the bus
hwclock -r               # RTC reads back a time
# Battery: BQ27220 fuel gauge over I²C — read state-of-charge / voltage
#   (via the gauge's sysfs/driver once the M5 dtoverlay is loaded)

12.3.6 Update this deep dive

The figures are currently M5Stack’s own product photos + annotated board diagrams. Once a unit is in hand: swap in first-party bench photos (Photo Helper), confirm the receipt-checklist readings (§3), append a CLAUDE.md Progress Log entry, run python3 tools/validate_all.py, and commit.


12.4 Confirmed-spec reference + Lite-vs-Full delta

The product is confirmed. The earlier “hypothesis vs confirmed” tracker is retired; below is the authoritative spec reference. (Seeds like “ESP32-S3FN8 / 8 MB flash / 700 mAh / EXT bus = No” were wrong and are gone.)

Table 1 — 4. Confirmed-spec reference + Lite-vs-Full delta

SubsystemConfirmed valueCross-ref
Core moduleRaspberry Pi Compute Module 0 (CM0)Vol 3
SoCRP3A0 → BCM2710A1 (BCM2837 family)Vol 3
CPUQuad Cortex-A53 @ 1.0 GHz, aarch64Vol 3
RAM512 MB LPDDR2 (fixed)Vol 3
StoragemicroSD (Full bundles 32 GB)Vol 4
OSRaspberry Pi OS / Debian aarch64Vol 5
Display1.9″ ST7789v3, 320×170Vol 6
Keyboard46-key matrix QWERTYVol 6
AudioES8389 + AW8737A + 1 W spkr + MEMS mic + 3.5 mm jackVol 6
IRTX + RXVol 6
RTCRX8130CEVol 6
Wi-Fi2.4 GHz 802.11 b/g/nVol 8
BluetoothBT 4.2 + BLEVol 9
Ethernet10/100 RJ45Vol 8
Video outHDMI/digital A/V, 1080p30Vol 6
USB2× USB-C (host/device) + 1× USB-A hostVol 3
ExpansionCap EXT 14-pin + Grove HY2.0-4PVol 4
Battery1500 mAh LiPo, BQ27220 gaugeVol 7
Dimensions84.0 × 54.0 × 23.1 mmVol 2

Lite vs Full — the only hardware delta:

Table 2 — 4. Confirmed-spec reference + Lite-vs-Full delta

FeatureLite ($59 / $99)Full ($89 / $149)
Camera (8 MP IMX219)
IMU (BMI270 + BMM150)
Bundled 32 GB microSD
Everything else (CM0, 512 MB, display, keyboard, audio, Wi-Fi/BT, Ethernet, USB, EXT, battery)

Note. Lite and Full share the same board, OS, and software stack. The Full premium buys the camera, the 9-axis IMU, and an SD card. Pick Full if you want CameraApp/IMX219 work or motion sensing; Lite is the cheaper drop-box / SSH-box.


12.5 OS imaging quick-reference

No firmware to flash — you write an OS image to a microSD and the CM0 boots it like any Pi. Three routes:

# === Route A: Raspberry Pi Imager (GUI, cross-platform) ===
#   Choose OS → "Use custom" → select cardputer-zero.img(.xz)
#   Choose storage → the microSD
#   ⚙ (advanced) → set hostname, enable SSH, set user/pass, Wi-Fi SSID+PSK, locale  → WRITE
#   (Headless preconfig means it joins Wi-Fi + accepts SSH on first boot — no monitor needed.)

# === Route B: m5stack-imager (M5-oriented, Pi-Imager-style) ===
#   From github.com/CardputerZero — writes the M5 Cardputer Zero appliance image.

# === Route C: dd (Linux/macOS, manual) ===
xzcat cardputer-zero.img.xz | sudo dd of=/dev/sdX bs=4M status=progress conv=fsync
#   (verify /dev/sdX with lsblk FIRST — wrong target destroys a disk)
sudo dd if=cardputer-zero.img of=/dev/sdX bs=4M status=progress   # if already decompressed
sync

# === Headless SSH/Wi-Fi preconfig WITHOUT the Imager (mount the boot partition) ===
touch  /boot/ssh                                   # enable SSH on first boot
cat > /boot/wpa_supplicant.conf <<'EOF'            # join Wi-Fi headless
country=US
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={ ssid="MyNet" psk="MyPass" }
EOF

# === First boot ===
#   Rootfs auto-expands to fill the card (raspi-config / the image's firstboot does this).
#   Then: ssh <user>@<hostname>.local   (mDNS) or ssh <user>@<ip-from-router>
#   Set a strong password immediately; change the default if the image shipped one.

Tip. Keep a spare “known-good” imaged card in your kit. If a card corrupts in the field, swap and reboot — recovery is a card swap, not a reflash.


12.6 Programming environment quick-start

It’s a Debian aarch64 box. Develop over SSH with ordinary toolchains; for on-screen apps, use the czdev workflow that targets the 320×170 LCD with LVGL.

# === Get in ===
ssh user@cardputer-zero.local
sudo apt update && sudo apt install -y build-essential python3 git i2c-tools

# === Plain programs: build natively on-device ===
gcc hello.c -o hello && ./hello          # C/C++ via gcc/g++ (slow but works; or cross-compile on a PC)
python3 script.py                        # Python is first-class on Debian

# === On-screen LVGL apps via czdev (CardputerZero-AppBuilder) ===
czdev doctor        # check the toolchain/SDK is healthy
czdev run           # build + launch in the SDL2 desktop emulator (320×170 LCD in a keyboard skin)
czdev watch         # rebuild-on-save loop while iterating
czdev build         # package the app as an installable .deb
#   App ABI is tiny:  #include <cz_app.h>
#                     void app_main(lv_obj_t *parent);   void app_event(int type, void *data);
#   Online mode: submit any public Git repo with app-builder.json → get a ready-to-install .deb.

# === Install apps from the store (on-device) ===
#   Open the AppStore app, browse, install — it pulls .deb from CardputerZeroRepository
#   (the official APT/.deb repo served via GitHub Pages). Or: sudo apt install <pkg>

Note. The desktop emulator (Rust/SDL2) runs on macOS / Linux / Windows (MSYS2), so you can develop and test Zero apps with no physical device. Publishing commands (login/publish/bump) need only Python 3. See Vol 10 for worked app examples.


12.7 Battery life realism table

Pack: 3.7 V × 1500 mAh ≈ 5.55 Wh. This is a Linux SoC, not an MCU — there is no µA deep-sleep; idle draw is real (~2.5 W). Figures below are estimates anchored to the Cardputer Zero’s confirmed idle and to the Raspberry Pi Zero 2 W (same RP3A0 SiP); verify against the BQ27220 gauge on the unit in hand.

Table 3 — 7. Battery life realism table

ModeEst. powerEst. current @3.7VEst. runtime (5.55 Wh)
Idle, display dim (confirmed anchor ~2.5 W)~2.5 W~675 mA~2.2 h
Light CLI / SSH session~2.8 W~755 mA~2.0 h
Wi-Fi recon (scan/monitor)~3.3 W~890 mA~1.7 h
Sustained Wi-Fi TX + display full~4.0 W~1080 mA~1.4 h
Heavy: USB-A adapter + Ethernet + CPU-bound~4.7 W~1270 mA~1.2 h

All rows except the idle anchor are estimates — Linux power draw swings with peripherals (USB-A adapters, Ethernet PHY, camera) and CPU load. Practical rule: plan for ~1.5–2 h of active field use per charge; carry a USB-C power bank for anything longer. Charge/telemetry is via USB-C + the BQ27220 gauge (Vol 7).

Runtime (est.) — bars ∝ hours
 Idle/dim    ██████████████████████  ~2.2 h
 CLI/SSH     ████████████████████    ~2.0 h
 Wi-Fi recon █████████████████       ~1.7 h
 Wi-Fi TX    ██████████████          ~1.4 h
 Heavy       ████████████            ~1.2 h

12.8 Region rules quick reference

The Zero’s radios are 2.4 GHz Wi-Fi (b/g/n) + BT 4.2/BLE on-module, plus optional sub-GHz via Cap modules on the EXT bus (Cap LoRa, Cap CC1101). Wi-Fi/BLE TX power is set by the Linux driver + your country= regulatory domain — set it correctly (raspi-config / iw reg set XX / wpa_supplicant country=).

Table 4 — 8. Region rules quick reference

Band / radioPathRegion notes
2.4 GHz Wi-FiOn-module wlan0US FCC §15.247 / EU EN 300 328 (+20 dBm, duty cycle) / JP ARIB STD-T66. Driver-clamped to the set country=.
BLE 4.2On-moduleSame 2.4 GHz ISM regulatory regime; low power.
Sub-GHz LoRaCap LoRa over EXTRegion band-specific: US 902–928 MHz, EU 863–870 MHz, AU 915–928, etc. Set the Meshtastic/meshtasticd region to match.
Sub-GHz / NFCCap CC1101 over EXTCC1101 ISM bands (315/433/868/915 MHz) — pick the legal band for your region.
5 GHz Wi-FiUSB-A adapterNot on-module; if you add a USB Wi-Fi dongle, its 5 GHz channels follow your reg domain (DFS/indoor rules apply).

For any TX (deauth, evil portal, LoRa beaconing, sub-GHz): written authorization is required, period. Set country= before transmitting; an unset/00 domain restricts channels and power. See ../_shared/legal_ethics.md and Vol 11.


12.9 Troubleshooting flow

Linux symptoms, Linux fixes. (No “reinstall ESP32 USB driver / reflash via esptool” — there is none.)

No boot / no display?
   ├─ Power: use a 5V/2A USB-C supply (a weak charger under-volts the CM0).
   ├─ Watch for the boot splash (circle-boot-splash). Nothing at all → power/SD.
   ├─ Re-image the microSD on a PC (§5) — silent SD failure is the #1 cause.
   ├─ Reseat the microSD; try a different known-good card.
   └─ Persistent → likely hardware; vendor support.

No network?
   ├─ ip a            → is eth0 / wlan0 present and UP?
   ├─ rfkill list     → Wi-Fi/BT soft- or hard-blocked? → rfkill unblock all
   ├─ Wi-Fi won't join → check wpa_supplicant.conf (ssid/psk/country=); journalctl -u wpa_supplicant
   ├─ Wrong reg domain → iw reg set <CC>  (channels/power clamped if unset)
   └─ Ethernet dead → try another cable/port; dmesg | grep eth

SD corruption / won't mount?
   ├─ Always shut down cleanly:  sudo poweroff   (yanking power corrupts the card)
   ├─ fsck the card on a PC; if rootfs is damaged, re-image (§5).
   ├─ Recurring corruption → suspect a fake/worn card; use a name-brand A1/A2 card.
   └─ Keep a spare imaged card in the kit — swap, don't fix, in the field.

Display / overlay wrong (blank, rotated, no HDMI)?
   ├─ ST7789v3 panel needs the M5 dtoverlay loaded — check /boot/config.txt.
   ├─ Missing/garbled LCD → confirm the dtoverlay + cm0-firmware kernel match the image.
   ├─ HDMI no signal → set hdmi_force_hotplug / hdmi_group/mode in config.txt.
   └─ Wrong rotation → display_rotate / panel orientation in config.txt or the overlay.

Camera/IMU absent (Full unit)?
   ├─ libcamera-hello --list-cameras empty → check CSI ribbon seating + camera dtoverlay.
   ├─ i2cdetect shows no BMI270 → I²C bus/overlay not enabled (raspi-config → Interface → I²C).
   └─ Confirm you actually have a Full (Lite omits camera + IMU by design — §4).

Thermal throttle / sluggish?
   ├─ vcgencmd measure_temp + get_throttled → throttling under sustained load is normal (no fan).
   └─ 512 MB is the real ceiling: free -h; heavy tools (GNU Radio, big wordlists) → use a laptop/Pi 5.

12.10 Pre-engagement checklist (printable)

SD / OS
[ ] Boot from a KNOWN-GOOD imaged microSD (tested this build)
[ ] Spare imaged microSD in the kit (swap-to-recover)
[ ] Rootfs expanded; OS + tools updated (apt update && apt full-upgrade)
[ ] Strong unique user password set; default creds changed/removed
[ ] SSH key-only auth if possible; note the hostname/IP

POWER
[ ] Battery charged (gauge reads full); 5V/2A USB-C supply on hand
[ ] USB-C power bank for runs > ~1.5 h (see §7)
[ ] Safe-shutdown plan: `sudo poweroff` — NEVER yank power (SD corruption)

RADIOS / RF
[ ] country= / reg domain set to the venue's country
[ ] Disable unused radios (rfkill block wifi/bluetooth) to cut draw + footprint
[ ] Cap LoRa / CC1101 region band set correctly (if fitted)
[ ] USB monitor-mode Wi-Fi adapter if serious 802.11 work (on-module is driver-limited)

SECRETS / POSTURE
[ ] Sensitive material encrypted at rest (LUKS / gocryptfs / encrypted file) —
    the microSD is trivially readable if the unit is lost
[ ] No client creds/keys left in shell history or /home; clear known_hosts as needed
[ ] Sanitization plan: wipe/re-image the card post-engagement
[ ] Written authorization in hand for ANY transmit/active testing

FINAL
[ ] All above checked — proceed

12.11 Key references in one block

Vendor / product
   M5Stack shop                    shop.m5stack.com
   M5Stack docs (Cardputer Zero)   docs.m5stack.com
   M5Stack community               community.m5stack.com
   Kickstarter campaign            launched 2026-05-26

OS / boot (CardputerZero + m5stack GitHub orgs)
   cardputer-zero-os               github.com/CardputerZero/cardputer-zero-os
   pi-gen (M5 image builder)       github.com/CardputerZero/pi-gen
   m5stack-imager                  github.com/CardputerZero/m5stack-imager
   cm0-firmware (kernel+modules)   github.com/dianjixz/cm0-firmware
   linux dtoverlays                github.com/m5stack/m5stack-linux-dtoverlays
   u-boot / circle-boot-splash     github.com/CardputerZero/{u-boot,circle-boot-splash}

Desktop / shell (Wayland, 320×170)
   cardputer-zero-shell            github.com/CardputerZero/cardputer-zero-shell
   default-apps / notifyd          github.com/CardputerZero/cardputer-zero-{default-apps,notifyd}
   fcitx5-ui (input method)        github.com/CardputerZero/cardputer-zero-fcitx5-ui

App SDK + store
   czdev / CardputerZero-AppBuilder github.com/m5stack/CardputerZero-AppBuilder
   M5Stack_Linux_Libs              github.com/m5stack/M5Stack_Linux_Libs
   LVGL app template               github.com/CardputerZero/template
   CardputerZeroRepository (.deb)  github.com/m5stack/CardputerZeroRepository
   AppStore (on-device)            github.com/CardputerZero/AppStore
   CardputerZero Hub               cardputerzero.github.io

Example apps (real, in-org)
   Calculator / 2048 / Calendar    github.com/CardputerZero
   CameraApp (IMX219) / RFID (NFC) github.com/CardputerZero
   Retro-Zero (libretro)           github.com/geo-tp/Retro-Zero
   trail-mate (GPS/LoRa/Maps)      github.com/CardputerZero/trail-mate

Raspberry Pi (CM0 = Pi Zero 2 W silicon — applies directly)
   Raspberry Pi OS / raspi-config  raspberrypi.com
   libcamera / IMX219 stack        libcamera.org
   Raspberry Pi Imager             github.com/raspberrypi/rpi-imager

Linux security tooling (run as normal processes)
   aircrack-ng / Kismet / bettercap / hostapd / nmap / tcpdump / scapy / BlueZ
   meshtasticd (Linux Meshtastic)  meshtastic.org
   rtl_433 / dump1090 (USB SDR)    via USB-A host

Sibling Hack Tools / peer references
   Cardputer ADV (ESP32 — lineage only)  ../M5Stack Cardputer ADV/
   Cyberdecks (Linux handhelds: uConsole/PicoCalc)  ../../Cyberdecks/
   Hack Tools comparison           ../_shared/comparison.md
   Legal / ethics                  ../_shared/legal_ethics.md

Regulatory
   US FCC                          fcc.gov  (47 CFR §15.247)
   EU ETSI                         etsi.org  (EN 300 328)

This is the final volume of the M5Stack Cardputer Zero deep dive, reframed to the confirmed CM0 / Linux reality and illustrated with M5Stack’s product photos + annotated board diagrams. The remaining open work is a bench pass: swap in first-party photos of the unit in hand, and confirm the receipt-checklist readings (§3) — addresses, Lite-vs-Full, and BQ27220 telemetry — against the actual hardware.

Comments (0)

  1. Loading…

Comments are held for moderation — nothing appears until approved.