Project 8: Complete Cardputer Security Toolkit (Capstone)

Build a unified firmware that combines WiFi analysis, BLE tooling, IR control, USB HID, and GPS wardriving into a single coherent system with shared settings and consistent UI.

Quick Reference

Attribute Value
Difficulty Master
Time Estimate 2-3 months
Language C/C++ (ESP-IDF recommended)
Hardware Cardputer + microSD + GPS module + IR receiver
Key Topics architecture, shared services, OTA, power management

Goal

You will integrate multiple complex subsystems into a stable, field-usable firmware. This project teaches you system architecture, task orchestration, shared resource management, and reliability engineering on a constrained device.


Why This Project Matters

This is a real product-level build. You are not just writing apps; you are building a platform that coordinates radios, storage, UI, and hardware peripherals without crashes or data loss. The result is a portfolio-grade firmware.


System Architecture

                  +-------------------------+
                  |        Launcher         |
                  +-----------+-------------+
                              |
                 +------------v-------------+
                 |     Shared Services      |
                 | UI | Input | Storage |   |
                 | WiFi | BLE | USB | IR |  |
                 +------------+-------------+
                              |
   +--------------------------+--------------------------+
   |                          |                          |
WiFi Tools               BLE HID Tools                IR Tools
(sniffer/map)            (keyboard/macro)            (learn/replay)
   |                          |                          |
   +-------------+------------+--------------+-----------+
                 |                           |
             GPS Logger                  Payload Engine

Implementation Plan

Phase 1: Platform and UI

  • Create a unified launcher
  • Add a shared services layer
  • Implement settings and theme persistence

Phase 2: Tool Integration

  • Integrate WiFi sniffer and wardriving tools
  • Integrate BLE HID and USB HID
  • Add IR learning and replay

Phase 3: Reliability

  • Add watchdog and crash recovery
  • Centralize logging and error reporting
  • Implement safe mode on boot

Phase 4: OTA and Power

  • Add OTA update pipeline
  • Implement battery-aware throttling

Real World Outcome

You boot a single firmware and can switch between WiFi scanning, BLE macros, IR remotes, and USB HID without rebooting. Logs are saved and the UI stays consistent across tools.

Example output:

CARDPUTER TOOLKIT
[1] WiFi Sniffer
[2] Wardriving
[3] BLE HID
[4] USB HID
[5] IR Remote
[6] Settings

The Core Question You’re Answering

How do you unify multiple high-demand subsystems into a stable, user-friendly embedded platform?


Concepts You Must Understand First

  • Service architecture and dependency boundaries
  • Task scheduling and priority management
  • Storage layout and schema versioning
  • Boot flows and safe-mode recovery

Questions to Guide Your Design

  • Which services are global vs per-tool?
  • How do you handle conflicting radio usage?
  • How do you ensure logs are never corrupted?
  • What happens if a tool crashes mid-session?

Thinking Exercise

Draw a resource map of every peripheral (WiFi, BLE, USB, SD, display, keyboard). Mark which tools own them and when.


Interview Questions They’ll Ask

1) How do you design shared services for embedded tools? 2) How do you prevent one task from starving others? 3) How do you build an OTA system without bricking devices? 4) How do you validate a multi-tool firmware release?


Hints in Layers

1) Start with a launcher that only switches between dummy apps. 2) Add services one by one (display, input, storage). 3) Integrate one tool at a time and stabilize it before the next. 4) Add OTA and safe mode last.


Books That Will Help

| Book | Chapters | Why it helps | |——|———-|————–| | Clean Architecture | Core chapters | System boundaries | | Making Embedded Systems | Ch. 9-10 | Resource management | | Effective C | Ch. 10-12 | Safety in large codebases |


Common Pitfalls and Debugging

Problem: “Random resets when switching tools”

  • Why: Conflicting resource ownership or memory leaks
  • Fix: Centralize resource access and enforce ownership
  • Quick test: Switch tools 50 times with heap tracing enabled

Problem: “Logs corrupted after crash”

  • Why: Unflushed buffers or partial writes
  • Fix: Implement atomic write or journaling
  • Quick test: Simulate power loss during writes

Definition of Done

  • All tools share a single launcher and settings
  • Switching tools never reboots the device
  • OTA update succeeds with rollback
  • Logs remain valid after forced reset
  • Battery runtime exceeds 2 hours in mixed use

Extensions

  • Add a plugin system for new tools
  • Add remote sync of logs
  • Add signed firmware updates