[Xoom Android Development] stachre:
This guide may be obsolesced shortly, but it's still good reading for the curious. See [UPDATE][HC3.1] Wifi and 3G! Completely Flashable! No Fastboot Needed! No Data Loss. (thanks, bigrushdog)

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.

AWESOMENESS NOTE: Instead of copying files which you're going to adb push to the platform-tools directory every time, why not just add the directory to your PATH environment variable ("How to update your PATH")? That way, you can run adb from any directory you want.

3G GUINEA PIGS: I've edited the 3G version of the updater_script in the same way as the WiFi, but I don't have a 3G Xoom with which to test. IF YOU ARE FLASHING AND TROUBLESHOOTING SUPASTAH, please try the attached updater-script_UNTESTED_Xoom3G_Android3.1_Root_v03.zip(Updated!) with the MZ600 HRI66 stock images and Xoom 3G 3.1 Update ZIP. If it works, I'll update the guide to cover both devices. Please PM me your feedback, since a post might be easily buried in this thread. Thanks!

[size=+1]SUMMARY[/size]

Here's a run-down on the current procedure:

Updates the Xoom WiFi to Android 3.1 using ClockworkMod Recovery (update.zip)

Resolves issue in updater-script: get_prop ro.product.device wingray

Sets correct permission on su to enable functioning root

Flashes the recovery (version 03 persists CWM Recovery), boot (kernel), and system partitions to stock (required at this time)

Stock kernel means no SD Card in Honeycomb (still available in recovery), no overclocking until devs release 3.1 compatible kernels

Updates bootloader to include Recovery in the boot menu

Leaves user data intact

Outstanding Issues:

(FIXED in updater_script version 03) Recovery partition gets overwritten to stock on reboot: Edit updater-script to leave recovery partition intact

Too many steps: Include the edited updater-script, su, Superuser.apk in the update.zip

Now, without further ado...

[size=+1]ASSUMPTIONS[/size]

You've downloaded the Xoom WiFi Android 3.1 update from Google (thanks, pof)

You've downloaded and unzipped the stock Xoom WiFi MZ604 HWI69 images from Motorola

You've downloaded su and Superuser.apk (see WiFi Xoom Root Zip link at Xoom WiFi (MZ604) Root!!)

You've flashed a boot.img that enables adb remount (Xoom WiFi (MZ604) Root!!, custom kernels, etc.)

You've flashed ClockworkMod Recovery (thanks, bigrushdog, koush, et al)

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

[size=+1]PROCEDURE[/size]

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
fastboot reboot

Reconfigure superuser

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)

adb remount
adb push su /system/bin/
adb shell chown root.shell /system/bin/su
adb shell chmod 4755 /system/bin/su
adb shell ln -s /system/bin/su /system/xbin/su
adb push Superuser.apk /system/app/
adb shell chmod 644 /system/app/Superuser.apk

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.

adb reboot bootloader
fastboot flash boot boot.img
fastboot reboot

Perform update

adb reboot recovery

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!

[size=+1]POST-UPDATE NOTES[/size]

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.

Recovery: updater_script v03 no longer flashes stock recovery. If you ran a previous version of the update, please see this post by Berzerker on getting ClockworkMod Recovery to persist (thanks, Berzerker)