This guide walks you through setting up a retro game console as a RustChain miner using a Raspberry Pi Pico serial bridge. Console mining enables vintage hardware from 1983-2001 to earn RTC rewards through Proof of Antiquity consensus.
To our knowledge, this is the first blockchain to mine on vintage game console silicon.
| Console | CPU | Release Year | Multiplier | Status |
|---|---|---|---|---|
| NES/Famicom | Ricoh 2A03 (6502) | 1983 | 2.8x | ✅ Supported |
| SNES/Super Famicom | Ricoh 5A22 (65C816) | 1990 | 2.7x | ✅ Supported |
| Nintendo 64 | NEC VR4300 (MIPS) | 1996 | 2.5x | ✅ Supported |
| Game Boy | Sharp LR35902 (Z80) | 1989 | 2.6x | ✅ Supported |
| Game Boy Advance | ARM7TDMI | 2001 | 2.3x | ✅ Supported |
| Sega Genesis | Motorola 68000 | 1988 | 2.5x | ✅ Supported |
| Sega Master System | Zilog Z80 | 1986 | 2.6x | ✅ Supported |
| Sega Saturn | Hitachi SH-2 (dual) | 1994 | 2.6x | ✅ Supported |
| PlayStation 1 | MIPS R3000A | 1994 | 2.8x | ✅ Supported |
- Retro game console (any from the list above)
- Raspberry Pi Pico ($4 USD)
- Standard Pico for USB connection to PC
- Pico W for standalone WiFi operation
- Controller port adapter (DIY or purchase)
- Connects Pico to console controller port
- Schematics provided below
- USB cable (USB-A to Micro-USB)
- PC or laptop (for running RustChain node)
- Pico W ($6 USD) - Enables standalone WiFi mining
- Custom PCB adapter - More reliable than breadboard
- Multiple consoles - One Pico can switch between consoles
NES Controller Port (male) → Pico GPIO
───────────────────────────────────────
Pin 1 (Latch) → GPIO 5
Pin 2 (Clock) → GPIO 6
Pin 3 (Data) → GPIO 7
Pin 4 (VCC) → VBUS (5V)
Pin 5 (GND) → GND
Pin 6 (Latch) → GPIO 5 (parallel with Pin 1)
Pin 7 (Clock) → GPIO 6 (parallel with Pin 2)
N64 Controller Port (male) → Pico GPIO
────────────────────────────────────────
Pin 1 (Data) → GPIO 2
Pin 2 (Unused) → NC
Pin 3 (GND) → GND
Pin 4 (VCC) → VBUS (5V)
Genesis Controller Port (male) → Pico GPIO
───────────────────────────────────────────
Pin 1 (Up) → GPIO 0
Pin 2 (Down) → GPIO 1
Pin 3 (Left) → GPIO 2
Pin 4 (Right) → GPIO 3
Pin 5 (B) → GPIO 4
Pin 6 (C) → GPIO 5
Pin 7 (GND) → GND
Pin 8 (A) → GPIO 6
Pin 9 (Start) → GPIO 7
- Raspberry Pi Pico
- USB cable
- Computer with Arduino IDE or PlatformIO
-
Install Arduino IDE (if not already installed)
# Ubuntu/Debian sudo snap install arduino # macOS brew install --cask arduino # Windows: Download from https://www.arduino.cc/en/software
-
Add Pico board support
- Open Arduino IDE
- Go to
File → Preferences - Add to "Additional Board Manager URLs":
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json - Go to
Tools → Board → Boards Manager - Search for "Raspberry Pi Pico"
- Install "Raspberry Pi Pico/RP2040" by Earle Philhower
-
Install dependencies
- In Arduino IDE:
Sketch → Include Library → Manage Libraries - Install:
SHA256by Dominik ReichertArduinoJsonby Benoit Blanchon
- In Arduino IDE:
-
Load firmware
- Open
miners/console/pico_bridge_firmware/pico_bridge.ino - Select board:
Tools → Board → Raspberry Pi Pico → Raspberry Pi Pico - Select port:
Tools → Port → /dev/ttyACM0(Linux) orCOM3(Windows) - Click Upload (→)
- Open
-
Verify installation
- Open Serial Monitor (115200 baud)
- Reset Pico
- Should see:
PICO_READY|RIP-0683 Console Bridge v1.0|
The console needs a custom ROM that:
- Receives nonce from Pico
- Computes SHA-256(nonce || wallet)
- Outputs result via controller port
ROM Source: See miners/console/n64_attestation_rom/ (future implementation)
For consoles without custom ROM capability, the Pico can:
- Simulate controller polling
- Measure timing characteristics
- Compute hash on behalf of console (with reduced multiplier)
Edit your node's configuration file:
# config.py
CONSOLE_MINING_ENABLED = True
PICO_BRIDGE_PORT = "/dev/ttyACM0" # Linux
# PICO_BRIDGE_PORT = "COM3" # Windows
SUPPORTED_CONSOLE_ARCHS = [
"nes_6502", "snes_65c816", "n64_mips",
"genesis_68000", "gameboy_z80", "ps1_mips"
]cd node
python3 rustchain_v2_integrated_v2.2.1_rip200.py --console-mining# Send ATTEST command to Pico
echo "ATTEST|abc123|RTC1Wallet001|$(date +%s)" > /dev/ttyACM0
# Read response
cat < /dev/ttyACM0Expected response:
OK|PICO001|n64_mips|{"ctrl_port_cv":0.005,"rom_hash_time_us":847000,...}|<hash>
The node automatically:
- Detects Pico bridge on serial port
- Sends challenge nonce
- Receives timing data and hash
- Validates anti-emulation checks
- Submits to consensus layer
- Distributes rewards to
retro_consolebucket
tail -f node/logs/rustchain.log | grep "console"Expected output:
[CONSOLE] Registered n64_mips miner (PICO001)
[CONSOLE] Attestation passed: CV=0.005, ROM_time=847ms
[REWARDS] retro_console bucket: 3 miners, 0.333 share
curl http://localhost:5000/api/miners/fleet_statusResponse:
{
"buckets": {
"retro_console": {
"miner_count": 3,
"share": 0.333,
"active_archs": ["n64_mips", "nes_6502", "ps1_mips"]
}
}
}Symptoms: Serial port not found, no response
Solutions:
- Check USB cable (some are charge-only)
- Hold BOOTSEL button while plugging in Pico
- Verify port:
ls /dev/ttyACM*(Linux) or Device Manager (Windows)
Symptoms: ERROR|timing_too_uniform
Causes:
- Console not powered on
- Wrong controller port wiring
- Emulator instead of real hardware
Solutions:
- Verify console is running attestation ROM
- Check controller port connections
- Ensure real hardware, not FPGA/emulator
Symptoms: ERROR|Suspicious hardware: ROM execution time outside tolerance
Causes:
- Wrong console architecture selected
- Overclocked console
- Timing measurement bug
Solutions:
- Verify correct
SET_CONSOLEcommand sent to Pico - Check console is stock (not overclocked)
- Increase tolerance in firmware (±15% → ±20%)
Symptoms: Reduced rewards, fleet_score > 0.5
Causes:
- Multiple consoles on same IP/subnet
- Correlated attestation timing
- Similar fingerprint profiles
Solutions:
- Spread consoles across different networks
- Add random delay to attestation timing
- Each console should have unique Pico ID
Console miners share the retro_console bucket equally with other console miners.
Example (assuming 10 total miners, 3 in retro_console):
- Total block reward: 1.5 RTC
- retro_console bucket share: 1.5 / 3 = 0.5 RTC
- Your console share: 0.5 / (number of console miners)
With 2.5x multiplier (N64):
- Base reward × 2.5 = higher share within bucket
Initial Investment:
- Console: $20-50 (eBay)
- Pico: $4
- Adapter: $5 (parts)
- Total: ~$30-60
Annual Revenue (estimated):
- 0.1-0.5 RTC/day × 365 days × $0.50/RTC = $18-91/year
Payback Period: 4-36 months
Note: Rewards depend on network participation, RTC price, and console bucket size.
One Pico can manage multiple consoles:
- Use GPIO multiplexer
- Switch controller port connections
- Each console gets unique miner ID
Pico W can operate without PC:
- Connects to WiFi
- Sends attestations directly to node
- Requires custom firmware build
Develop attestation ROMs for additional consoles:
- Use existing dev tools (gcc6502, mips64-elf-gcc)
- Link against librustchain (SHA-256 implementation)
- Output ROM format (.nes, .z64, .bin)
- Pico board ID - Unique OTP ROM (cannot reprogram)
- Timing profiles - Real hardware has characteristic jitter
- ROM execution time - Must match known CPU performance
- Fleet detection - IP clustering, timing correlation
- FPGA consoles may pass timing checks (under research)
- High-end emulators + fake bridge possible (mitigated by fleet detection)
- Console farms limited by bucket normalization
- Additional consoles: Atari 2600, Neo Geo, Dreamcast
- Pico W standalone firmware
- Multi-console bridge support
- Hardware anchor on Ergo
- On-chain attestation registry
- Console-specific NFT badges
- RIP-0683 Specification
- RIP-0304: Retro Console Mining
- RIP-201: Fleet Immune System
- Legend of Elya - N64 neural network demo
- Pico SDK Documentation
- GitHub Issues: https://github.com/rustchain/rustchain/issues
- Discord: https://discord.gg/rustchain
- Documentation: https://docs.rustchain.net
© 2026 RustChain Core Team - Apache License 2.0