Skip to content

EN Hardware

drew.po28@gmail.com edited this page Jul 6, 2026 · 3 revisions

Hardware

Menu path: Hardware · Boards: all · Requires: — (Speed Test's PSRAM/SD rows need that hardware present)

Overview

The Hardware menu is the diagnostics-and-tuning corner of the OSD. It does not change the emulated machine — it inspects the physical board (chip, flash, PSRAM, SD card, connected USB/PS-2 input devices), summarises the current emulator configuration, runs performance benchmarks, and lets you overclock the RP2040/RP2350.

Most rows just open a read-only info dialog. The two submenus with > — Speed Test and Overclock — do real work; Overclock changes are persisted to NVS and applied after a reboot.

The actual GPIO assignments referenced by Board Info are documented in Boards & pinout. Joystick / gamepad / keyboard mapping lives under Options → Other and the joystick config dialogs, not here — Hardware only reports the current input setup (in Emulator Info / HID devices).

Menu structure

Hardware
├── Chip Info          MCU model, cores, CPU/VREG, RAM, flash + PSRAM IDs, temperature
├── Board Info         SD card, audio, RAM page map, GPIO pin assignments, build info
├── Memory Info        FLASH / SRAM / PSRAM occupancy + per-feature memory budget
├── Emulator Info      current machine / video / sound / input / storage configuration
├── HID devices        live view of USB / XInput / NES gamepads (auto-refresh ~1 s)
├── Speed Test ▸
│   ├── CPU MIPS        integer-op throughput
│   ├── SRAM R/W        on-chip SRAM read/write MB/s
│   ├── PSRAM           SPI and/or QSPI ("butter") PSRAM read/write MB/s
│   ├── SD Card         SD read/write MB/s
│   ├── USB Drive       USB flash stick read/write MB/s
│   └── All tests       run every benchmark in sequence
└── Overclock (!) ▸     ⚠ shows a "Board may not boot!" warning on entry
    ├── CPU Freq ▸       252 / 378 MHz  (+ 504 MHz on RP2350)
    ├── VReg Voltage ▸   1.15 … 1.80 V        (RP2350 only)
    ├── Flash Freq ▸     33 / 66 / 84 / 100 / 133 / 166 MHz
    └── PSRAM Freq ▸     66 / 84 / 100 / 133 / 166 MHz

* marks the active value in each Overclock submenu. The VReg Voltage row exists on RP2350 only (#if !PICO_RP2040); on RP2040 the Overclock submenu has just CPU / Flash / PSRAM Freq.

Info screens

Chip Info

A live read-out of the MCU and memory chips:

Field Notes
Chip model RP2350A / RP2350B (variant auto-detected) or RP2040
Chip cores always 2
CPU frequency current clk_sys in MHz (reflects your Overclock setting)
VREG voltage current core regulator voltage (RP2350 only)
Chip RAM / Free RAM total SRAM (520 KB RP2350 / 264 KB RP2040) and free heap
Flash size / JEDEC ID flash capacity + raw JEDEC manufacturer/device bytes
PSRAM size / MF ID / KGD / EID / Free SPI PSRAM info, if a chip is present (not on MURM2)
+PSRAM on GPxx onboard QSPI "butter" PSRAM (size + free), if present
Temperature on-chip temperature-sensor reading in °C

Board Info

The physical board and its wiring:

  • SD Card — free/total MB, filesystem (FAT12/16/32/exFAT), cluster size, volume label + serial, card type (SDv1/SDv2/SDHC-SDXC/MMCv3), and the card's CID product name + serial. Shows not mounted if no card.
  • Audio — active driver: HDMI, AY-3-8910, or i2s/PWM (with the detected I²S link code, and auto if auto-selected).
  • VGA/HDMI detect — the detected display-link byte (boards with VGA_HDMI).
  • 16K RAM pages — the page map: SRAM (s) + butter (b) + SPI PSRAM (p) + SD swap (v) pages that make up the emulated RAM.
  • GPIO pins — the actual pin numbers for keyboard, VGA/HDMI base, PWM L/R, beeper, I²S / PCM5122, AY-595 latch, SD SPI, PSRAM, butter PSRAM, MIDI TX, WAV-load, NESPAD and LED — exactly as compiled for this board.
  • Build info — build name, build date/time, git branch and commit.

The GPIO numbers here are the canonical, board-specific map — cross-reference with Boards & pinout.

Memory Info

A live map of where the memory went — useful when a feature refuses to enable because the SRAM budget is exhausted:

  • SRAM — usable total, static bss+data, heap used/total, heap free, and the largest contiguous allocatable block.
  • FLASH — total size, firmware footprint, and the flash Buffer pool (e.g. the GM.DLS wavetable bank partition), if in use.
  • Butter (QSPI) / SPI PSRAM — chip size, how much serves as emulated Z80 RAM pages, and the Buffer arena used/total on each chip.
  • SD swap pool — used/total, when pages spill to the SD card.
  • Enabled features (SRAM) (RP2350) — the per-feature SRAM cost of everything currently enabled through the subsystem budget manager (Gigascreen, General Sound, DivMMC, ZiFi, …) with a TOTAL row.
  • PSRAM by feature (RP2350) — the same breakdown for the big PSRAM consumers (GM.DLS bank, GS sample RAM, Gigascreen previous-frame buffer, DivMMC banks).

Emulator Info

A one-screen summary of the current emulator configuration (everything else you set in Options/Storage/Audio). Read-only — it does not change anything.

Group Reports
Machine Architecture, ROM set, Issue 2 on/off, ALU timing (Early/Late)
Video Output (VGA/HDMI) + video mode, scanlines, render (Standard/Snow), palette, and (RP2350) Gigascreen, ULA+, Timex video
Sound AY-3-8912 (+ stereo ABC/ACB/Mono), TurboSound (NedoPC/old-TC/Both), Covox (#FB/#DD), SounDrive, and (RP2350) SAA1099, MIDI (mode/synth preset); audio driver
Input Joystick type (Cursor/Kempston #xx/Sinclair/Fuller #7F/Custom/None), TAB-as-fire
Storage (RP2350) esxDOS mode + hd0/hd1 images, IDE/HDD scheme + images; TR-DOS state + drives A–D; MB-02+ + drives; DMA mode; tape file; flash-load on/off

Note: several groups (Gigascreen, ULA+, Timex, SAA1099, MIDI, esxDOS, IDE/HDD, MB-02+, DMA) are RP2350 only and are omitted on RP2040.

HID devices

A live, auto-refreshing (~1 s) list of connected input devices — useful for checking that a USB keyboard or gamepad is recognised and which buttons it reports:

  • USB HID keyboards / gamepads (including the special-cased Sony DS4 / DualSense and XInput pads).
  • XInput controllers (e.g. Xbox 360 / Logitech F710 in XInput mode).
  • On boards with USE_NESPAD: a live NES1/NES2 button-state line plus the decoded joy1/joy2 D-pad + face/Start/Select bits.

Press Enter or Esc to close. ↑ ↓ / PgUp / PgDn scroll if the list is long. If nothing is attached it shows "No HID/XInput devices."

Speed Test

Self-contained micro-benchmarks — no media or SD images needed (except the SD row, which needs a mounted card, and the PSRAM rows, which need PSRAM present). Each test runs for a fixed time window and reports a rate; results are shown in a dialog.

Test Measures Method
CPU MIPS integer throughput (million ops/s) tight LCG mul+add loop over a 0.5 s window
SRAM R/W on-chip SRAM read & write (MB/s) 32-bit aligned write then read over a scratch buffer
PSRAM SPI PSRAM and/or QSPI "butter" PSRAM read & write (MB/s) burst psram_*_range (SPI) / memory-mapped (QSPI); only the chips present are tested
SD Card SD read & write (MB/s) timed block I/O on a mounted card
USB Drive USB flash stick read & write (MB/s) timed block I/O on an enumerated stick (RP2350 USB-host builds; expect ~0.9 / 0.75 MB/s)
All tests all of the above, in sequence —

In USB-as-root mode (booted with no SD card) the SD row reports No card rather than silently benchmarking the stick — use the USB Drive row for that.

Use it to compare the effect of Overclock settings (e.g. MIPS / PSRAM bandwidth at 252 vs 378 vs 504 MHz, or different Flash/PSRAM frequencies).

Overclock (!)

⚠️ Entering this submenu shows "Dangerous! Board may not boot!" Pushing frequencies or voltage too far can make the board fail to start. Each change asks for a reboot confirmation — and if it won't boot, you may need to reflash to recover defaults.

Each option opens a list with the current value marked *. Selecting a new value stores it to NVS and prompts Apply + reboot (declining reverts the change). Values are applied on the next boot, not live.

Option Values Default Boards Notes
CPU Freq 252 / 378 MHz (+ 504 MHz RP2350) 378 MHz (252 on ZERO / ZERO2) all (504 = RP2350 only) core/system clock; if a chosen clock can't be set the firmware falls back to 252 MHz
VReg Voltage 1.15 / 1.20 / 1.25 / 1.30 / 1.35 / 1.40 / 1.50 / 1.60 / 1.65 / 1.70 / 1.80 V 1.60 V RP2350 only core regulator voltage — usually has to be raised to reach higher CPU clocks
Flash Freq 33 / 66 / 84 / 100 / 133 / 166 MHz 66 MHz all XIP flash interface clock
PSRAM Freq 66 / 84 / 100 / 133 / 166 MHz 166 MHz all PSRAM interface clock

⚠️ Known stability issue. High CPU frequency (504 / 252 MHz) combined with HDMI audio + Gigascreen can hang during the PLL switch (the audio-timer ISR races the clock change). Change frequency deliberately, one step at a time, and verify with Speed Test. See the developer notes (CLAUDE.md → CPU Frequency Switching).

Wiring / schematic

The full GPIO map for every board (the same pins Board Info reports) is in Boards & pinout.

How to test

Speed Test is self-contained — no images required. Compare MIPS / SRAM / PSRAM / SD rates across different Overclock values; use Chip Info to confirm the CPU clock and VREG voltage actually changed after a reboot.

Links

Clone this wiki locally