PicoChess v4 Trixie Images [ 22 Oct 2025 ]

617 views
Skip to first unread message

RandyR

unread,
Oct 22, 2025, 12:38:32 AMOct 22
to PicoChess
Hi Everyone,

I have decided to revert the v4 Trixie images to match what you would have when carrying out the steps outlined on Johan's GitHub repo. In other words, for those who are not comfortable building your own v4 images, these are meant for you. They only contain those files present on GitHub.

This should make it easier for Johan to continue evolving his code without worrying about added user's files causing issues or supporting different engines at this early stage in development. This doesn't mean you can't use the engines from v3.4, you can. It just means you will have to have some Linux skills to copy over the /opt/picochess/engines folder from a v3.4 image to the v4 system. You could also copy over other files not present in v4 (due to limited space available on GitHub), e.g tablebases, other voice files, etc.

One issue some people have already noticed is that Bluetooth may be OFF after you boot the image for the first time. For the Desktop image it's a matter of using a mouse on the desktop (Alt+F4 on an attached keyboard to close the browser - or use the Exit PicoChess function in the System/Power menu) and enable Bluetooth via the BT icon at the top right. On the Lite image it is a bit more involved - you will have to log in via SSH and execute the command 'sudo rfkill unblock all'. You can also use this method on the Desktop, if needed. If this continues to be an issue we may need to add a one-shot script to take care of it.

If you see any functionality issues while testing and would like to let Johan know, either open a topic on this forum or, if you have a (free) GitHub account, you can open an Issue on Johan's repo (if not already opened) or start/join a Discussion..

Enjoy.

Randy

Here are the links to the images:

PicoChess v4 DGTPi Image (2.4 GB)

PicoChess v4 Desktop Image (2.9 GB)




Johan Sjöblom

unread,
Oct 22, 2025, 9:26:15 AMOct 22
to PicoChess

Thanks Randy. I will create an update engines mechanism from the Picochess menu. For that I would need a resource file in tar.gz format taken from engines/aarch64. What do you think I should use as a source for that? I could use the V4 desktop image you made a few days ago?

Randy Reade

unread,
Oct 22, 2025, 10:00:03 AMOct 22
to pico...@googlegroups.com
Yes. That could work but the folders should probably be rearranged going forward: maia_weights to engine folder, rename mame folder to mame_scripts, move mame_emulation inside aarch64 and rename to mame, and fix paths in mame_scripts files, retro.ini, all_retro.ini, and maiav0330-dev.uci. There might be more... 

Randy

Johan Sjöblom

unread,
Oct 22, 2025, 1:20:06 PMOct 22
to PicoChess
Agree. I hope I could at least separate out maia_weights to begin with. And I need to figure out if symbolic links is a problen when doing tar -czf

Randy Reade

unread,
Oct 22, 2025, 1:25:02 PMOct 22
to pico...@googlegroups.com
That should work fine. 

Johan Sjöblom

unread,
Oct 23, 2025, 12:52:14 PMOct 23
to PicoChess
I started to make some basic refactoring changes to the install-picochess.sh so I hope it still works. The bravest one who makes the next V4 based on a clean Pi stock image let me know if it works, ... or if it doesnt :-) I had to make some basic cleanups first before starting a new feature branch to create an engines-resource update menu option that could fetch a V3.4 engine set from within the menu...

Johan Sjöblom

unread,
Oct 25, 2025, 2:50:36 AMOct 25
to PicoChess
Ok brave testers of V4.

There is now a manual mechanism to get Randy's latest lite/DGT engines including lc0 personalities like meangirl etc and many maia options.
You can get them on your existing V4 images or you can use the latest image made by Randy some days ago.
You do need the latest picochess on your installation to do this, that is step 1 below.

1. First you need to either do a picochess update from the menu or do a git pull so that you get the new utility script that moves away your existing engines to /home/pi/pico_backups
> cd /opt/picochess
> git pull

2. Now for a brave part, move your existing engines to backup (good to have them in case something goes wrong). You can do this step yoursel and move the two directories engines/aarch64 and engines/lc0_weights to anywhere you like, just make sure that those directories are removed so that step 3 goes and fetches the latest engines
> ./move-engines-to-backup.sh
or
> cd engines
> mv lc0_weights to-wherever-you-like
> mv aarch64 to-wherever-you-like

3. Run install-picochess again either by running update picochess from the menu or by running the script like this. Note this script requires sudo.
> cd /opt/picochess
> sudo ./install-picochess.sh

Step 3 should download Randy's new image setup.

I will proceed and at some point make a menu option that is "stronger" than the picochess update and performs steps 2 and 3 above, and then updates picochess step 1. The reason why you need to do step 1 first now if you run it manually is because you need to get the install-engines script (which is already in 4.1.6) and the new script needed in step 2

Ideas, feedback, comments are welcome. The vision is to make a system where it would be easy to get new engine sets...

As this first engine update test is based on the DGT/lite image made by Randy a few days ago it does not contain transformers, windows and linux engines.

yours, Johan

Johan Sjöblom

