In this article I will describe how you can get the

„Option GlobeTrotter EXPRESS 7.2“ aka „T-Mobile web \’n\‘ walk Card Express II“

UMTS/HSDPA Express card with a German T-Mobile subscription to work with your favourite Fedora 15.

After plugging it in lsusb prints:

Bus 003 Device 003: ID 05c6:1000 Qualcomm, Inc. Mass Storage Device

and it will present itself as cdrom drive. If you\’re on a Windows box you may find useful drivers on a virtual cdrom.

Install packages

yum install ppp usb_modeswitch

 

usb_modeswitch

For some strange reason it won\’t work with the default usb_modeswitch installation, so do it manually.

Create the following file „usb_modeswitch_custom.conf“ with this content:

# Configuration for the usb_modeswitch package, a mode switching tool for
# USB devices providing multiple states or modes
#
# This file is evaluated by the wrapper script "usb_modeswitch_dispatcher"
# in /usr/sbin
# To enable an option, set it to "1", "yes" or "true" (case doesn\'t matter)
# Everything else counts as "disable"


# Disable automatic mode switching globally (e.g. to access the original
# install storage)

DisableSwitching=0


# Enable logging (results in a extensive report file in /var/log, named
# "usb_modeswitch_" (and probably others)

EnableLogging=1

########################################################
## Option GlobeTrotter GT MAX 3.6 (aka "T-Mobile Web\'n\'walk Card Compact II")
##
## Contributor: Bernd Holzmüller
#
DefaultVendor=  0x05c6
DefaultProduct= 0x1000
#
TargetVendor=   0x0af0
TargetProduct=  0x6600
#
MessageEndpoint=0x05
MessageContent="55534243123456780000000000000601000000000000000000000000000000"
#
ResponseEndpoint=0x84
NeedResponse=1

Use

usb_modeswitch -c usb_modeswitch_custom.conf

to switch the card into modem mode.

ppp configuration

Create

/etc/ppp/peers/umts

with

hide-password
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/umts"
debug
/dev/ttyUSB0
115200
defaultroute
noipdefault
user "t-mobile"
password "internet"
usepeerdns
ipcp-accept-remote
ipcp-accept-local
lock


Create

/etc/chatscripts/umts

with:

\'TIMEOUT\' \'10\'
#abortstring
ABORT BUSY
ABORT VOICE
ABORT \'NO DIALTONE\'
ABORT \'NO DIAL TONE\'
ABORT \'NO ANSWER\'
ABORT \'+CPIN: SIM PIN\'
ABORT DELAYED
# modeminit
\'\' \'ATZ\'
\'OK\' \'AT&F\'
\'OK\' \'ATE1\'
SAY \'Checking pin lockn\'
\'OK\' \'AT+CPIN?\'
SAY \'Check Quality n\'
\'OK\' \'AT+CSQ\'
SAY \'Setting APNn\'
\'OK\' \'AT+CGDCONT=1,"IP","internet.t-mobile"\'
# ispnumber
\'OK\' \'ATDT*99#\'
# ispconnect
\'CONNECT\'

run

cd /usr/share/doc/ppp-2.4.5/scripts
chmod +x pon
chmod +x poff

in this dir use

./pon umts

to connect and

./poff umts

(at the end of your internet session) to disconnect.

Routing

Then delete default route.

ip route del default

and add default route for interface:

ip route add default via 10.64.64.64

 

DNS

Make sure you got a correct DNS server in /etc/resolv.conf.

For instance:

208.67.222.222
208.67.220.220

 

Remaining questions

  • Why can\’t the NetworkManager deal with the card / modem ?

References

Da es mir nicht auf Anhieb gelungen ist, den Pulseaudio-Server auf einem Debian-System im System-Mode auszuführen, veröffentliche ich nun hier eine kurze Notiz zur Lösung des Problems.

Über das Ausführen von Pulseaudio im System-Mode sei zunächst Folgendes gesagt:

http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode

Bei meinem System handelt es sich um einen „thin client or embedded setup[s], wher no real local user exists, where access is exclusively via the network“-System.

Um das ganze unter Debian umzusetzen muss man zunächst dafür sorgen, dass Pulseaudio als Systemdienst per init gestartet wird, also:

In der Datei „/etc/default/pulseaudio“ die entsprechende Zeile durch „PULSEAUDIO_SYSTEM_START=1″ ersetzen.

