Clockwork PicoCalc · Volume 12

PicoCalc Volume 12 — Cheatsheet & Quick Reference

One-page references — laminate, slip into the lab notebook, leave on the bench

Contents

SectionTopic
1About this Volume
2BIOS Update Cheatsheet
· 2.1Quick decision
· 2.2DFU update steps
· 2.3UF2-forwarding update
· 2.4Arduino IDE rebuild
· 2.5SWD recovery
3BOOTSEL Procedure
· 3.1Standard BOOTSEL
· 3.2BOOTSEL through the case
· 3.3Forcing BOOTSEL on a flashed Pico
· 3.4Boot key combinations (reference)
4SD Card Layout Reference
5Side-Header Pinout (verified rev 2.0r3)
6Pico Pinout — All Variants
7Common Error Codes
8Command Reference
· 8.1picotool (Pico-side flashing)
· 8.2mpremote (MicroPython REPL + filesystem)
· 8.3OpenOCD + GDB (SWD via Pico Probe)
· 8.4STM32CubeProgrammer CLI (DFU/SWD)
· 8.5rpi-imager (headless flash for Pi Zero / RetroPie / etc.)
· 8.6rkdeveloptool (Lyra maskrom flashing)
9”Which UF2 Do I Need?” Decision Flowchart
10Pico SDK CMakeLists Boilerplate
11MicroPython picocalc Module Quick Reference
12PicoMite Useful Commands
13AT Command Quick-Reference (ESP-01S)
14Hamlib Rig Model Codes (most common)
15I²C Address Quick-Reference (PicoCalc bus + side-header devices)
16Build-and-Flash Recipes Per Stack
· 16.1PicoMite (no build — just flash)
· 16.2MicroPython (LofiFren, no build)
· 16.3Pico SDK app (build from source)
· 16.4Pico SDK + Rust (embassy-rp)
· 16.5picolua
· 16.6Pi Zero kernel module rebuild
· 16.7Lyra Buildroot full-image rebuild
17Connector Keying Cheatsheet
18BOM Quick-Pick (one-pager)
19Minimum Useful Setup Steps (first 30 minutes with the kit)
20Gotcha-and-Fix Matrix
21Essential URLs
22Volume-by-Volume Quick Index

1. About this Volume

This is the quick-reference companion to the other eleven volumes. Everything here is also documented in depth elsewhere in the series; this volume puts the most-frequently-needed steps in one place. Designed to be printed and laminated.

2. BIOS Update Cheatsheet

(Full deep-dive: Volume 4 §5.)

2.1 Quick decision

SituationPath
Working BIOS, want to upgradeDFU (§2.2)
Working BIOS, want to upgrade with no host PCUF2-forwarding (§2.3)
Building custom keymap or BIOSArduino IDE (§2.4)
Bricked, keyboard unresponsiveSWD recovery (§2.5)

2.2 DFU update steps

  1. Power off (long-press 3 s).
  2. Open rear shell (4× hex bolts).
  3. Flip SW107 position 1 to ON.
  4. Connect USB-C.
  5. Hold BOOT, press RESET, release RESET, release BOOT.
  6. Launch STM32CubeProgrammer; connect via USB.
  7. Open .bin file, address 0x08000000, Download.
  8. Verify “File download complete.” If “Operation Exceeds Memory Limits” → STOP. Recover via SWD.
  9. Disconnect, flip SW107 back to OFF, press RESET.
  10. Re-attach rear shell, power on, verify keyboard.

2.3 UF2-forwarding update

  1. Drop picocalc-bios-updater-vX.Y.uf2 onto the Pico via BOOTSEL.
  2. Power on; the updater runs and pushes new BIOS via I²C.
  3. Power-cycle.

(Requires existing BIOS to be functional.)

2.4 Arduino IDE rebuild

  1. Install STM32duino board package: https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json.
  2. Open Code/picocalc_keyboard/picocalc_keyboard.ino from https://github.com/clockworkpi/PicoCalc.
  3. Tools → Board → Generic STM32F1 → BluePill F103R8.
  4. Modify keymap, build.
  5. Upload via DFU (steps §2.2 above).

