Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 11:10 27 Apr 2026 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : Is it possible to ‘backup’ everything in a PicoMite into a single file

Author Message
WhiteWizzard
Guru

Joined: 05/04/2013
Location: United Kingdom
Posts: 2966
Posted: 01:35pm 24 Apr 2026
Copy link to clipboard 
Print this post

Probably a question for Peter, but will ask here hoping someone else may have some experience.

I have an almost finished product that is based around a PicoMite (standard RP2350 firmware). Throughout development, I updated the firmware (typically to test Peter’s latest set of ‘goodies’), and OPTIONs were tweaked as I adjusted things. I also have a data file stored in the built-in flash drive that is used by my code.

If I were to build another unit, then I would manually do the following:

1. Nuke Pico
2. Load standard RP2350 firmware (.uf2)
3. Configure OPTIONs manually (TeraTerm into Pico)
4. Load data-file into Pico (TeraTerm)
5. Save data file to drive A:
6. Load program code into Pico (TeraTerm)
7. RUN program…..

Doing this as a one-off is fine, but the question is to ask if there is any way to take a ‘snapshot’ of everything in a configured Pico, generate a single file (.uf2?), and then simply load that into a ‘blank’ Pico so that everything is ‘pre-configured’.

Hope this makes sense; and appreciate any help pointing me towards a solution……
 
karlelch

Guru

Joined: 30/10/2014
Location: Germany
Posts: 324
Posted: 01:43pm 24 Apr 2026
Copy link to clipboard 
Print this post

Hi WhiteWizzard

Some time ago, I wrote a Python tool („picom“) to backup and restore a picomite installation. It saves everything in a folder on the connected PC (not a single file, though). I use it for my projects, maybe you want to have a look.

https://github.com/teuler/picom

Best
Thomas
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 11247
Posted: 01:53pm 24 Apr 2026
Copy link to clipboard 
Print this post

I haven't done it but Geoff certainly has and it is definitely doable to create a uf2 ready to go.
 
WhiteWizzard
Guru

Joined: 05/04/2013
Location: United Kingdom
Posts: 2966
Posted: 01:57pm 24 Apr 2026
Copy link to clipboard 
Print this post

Thanks Peter. I think I may have read something in his original Pico game console about this so will have a look when back home.

Maybe Geoff can steer me on this if he sees this thread.
 
Frank N. Furter
Guru

Joined: 28/05/2012
Location: Germany
Posts: 1083
Posted: 04:47pm 24 Apr 2026
Copy link to clipboard 
Print this post

We used to have a program here that allowed you to read out an RP2040 and use it to generate a uf2 file.
I'm not sure if that works with a RP2350, though...

Frank
 
toml_12953
Guru

Joined: 13/02/2015
Location: United States
Posts: 607
Posted: 06:48pm 24 Apr 2026
Copy link to clipboard 
Print this post

  karlelch said  Hi WhiteWizzard

Some time ago, I wrote a Python tool („picom“) to backup and restore a picomite installation. It saves everything in a folder on the connected PC (not a single file, though). I use it for my projects, maybe you want to have a look.

https://github.com/teuler/picom

Best
Thomas


I got no errors in any of the install steps.
Even though I did the pip install pyserial and even tried pip install serial,
I get

ModuleNotFoundError: No module named 'serial'


I use Win 11.

Footnote added 2026-04-25 05:27 by toml_12953
Ignore the above. I got out of PowerShell and back in then all the modules loaded properly.

The list of serial ports only lists 5 although it finds 14. No big deal since the PicoCalc is always on COM5.

I kept editing picom.py and not getting anything to work. Finally I saw that I have to change picom.toml to actually change the parameters. Everything works, now.

picom.toml is an easy name for me to remember.

Tom Lake
 
ebbandflow
Regular Member

Joined: 31/08/2023
Location: United States
Posts: 43
Posted: 07:45pm 24 Apr 2026
Copy link to clipboard 
Print this post

I have not tried this (yet) but I read about picotool here:
https://www.thebackshed.com/forum/ViewTopic.php?FID=16&TID=18048
 
toml_12953
Guru

Joined: 13/02/2015
Location: United States
Posts: 607
Posted: 08:05pm 24 Apr 2026
Copy link to clipboard 
Print this post

  karlelch said  Hi WhiteWizzard

Some time ago, I wrote a Python tool („picom“) to backup and restore a picomite installation. It saves everything in a folder on the connected PC (not a single file, though). I use it for my projects, maybe you want to have a look.

https://github.com/teuler/picom

Best
Thomas


