How to use an Android tablet as a Raspberry Pi console terminal and internet router

Use a tethered Android tablet as console and internet router for your Raspberry Pi.

What you need

 * Any Raspberry Pi &mdash; it even works with a Raspberry Pi model 1A having no ethernet port...
 * A micro-USB power supply
 * A micro-USB data cable
 * An Android tablet (or on a smartphone if you insist)
 * The ConnectBot App (available from Google Play)

Advantages
Very universal solution:
 * The Raspberry Pi uses very low power (no or inactive ethernet port)
 * Your Android tablet can be powered via the Raspberry Pi USB port
 * You have a virtual keyboard, mouse, and video display (KVM) for your Raspberry Pi
 * Only 1 single Raspberry Pi USB port is required to deliver ethernet, and KVM access
 * Both devices can easily share an internet connection
 * The Raspberry Pi can have Wi-Fi or mobile network access through tablet tethering
 * You do not need any special hardware; except for a few standard micro-USB cables
 * It also works e.g. in a car using a 12V outlet
 * Only standard software needed
 * Autoconfiguration (plug and play)

Install ConnectBot
Install ConnectBot on your tablet which is an Android terminal emulator available from Google Play. It allows to SSH into the Raspberry Pi.

Configure the Raspberry Pi
Add the following lines into your network configuration: vi /etc/network/interfaces

allow-hotplug usb0 iface usb0 inet dhcp

Connect your devices
Connect your Android Tablet to a Raspberry Pi USB port via a micro-USB cable. Power your Raspberry Pi with a standard USB power supply. You can use any DC USB power supply.

Enable Android USB tethering
Enable USB tethering on your Android tablet. Settings &rarr; Connections &rarr; Tethering and Wi-Fi hotspot &rarr; USB tethering

Now the Raspberry automatically gets an IP address via its USB0 port. The Android tablet behaves like a NAT router. This should work both when your tablet is connected to Wi-Fi or to a mobile 3G/4G network.

Initiate an SSH login to the Raspberry Pi
The only problem is that you have to know the IP address of the Raspberry Pi; it seems to be (always?) 192.168.42.159...
 * Start the ConnectBot App on Android
 * Login to the Raspberry Pi via SSH

Network setup
ifconfig

eth0    Link encap:Ethernet  HWaddr b8:27:eb:b5:d4:ba inet addr:192.168.31.36 Bcast:192.168.31.255  Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500  Metric:1 RX packets:10538 errors:0 dropped:0 overruns:0 frame:0 TX packets:7235 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1039975 (1015.6 KiB) TX bytes:929333 (907.5 KiB)

lo      Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536  Metric:1 RX packets:4010 errors:0 dropped:0 overruns:0 frame:0 TX packets:4010 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:168456 (164.5 KiB) TX bytes:168456 (164.5 KiB)

usb0    Link encap:Ethernet  HWaddr 02:07:00:01:62:31 inet addr:192.168.42.159 Bcast:192.168.42.255  Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500  Metric:1 RX packets:19830 errors:0 dropped:1 overruns:0 frame:0 TX packets:10412 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:21499431 (20.5 MiB) TX bytes:2806515 (2.6 MiB)

route -n

Kernel IP routing table Destination    Gateway         Genmask         Flags Metric Ref    Use Iface 0.0.0.0        192.168.42.129  0.0.0.0         UG    0      0        0 usb0 192.168.31.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0 192.168.42.0   0.0.0.0         255.255.255.0   U     0      0        0 usb0

Tips
You could as well connect an UTP network cable as well; then you have a dual-homed network connection with the advantage that you can:
 * issue simple (configuration) commands from your tablet
 * use a laptop to perform more complicated command via the other SSH connection

Other ideas

 * This could work as well with other USB devices having no built-in network connection...
 * You could run X Window System applications from your Raspberry Pi using VNC