2.5 SWD recovery

  1. Wire Pico Probe SWDIO/SWCLK/GND to carrier test points.
  2. STM32CubeProgrammer → ST-LINK → Connect.
  3. Erasing → Full chip erase.
  4. Open known-good .bin, Download to 0x08000000.
  5. Power-cycle.

3. BOOTSEL Procedure

3.1 Standard BOOTSEL

  • Hold BOOTSEL on the Pico module while plugging USB-C.
  • Host sees RPI-RP2 (Pico 1) or RP2350 (Pico 2) as a removable drive.
  • Drag UF2 onto drive; Pico reboots automatically.

3.2 BOOTSEL through the case

The kit’s rear grill has a small cutout aligned with the BOOTSEL button. Use a toothpick or thin card. Press while plugging USB-C; release after the host enumerates the drive.

3.3 Forcing BOOTSEL on a flashed Pico

  • From software (running): picotool reboot -u -f (Pico must be reachable via USB CDC).
  • From UF2 Loader menu: hold Down or F3 during power-on.
  • Hardware: short the RUN pin to GND while holding BOOTSEL, release RUN, release BOOTSEL.

3.4 Boot key combinations (reference)

Key held at power-onEffect
(none)Boot current app directly
Up, F1, F5Open UF2 Loader menu
Down, F3Drop to BOOTSEL mode (Pico is mass-storage drive)
Esc (in menu)Return to current app
M (in menu)Activate USB Mass Storage for SD
R (in menu)Reboot Pico to BOOTSEL

4. SD Card Layout Reference

/                              ← FAT32 root
├── BOOT2040.UF2               ← UF2 Loader UI for RP2040 (Pico 1, Pico W)
├── BOOT2350.UF2               ← UF2 Loader UI for RP2350 (Pico 2, Pico 2 W)
├── pico1-apps/
│   ├── picomite_basic.uf2
│   ├── micropython.uf2
│   ├── ulisp.uf2
│   ├── nes_emu.uf2
│   └── …
└── pico2-apps/
    ├── picomite_rp2350.uf2
    ├── micropython_rp2350.uf2
    ├── peanutgb.uf2
    ├── picoware.uf2
    └── …

Format: FAT32 only (exFAT does not mount). Cards 64+ GB ship pre-formatted exFAT — reformat before first use.

Tail partition: factory layout has a 32 MB raw partition at the end of the card for FUZIX root. Don’t blow it away unless you don’t need FUZIX.

5. Side-Header Pinout (verified rev 2.0r3)

PinFunctionPico GPIO
13V3(DCDC1)
2GND
3UART0 TX / I²C0 SDAGP0
4UART0 RX / I²C0 SCLGP1
5SPI0 SCKGP2
6SPI0 TXGP3
7I²C0 SDA (alt)GP4
8I²C0 SCL (alt)GP5
9GPIOGP12
10GPIOGP13
11GPIOGP14
12GPIOGP15
13I²S DINGP20
14I²S BCLKGP21
15I²S LRCKGP22
16ADC2GP28
17VBUS (USB 5 V passthrough)(USB)
18RUN (active-low reset)(Pico RUN)

3V3 budget: ~200 mA continuous, ~400 mA peak. ESP-class loads need separate power.

6. Pico Pinout — All Variants

The Pico-shaped socket follows the standard Raspberry Pi Pico pinout. Pin 1 is on the silkscreened end opposite USB.