I'm getting close but now I get this (I'm showing just the first part):
PicoM v0.1.9 (beta)
 Save options to "202604241532.opt" file ...
 Save library, if exists, to `202604241532.lib` ...
Retrieving file tree from `B:` :
 Parsing `B:/` ...
Warning: Entry #0 (`B:/`) not recognized.
Warning: Entry #1 (`ine.mp3`) not recognized.
Warning: Entry #4 (`s`) not recognized.
Warning: Entry #6 (`bas`) not recognized.
Warning: Entry #8 (`e_johnybot.nes`) not recognized.
Warning: Entry #11 (`as`) not recognized.
Warning: Entry #13 (`as`) not recognized.
Warning: Entry #14 (`11:47 22-04-2026        383  Going Up.b`) not recognized.
Warning: Entry #15 (`as`) not recognized.
Warning: Entry #19 (`s`) not recognized.
Warning: Entry #21 (`as`) not recognized.
Warning: Entry #23 (`txt`) not recognized.
13:59 27-11-2023       2408  Lemmings.t`) not recognized.
Warning: Entry #25 (`xt`) not recognized.
Warning: Entry #29 (`Test.bas`) not recognized.
Warning: Entry #35 (`s`) not recognized.
Warning: Entry #39 (`mp`) not recognized.
Warning: Entry #41 (`as`) not recognized.
23:22 10-06-2025        135  savage.bas`) not recognized.
Warning: Entry #51 (`.bas`) not recognized.
Warning: Entry #53 (`02R.bas`) not recognized.
Warning: Entry #55 (`.bas`) not recognized.
Warning: Entry #57 (`bas`) not recognized.
Warning: Entry #60 (`s.txt`) not recognized.
 
Geoffg

Guru

Joined: 06/06/2011
Location: Australia
Posts: 3359
Posted: 10:40pm 24 Apr 2026
Copy link to clipboard 
Print this post

This describes how I do it: Instructions.pdf
Geoff Graham - http://geoffg.net
 
WhiteWizzard
Guru

Joined: 05/04/2013
Location: United Kingdom
Posts: 2966
Posted: 06:00am 25 Apr 2026
Copy link to clipboard 
Print this post

Many-Thanks for all the replies.

Geoff - I will try following your clear instructions to generate an .uf2 file over the weekend; hopefully it will work for me here and generate what is needed.
Thanks again.
 
phil99

Guru

Joined: 11/02/2018
Location: Australia
Posts: 3163
Posted: 06:27am 25 Apr 2026
Copy link to clipboard 
Print this post

  Quote  hopefully it will work
Geoff's "clear instructions" are exactly that. Worked first try.

Worth including in the "Extra Documentation" folder.
Edited 2026-04-25 16:30 by phil99
 
karlelch

Guru

Joined: 30/10/2014
Location: Germany
Posts: 324
Posted: 04:46pm 25 Apr 2026
Copy link to clipboard 
Print this post

Hi WhiteWizzard,

glad you found a solution with the uf2 files. Sorry for the trouble with picom.

I updated picom (v0.1.11) and tested it for my use case but not with b:\ as my systems usually don't have an SD card ... I will look into that in the future.

Best
Thomas
 
toml_12953
Guru

Joined: 13/02/2015
Location: United States
Posts: 607
Posted: 03:46am 26 Apr 2026
Copy link to clipboard 
Print this post

  karlelch said  Hi WhiteWizzard

Some time ago, I wrote a Python tool („picom“) to backup and restore a picomite installation. It saves everything in a folder on the connected PC (not a single file, though). I use it for my projects, maybe you want to have a look.

https://github.com/teuler/picom

Best
Thomas


Even the 0.1.11 version seems to have a problem with subdirectories. It thinks many (but not all) files are in a different subdirectory than they actually are. The ft (filetree) command shows many files under the wrong subdirectory and the backup command can't find those files.
 
EDNEDN
Senior Member

Joined: 18/02/2023
Location: United States
Posts: 290
Posted: 04:14am 26 Apr 2026
Copy link to clipboard 
Print this post

  toml_12953 said  
Even the 0.1.11 version seems to have a problem with subdirectories. It thinks many (but not all) files are in a different subdirectory than they actually are. The ft (filetree) command shows many files under the wrong subdirectory and the backup command can't find those files.


You are better off using PicoTools and generating a .UF2 to save your installation.    I use a similar sequence of commands that Geoffg's instructions describe to backup a PicoMite all the time.   You can take a snap shot of everything in your Pico and either restore that Pico back to that state or clone that Pico unto another Pico.    

It is a very clean and reliable way to get everything in the Pico.
Edited 2026-04-26 14:14 by EDNEDN
 