unread,
Oct 28, 2025, 1:55:58 PM (12 days ago) Oct 28
to PicoChess
Now there is a Menu option under System-Power that says "Replace engines with latest", or shorter on DGT clocks "Upd Engines". This will move away your existing engines to backup and download the latest DGT/Lite engine package made by Randy.

Johan Sjöblom

unread,
Oct 29, 2025, 12:33:43 PM (11 days ago) Oct 29
to PicoChess
The engine files downloaded manually or using menu are fairly big, half a Gigabyte each.
I have tested this a few times and the download + extract can fail, especially if the system is old and out of date.
At the moment I would recommend the manual method so that "you are in control"... I would only use the menu system on a DGT3000 if I can not add a display.

Here are some simple things that increase the probability of success:
1. Make sure the system is updated first as a separate task. Manually: run sudo /opt/picochess/install-picochess.sh, or from the Menu System-Power "update picochess".
2. An extra reboot for the updated system!! Yes, to further increase probability that everything works: Reboot once with the new system to make sure everything is fresh. Manually reboot, or ask for reboot from the manu (or a second time of update picochess)
3. NOW you have a fresh system and updating the engines should work... Manually as written above, or from the menu.

BR, Johan

Johan Sjöblom

unread,
Oct 29, 2025, 3:41:41 PM (11 days ago) Oct 29
to PicoChess
Improved the scripts for engine resource download so that if extract fails it will copy back the engines from backup.
The script used can be used manually too: restore-engines-from-backup.sh which does the opposite of the move-engines-to-backup.sh.
Anyway, now the engine resource download should be more safe to use...

Johan Sjöblom

unread,
Nov 2, 2025, 6:58:30 AM (7 days ago) Nov 2
to PicoChess
Right, found the problem with the engine updates from the menu thanks to Randys testing. As many other times when you attempt an optimisation it causes problems. There is a protection in the picochess menu updates that protects against updates run less than 10 minutes (600 seconds) apart. I originally made this to avoid getting into an infinite reboot loop for any user... If it has updated in the last 10 minutes, then it wont update again.

This will impact those who try to run the engine update from the menu. This is how it now fails:
-  (1) do a update pico from the menu which reboots and runs install-picochess.sh (that starts a 10min timer)
- and then (2) proceed to ask for engine replace in the menu --> it will move the engines to backup, but it will not run install-picochess as 10 minutes has not passed since step 1.

HOW TO AVOID the problem already now:
If you have a coffee in between these steps, or have updated step 1 manually by "git pull" or by running install-picochess.sh manually and not from the menu, then you are fine. The 10 minute timer only comes from using the update menu in Picochess.

I will create a PR to fix this...

Johan Sjöblom

unread,
Nov 2, 2025, 12:54:31 PM (7 days ago) Nov 2
to PicoChess
The issue to use picochess menu to get the latest engines for a base V4 image is now fixed! To use it you need to get the latest version (step 1)

1. Note that you first need to do an update with git pull and then run sudo install-picochess.sh. This is needed to get this new solution in place. Git pull will fetch the latest install-picochess.sh file and running it will put the new updater in place. The new updater is now capable of updating engines to the latest engine set (which at the moment is the lite/DGT set).

2. After the next reboot with this clean new system, and hopefully with all versions after this, you can update the engines to the latest set by choosing System-Power and the "replace engines with latest". Note that this does take quite much time at next boot. It will download ~1G of engines and lc0_weights at 0,5G each. When download finishes picochess starts. So be patient.

We are getting close to a verified way to update engines from the menu without writing new images. When we can see that this is stable and working we should try to do the same with opening books and possible other resources?

yours, Johan

Randy Reade

unread,
Nov 2, 2025, 3:20:17 PM (6 days ago) Nov 2
to pico...@googlegroups.com
This worked for me, Johan. Nice work.

Randy

Johan Sjöblom

unread,
Nov 4, 2025, 8:53:39 AM (5 days ago) Nov 4
to PicoChess
Hi again brave testers of V4.

To get a fully working engine update from the menu was harder than expected. Randy, you had a bit of luck with the timings, but I found that it could still fail.

The hotfixes I made  now to the updater is:
- Make sure to wait for network connection before updating... Otherwise for example engine update fails on not finding github.com.
- Make sure the updater is run before picochess tries to start... I had to add After=picochess-update.service to the picochess.service to make sure we dont try to start picochess in the middle of an engine download. Otherwise picochess will just say "error" as it did not find any engines.

--> you need to do step 1 again to get this hotfix into place, git pull and run sudo ./install-picochess.sh... Then reboot. 

I tested this and I did not manage to cause any more problems on my Pi 4. BUT: I did discover a practical question!
When we update the entire engine package the picochess.ini might be remembering and pointing to an engine that no longer exists !! Again - Picochess start will fail.
At the moment the only quick workaround I can think about is that remember to switch to a-stockf before upgrading engines as we typically guarantee that it always exists. The LC0 keeps changing its name as we have gone from version 0.31 to 0.33 dev...

There are a few long term solutions... We can force an engine switch to a-stockf when user asks for a new engine replacement set... Or, perhaps better, on startup check that the engine still exists and if not, fall back to the first engine on the (new) list. I would prefer to make this later one.