PinPico FunctionCarrier Use
1GP0 / UART0 TXSide-header pin 3
2GP1 / UART0 RXSide-header pin 4
3GNDCommon ground
4GP2 / SPI0 SCKSide-header pin 5
5GP3 / SPI0 TXSide-header pin 6
6GP4 / I²C0 SDAKBD I²C SDA (to STM32 0x1F)
7GP5 / I²C0 SCLKBD I²C SCL
8GND
9GP6Sometimes KBD I²C alt SDA
10GP7Sometimes KBD I²C alt SCL
11GP8(free)
12GP9SD CS
13GND
14GP10 / SPI1 SCKLCD SCK
15GP11 / SPI1 TXLCD MOSI
16GP12LCD D/C
17GP13LCD CS
18GND
19GP14LCD RST
20GP15(free)
21GP16 / SPI0 RXSD MISO
22GP17(free)
23GND
24GP18(free)
25GP19(free)
26GP20I²S DIN
27GP21I²S BCLK
28GND
29GP22I²S LRCK
30RUNCarrier reset / side-header pin 18
31GP26 / ADC0Audio L PWM
32GP27 / ADC1Audio R PWM
33AGNDAnalog ground
34GP28 / ADC2Side-header pin 16
35ADC_VREFPico’s internal Vref
363V3 OUT(Pico’s regulator output)
373V3_ENTie to 3V3 to enable
38GND
39VSYSPowered from carrier 3V3
40VBUSUSB 5 V from carrier

(Pico W / Pico 2 W: GP23-GP25 are CYW43439-internal, not exposed at the connector.)

7. Common Error Codes

ErrorWhat it meansFix
STM32CubeProgrammer: “Operation Exceeds Memory Limits”Binary larger than chip flash regionWrong binary; stop and revert
BOOTSEL drive doesn’t appearUSB cable charge-only OR Pico unflashedTry data cable; verify BOOTSEL button held
RPI-RP2 flashes but Pico won’t bootBootloader corruptedRe-flash UF2 Loader bootloader binary
Keyboard misses fast typingI²C clock too high or BIOS too oldDrop I²C to 10 kHz; upgrade BIOS to 1.2+
FUZIX hangs at boot32 MB tail partition missing/corruptRecreate with dd (Vol 4 §6.3)
LCD blank, backlight onLCD ribbon not seatedOpen case, re-seat FFC
Pico 2 W: WiFi associates but no trafficRegion not set in cyw43_arch_initPass CYW43_COUNTRY_USA (or your region)
Cannot connect via SWDSW107 in DFU mode OR cables swappedSet SW107 pos 1 OFF; verify SWDIO/SWCLK
Pi Zero rainbow screen foreverKernel panic, missing modulesReflash; check SD integrity
Lyra reboots randomlyCell voltage low / brownoutCharge or use external supply
apt upgrade runs out of spaceSD too small for full DebianUse 32 GB+ card
BME280 reads constant 0xFFFFWrong I²C address (0x76 vs 0x77)Check SDO pin tie
RFM95 SPI bus inactiveReset line never deassertedPulse RST low ~10 ms then high before init

8. Command Reference

8.1 picotool (Pico-side flashing)

picotool info                          # board info; BOOTSEL must be held
picotool load my_app.uf2 -fx           # flash and execute
picotool reboot                        # reboot Pico
picotool reboot -u -f                  # force into BOOTSEL from a running Pico
picotool save -t bin all my_dump.bin   # dump flash to file
picotool version                       # picotool version

8.2 mpremote (MicroPython REPL + filesystem)

mpremote                               # land at REPL (Ctrl-X to exit)
mpremote ls                            # list filesystem
mpremote cp host.py :remote.py         # upload
mpremote cp :remote.py host.py         # download
mpremote run script.py                 # run without copying
mpremote soft-reset                    # equivalent to Ctrl-D
mpremote reset                         # hardware reset
mpremote mount .                       # mount host cwd as /remote

8.3 OpenOCD + GDB (SWD via Pico Probe)

# Terminal 1 (server)
openocd -f interface/cmsis-dap.cfg -f target/rp2040.cfg
# (or rp2350.cfg for Pico 2)

# Terminal 2 (client)
arm-none-eabi-gdb my_app.elf
(gdb) target extended-remote :3333
(gdb) load
(gdb) monitor reset init
(gdb) b main
(gdb) c

8.4 STM32CubeProgrammer CLI (DFU/SWD)

# DFU connection
STM32_Programmer_CLI -c port=usb1 -d firmware.bin 0x08000000 -v -hardRst