Die Konfigurationsdatei /etc/pulse/deault.pa wird dann ignoriert und stattdessen die Datei /etc/pulse/system.pa gelesen.

In letzterer trägt man dann z.B. am Ende folgendes ein:

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.123.0/24 listen=“0.0.0.0“

Anschließend kann man pulseaudio mit folgendem Befehl starten oder neustarten:

/etc/init.d/pulseaudio restart

Um Audio Dateien von einem entfernten Rechner zu einem Server mit dem Hostnamen „beatbox“ zu streamen, kann auf diesem z.B. der folgende Befehl genutzt werden:

PULSE_SERVER=“beatbox“ vlc freesoftwaresong.ogg

Mit dieser Konfiguration steht allerdings keine Autokonfigurationsmöglichkeit von Clients für den Server im Netzwerk zur Verfügung, da die Zeile

load-module module-zeroconf-publish

nicht eingetragen wurde. Das Eintragen dieser Zeile würde jedoch dazu führen, dass Pulseaudio im System-Modus nicht mehr startet, möglicherweise, weil avahi von diesem nicht mehr erreicht werden kann. Nähere Untersuchungen hierzu stehen noch aus. Für Hinweise hierzu bin ich jederzeit offen.

~~ Mebus

Creative Commons Lizenzvertrag

Dieses Werk bzw. Inhalt steht unter einer Creative Commons Namensnennung 3.0 Unported Lizenz.

Neulich bei der Userverwaltung (genauergesagt Import einer CSV Liste) eines

groesseren Systems traf ich auf den Bedarf, einer Datei mit Anmeldenamen
noch die zugehoerigen Infos zu den jeweiligen Namen aus anderen Dateien
hinzu zufuegen. Anbei ein Beispiel …

Ich habe eine Datei mit Namen …

Datei mit Format ANMELDENAME

heino@sora:~/p/lugmoe/blog_paste$ cat namen
adam
erwin
igor
otto
uriel

… und eine weitere Datei mit Raumnummern.

Datei mit Format ANMELDENAME, VOLLER NAME, RAUMNUMMER

heino@sora:~/p/lugmoe/blog_paste$ cat raum
adam,Adam Evans,44a
erwin,Erwin Derwish,33e
igor,Igor Frankenstein,11i
otto,Otto Fant,00o
siegfried,Siegfried Nibel,55s <– ist nicht bei den Anmeldenamen
uriel,Uriel Hell,666u
zorro,Zorro Gonzales,22z <– ist nicht bei den Anmeldenamen

PASTE
—–

Beide Dateien sind nach dem ersten Feld sortiert (alphabetisch).
Mit paste behandele ich die Dateien wie Spalten, die ich in einer
neuen Datei zusammen fuehren will:

heino@sora:~$ paste namen raum
adam adam,Adam Evans,44a
erwin erwin,Erwin Derwish,33e
igor igor,Igor Frankenstein,11i
otto otto,Otto Fant,00o
uriel siegfried,Siegfried Nibel,55s
uriel,Uriel Hell,666u
zorro,Zorro Gonzales,22z

Das ist schon fast zu gebrauchen, aber leider haben wir einmal eine kleine
Liste mit Leuten die mich interessieren und eine „grosse“ Liste mit allen
Mitarbeitern, aus denen ich nicht alle brauche. paste haengt die
erste Zeile der zweiten Datei an die erste Zeile der ersten Datei. Klappt,
solange alles sortiert ist und die Anzahl der Zeilen gleich ist. Hier reicht
die Intelligenz von paste nicht ganz aus.

JOIN
—-

join nutzt das gemeinsame Feld, um eine korrekte Zuordnung zu kriegen
und die ueberfluessigen Eintraege zu ignorieren. Mich interessieren ja nur die
Leute aus meiner Abteilung. Die sind in der Liste mit den Anmeldenamen.

heino@sora:~$ join -t, namen raum
adam,Adam Evans,44a
erwin,Erwin Derwish,33e
igor,Igor Frankenstein,11i
otto,Otto Fant,00o
uriel,Uriel Hell,666u

Mit -t, gebe ich an, dass die Felder durch ein , als
getrennt zu behandeln sind. So sieht das ganze schon brauchbar aus. Ich habe
meine beiden Listen vereint, ohne ueberfluessige Zeilen Eintrage und ohne
doppelte Felder (Anmeldenamen) wie bei paste.