BR, Johan

Randy Reade

unread,
Nov 4, 2025, 12:05:17 PM (5 days ago) Nov 4
to pico...@googlegroups.com
Yes. I like the latter idea as well. 

Johan Sjöblom

unread,
Nov 7, 2025, 1:13:23 PM (2 days ago) Nov 7
to PicoChess
I added the mame_engines and rodent folders to the install-engine, so now you get the complete package when running sudo install-picochess, or install-engine (note install-engine does not require sudo).
If these folders are missing a pico update will fetch them.

Johan Sjöblom

unread,
Nov 8, 2025, 2:41:13 AM (yesterday) Nov 8
to PicoChess
The vision is to create an easy way to update a full engine set. Whenever Randy has built a new engine set we can create a resource from it, from a V3 image for instance, and upload the new resource file to V4 github. If the vision becomes reality we would only need new V4 images when there are some big updates like Trixie in Raspberry Pi. All software could be updated from the menu, and all engines, and opening books could be updated from the menu. That is the vision.

I am working towards this step by step. Now the system update and engines replacement work. As the next step I need to figure out a mechanism how to chose between the ”small” engine set with fast and quick installation of a new V4, and the current fairly large engine set. It now downloads all lite engines and mame emulation.

My first thought is that I would make the small engine set default so that a first installation is faster (now large lite is default). It would mean that running install-picochess on a clean stock Pi image would only install Stockfish 16, 17, and LC0 as it was before I started experimenting with this engine replacement update. Anyone who want a larger or latest engine set could then do ”replace engines” from the pico menu. The small first install would also make an easier base for Randy to make a small V4 image for everyone with limited size.

Comments are welcome… Not sure when I will do this update but I expect within days or a week.

— Johan

Luigi Vogliobene

unread,
Nov 8, 2025, 5:04:30 AM (22 hours ago) Nov 8
to PicoChess
Hi Johan,

I manually update the engines (./install-engines.sh) after deleting the "aarch64" folder: 

1. the Rodent engine work but any of the MAME engins work, I get the "error engine" message.
2. after the update of the engines, the boot of picochess always (I tried two restarts) last 10 minutes before to run picochess.

Thank you.

Luigi 

Luigi Vogliobene

unread,
Nov 8, 2025, 5:48:09 AM (21 hours ago) Nov 8
to PicoChess
Hi Johan,

after the manual installing of picochess (sudo ./install-picochess.sh) the issues are gone. All is working good.

Thank you.

Luigi

Johan Sjöblom

unread,
Nov 8, 2025, 7:23:32 AM (20 hours ago) Nov 8
to pico...@googlegroups.com
Did you update picochess before running install-engines?

To see what is wrong, try
>cat /opt/picochess/logs/picochess.log | grep error

I found that mame engines need this:
>sudo apt -y install xdotool

If you still have problems

If you have updated picochess I recomend running:
>sudo ./install-picochess.sh

If you have NOT updated, I recommend running it twice. You do not need to reboot in between.

--
You received this message because you are subscribed to the Google Groups "PicoChess" group.
To unsubscribe from this group and stop receiving emails from it, send an email to picochess+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/picochess/83ff102b-2e9d-4b65-93b6-a12d557aa6fcn%40googlegroups.com.

Johan Sjöblom

unread,
Nov 8, 2025, 7:41:02 AM (19 hours ago) Nov 8
to PicoChess
Oh, I missed your message Luigi. Good to hear that it now works. And thank you for testing and reporting.
I did update the install-picochess to also run sudo apt -y install xdotool, so that anyone who updates from menu or by running install-picochess would get this needed package.

Johan Sjöblom

unread,
Nov 8, 2025, 8:22:25 AM (19 hours ago) Nov 8
to PicoChess
Ok now install-engines have been updated so that any default installation done by just running sudo ./install-picochess.sh on a stock image would only fetch the small amount of engines.

The methods to get the larger set of engines are now these two:
1. run install-engines with the parameter lite like this:
       >./install-engines.sh lite
    if you run it without parameters or with help or --help it will give this explanation
2. ask for "replace engines" from the menu just like now, it runs the install-engines with the lite parameter now

The small package is still too large, so I will try to make a smaller default package so that do not need to download 0,5G of lc0_weights... That will not change the logic, it will just make a smaller default package.
The idea is also to make a "desktop" package of engines at some point giving everyone then three options of engine packages: small, lite, and desktop.

Comments and ideas, or test results are welcome.

-- Johan

Randy Reade

unread,
Nov 8, 2025, 3:18:03 PM (12 hours ago) Nov 8
to pico...@googlegroups.com
I think that is a good plan, Johan. The initial minimal engine set will allow new users the ability to check out the functionality of PicoChess and then choose the engine pack they want to expand their engine set. We could even create separate engine packs for Standard/Modern, Retro, Script/Historic, Windows/Linux x86/x64, etc.

Once we make the switch to v4 I would probably continue making 2 images, one (Lite) aimed at the DGTPi, the other (Desktop) aimed at setups with a monitor or using later Pi versions.

Randy
Reply all
Reply to author
Forward
0 new messages