# ST-LINK connection
STM32_Programmer_CLI -c port=SWD -d firmware.bin 0x08000000 -v -hardRst

# Full chip erase
STM32_Programmer_CLI -c port=SWD -e all

8.5 rpi-imager (headless flash for Pi Zero / RetroPie / etc.)

rpi-imager --cli ImageName /dev/sdX

Pre-configure SSH, WiFi, hostname via the GUI’s “Advanced options” gear icon (SSH keys, WiFi credentials, hostname, locale, keyboard). These land in /boot/firstrun.sh and execute on first boot.

8.6 rkdeveloptool (Lyra maskrom flashing)

# Hold BOOT button, plug USB-C, release BOOT — Lyra in maskrom
rkdeveloptool ld                 # list devices, expect "Maskrom Mode"
rkdeveloptool db MiniLoaderAll.bin
rkdeveloptool wl 0x0 update.img
rkdeveloptool rd                 # reboot

9. “Which UF2 Do I Need?” Decision Flowchart

What's your Pico module?

├─ Pico (RP2040) / Pico H / Pico W / Pico WH
│   ├─ Stack = PicoMite       → PicoMiteRP2040USBV6.02.01.uf2
│   ├─ Stack = MicroPython    → LofiFren build for Pico W (or generic for non-W)
│   ├─ Stack = uLisp          → ulisp-picocalc-rp2040.uf2 (BIOS 1.2 only)
│   ├─ Stack = picolua        → picolua-rp2040.uf2
│   ├─ Stack = NES emulator   → infonesplus-pico1.uf2
│   └─ Stack = bootloader     → bootloader_pico.uf2 + BOOT2040.UF2 on SD

└─ Pico 2 / Pico 2 H / Pico 2 W / Pico 2 WH / Pimoroni Plus 2
    ├─ Stack = PicoMite       → PicoMiteRP2350USBV6.02.01.uf2
    ├─ Stack = MicroPython    → LofiFren build for Pico 2 / Pico 2 W
    ├─ Stack = uLisp          → not yet (RP2040 only as of v1.1)
    ├─ Stack = picolua        → picolua-rp2350.uf2
    ├─ Stack = NES emulator   → infonesplus-pico2.uf2
    ├─ Stack = Game Boy       → peanutgb-pico2.uf2 (RP2350 only)
    ├─ Stack = Picoware       → picoware-pico2w.uf2
    └─ Stack = bootloader     → bootloader_pico2.uf2 + BOOT2350.UF2 on SD

10. Pico SDK CMakeLists Boilerplate

Drop into a fresh project directory:

cmake_minimum_required(VERSION 3.13)
include($ENV{PICO_SDK_PATH}/external/pico_sdk_import.cmake)

project(picocalc_app C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)

pico_sdk_init()

add_executable(picocalc_app
    main.c
    picocalc_lcd.c
    picocalc_keyboard.c
)

target_link_libraries(picocalc_app
    pico_stdlib
    hardware_spi
    hardware_i2c
    hardware_pwm
    hardware_pio
    hardware_dma
)

pico_enable_stdio_usb(picocalc_app 1)
pico_enable_stdio_uart(picocalc_app 0)
pico_add_extra_outputs(picocalc_app)

Build:

mkdir build && cd build
cmake -DPICO_BOARD=pico .. && ninja        # for Pico 1
cmake -DPICO_BOARD=pico2 .. && ninja       # for Pico 2 (Arm)
cmake -DPICO_BOARD=pico2 -DPICO_PLATFORM=rp2350-riscv .. && ninja  # Pico 2 RISC-V

11. MicroPython picocalc Module Quick Reference

from picocalc import display, keyboard, audio, sd, battery

# DISPLAY
display.fill(0)
display.pixel(160, 160, 0xFFFF)
display.rect(0, 0, 320, 30, 0xF800)
display.line(0, 0, 320, 320, 0x07E0)
display.text("Hello", 10, 10, 0xFFFF)
display.show()

