micro:bit v2.2 bench

nRF52833 target only. Loader and serial, no DAPLink

loading wasm… microbit-emu —

Load firmware, then run it stage, then boot

Drop a .hex / .bin built for flash 0x0 (ARM GCC, no SoftDevice). Staging loads nothing into the core; Run boots. nothing staged

matrix: firmware-driven

Presets run the same boot path as a dropped file: MBR vectors at 0x0, no UICR records. MicroPython continues straight into the direct-app boot at 0x1C000.

Device under test GPIO · 0x50000000

The 5×5 matrix is the only glow on this page. It stays dark until the firmware drives a row low and a column high with direction set to output.

A P0.14, B P0.23, logo P1.04, active-low

Motion (LSM303)

Serial console UARTE0 · 0x40002000

Drains the firmware UART. Type below and press Enter; bytes drip one per consumed event, as on silicon.

OLED scope TWIM0 · 0x3C

128×64 add-on on TWIM0, address 0x3C. Live when firmware writes it.

not run yet

SPI display SPIM2

240×240 add-on on SPIM2 (P13 SCK / P14 MISO / P15 MOSI / P16 CS). Firmware draws via CASET/RASET/RAMWR; ID read answers 04 85 52.

not run yet
not run yet
not run yet

Audio PDM · I2S

Speaker P0.00 toggles/PWM1 SEQSTARTs counted live; mic P0.05 fills PDM from RUN_MIC P0.20 power + level knob. Press Enable once (browser gesture rule), then stream I2S.

audio: off
mic: off

Speaker: 0 toggles, 0 SEQSTARTs

BLE air SVC 0x60–0xBF

Optional live peer. Run python3 tools/ble_air_bridge.py, then enable. Off means addressed loopback.

air: bridge not connected
not run yet

Stack: down · links: none · queued events: 0 · battery: 87

JS + TS faces SVC bytes

The same BLE contract as the Node faces (run_js_face.mjs, ts_lang_face.mts), executed live in this page on a scratch core: ENABLE → CONNECT → CONNECTED (CENTRAL) → READ → READ_RSP=87. Real SVC bytes, loopback-resolved — no bridge needed.

not run yet
not run yet

npm package microbit-emu —

Install the published core + virtual parts in any JS/TS project. Same build the bench runs: WASM core, parts, firmware images, bench page.

copies the snippet above

Releases ship on tag push (publish.yml, dual registry: npmjs.org + GitHub Packages @danish9661/microbit-emu). Version below tracks the last published tag.

Release history (newest first)
VersionNotes
loading release history…

Depth probes live handshake

Live consumers for the handshake models — thermometer, comparator, knob, crypto, tag, slave engines, limits, setup, radio helpers, flash backend. Each runs its register handshake against the core and reports back. Probes program real peripheral state, so reset firmware after if it was running.

not run yet
Handshake proof, live in this page
ProbeResultDetail