Allerdings arbeitet join hier mit sortierten Dateien.
Jede Zeile wird mit der gleichen Zeile der anderen Datei verglichen und nach
einem gemeinsamen Feld gesucht. join nimmt als Default das erste Feld
als gemeinsames. Falls die Dateien nicht sortiert waeren, gaebe es schon
Probleme und join haette weniger Treffer. Also ein Fall fuer …

SORT
—-
Um Dateien anhand eines bestimmten Feldes zu sortieren nimmt man einfach
sort. Hier eine weitere Datei mit Telefon Nummern zugeordnet zum
Anmeldenamen:

heino@sora:~$ cat telefon
00000,otto
11111,igor
22222,zorro
33333,erwin
44444,adam
55555,siegfried
666,uriel

Diese Datei ist nach dem ersten Feld sortiert (der Telefonnummer) und das gemeinsame
Feld ist in der 2 Spalte. Um diese Datei mittels join mit meinen
gesuchten Personen korrekt zu vereinen, brauche ich ersteinmal eine nach dem
2. Feld sortierte Liste:

heino@sora:~$ sort -k2 -t, telefon
44444,adam
33333,erwin
11111,igor
00000,otto
55555,siegfried
666,uriel
22222,zorro

Mit -k2 gebe ich das 2. Feld als Sortierfeld an.

Mit -t, gebe ich den Feldtrenner , an.

Diesen OUTPUT kann aich in eine Datei leiten oder ich nutze sort und
join kombiniert ueber PIPE auf der SHELL …

heino@sora:~$ sort -k2 -t, telefon | join -t, -1 1 -2 2 namen –
adam,44444
erwin,33333
igor,11111
otto,00000
uriel,666

Mit -t, gebe ich wieder den Feldtrenner an.

Mit  wird hier von STDIN gelesen, wegen der Sortierung der
Telefon Liste.

Mit -1 1 und -2 2 gebe ich an, dass in Datei 1 das erste Feld genommen wird
und in Datei 2 (kommt hier ueber STDIN weil ich  angegeben habe) das
zweite Feld. Schon habe ich eine Liste mit Anmeldenamen und Telefonnummern.
Zur korrekten Ansprache der Leute braeuchte ich noch den vollen Namen dazu …

erstelle eine weitere Datei

heino@sora:~$ join -t, namen raum > nara
heino@sora:~$ cat nara
adam,Adam Evans,44a
erwin,Erwin Derwish,33e
igor,Igor Frankenstein,11i
otto,Otto Fant,00o
uriel,Uriel Hell,666u

heino@sora:~$ sort -t, -k2 telefon | join -t, -1 1 -2 2 nara –
adam,Adam Evans,44a,44444
erwin,Erwin Derwish,33e,33333
igor,Igor Frankenstein,11i,11111
otto,Otto Fant,00o,00000
uriel,Uriel Hell,666u,666

Nun habe ich eine brauchbare Liste … inspiriert wurde ich von meinem
aktuellen Bedarf dieser Liste und der
Seite: Lesser-known Linux commands: join, paste, and sort

CUT

Ergaenzender Vorschlag von Nobby: eine Auswahl relevanter Spalten
ausgeben

Mit cut kann ich aus der Liste die vollen Namen und deren
Telefonnummern extrahieren.

Nur voller Name mit Telefonnummer

heino@sora:~$ sort -t, -k2 telefon | join -t, -1 1 -2 2 nara – | cut -f 2,4 -d“,“
Adam Evans,44444
Erwin Derwish,33333
Igor Frankenstein,11111
Otto Fant,00000
Uriel Hell,666

-f 2,4 gibt an, nur die 2. und die 4. Spalte auszuschneiden

-d „,“ bestimmt den Feldtrenner

29. August 2007 – 8:30 — heino

Ich moechte meine GPG und SSH Keys nutzen, aber nicht dauernd die Passworte neu eingeben. Ich wuerde mich einloggen und bei der ersten Nutzung meiner Keys ein Passwort eingeben wollen und dann fuer die naechste Zeit (z.B. den Rest des Arbeitstages) nicht mehr gefragt werden wollen.

Der SSH-Agent leistet schon gute Arbeit (siehe elssh-agent) und es gibt auch Tools wie Keychain, aber ich koennte genau so gut meinen GPG Agent fuer alles nutzen. Der laeuft sowieso und kann mittlerweile auch SSH-Keys verwalten. Vorteil: er ist bei den meisten Systemen schon „onboard“ und laeuft bereits nach dem X-Login nutzbar im Hintergrund fuer alle Prozesse erreichbar.

