WARNING: Following this procedure may damage or permamently destroy your device. This procedure is provided with NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Perform this procedure at your own risk.
COMPATIBILITY NOTE: I have personally tested this procedure ONLY ON THE US XOOM WIFI MZ604. If other devices (i.e., Euro Xoom WiFi) implement the same Android 3.1 update file, then this procedure *should* work; some users have reported success with UK and Canadian models (see this post for more info). Know, however, that you proceed at your own risk.
You've installed a physical SDCard in your Xoom (required for ClockworkMod Recovery updates) and have it functioning properly
You've configured the Android SDK on your PC, with adb functioning properly
You've downloaded fastboot and have it functioning properly (usually alongside adb in platform-tools)
You've installed an archive program that lets you edit the contents of an existing ZIP file (7-Zip, WinRAR, etc.)
You've downloaded and unzipped the edited updater_script file attached to this post
Prepare the Android 3.1 Update file
The update file as-provided is not ready for use in ClockworkMod Recovery. This fixes it. I could just include a link to a prepared update.zip file, but this is safer than trusting some dude with less than 20 posts on XDA. I'll upload one when I hit 25. :P
Rename the Android 3.1 Update file to update.zip
Open the zip file in an archive program for editing
Navigate to the following directory: META-INF/com/google/android
Delete the following file: updater-script
Copy the updater-script file from the ZIP file attached to this post to META-INF/com/google/android
Flash stock system.img
Prior to performing the actual update, the update script checks a number of files (including bcm4329.ko, which is usually built with the kernel) in /system. If any file doesn't match what's expected, the update halts. Flashing the stock system.img ensures a smooth update.
adb reboot bootloader
fastboot flash system system.img
After flashing stock, we no longer have superuser/root access on our Xoom. By pushing and configuring these files, we restore our root capability without interfering with the pre-update checks. (thanks, Berzerker for catching missing symlink)
Flash stock boot.img
The pre-update checks also include the boot partition. We wait until now to flash the boot partition to stock because we need to perform adb remount earlier in the procedure, which we can't do with the stock boot.img. The actual update flashes this partition with a new kernel that implements the new 3.1 features.
Note that in recovery, you use the hardware volume buttons to navigate up and down, and the power button to select.
In ClockworkMod Recovery, select "mounts and storage"
Ensure your Xoom is connected to your PC via USB, then select "mount USB storage"
On your PC, copy update.zip to the root of the Xoom's SDCard ("Removable Disk" in Windows)
In ClockworkModRecovery (still on the "USB Mass Storage device" screen) select "Unmount"
In the "Mounts and Storage Menu" screen, if the option "unmount /sdcard" is present, continue to the next step; if "mount /sdcard" is present, select it then continue
Select "+++++Go Back+++++"
Select "apply update from sdcard"
Select "Yes - Install /sdcard/update.zip"
"Install from sdcard complete." will indicate that the update is completed.
Select "reboot system now"
New bootloader will install. The message, "Congratulation! Your bootloader was successfully upgraded" will be immediately followed by an automatic reboot.
Enjoy your rooted Xoom WiFi, running on Android 3.1!
Custom kernels: As of 0730 11 May 2011, there are no kernels/boot.img that are compatible with the Android 3.1 update, though the devs are undoubtedly on it. Do not flash a custom kernel after performing this procedure unless you know that it's compatible with the 3.1 update.
XDA Developers was founded by developers, for developers. It is now a valuable resource for people who want to make the most of their mobile devices, from customizing the look and feel to adding new functionality. Are you a developer?