TOS 3.11.16 to TOS 5.0.0 migration experience

After years of waiting and months of fiddle around with TOS 5 HBL, HBK and finally HBT I am finally near to working TOS 5.0.0 system on HBT branch at Turris 1 PowerPCSPE that I would use for foreseable future.

I knew it is going to be a bumpy ride and I wrecked SDHC card to the point that BTRFS partition was so broken that card needed to be restored from backup and had to start again or system did not boot up at all which I already described here at forum.

As my router TOS/openwrt is heavily customized after years of good service and lot of playing I understood that it will be necassary to start from scratch with HBT branch which will allow me to migrate very easily to production version will all configuration. It was quite clear to me that any automatic migration will most probably fail as on TOS5/OpenWrt 19.07.2 there are many configuration of daemons and services that I use slightly different here and there so it literally mean to review all the services and configuration and go through all of them one by one which took a lot of time.

Had anyone else here tried this migration from TOS 3.11.16 to TOS 5.0.0 too ? I am just curious.

1 Like

I’m in the process of it. I’m doing the upgrade on my Omnia, so I have to take better care to not do any irreversible changes and to not destroy the eMMC. Basically, I have my fully configured TOS 3.x, then I imported HBT medkit, rolled back to it, and starting the setup from scratch, too. This has the advantage that now by a single schnapps command, I can switch between the two versions, so until I finish the setup, I can still have a working router in times I do not play with it. And I can also mount the TOS 3 snapshot and copy over stuff from it.

Yes I do exactly same way switching between TOS 3 and TOS 5 snapshots.

I did migrate my Turris Omnia manually from TOS3 to TOS5 hbt beginning of March. I used Schnapps method described here previously (import medkit to schnapps, then factory reset). I also had a lot of customizations but did most of the config by Hand from Luci.
It was easier than expected, most of the time was spent editing my lxc config files (some differences in the format) and configuring collectd plugins and remote collection from my MOX.
There was an issue with the ath9k wlan driver failing to load but that has been fixed in the newest RC.
Overall for me TOS5 is much more stable and resource-efficient than TOS3 (visible in the stats, CPU and system load are much lower).
Kudos to the Turris team for continuing to support and improve this great product even 4 years after shipment, I’m very happy with it!


Also thinking of migrating from TOS3.x to 5.x through the use of schnapps. But as my 3.x boots from ssd I would like to know if the factory reset or the flashing of the medkit will kill this or will the omnia continue to boot from ssd? If it will boot from flash does anybody have an idea how to get 3.x and 5.x to the SSD without losing 3.x which is currently on the SSD because 3.x on the internal flash is very outdated and not configured as I moved to ssd long ago.

Factory reset via the hardware button on the back of the device sets the boot argument to the @factory BTRFS subvolume on the eMMC’s mmcblk0p1 partition.

Medkit reset from a USB medium resets the partition table of the eMMC, reformats the eMMC’s partition and sets the boot argument to the @ BTRFS subvolume on the eMMC’s mmcblk0p1 partition.

With the change of the boot argument it will mount the eMMC instead of the SSD.

It been hinted here

Related forum threads Factory reset from commandline - SW help - Turris forum |
Migrating to TOS 4 with schnapps - Turris OS 4.x - Turris forum

Another option is a secondary partition on the SSD for TOS5.x, leaving the TOS3.x partition untouched. To switch the partitions being mounted during boot it would require to change the boot arguments.

I apologize for my confusion.

The steps to do this seem to be scattered and the explanations seem to be terse. I am hoping to do this with a family desperately depending on my network (including me) so I’m hoping to reduce my downtime to do this or at least prepare for when 5.0 is in HBS.

It seems comprehensive documentation on how to do this is:

schnapps import -f medkit-<some version>.tar.gz && schnapps rollback factory

Does this mean that the factory image is set to be <some version> and then “rolls back” your installation to this version? Or the factory image is the currently installed 3.x version?

It’s noted

Can what this means be broken out and the explanation expanded?

No need to jump through those hoops then

which should take care of most use cases:

Yes, I’ve seen this:

However, this is what I’m concerned about:

Which is why I was asking about it.


Perhaps a matter of perspective whether the automatic update script, with potential shortfalls for less common user configurations, will be less time consuming than reconfiguring everything from scratch with medkit (rollback via schnapps or via USB medium).

A good first step is probably to backup the current working TOS3.x snapshot in any case to a device other than the router - see schnapps export (after which download via ssh from router to other device)

Only one BTRFS subvolume named @factory can exist on the same partition. Which is either the one from TOS3.x or the one from TOS5.x once imported.

The BTRFS subvolume named @factory plays a role in the 3-LED factory reset through the hardware button.

Hope that clarifies, there is probably no need/use to preserve the BTRFS subvolume named @factory for TOS3.x anyway.

1 Like