Skip to content

Pico Computer 3 v0.10 (test)

Choose a tag to compare

@UKTailwind UKTailwind released this 21 Jul 14:12

Firmware and manual for the Pico Computer 3 (RP2350B).

New in v0.10

  • On-device SQLite — import usqlite — a full SQLite 3.47 database engine is now built into the firmware. usqlite.connect("/data.db") gives you real SQL — tables, indexes, transactions, parameterised queries and cursors — with the database an ordinary file on the flash disk (/) or SD card (/sd) that survives a power-cycle. SQLite runs in the board's 8 MB PSRAM heap, so non-trivial queries are practical. Hardware-tested (create/insert/select, REAL round-trip, persistence across reconnect). The PC emulator has it too, so import usqlite behaves identically there. See User Manual §17.
  • USB gamepad — gamepad() — plug a USB game controller into the host port and read it like MMBasic's DEVICE(GAMEPAD): gamepad("LX"/"LY"/"RX"/"RY") analog sticks, gamepad("B") button bitmap (test with & gamepad.A, gamepad.START, …), gamepad("H") d-pad/hat, the analog triggers, and the PS4 gyroscope/accelerometer. Xbox, PlayStation 3/4 and a table of common generic HID pads decode out of the box; gamepad.configure() teaches it an unrecognised controller (gamepad.monitor() helps discover one). Hardware-tested with a generic pad and a DualShock 3.
  • USB serial (CDC host) — USBSerial — a USB-serial adapter (FTDI, CP2102, CH340, or a native-USB device such as an Arduino) plugged into the host port becomes a UART-like object: exactly the read/readline/readinto/write/flush/any of machine.UART, plus connected() and on_change() for hot-plug. Up to four at once. Hardware-tested round-trip against a second RP2 running MMBasic.
  • hdmi.RGB320_8 — 320×240 in 256 colours, pixel-doubled to 640×480. One buffer is only a quarter of the video SRAM, so the display, the overlay layer and the off-screen create() buffer all fit in fast SRAM at once — the only mode offering an overlay and a fast double buffer together.
  • Wi-Fi password security — the saved Wi-Fi password is now scrambled and tied to this specific board (not readable at a glance in settings.json, and useless if copied to another board), and wifi("SSID", "pw", save=False) connects without saving it.
  • Fixes — a composite keyboard's extra HID interface (e.g. the Raspberry Pi keyboard's media keys) no longer shows up as a phantom gamepad; RGB640_4 vsync timing; the cosmetic hardware/powman.h build error on RP2350; and the emulator now builds cleanly from a fresh clone. Built against pico-sdk 2.3.0 with an upstream MicroPython sync.
  • Manual and development notes updated throughout.

Flashing

USB HUB switch to DISABLE → connect the Prog port to a PC → hold BOOT, click RESET → drag firmware.uf2 onto the drive that appears → switch back to ENABLE. Your files and settings survive.

The PC emulator

New with this release: pc3emu-linux-x64.tar.gz — the Pico Computer 3 as a PC program. The same interpreter, drawing code, keyboard decoding, audio and Python toolkit as the firmware, with the hardware provided by SDL2: it boots to the banner and >>> in a window and runs the book's programs unmodified (the SD card comes pre-seeded with them). Runs on Linux, and on Windows via WSL2 — INSTALL-WINDOWS.md (also inside the tarball) walks a machine that has never seen WSL all the way to the running emulator, no Linux experience or compiler required. The release assets were refreshed on 22 July to add on-device SQLite (import usqlite) to both the firmware and the emulator; an earlier 18 July refresh brought firmware and emulator onto the same tree, pico-sdk 2.3.0 and an upstream MicroPython sync (including a fix for pin interrupts on GPIOs above 30).

Compatibility: the prebuilt emulator binary needs glibc 2.43 or newer — Ubuntu 26.04+ (on older releases it stops with version `GLIBC_2.43' not found). On Windows/WSL, install the right version by name: wsl --install -d Ubuntu-26.04 (details in INSTALL-WINDOWS.md). On an older Linux, build from source instead — it works on any distro and takes a few minutes. Clone with git; GitHub's source ZIP/tarball won't build (it lacks the submodules):

sudo apt install -y git build-essential libsdl2-dev python3
git clone --branch pico-computer-3 https://github.com/UKTailwind/micropython
cd micropython
make -C mpy-cross -j$(nproc)
make -C ports/unix VARIANT=pc3 submodules
make -C ports/unix VARIANT=pc3 -j$(nproc)
chmod +x ports/rp2/boards/PICO_COMPUTER_3/emulator/pc3emu
ports/rp2/boards/PICO_COMPUTER_3/emulator/pc3emu