karlelch

Guru

Joined: 30/10/2014
Location: Germany
Posts: 324
Posted: 05:51am 26 Apr 2026
Copy link to clipboard 
Print this post

  toml_12953 said  Even the 0.1.11 version seems to have a problem with subdirectories. It thinks many (but not all) files are in a different subdirectory than they actually are. The ft (filetree) command shows many files under the wrong subdirectory and the backup command can't find those files.


Hi toml_12953,

could you give me an example? On A: I have not problems with directories (see below).

In any case, as I said before, the uf2 solution seems ideal for WhiteWizzard's use case. I often want to change the firmware - trying out the latest versions - and then want to make a backup that I can restore after the firmware update.

Best
Thomas

Restore:
(picom) PS F:\Dropbox\__GIT\picom> python picom.py -t -s "COM5" -n ".\miiha_202604251745\" r
PicoM v0.1.11 (beta)
# Getting command line arguments ... done.
Trying to kill open terminal ...
# Checking for PicoMite ... done.
Retrieving key data from PicoMite ....... done.
# Check drive ...
# Locate backup ...
Retrieving file tree from `F:\Dropbox\__GIT\picom\miiha_202604251745` :
 Parsing `F:\Dropbox\__GIT\picom\miiha_202604251745` ...
 Parsing `F:\Dropbox\__GIT\picom\miiha_202604251745\vl53l5cx` ...
 Parsing `F:\Dropbox\__GIT\picom\miiha_202604251745\vl53l5cx\sub2` ...
 Parsing `F:\Dropbox\__GIT\picom\miiha_202604251745\vl53l5cx\sub_directory` ...
 Parsing `F:\Dropbox\__GIT\picom\miiha_202604251745\vl53l5cx\sub2\sub3` ...
13 file(s) and 4 folder(s) found.
Restoring backup `F:\Dropbox\__GIT\picom\miiha_202604251745` to `PicoMite` @`COM5` :
Continue (y/n)? y
Kill everything on drive `A:` (y/n)? y
 Formatting drive `A:` ...
# Sending `drive "A:/FORMAT"` ...
# `.fm` : Size: 128 bytes (= 1 packages)
# Send `xmodem receive ".fm"` ...
Restore [==================================================] 100% `.fm` - complete (128 of 128 bytes).
# `202604251745.lib` : Size: 26368 bytes (= 206 packages)
# Send `xmodem receive "202604251745.lib"` ...
Restore [==================================================] 100% `202604251745.lib` - complete (26368 of 26368 bytes).
# `bootcount` : Size: 128 bytes (= 1 packages)
# Send `xmodem receive "bootcount"` ...
Restore [==================================================] 100% `bootcount` - complete (128 of 128 bytes).
# `lib_vl53.bas` : Size: 40192 bytes (= 314 packages)
# Send `xmodem receive "lib_vl53.bas"` ...
Restore [==================================================] 100% `lib_vl53.bas` - complete (40192 of 40192 bytes).
# `miiha.bas` : Size: 32896 bytes (= 257 packages)
# Send `xmodem receive "miiha.bas"` ...
Restore [==================================================] 100% `miiha.bas` - complete (32896 of 32896 bytes).
# `tof.dat` : Size: 2048 bytes (= 16 packages)
# Send `xmodem receive "tof.dat"` ...
Restore [==================================================] 100% `tof.dat` - complete (2048 of 2048 bytes).
Make folder `vl53l5cx` ...
# Send `mkdir "vl53l5cx"` ...
# `vl53l5cx/firmware.bin` : Size: 86016 bytes (= 672 packages)
# Send `xmodem receive "vl53l5cx/firmware.bin"` ...
Restore [==================================================] 100% `vl53l5cx/firmware.bin` - complete (86016 of 86016 bytes).
# `vl53l5cx/nvm_cmd.bin` : Size: 128 bytes (= 1 packages)
# Send `xmodem receive "vl53l5cx/nvm_cmd.bin"` ...
Restore [==================================================] 100% `vl53l5cx/nvm_cmd.bin` - complete (128 of 128 bytes).
Make folder `vl53l5cx/sub2` ...
# Send `mkdir "vl53l5cx/sub2"` ...
Make folder `vl53l5cx/sub_directory` ...
# Send `mkdir "vl53l5cx/sub_directory"` ...
# `vl53l5cx/xtalk.bin` : Size: 896 bytes (= 7 packages)
# Send `xmodem receive "vl53l5cx/xtalk.bin"` ...
Restore [==================================================] 100% `vl53l5cx/xtalk.bin` - complete (896 of 896 bytes).
# `vl53l5cx/sub2/202604251745.opt` : Size: 896 bytes (= 7 packages)
# Send `xmodem receive "vl53l5cx/sub2/202604251745.opt"` ...
Restore [==================================================] 100% `vl53l5cx/sub2/202604251745.opt` - complete (896 of 896 bytes).
Make folder `vl53l5cx/sub2/sub3` ...
# Send `mkdir "vl53l5cx/sub2/sub3"` ...
# `vl53l5cx/sub_directory/202604251745_filetree.txt` : Size: 206 bytes (= 2 packages)
# Send `xmodem receive "vl53l5cx/sub_directory/202604251745_filetree.txt"` ...
Restore [==================================================] 100% `vl53l5cx/sub_directory/202604251745_filetree.txt` - complete (256 of 206 bytes).
# `vl53l5cx/sub_directory/202604251745_options.txt` : Size: 291 bytes (= 2 packages)
# Send `xmodem receive "vl53l5cx/sub_directory/202604251745_options.txt"` ...
Restore [==================================================] 100% `vl53l5cx/sub_directory/202604251745_options.txt` - complete (384 of 291 bytes).
# `vl53l5cx/sub2/sub3/conf.bin` : Size: 1024 bytes (= 8 packages)
# Send `xmodem receive "vl53l5cx/sub2/sub3/conf.bin"` ...
Restore [==================================================] 100% `vl53l5cx/sub2/sub3/conf.bin` - complete (1024 of 1024 bytes).
Restore library from `202604251745.lib` (y/n)? n
Backup `F:\Dropbox\__GIT\picom\miiha_202604251745` successfully restored.
 13 file(s) copied, 4 folder(s) created; 0 failed
 2 backup management files ignored
