OTA to PR1.1 troubleshooting

(How to find out about conflicting packages?)
Line 100: Line 100:
   apt-get clean
   apt-get clean
-
 
+
[[Category:Fremantle]]
-
 
+
[[Category:N900]]
-
[[Category:Fremantle]][[Category:N900]][[Category:Firmware_Upgrade]]
+
[[Category:Firmware update]]

Revision as of 10:27, 18 February 2010

With the brand new PR1.1 software update recently rolled out [1], some people found some problems [2] which, in most of the cases, led them to get a nice message from the Application Manager telling they would need to install it by flashing the device with the NSU/flasher utilities (a clear symptom of this is that you get to a dialog with a "Create backup" button only, but not "Continue" button at all).

In most of the cases, the explanation behind this situation is one of the following:

  • You missed the upgrade from PR1.0 to PR1.0.1. In this case you'll need to use the NSU/flasher.
  • You have manually installed some debian package through apt-get or dpkg, perhaps bypassing the sanity checks and special controls that HAM (Hildon Application Manager) provides to guarantee a proper OTA update.
  • You somehow got the device into a state so it would be needed to remove some package to perform the OTA update (which is something that the extra-defensive Application Manager won't ever do)

Contents

How to find out what's going on and how to fix it?

  • If you're in the first case, there's nothing to do but to reflash, sorry :-(. You've missed the intermediate step towards PR1.1 from PR1.0 and your device won't be able to guarantee you a proper OTA update without the needed preconditions fulfilled.
  • If you have installed debian packages by hand, they might be somehow conflicting with the OTA update, mainly because one of the following reasons:
    • They're breaking the '3rd party package policy [3]
    • They are different versions (newer versions, most likely) than the expected by the OTA update package to properly work. Think that the OTA package is a metapackage expecting exact versions of package to be installed in the system before the upgrade and you'll get the point here :-): just one dependency of the OTA package in a different version than the expected one is enough to break the process, hence asking the user to reflash.

If this is the case you'd need to somehow restore the device to the proper state first by removing those packages and/or restoring them to the expected versions.

  • In the third case (which is really unlikely to happen, although not impossible), you'd need to first get the device into a state where the removal of those packages won't be necessary anymore for the OTA to work (manually performing a dpkg -r, for instance) and then trying again from HAM. Another way you could try to fix this, but which is neither recommended nor supported, would be to execute a apt-get dist-upgrade from command line, which would work by removing all the conflicting packages and installing the new ones. However, if you get to this pointit would be probably better you considered using the NSU or the flasher as well.

How to find out about conflicting packages?

Well, there's no magic recipe for this that works in all the cases, but we can list here some advices :-)

  • Try to perform an apt-get upgrade from command line (without confirming!!) and see the output. If you find some message like the following one, then you'll have a good spot on which package is blocking the OTA update and why:
 # apt-get upgrade
 Reading package lists... Done
 Building dependency tree       
 Reading state information... Done
 You might want to run `apt-get -f install' to correct these.
 The following packages have unmet dependencies:
   mp-fremantle-generic-pr: Depends: package (= 1.0) but 1.1 is installed
 E: Unmet dependencies. Try using -f.

In the case above you'd have installed a newer version of 'package' than the expected by OTA, so the solution would be to restore it to the expected version before continuing.

Another option would be to upgrade the conflicting package, provided it is available in a repository. For example, if cmt-firmware-rx51 is the name of the package:

# apt-get upgrade cmt-firmware-rx51
  • In case you didn't get any conflict but get some message saying that no package will be upgraded (or at least no package related to the mp-fremantle-generic-pr metapackage), then try apt-get dist-upgrade and see if you get something like this:
 # apt-get dist-upgrade
 Reading package lists... Done
 Building dependency tree       
 Reading state information... Done
 Calculating upgrade... Done
 The following packages will be REMOVED:
   package-1 package-2 package-3
 ...
 After this operation, 4620kB disk space will be freed.
 Do you want to continue [Y/n]?

If that's the case then there you have the conflicting packages you'll have to manually remove before trying again with the Application Manager, in case you don't want (and you should not) continue with the apt-get dist-upgrade command.

Both apt-get update and apt-get dist-upgrade might not show any conflicting packages but still application manager refuses from installing the update. This might be caused by libqt4-phonon or libqt4-webkit. The problem can be solved by removing them and applications depending on them.

 # apt-get remove libqt4-phonon libqt4-webkit

Not Enough Free Space

If you don't have enough space for the upgrade, apt-get dist-upgrade will display an error:

E: You don't have enough free space in /var/cache/apt/archives/

Here are some suggestions for how you can free up rootfs space.

Last advices

To finish with, just to give you some last, yet useful advices you should bear in mind when upgrading the device with the OTA update:

  • Make sure you have full charged battery or the device plugged in before starting.
  • Make sure there's enough space in the rootfs partition for the update to work (45 Mb is the minimum required). To check this out, just run df -h / in the command line:
 # df -h /
 Filesystem                Size      Used Available Use% Mounted on
 rootfs                  227.5M    152.6M     70.8M  68% /     ---->   70.8M > 45Mb  (Ok)
  • No matter how much free space you have, ioquake3 must be uninstalled if you have it installed.
  • Make sure you make a backup prior to the update, just in case

Enjoy!


Examples of problem solvers

Try one of the following things which where mentioned in this thread. If it doesn't help, try another one (first things first).

  • Uninstall ioquake3 through the application manager (as mentioned in the previous section).
  • Disable extras-devel and extras-testing from application manager through catalogs
  • Uninstall Tickstill through the application manager.
  • Install 'rootsh' package from the application manager. Open a xterminal and type
 sudo gainroot
 apt-get remove libqt4-phonon
  • If it's still not letting you updating, try freeing rootfs:
 sudo gainroot
 apt-get install pymaemo-optify
 apt-get clean