For my Locomotion project, I have the need to read data from the CS3 firmware.
This weekend, I (finally) succeeded in doing this !!!
Eventually, it seemed more easy than I tought in the first place 🙂

Picture 1: Running my CS3 with a custom firmware, with a modified splash screen 🙂
Disclaimer: do this “modifications” at your own risk, I’m not responsible if something goes wrong ! Make sure you know what you are doing !
1. Prerequisites:
– a PC (or virtual machine) running Linux. Your preferred taste or version shouldn’t matter. (I’m running Ubuntu 22.04 for the moment)
– Access to the CS3 original firmwares. They can be downloaded from https://www.maerklin.de/en/service/downloads/cs3-updates
We need version 2.5.2 (current latest version) and 2.4.1 (to go back to a previous version, otherwise you can’t install “your own version”)
Download them both, and save them somewhere save on your Linux station.
– Some basic Linux knowledge. You may be able to perform these modifications under Windows, but I don’t have any knowledge on BTRFS,
a good starting point would be https://github.com/maharmstone/btrfs
– have the btrfs-progs installed on your Linux station, in Ubuntu this can be done via a terminal
and typing the following command: sudo apt install btrfs-progs -y
– Make sure you also have GParted installed on your system. ( sudo apt install gparted -y )
– Create a subfolder CS3 in your /mnt folder
2. A little bit of explanation:
The BTRFS files, are real “BeTteR File System” files. https://en.wikipedia.org/wiki/Btrfs
So, you just need to “mount” these files, to have access to the filesystem of the CS3. When all prerequisites are OK, you will be able to mount the BFRS file.
Openup Gparted, and try to add the BTRFS file to Gparted (with drag and drop), you will see the info about the BTRFS file, like how many MB’s used and how much space is left in the BTRFS file. This is the first step to “link” the BTRFS into your Linux station.
3. Mounting the BTRFS file:
After “linking” the BTRFS into your Linux station, it’s time to mount this file.
In a terminal, execute the following command: btrfs filesystem show
You will get a returning message that looks like this:
Label: ‘CS3_Update’ uuid: d4733fb8-fae8-4a78-8cdd-c5c492706237
Total devices 1 FS bytes used 194.42MiB
devid 1 size 280.00MiB used 247.00MiB path /dev/loop45
After this, you have enough information, to do the actual mounting with a command like this: sudo mount UUID=d4733fb8-fae8-4a78-8cdd-c5c492706237 /mnt/CS3 (Make sure the UUID corresponds with the one in the returning message)
Next, by looking into /mnt/CS3/ , you will “look” directly into the firmware !
You can even modify files (this required admin-rights, so use sudo …
After modifying files, makes sure to umount /mnt/CS3 and reboot your Linux station, to make sure the firmware is still valid.
4. The interesting folders / files:
* in /mnt/CS3/usr/local/cs3/splash , there is a file called CS3-StartDisplay.png
By changing this file with another 1024×600 px image, you can replace the CS3 startup splash screen, with your own splash screen. (See the first image in this posting, as a proof-of-concept)
* /mnt/CS3/usr/local/lokicons contains all images for Märklin related locomotives.
* /mnt/CS3/usr/local/magicons contains magnet-article icons. (turnouts / signals …)
* /mnt/CS3/usr/local/spicons contains magnet-article icons (but the schematic representation
*/mnt/CS3/usr/local/fcticons contains function icons for locomotives (light/sound/coupling …)
* /mnt/CS3/usr/local/cs3 you will also find several CSV files, with loc information etc …
(csv stands for comma separated values, those files can be opened/edited with Excel(-alike) software …
It would be nice to see some “themes” for the icons, or customized CSV files with Roco locomotives 🙂
5. Upgrading firmware with customization:
* When you “finished” modifications of the firmware, it’s as simple as writing this modified BTRFS file to an empty FAT32 formatted USB stick, and putting it into your CS3.
After a few seconds, the CS3 will recognize this firmware, and give you the option to write this firmware to your CS3. (a red “dot” will appear next to the CS3, in the “system” screen of your CS3, like a regular installation)
If your update does not appear to be recognized, this might be due to an error with the USB stick (make sure you format it in FAT32 format, with only one partition, and make sure a “lower” firmware is installed on your CS3 to start with.
A firmware with the same or newer version as the installed firmware, will not be “recognized”.
While trying out (your own) firmware, make sure to install 2.4.1, prior to installing your custom firmware.
This story will be continued in the future while I “discover” new functionality 🙂