Trying to launch terminal programm ...
# Launching `C:\Program Files (x86)\teraterm5\ttermpro.exe` ...
# Done.


Check:
(picom) PS F:\Dropbox\__GIT\picom> python picom.py -t -s "COM5" ft
PicoM v0.1.11 (beta)
# Getting command line arguments ... done.
Trying to kill open terminal ...
# Checking for PicoMite ... done.
Retrieving file tree from `A:` :
# Sending `files "A:/"` ...
# Sending `files "A:/vl53l5cx/"` ...
# Sending `files "A:/vl53l5cx/sub2/"` ...
# Sending `files "A:/vl53l5cx/sub2/sub3/"` ...
# Sending `files "A:/vl53l5cx/sub_directory/"` ...
13 file(s) and 4 folder(s) found.
Content of `A:` :
├──vl53l5cx
│  ├──sub2
│  │  ├──sub3
│  │  │  └──conf.bin
│  │  └──202604251745.opt
│  ├──sub_directory
│  │  ├──202604251745_filetree.txt
│  │  └──202604251745_options.txt
│  ├──firmware.bin
│  ├──nvm_cmd.bin
│  └──xtalk.bin
├──.fm
├──202604251745.lib
├──bootcount
├──lib_vl53.bas
├──miiha.bas
└──tof.dat
Trying to launch terminal programm ...
# Launching `C:\Program Files (x86)\teraterm5\ttermpro.exe` ...
# Done.


Backup:
(picom) PS F:\Dropbox\__GIT\picom> python picom.py -t -s "COM5" -n "miiha" b
PicoM v0.1.11 (beta)
# Getting command line arguments ... done.
Trying to kill open terminal ...
# Checking for PicoMite ... done.
# Check drive ...
# Create unique local folder for backup ...
# Get option list ...
# Sending `option list` ...
 Save options to "202604260741.opt" file ...
# Sending `option disk save "202604260741.opt"` ...
 Save library, if exists, to `202604260741.lib` ...
# Sending `library disk save "202604260741.lib"` ...
Retrieving file tree from `A:` :
 Parsing `A:/` ...
# Sending `files "A:/"` ...
# Sending `files "A:/vl53l5cx/"` ...
# Sending `files "A:/vl53l5cx/sub2/"` ...
# Sending `files "A:/vl53l5cx/sub2/sub3/"` ...
# Sending `files "A:/vl53l5cx/sub_directory/"` ...
15 file(s) and 4 folder(s) found.
Create backup of PicoMite @`COM5` :
 Backup folder : `F:\Dropbox\__GIT\picom\miiha_202604260741`
