[Xoom Android Development] MagicVie:
Disclaimer: I am not responsible for any damage you do to yourself or your device by following this guide (Although it seems very unlikely to happen).

USB Tether Phone to XOOM Guide.

I could not find a guide for this anywhere and it took me quite a while to figure out how it works so I thought I'll post a guide for other noobs like me, who want to share their phones data plan with their XOOM via USB tethering.

Since I only got a Wifi XOOM because I didn't want to spend money on a second data plan I used to wifi-tether my phone to my XOOM for internet connection. Unfortunately, Wifi-tethering drains the battery of my phone quite fast and the battery gets extremely hot so I was looking for an alternative.

Finally, I managed to share my phones internet connection with my XOOM via USB tether. Here is how it goes:

What you need:

* USB OTG cable (micro! not mini) - can be found at amazon, ebay, etc. for $5

* Phone that is capable of USB tethering (e.g. Xperia X8 \w miniCM7 / nAa kernel)

* XOOM running Team EOS ICS

* Tegra Development Overlay Rev 4 [link]

* Terminal Emulator (can be found in the play store)

I wont cover how to install Team EOS ICS since this can be found elsewhere.

What to do:

Step One - Install and Load the Drivers Needed

After you downloaded the Tegra Development overlay, flash it using eg. CMW over your existing Team EOS ICS. This will ad a whole bunch of extra modules (drivers) and a couple of init files to your system. Including the modules needed to USB tether your phone to the XOOM.

I don't know what would happen if you flashed the Development Overlay over any other ROM/Kernel than the one provided by Team EOS. But I would not recommend it!

[ADDITIONAL REMARK]

Note: If you really dont know anything about working with adb just ignore the following lines and go straight to Step Two. This is not necessary to get USB tethering working.

The Tegra Development Overlay contains the modules (drivers) needed for USB tethering a phone to the XOOM (and loads of others). The modules needed are: rndis_wlan.ko and rndis_host.ko.

After you flash the Dev Overlay, there will be a file called 06modules at /system/etc/init.d/. This file loads all 99 modules found at /system/lib/modules/. Since you actually just need 1 of those modules you might want to delete the "06modules" file and load the module needed manually by typing the following into your terminal emulator:

[STRIKE]modprobe rndis_wlan[/STRIKE]
modprobe rndis_host

This should load the module. You can check if the module was loaded successfully by using the following command:

lsmod

This will list all currently loaded modules.

Step Two - Connecting Your Phone

Switch on USB tethering on your phone and connect it to your XOOM via the OTG cable.

In the Terminal Emulator type:

dmesg

the output should look something like this:

[...]
<6>[ 150.829115] usb 2-1: new high speed USB device number 2 using tegra-ehci
<3>[ 154.608633] usb 2-1: device not accepting address 2, error -71
<3>[ 154.667257] hub 2-0:1.0: unable to enumerate USB device on port 1
<6>[ 154.945974] usb 2-1: new high speed USB device number 4 using tegra-ehci
<6>[ 155.002843] usb 2-1: New USB device found, idVendor=0fce, idProduct=812e
<6>[ 155.003359] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
<6>[ 155.004103] usb 2-1: Product: SEMC HSUSB Device
<6>[ 155.004388] usb 2-1: Manufacturer: SEMC
<6>[ 155.004658] usb 2-1: SerialNumber: CB511N60A1
<6>[ 155.066353] rndis_host 2-1:1.0: [B]usb0[/B]: register 'rndis_host' at usb-tegra-ehci.0-1, RNDIS device, 4e:7e:5d:7e:b9:1d

This indicates that your phone was successfully connected to your XOOM and the respective modules were loaded. Note the last line, right where it says rndis_host 2-1:1.0: usb0. Don't worry if it does not say "usb0" but e.g. "usb1" just keep it in mind for later.

Step Three - Assigning an IP Adress and Setting up the DNS server

Now that your phone is connected and registered the xoom needs to get an ip adress and a DNS server. This is done by typing the following into the Terminal Emulator:

su
dhcpcd [B]usb0[/B]
setprop net.dns1 8.8.8.8

"su" grants the terminal emulator SuperUser rights which are needed for the next step.

"dhcpcd usb0" starts an DHCP client for the interface "usb0" and asks for an IP adress. Now if you did not get "usb0" in step two but e.g. "usb1" then change the command accordingly.

"setprop net.dns1 8.8.8.8" sets the DNS server to Google's DNS Server (8.8.8.8), but you can, of course, use any DNS server you like.

If you write "ifconfig" in the Terminal Emulator you now should get an output like

usb0 Link encap:Ethernet HWaddr 4E:7E:5D:7E:B9:1D
[B]inet addr:192.168.42.187 [/B] Bcast:192.168.42.255 Mask:255.255.255.0
inet6 addr: fe80::4c7e:5dff:fe7e:b91d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:295 errors:0 dropped:0 overruns:0 frame:0
TX packets:420 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:108787 (106.2 KiB) TX bytes:81153 (79.2 KiB)

Indicating that an IP adress has been successfully assigned to your XOOM.

And voilà. Now you have a working internet connection via USB tethering from your phone to your XOOM.

Unfortunately there are a couple of downsides:

* There seems to be a glitch in the rndis_wlan.ko or rndis_host.ko module causing a reboot of the XOOM whenever you disconnect your phone from your XOOM after USB tether or force unload the module after you tethered your phone. This issue is known and I hope it will be fixed in the future.

* The procedure described will only enable internet for your Browser, not for your mail apps (confirmed) and possibly not for any other app (did not try yet). Apparently you need to alter some settings (like adding the DNS server for the Browser) to make those apps work properly. Now, this might be very easy but since I'm a linux/android noob I did not yet figure out how.

TO DO

* The modules need to be fixed to solve the reboot issue. However, I am likely not skilled enough to do so, so this is up to Team EOS.

* Settings need to be passed to mail apps. Now this should be fairly easy and I'll try to figure that out.

* A one click app to configure the internet connection would be great. I never did any linux/android coding, but I'll give it a shot.

Thanks a lot to bigrushdog for helping with the rndis_host.ko bugs!!!

Any suggestions or thanks are welcome!