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

From eLinux.org
Revision as of 16:39, 18 July 2015 by Geertivp (talk | contribs) (Tethering not started)
Jump to: navigation, search

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

What you need

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)

How to

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 → Connections → Tethering and Wi-Fi hotspot → 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

  • Start the ConnectBot App on Android
  • Login to the Raspberry Pi via SSH

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...

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

Known problems

Tethering not started

ssh pi@192.168.42.159
ssh: exited: Error connecting: No route to host