# KEYBOARD
key = keyboard.read()
key = keyboard.wait()
keyboard.set_repeat(initial=300, rate=50)

# AUDIO
audio.tone(440, 100)
audio.play("song.wav")

# SD CARD
sd.mount()
sd.umount()
files = sd.listdir("/sd/programs")

# BATTERY (via STM32 → AXP2101)
pct = battery.percent()
mv = battery.voltage_mv()
ch = battery.charging()

# BACKLIGHT
display.backlight(200)
keyboard.backlight(100)

12. PicoMite Useful Commands

' Display
CLS
COLOUR RGB(WHITE), RGB(BLACK)
TEXT 10, 10, "Hello", "LB", 4, 1
LINE 0,0 TO 319,319
CIRCLE 160, 160, 50, 1, 1, RGB(BLUE)

' Sound
PLAY TONE 440, 200, 50
PLAY MOD "song.mod"

' Files
SAVE "myprog.bas"
LOAD "myprog.bas"
RUN "myprog"
EDIT

' Multitasking
DIM SHARED counter = 0
INTERRUPT ON 1000, MyTimer
SUB MyTimer
  counter = counter + 1
END SUB

' GPIO / I²C / SPI
SETPIN GP12, OUT
PIN(12) = 1
I2C OPEN 100, 1000
I2C WRITE 0x76, 0, 1, &H20
I2C READ 0x76, 0, 1, b%
I2C CLOSE

13. AT Command Quick-Reference (ESP-01S)

AT                          → OK                   (sanity check)
AT+RST                      → ready                (reset)
AT+GMR                      → version dump
AT+CWMODE=1                 → station mode
AT+CWLAP                    → list APs
AT+CWJAP="ssid","pass"      → join
AT+CIFSR                    → my IP
AT+CIPSTART="TCP","host",80 → open socket
AT+CIPSEND=N                → send N bytes (then send the bytes)
AT+CIPCLOSE                 → close socket
AT+RESTORE                  → factory reset
AT+CIOBAUD=460800           → change baud (only effective on AT-1.7+)

14. Hamlib Rig Model Codes (most common)

Model codeRigNotes
1Hamlib Dummyfor testing
2Hamlib NetRigctlTCP rigctld client
234Yaesu FT-991 / FT-991Aboth share this code
230Yaesu FT-857
235Yaesu FT-DX10
240Icom IC-7300CI-V address 0x94 default
241Icom IC-7610
245Icom IC-9700
211Elecraft KX2
212Elecraft KX3
213Elecraft K3
121Kenwood TS-2000
168Kenwood TS-590S/SG
170Kenwood TS-890S

rigctl -l on the Pi Zero / Lyra prints the full list (~400 entries).

15. I²C Address Quick-Reference (PicoCalc bus + side-header devices)

AddressDeviceNotes
0x1FSTM32 keyboard MCUthe carrier’s KBD I²C slave
0x24PN532 NFCdev shield
0x29TSL2591 light sensoroptional
0x39TCS34725 RGB sensoroptional
0x3CSSD1306 OLED 0.96”optional aux display
0x3DSSD1306 OLED alternatejumper-selectable
0x40INA219 current sensoroptional
0x48ADS1115 16-bit ADCoptional
0x68DS3231 RTCdev shield
0x68MPU6050 / MPU9250 IMUconflicts with DS3231 — use bus mux
0x76BME280 / BMP280dev shield (SDO pulled GND)
0x77BME280 / BMP280 alt(SDO pulled 3V3)

Use i2cdetect -y 1 on Linux (Pi Zero / Lyra) or PicoMite’s I2C SCAN to enumerate.

16. Build-and-Flash Recipes Per Stack

16.1 PicoMite (no build — just flash)

  1. Download zip from https://geoffg.net/picomite.html.
  2. Pick PicoMiteRP2040USBV6.02.01.uf2 (or RP2350USB for Pico 2).
  3. BOOTSEL + drag-and-drop OR copy to pico*-apps/ on SD.