Create local folder `F:\Dropbox\__GIT\picom\miiha_202604260741\vl53l5cx`
Create local folder `F:\Dropbox\__GIT\picom\miiha_202604260741\vl53l5cx\sub2`
Create local folder `F:\Dropbox\__GIT\picom\miiha_202604260741\vl53l5cx\sub2\sub3`
# `vl53l5cx/sub2/sub3/conf.bin` : Size: 1024 bytes (= 8 packages)
# Send `xmodem s "vl53l5cx/sub2/sub3/conf.bin"` ...
Backup [==================================================] 100% `vl53l5cx/sub2/sub3/conf.bin` - complete (1024 of 1024 bytes).
# `vl53l5cx/sub2/202604251745.opt` : Size: 896 bytes (= 7 packages)
# Send `xmodem s "vl53l5cx/sub2/202604251745.opt"` ...
Backup [==================================================] 100% `vl53l5cx/sub2/202604251745.opt` - complete (896 of 896 bytes).
Create local folder `F:\Dropbox\__GIT\picom\miiha_202604260741\vl53l5cx\sub_directory`
# `vl53l5cx/sub_directory/202604251745_filetree.txt` : Size: 256 bytes (= 2 packages)
# Send `xmodem s "vl53l5cx/sub_directory/202604251745_filetree.txt"` ...
Backup [==================================================] 100% `vl53l5cx/sub_directory/202604251745_filetree.txt` - complete (256 of 256 bytes).
# `vl53l5cx/sub_directory/202604251745_options.txt` : Size: 384 bytes (= 3 packages)
# Send `xmodem s "vl53l5cx/sub_directory/202604251745_options.txt"` ...
Backup [==================================================] 100% `vl53l5cx/sub_directory/202604251745_options.txt` - complete (384 of 384 bytes).
# `vl53l5cx/firmware.bin` : Size: 86016 bytes (= 672 packages)
# Send `xmodem s "vl53l5cx/firmware.bin"` ...
Backup [==================================================] 100% `vl53l5cx/firmware.bin` - complete (86016 of 86016 bytes).
# `vl53l5cx/nvm_cmd.bin` : Size: 128 bytes (= 1 packages)
# Send `xmodem s "vl53l5cx/nvm_cmd.bin"` ...
Backup [==================================================] 100% `vl53l5cx/nvm_cmd.bin` - complete (128 of 128 bytes).
# `vl53l5cx/xtalk.bin` : Size: 896 bytes (= 7 packages)
# Send `xmodem s "vl53l5cx/xtalk.bin"` ...
Backup [==================================================] 100% `vl53l5cx/xtalk.bin` - complete (896 of 896 bytes).
# `.fm` : Size: 64 bytes (= 0 packages)
# Send `xmodem s ".fm"` ...
Backup [==================================================] 100% `.fm` - complete (128 of 64 bytes).
# `202604251745.lib` : Size: 26368 bytes (= 206 packages)
# Send `xmodem s "202604251745.lib"` ...
Backup [==================================================] 100% `202604251745.lib` - complete (26368 of 26368 bytes).
# `202604260741.lib` : Size: 26188 bytes (= 205 packages)
# Send `xmodem s "202604260741.lib"` ...
Backup [==================================================] 100% `202604260741.lib` - complete (26240 of 26188 bytes).
# `202604260741.opt` : Size: 896 bytes (= 7 packages)
# Send `xmodem s "202604260741.opt"` ...
Backup [==================================================] 100% `202604260741.opt` - complete (896 of 896 bytes).
# `bootcount` : Size: 128 bytes (= 1 packages)
# Send `xmodem s "bootcount"` ...
Backup [==================================================] 100% `bootcount` - complete (128 of 128 bytes).
# `lib_vl53.bas` : Size: 40192 bytes (= 314 packages)
# Send `xmodem s "lib_vl53.bas"` ...
Backup [==================================================] 100% `lib_vl53.bas` - complete (40192 of 40192 bytes).
# `miiha.bas` : Size: 32896 bytes (= 257 packages)
# Send `xmodem s "miiha.bas"` ...
Backup [==================================================] 100% `miiha.bas` - complete (32896 of 32896 bytes).
# `tof.dat` : Size: 2048 bytes (= 16 packages)
# Send `xmodem s "tof.dat"` ...
Backup [==================================================] 100% `tof.dat` - complete (2048 of 2048 bytes).
Backup `miiha_202604260741` successfully created.
 15 file(s) and 4 folder(s) saved; 0 failed
Trying to launch terminal programm ...
# Launching `C:\Program Files (x86)\teraterm5\ttermpro.exe` ...
# Done.
(picom) PS F:\Dropbox\__GIT\picom>
 
Print this page


To reply to this topic, you need to log in.

The Back Shed's forum code is written, and hosted, in Australia.
© JAQ Software 2026