Sunday 30 August 2015

Revert to previous firmware on Seagate Central

Many people have upgraded their Seagate Central to the latest firmware and instantly regretted the decision. For some it was because root / su access has been taken away. For others they don't like the new Twonky media server.

Well fear not because there's a way (actually two ways) to revert to the old firmware.

The Seagate Central keeps a copy of 2 versions of firmware. The currently running firmware and the previously running "old" firmware.

We can program the Central's bootloader (U-boot) to revert to the previous firmware.
There are two ways to do this. You only need to do one of them.


METHOD 1 : Via ssh (no need for root access)

Ssh into the Seagate Central. If you don't know how to ssh or you don't know what ssh is, then just proceed to Method 2.

I only tested this procedure with the "admin" account but I think it should work with any valid userID.

Issue the following command

   admin@Seagate-4xxxx:~$ /sbin/fw_printenv | grep kernel
   current_kernel=kernel2

The output of the command will either say "kernel1" or "kernel2". This indicates which of the two copies of firmware the bootloader will run. We want to change this to the other one in order to run the previous firmware.

So if the output of your command said "kernel1" then we want to switch to "kernel2" by running  the following command

   admin@Seagate-4xxxx:~$ /sbin/fw_setenv current_kernel kernel2

If the output of your command said "kernel2" then we want to switch to "kernel1" as follows

   admin@Seagate-4xxxx:~$ /sbin/fw_setenv current_kernel kernel1

Finally check that your changes took effect by running the following command again.

   admin@Seagate-4xxxx:~$ /sbin/fw_printenv | grep kernel
   current_kernel=kernel1


Now reboot your Central either by power cycling it or using the Management Web Page
(Settings Tab -> Setup -> System -> Restart Button)

The unit should now be running the "old" firmware.

This method uses the fw_printenv and fw_setenv commands which view and set the environment variables that the U-boot bootloader use to determine how to boot up the Central. Seagate have kindly left them executable by normal non-root users. 


METHOD 2 : Power cycling 4 times while the LED light flashes green

If you don't want to ssh into your unit then use this method

Step 1 : Power down your central.

Step 2 : Power Up again and watch the little LED light on top of the unit.

Step 3 : When the LED changes from solid amber/green to flashing green let it blink about 2 times then quickly unplug the power.

Step 4 : Goto Step 2 and repeat at least 4 times.

Step 5 : Power on and let the unit fully boot up so that the LED light goes solid green. The unit should now be running the "old" firmware.

This method takes advantage of a custom Seagate feature in the U-Boot bootloader whereby if the unit fails to fully boot 4 times in a row it will switch to the backup firmware.


After completing Method 1 or Method 2 your Central is hopefully running the "old" firmware. You can confirm by using the Management Web Page (Settings Tab -> Setup -> About ) then look at the displayed Firmware Version.

Now a note for those of you reverting firmware because you lost root / su access. If you have previously set a non blank root password then at this point you should *hopefully* be able to use the "su" command to get root access again with your old password. 

However if you had a blank root password then you still won't have root access. This is because even though "su" access is technically enabled again, the "new" Seagate Central Firmware has changed your blank root password into a new secret password which no one knows.

I am going to put up another post about a method of modifying the Seagate Central firmware to get rid of the new root password in the near future.