Releases: Bryan1club/micropython
Releases · Bryan1club/micropython
Release list
PICO_COMPUTER_3 v0.017 -- Bluetooth speaker + USB drive support
Pico Computer 3 -- v0.017 (draft release notes)
What's new
Bluetooth Classic A2DP (stream audio to a speaker)
- BLE activates automatically at boot; the board scans in the background and
auto-connects to a Bluetooth speaker as soon as one is in pairing range --
no manual steps needed if a speaker is already paired/discoverable. - New
BT SPEAKERpage: manual scan/connect/disconnect, test tone. - Confirmed working alongside WiFi -- both stay connected together, which
matters if you're running more than one board (WiFi is how boards find
each other).
USB flash drive support (machine.USBDrive, mounted at /usb)
- Hot-pluggable, FAT32. Works alongside a keyboard/mouse on the same hub.
- Known limitation, found and fixed this build: this board's USB host chip
can only complete a single 512-byte sector per USB transaction --
multi-sector reads used to silently fail. All USB reads/writes are now
single-sector-safe, at some cost to raw throughput on very large folders. - Formatting a drive over 32GB to FAT32 has to be done from the board
itself (Windows refuses FAT32 above 32GB in its own tools):import machine, vfs d = machine.USBDrive() vfs.VfsFat.mkfs(d) vfs.mount(vfs.VfsFat(d), '/usb')
- Known open issue: on some hub/drive combinations, the USB connection
can drop and reconnect unexpectedly during heavy use, occasionally failing
to remount automatically. A retry-with-backoff was added this build, plus
real error logging (previously silent), but the underlying cause isn't
fully nailed down yet -- if you hit "USB drive mount failed" in the
console, a physical unplug/replug clears it.
Music Player page
- Browse
/sdor/usbfor.mp3/.wav/.flac, one-click play, playlists
(add/remove/save/load/next/prev). Decoding is on-device, streamed straight
to a connected Bluetooth speaker -- no PC-side conversion needed. - Large folders (100s of files) now load progressively (first ~10 entries
show immediately, more load as you scroll) instead of blocking on the
whole folder up front.
Resilience / recovery
- Ctrl-C on a physical USB keyboard now reliably interrupts a stuck
operation (e.g. a long USB read) within about a second, system-wide --
no need to power-cycle the board to recover. - Keyboard-only list navigation (UP/DOWN/ENTER) as a fallback everywhere a
mouse might be temporarily unresponsive.
Known issues going into this release
- USB drive connection stability under sustained use is still being
chased -- see above. Fine for casual use; a production console selling
10+ units should treat USB storage as "usually works, has a recovery
path" rather than "rock solid" for now. - No resampler in the audio pipeline -- a file whose native sample rate
doesn't match what the speaker negotiated will play at the wrong
pitch/speed. Not an issue for typical 44.1kHz files.
PICO_COMPUTER_3 -- USB flash drive support (mount/read/write confirmed on hardware)
Adds USB flash drive support to UKTailwind's PICO_COMPUTER_3 firmware (v0.16 base) -- plug a USB stick into the host port and it mounts at /usb, exactly like an SD card mounts at /sd.
Confirmed working on real hardware, 2026-08-26:
- A USB stick auto-mounts at
/usbon boot / on plug-in, with a console message and no manual steps. os.listdir("/usb")lists real files correctly.- Both read and write confirmed (wrote a test file, read it back correctly).
- No regressions seen in existing keyboard, mouse, Wi-Fi, or HDMI behaviour.
What's in it:
machine.USBDrive: a block device mountable withvfs.VfsFat, the USB counterpart tomachine.SDCard.pcusb.py: mounts/unmounts/usbautomatically on connect/disconnect (event-driven, unlike the SD card's poll -- USB gives a real hardware signal).- Small
keyboard.inject_report()/mouse.inject_report()groundwork hooks for a future Bluetooth keyboard/mouse feature (not yet built/wired up -- these just let a non-USB input source feed the same decoders USB input already uses).
Submitted upstream to UKTailwind as micropython PR #1.
To flash: hold BOOTSEL, plug the board in over USB, release BOOTSEL once it shows up as a drive named RPI-RP2, then copy the attached firmware.uf2 onto it. It reboots into the new firmware automatically. Back up anything important on the flash filesystem first regardless.