Den Start des GPG-Agenten uebernimmt /etc/X11/Xsession.d/90gpg-agent
mit folgenden Zeilen:


: ${GNUPGHOME=$HOME/.gnupg}

GPGAGENT=/usr/bin/gpg-agent
PID_FILE="$GNUPGHOME/gpg-agent-info-$(hostname)"

if grep -qs '^[[:space:]]*use-agent' "$GNUPGHOME/gpg.conf" "$GNUPGHOME/options"
&& test -x $GPGAGENT &&
{ test -z "$GPG_AGENT_INFO" || ! $GPGAGENT 2>/dev/null; }; then

if [ -r "$PID_FILE" ]; then
. "$PID_FILE"
fi

# Invoking gpg-agent with no arguments exits successfully if the agent
# is already running as pointed by $GPG_AGENT_INFO
if ! $GPGAGENT 2>/dev/null; then
$GPGAGENT --daemon --sh >"$PID_FILE"
. "$PID_FILE"
fi
fi

… also brauche ich die Zeile


use-agent

in der Datei $HOME/.gnupg/gpg.conf oder $HOME/.gnupg/options, um den GPG-Agenten von X starten zu lassen.

Den Angaben von man gpg-agent folgend kann ich in der Datei $HOME/.gnupg/gpg-agent.conf dem GPG-Agenten einige Verhaltensweisen vorschreiben.

Fuer mich nuetzliche Konfiguraionsparameter in $HOME/.gnupg/gpg-agent.conf

# PIN Eingabe UI
pinentry-program /usr/bin/pinentry-qt

# Maus und Keyboard nicht erfassen, sobald Pin Eingabe erscheint
# um X-Sniffing zu vermeiden
no-grab

# SSH-Agent Support aktivieren
enable-ssh-support

# ENV Datei schreiben
write-env-file ${HOME}/.gnupg/gpg-agent-info-${Hostname}

# Gueltigkeit auf 8 Stunden setzen 8x60x60 (fuer GPG Keys und SSH Keys)
default-cache-ttl 28800
default-cache-ttl-ssh 28800

# Lebensdauer auf 12 Stunden setzen 12x60x60 (fuer GPG Keys und SSH Keys)
max-cache-ttl 43200
max-cache-ttl-ssh 43200

# fuer Signierung von Keys erneut nach Passwort fragen
ignore-cache-for-signing

Nun kann ich nach erfolgreichem X-Login auf einer Konsole (oder Terminal 😉 )
den laufenden GPG-Agent ansprechen:


heino@noirtom:~$ ps ax | grep gpg-agent
3471 ? Ss 0:00 /usr/bin/gpg-agent --daemon --sh
4848 pts/1 R+ 0:00 grep gpg-agent
heino@noirtom:~$ # GPG-Agent laeuft also

heino@noirtom:~$ gpg-connect-agent
/help
Available commands:
/echo ARGS Echo ARGS.
/definqfile NAME FILE
Use content of FILE for inquiries with NAME.
NAME may be "*" to match any inquiry.
/definqprog NAME PGM
Run PGM for inquiries matching NAME and pass the
entire line to it as arguments.
/showdef Print all definitions.
/cleardef Delete all definitions.
/sendfd FILE MODE Open FILE and pass descripor to server.
/recvfd Receive FD from server and print.
/help Print this help.
....

heino@noirtom:~$

Jetzt lade ich meinen Lieblings SSH Key in den vom GPG-Agent per Socket
vorgetaeuschten SSH-Agenten.

heino@noirtom:~$ ssh-add -l
The agent has no identities.
heino@noirtom:~$ ssh-add .ssh/keys/heinoon_sshid
Enter passphrase for .ssh/keys/heinoon_sshid:

+--------------------------------------------------+
| pinentry-XX |
| please enter passphrase ... |
| (siehe Foto Anhaenge) |
| |
| Passphrase: _____________________ |
+--------------------------------------------------+

Identity added: .ssh/keys/heinoon_sshid (.ssh/keys/heinoon_sshid)
heino@noirtom:~$

Dabei gebe ich zuerst mein SSH-Key Passwort ein, wie bei einem normal
laufenden SSH-Agent. Dann oeffnet sich das konfigurierte PINENTRY-UI
und fragt nach einem Passwort, mit der der geheime SSH-Key im
„Schluesselkaestchen“ ($HOME/.gnupg/private-keys-v1.d/) des
GPG-Agenten gespeichert und verschluesselt werden soll. Dieses Passwort
ist frei waehlbar und es macht Sinn, nicht das Passwort des SSH-Keys zu
nehmen, sondern ein gleichwertig komplexes Passwort neu zu ersinnen. 😉