16.2 MicroPython (LofiFren, no build)

  1. Download UF2 from https://github.com/LofiFren/PicoCalc/releases.
  2. BOOTSEL + drag-and-drop. REPL on USB CDC at 115200.

16.3 Pico SDK app (build from source)

git clone https://github.com/raspberrypi/pico-sdk.git
cd pico-sdk && git submodule update --init && export PICO_SDK_PATH=$PWD
cd ../my_app && mkdir build && cd build
cmake -DPICO_BOARD=pico .. && ninja

16.4 Pico SDK + Rust (embassy-rp)

rustup target add thumbv6m-none-eabi
rustup target add thumbv8m.main-none-eabihf
cargo install elf2uf2-rs
cargo new --bin my_app && cd my_app
cargo build --release --target thumbv8m.main-none-eabihf
elf2uf2-rs target/thumbv8m.main-none-eabihf/release/my_app

16.5 picolua

Pre-built UF2 from https://github.com/dreamcat4/picolua/releases. Drop on BOOTSEL.

16.6 Pi Zero kernel module rebuild

git clone https://github.com/clockworkpi/picocalc-linux-modules.git
cd picocalc-linux-modules
make
sudo make install
sudo modprobe picocalc-display picocalc-keyboard

16.7 Lyra Buildroot full-image rebuild

git clone https://github.com/LuckfoxTECH/luckfox-pico.git
cd luckfox-pico
./build.sh lunch
./build.sh

17. Connector Keying Cheatsheet

ConnectorKeyingMating notes
Battery JST (carrier)2-pin polarized JST-SMred = +, black = − (verify silkscreen!)
Speaker JST × 22-pin JST-PHnot polarity-sensitive
LCD FFC (24-pin)flat flex; latch lifts upwardcontacts face DOWN when seated
Keyboard FFCflat flex; latch lifts upwardcontacts face DOWN
SD slotpush-push, contacts face UP when card insertedlabel-side down
USB-Csymmetrical, no orientationdata + 5 V through polyfuse
Side-header2×9 2.54 mm; pin 1 marked on silkscreenaccessories should orient header on left
Pico debug (Pico H/WH)SM03B-SRSS-TB 3-pin keyedmatches official Pico Probe cable

18. BOM Quick-Pick (one-pager)

For a working PicoCalc + a flexible accessory loadout:

ItemSourcePrice
PicoCalc kitClockworkPi$75
Pico 2 WHMouser$7
Pico H (spare for low-power use)Mouser$5
2× Samsung 35E 1865018650batterystore$14
32 GB SanDisk Ultra microSDAmazon$7
Raspberry Pi Debug ProbeMouser$12
PCM5102A I²S DAC breakoutAliExpress$3
ESP-01S WiFi moduleAliExpress$3
RFM95W (915 MHz)LCSC$9
CC1101 moduleAliExpress$3
Subtotal — full kit$138

19. Minimum Useful Setup Steps (first 30 minutes with the kit)

  1. Insert cells with correct polarity. Verify silkscreen + and .
  2. Insert factory SD card. Don’t reformat yet.
  3. Press power button (~1 s). Splash should appear.
  4. Hold Up while powering on. Multi-boot menu appears.
  5. Select PicoMite. Land at the > prompt.
  6. Type PRINT "Hello" to verify keyboard.
  7. Type EDIT to enter the program editor; type a small program; F1 to save and exit; type RUN.
  8. Press Esc to interrupt; type OPTION LCD CALIBRATE to tune the gamma.
  9. Power off, swap to a different module if you have one to verify the socket and the multi-boot system work.
  10. Now read Volume 1 to plan your project direction.

20. Gotcha-and-Fix Matrix

