Android auf Freerunner: USB-Verbindung per Shellskript

Eine einfache und schnelle USB-Verbindung auf das Openmoko Freerunner (mit Android OS) wird durch ein kleines Skript erleichtert.

 ubuntu skript shell script openmoko open source linux freerunner bash androidshell android

androidshell

Hinweis: Dieser Artikel erschien ursprünglich am 11.5.2009 und erfährt aus rein technischen Gründen eine überarbeitete Neuauflage. Danke für das positive feedback!

Nach der Installation von Android will man schnell Daten zwischen dem lokalen Rechner und dem Freerunner austauschen. Dazu nötig ist die korrekte Netzwerkkonfiguration der lokalen Schnittstelle (z.B. usb0, bei Ubuntu 9.04 eth1), eine bestehende USB-Verkabelung (muss zum Bootzeitpunkt des Freerunners bestehen), sowie eine funktionierende Verbindung via adb (Details: Android auf Freerunner: Einstieg und USB-Networking).

Nach der x-ten Verbindung war ich es Leid, dieselben Befehle immer wieder einzugeben. Ich beschloss also, dies durch ein Skript ein bisschen effektiver zu gestalten. Das Resultat in action sieht dann so aus:

androidshell ubuntu skript shell script openmoko open source linux freerunner bash androidshell android

androidshell

Ach ja: das schöne (eigentlich vollkommen unnötige Banner) wurde mit Hilfe von figlet erstellt.

Das Skript nun als “androidshell” umbenennen, ausführbar machen und in PATH ablegen.

#!/bin/sh
# Easily connect to Openmoko phones with Android OS.
# This script first configures your local interface.
# This script then utilizes Android Debug Bridge (adb) to connect.
# Possibly you have to change the variable INT.
# INT may vary on different systems (eth1, usb0, eth0 ...).
# All other variables should be fine.
######################### Configure local interface to connect to android by USB
INT="eth1"              # you might have to change this (eg usb0)
IPADDR="192.168.0.200"  # local IP: should be fine
NETMASK="255.255.255.0" # local netmask: should be fine
IPFREE="192.168.0.202"  # IP freerunner (default): fine
PROGNAME="androidshell" # name of program: no need to change
#########################
######################### make a nice banner
clear
echo "                 _                 _     _          _ _ " | grep --colour "."
echo "  __ _ _ __   __| |_ __ ___ (_) __| |___| |__   ___| | |" | grep --colour "."
echo " / _. | '_ \ / _. | '__/ _ \| |/ _. / __| '_ \ / _ \ | |" | grep --colour "."
echo "| (_| | | | | (_| | | | (_) | | (_| \__ \ | | |  __/ | |" | grep --colour "."
echo " \__,_|_| |_|\__,_|_|  \___/|_|\__,_|___/_| |_|\___|_|_|" | grep --colour "."
echo "      Android on Freerunner - adb connector via USB"      | grep --colour "."
echo "--------------------------------------------------------"
echo "2009 by linuxnetzer -GPLv3- www.linuxnetz.wordpress.com"
echo "--------------------------------------------------------"
echo "                 PLEASE MAKE SURE... " | grep --colour "."
echo "... adb is installed in PATH."
echo "... Freerunner was connected whilst booting."
echo "... $INT is your correct local USB interface."
echo "--------------------------------------------------------"
######################## configure local interface
echo "setting up $INT for connection (needs root privileges)"
sudo ifconfig $INT $IPADDR netmask $NETMASK
######################## prepare adb
echo "preparing adb..."
adb kill-server
ADBHOST="$IPFREE" adb devices 1> /dev/null
echo "If prompt has changed (#), connection was successful."    | grep --colour "\#"
echo "Type 'exit' to finish connection. Keep up the vibes!" | grep --colour "exit"
######################## start adb
adb shell
exit

# chmod +x /usr/local/bin/androidshell

Das Skript sollte – theoretisch – “out of the box ” funktionieren. Sollte die lokale Schnittstelle (im Skript: eth1) nicht erkannt werden, muss die Variable ‘INT’ gleich zu Beginn des Skripts entsprechend geändert werden. usb0 ist eine wahrscheinliche Alternative.

Wer solche Skripten wegen ihres “grafischen Overloads” meidet und die Dinge lieber einfach hält, für den tut es auch ein minimalistisches Skript. Zur Erinnerung: Per default hat Freerunner seiner Schnittstelle die IP Adresse 192.168.0.202 zugeteilt. Um mit ihm zu kommunizieren, müssen wir uns in dasselbe Netz begeben…

#!/bin/sh
sudo ifconfig eth1 192.168.0.200 netmask 255.255.255.0
adb kill-server
ADBHOST=192.168.0.202 adb devices
adb shell

Links:

http://netz10.de/2009/05/09/freerunner-android-sd-card-vorbereiten/
http://netz10.de/2009/05/05/android-auf-freerunner-einstieg-und-usb-networking/

http://wiki.openmoko.org/wiki/Android_on_Freerunner#On_Linux

http://wiki.openmoko.org/wiki/Android_on_Freerunner#Installing_Android_on_an_SD_card

http://www.freeyourphone.de/portal_v1/viewforum.php?f=18