Der geheime SSH Key verschluesselt und gepseichert im Schluesselkasten vom GPG-Agent.


heino@noirtom:~$ ls .gnupg/private-keys-v1.d/
E78A62DB501143D11A82DBE5CA4DE81CA4B0B187.key
heino@noirtom:~$ less .gnupg/private-keys-v1.d/<...>.key
".gnupg/private-keys-v1.d/<...>.key" may be a binary file. See it anyway?
(21:protected-private-key(3:dsa(1:p513: .....
......9:protected25:openpgp-s2k3-sha1-aes-cbc((4:sha18:....
.......7:comment23:.ssh/keys/heinoon_sshid))
heino@noirtom:~$

Fuer die komplette Laufzeit des GPG-Agenten und die Lebensdauer des SSH-Keys
liegt dieser Key fuer die Nutzung bereit …


heino@noirtom:~$ ssh-add -l
4096 f5:52:bd:4a:be:02:74:ed:27:b0:67:78:a5:d8:d2:59 .ssh/keys/heinoon_sshid (DSA)
heino@noirtom:~$

Nach Ablauf der Gueltigkeit dieses SSH-Keys muss ich das neu ersinnte
Passwort (das zum Speichern im GPG-Agent Schluesselkasten) eingeben.
Die Gueltigkeit wird auch nach einem Neustart des Agenten oder des Systems
zurueckgesetzt. Mein eigentliches SSH-Key Passwort brauche ich erst wieder
nach Ablauf der Lebensdauer des Schluessels.

Die Gueltigkeit eiens SSH-Keys festlegen

default-cache-ttl-ssh 28800 # 8 Stunden

Die Lebensdauer eines Keys bestimmt, wie lange er aus dem Schluesselkasten
des GPG-Agenten verwendet werden darf. Innerhalb der Lebensdauer brauche
ich zum Reaktivieren nur das Schluesselkasten-Passwort des Keys, erst
danach muss ich den SSH-Key wieder erneut hinzufuegen (mittels
ssh-add) und brauche das eigentliche SSH-Key Passwort.

Die Lebensdauer eines SSH-Keys festlegen

max-cache-ttl-ssh 43200 # 12 Stunden

Sobald ich nun eine SSH Verbindung aufbaue und dabei mein SSH-Key benoetigt
wird, wird der GPG-Agent den SSH-Key aus dem Schluesselkasten laden, das
zugehoerige Schluesselkasten Passwort abfragen und den SSH-Key benutzen um mich
beim Verbindungsaufbau zu authentifizieren.

Fuer meine GPG-Keys gilt aehnliches, nur das dort die Keys nach Ablauf
der Lebensdauer nicht neu hinzugefuegt werden muessen. Sobald ich einen
GPG-Key benoetige (z.B. fuer Jabber, Mail, …), werde ich nach meinem
Passwort gefragt und aufgrund der Eintraege


default-cache-ttl 28800 # 8 Stunden Gueltigkeit

und

max-cache-ttl 43200 # 12 Stunden Lebensdauer

dann fuer mindestens 8 Stunden kein Passwort mehr eingeben
muessen. Spaetestens nach 12 Stunden jedoch ist der Key ungueltig und ich
muss erneut mein Passwort eingeben, aber das sollte dann doch zu schaffen
sein. 😉

Zum Schluss noch moechte ich meinen GPG-Agenten anweisen, das Passwort nicht fuer
Signier Aktionen zu nutzen. Das sollte jedesmal meine volle Aufmerksamkeit
fordern. Dazu die folgende Zeile in die Datei $HOME/.gnupg/gpg-agent.conf>

ignore-cache-for-signing

Viel Spass mit dem GPG-Agent. Weiteres kommt …

Ergänzend zu dieser netten Anleitung, wie sich der ssh-agent unter Kubuntu/Ubuntu nutzen lässt, habe ich noch ein kleines Script gebaut, welches dann die ssh-keys nach dem Login auch automatisch einliest.

Sinnvoll ist die Installation einer grafischen Passwort abfrage, beispielsweise mittels „aptitude install ssh-askpass“. Unter Kubuntu bzw. KDE bitte das Script nach ~/.kde/Autostart kopieren und entsprechend anpassen.