GotchaWhy it bitesQuick fix
Charge-only USB cableNo data lines → no BOOTSEL driveUse a known-data cable
BOOTSEL held after USB-C plugPico already enumerated normallyPower-cycle, hold BOOTSEL before plug
64 GB+ SD pre-formatted exFATUF2 Loader can’t mountReformat FAT32 with Rufus / fat32format
Pico W with PICO_BOARD=picoCYW43 driver not linked-DPICO_BOARD=pico_w in cmake
Cells reversed even brieflyAXP2101 ESD diodes degradeAlways verify silkscreen before installing
Big-flash app overwriting bootloader (Pico 1)App ignored magic-number flash limitUse PicoCalc-aware build of the stack
I²C bus stuck at 100 kHzSTM32 can’t keep upDrop I²C clock to 10 kHz
boot/config.txt missing dtoverlay (Pi)Hardware not detectedAdd dtoverlay=hifiberry-dac etc.
WSJT-X audio device mismatchLinux ALSA renamed devicesCheck arecord -l, point WSJT-X at right card
WiFi config in headless image/boot/wpa_supplicant.conf unsupported in BookwormUse rpi-imager’s “Advanced options”
CAT cable cross-connectedRX/TX swappedTry the other cable, or rewire RX↔TX
RFM95 silent on receiveRST pulled low at bootDrive RST high in init

21. Essential URLs

WhatWhere
Schematichttps://github.com/clockworkpi/PicoCalc/blob/master/clockwork_Mainboard_V2.0_Schematic.pdf
Forumhttps://forum.clockworkpi.com/c/picocalc/
GitHubhttps://github.com/clockworkpi/PicoCalc
DeepWikihttps://deepwiki.com/clockworkpi/PicoCalc
PicoMitehttps://geoffg.net/picomite.html
LofiFren MicroPythonhttps://github.com/LofiFren/PicoCalc
UF2 Loaderhttps://github.com/pelrun/uf2loader
Picowarehttps://github.com/jblanked/Picoware
Pico SDKhttps://github.com/raspberrypi/pico-sdk
MicroPython downloadshttps://micropython.org/download/RPI_PICO/
3D-printable backshttps://www.printables.com/?q=picocalc
18650 cells (trusted)https://www.18650batterystore.com/
STM32CubeProgrammerhttps://www.st.com/en/development-tools/stm32cubeprog.html
Raspberry Pi Imagerhttps://www.raspberrypi.com/software/
Kali Linux ARMhttps://www.kali.org/get-kali/#kali-arm
WSJT-Xhttps://wsjt.sourceforge.io/
fldigihttp://www.w1hkj.com/
hamlibhttps://hamlib.github.io/
KiCadhttps://www.kicad.org/
JLCPCBhttps://jlcpcb.com/
LCSChttps://www.lcsc.com/
Mouserhttps://www.mouser.com/
Luckfoxhttps://www.luckfox.com/
Luckfox wikihttps://wiki.luckfox.com/

22. Volume-by-Volume Quick Index

NeedVolumeSection
Why pick Pico 2 vs Pi Zero vs Lyra?Vol 1§3
Schematic of carrier boardVol 2Chapter 13
AXP2101 power tree detailsVol 2Chapter 3
STM32 BIOS I²C protocolVol 2Chapter 4
Which Pico variant to buyVol 3§3
3D-printable backsVol 3§3.5
BIOS update proceduresVol 4Chapter 5
UF2 Loader setupVol 4Chapter 7
SD card layoutVol 4Chapter 6
PicoMite first programVol 5§11.1
MicroPython first programVol 5§11.2
Display and keyboard from CVol 6Chapter 13
PIO worked exampleVol 6§14.2
Audio fix (I²S DAC)Vol 6§15.3
Wire up an ESP-01SVol 7Chapter 3
Build a custom adapter PCBVol 7Chapter 9 / 10
Pi Zero bring-upVol 8Chapter 5
WSJT-X / fldigi setupVol 8§10.2 / §10.3
Lyra installationVol 9Chapter 6
M0 co-processor + rpmsgVol 9Chapter 7
PicoCalc as graphing calculatorVol 10§10.1
Game emulation per platformVol 10§10.2
Sub-GHz with CC1101Vol 11§11.3.2
Ham audio interface schematicVol 11§2.4 (this volume Fig 2.4)
PICO-8 install + first cartVol 13Chapter 9