scmxx(1) Datenaustausch mit einem Siemens-Handy

SYNOPSIS

scmxx [--device Gerätedatei] [--baud Baudrate] [--quiet] [--verbose] [--reset] {--info | --set-time | --mem-info | --lock-info | --lock lock {--enable | --disable} | --set-smsc --number {Nummer | Name} }

scmxx [--device Gerätedatei] [--baud Baudrate] [--quiet] [--verbose] [--reset] [--out Datei] [--pipe Pipe] {--remove | --send | --get} [--binary] [--mem Speicher] [--slot Speicherplatz] [Datei...]

scmxx [--device Gerätedatei] [--baud Baudrate] [--quiet] [--verbose] [--reset] [--out Datei] [--pipe Pipe] [--pin PIN] {--remove | --send | --get} [--pbook] [--mem Speicher] [--slot Speicherplatz] [--text Text] [ --number {Nummer | Name} ] [Datei...]

scmxx [--device Gerätedatei] [--baud Baudrate] [--quiet] [--verbose] [--reset] [--out Datei] [--pipe Pipe] {--remove | --send | --get} [--sms] [--mem Speicher] [--slot Speicherplatz] [--text Text] [ --number {Nummer | Name} ] [--direct] [--flash] [--srr] [--unicode] [Datei...]

scmxx [--help] [--version]

BESCHREIBUNG

SCMxx kann bestimmte Dateien zu und von einem Siemens-Handy übertragen und dort gespeicherte löschen. Die Daten werden aus einer Datei oder von der Standardeingabe gelesen, geschrieben wird in eine Datei oder auf die Standardausgabe. Kurznachrichten (SMS) können direkt gesendet und empfangen werden, also ohne daß sie auf dem Handy gespeichert werden. SCMxx wurde mit mehreren Handys von Siemens getestet (nur S25 und später).

OPTIONEN

--device (-d)
definiert eine Gerätedatei. Diese wird statt der in der Umgebungsvariable SCMXX_TTY und dem einkompilierten Wert verwendet. Für Linux-Systeme kann dies /dev/ttyS0 für eine serielle Verbindung, /dev/ircomm0 für eine Infrarot-Verbingung und /dev/rfcomm0 for eine Bluetooth-Verbingung sein. Wenn native Bluetooth-Unterstützung einkompiliert wurde, können zusätzlich die Formen bt://[xx:xx:xx:xx:xx:xx]:n oder bluetooth://[xx:xx:xx:xx:xx:xx]:n benutzt werden, um eine Bluetooth-Adresse xx:xx:xx:xx:xx:xx und einen Kanal n (Vorgabewert ist 1) anzugeben. Die Angabe des Kanals is optional, in diesem Fall muss aber auch der Doppelpunkt weggelassen werden.
--baud (-b)
definiert ein Baudrate, mit der zum Gerät verbunden wird. Die gültigen Werte sind abhängig vom System, typische sind jedoch 9600, 19200, 38400, 57600 oder 115200. Der Standardwert ist 19200. Das S25 und die *35i arbeiten nur bei 19200, alle späteren Modelle arbeiten auch bei voller serieller Geschwindigkeit. Infrarotverbindungen können, abhängig vom IrDA-Modul, eine Ausnahme sein. Dies übergeht die SCMXX_BAUD-Variable und den einkompilierten Wert.
--out (-o)
definiert eine zu benutzende Datei. Wenn man Binärdatein mit "all" holt, werden die Speicherplatznummer und der Dateityp angehängt. Wenn man sendet oder löscht, hat dieser Parameter keine Wirkung aber die letzten Parameter sollten beim Senden gültige Dateien sein. Die Standardausgabe muß explizit mittel einem Bindestrich ('-') angegeben werden, sonst wird nichts auf diese geschrieben. Wenn '-' angegeben wurde, wird nicht an diesen Wert, auch beim holen von mehereren Dateien, angehängt.
--pipe (-p)
definiert eine Pipe zu einem anderen Programm. Wenn man mit "all" Daten holt, wird jede Datei in eine eigene Pipe geschickt (nur mit --binary und --sms).
--quiet (-q)
verringert die Menge der Ausgaben um 1
--pin
die Option kann man benutzen, wenn ein PIN-Code zum Zugriff erforderlich ist
--verbose (-v)
erhöht die Menge der Ausgaben um 1
--reset
versucht, das Handy zurückzusetzen, sodaß man wieder darauf zugreifen kann. Es kann passieren, daß das Handy nicht mehr auf der seriellen Schnittstelle antwortet, besonders nach einem vom Benutzer unterbrochenen Dateitransfer. Dies sendet einfach blind ein paar besondere Zeichen.
--help (-h)
gibt die Hilfeseite aus
--version
gibt die Version aus
--remove (-r)
löscht einen Eintrag vom Handy Wenn --sms und --get mit angegeben werden, holt und löscht dies. Wenn --sms und --send mit angegeben werden, sendet und löscht dies.
--get (-g)
holt einen Eintrag und Speichert ihn in eine Datei Wenn --sms und --remove mit angegeben werden, holt und löscht dies. Wenn --sms und --send mit angegeben werden, holt und sendet dies.
--send (-s)
sendet eine Datei zum Handy Beim Senden vom Kurznachrichten könnte die Option --direct ebenfalls von Interesse sein. Wenn --sms und --remove mit angegeben werden, sendet und löscht dies. Wenn --sms und --get mit angegeben werde, holt und sendet dies.
--info (-i)
sammelt Informationen vom Handy, --mem-info kann als Schalter benutzt werden und eine komplexere Tabelle über die verfügbaren Speicher auszugeben.
--mem-info
zeigt Informationen über verfügbare Speicher und deren Speicherplätze und andere Informationen an. Es benutzt dasselbe Format wie --mem=? und kann als Schalter für --info dienen, um die kurze Speicherauflistung zu ersetzen.
--lock-info
zeigt den Status der Zugriffssperren (locks) an. Es kann als Schalter für --info dienen, um die kurze Speicherauflistung zu ersetzen.
--lock
wählt die ein-/auszuschaltende Sperre aus. Für einige Sperren wird ein Passwort benötigt (siehe --pin).
--enable
einschalten z.B. einer Sperre
--disable
ausschalten z.B. einer Sperre
--dial
wählt eine Nummer (erforder --number). Das Programm beendet sich entweder nach 10 Sekunden oder wenn der Anruf die angerufene Seite erreicht hat.
--hangup
beendet alle, momentan aktiven Gespräche
--set-time
gleicht die Zeit des Handy mit der des Rechners ab. Der Einsatz eines Programms wie ntpdate wird vor der Nutzung dieses Parameters empfohlen.
--set-smsc
setzt eine neue SMSC nummber (erfordert --number)
--binary (-N)
wählt den Binärdateiübertragungsmodus
--pbook (-P)
wählt den Telefonbuchübertragungsmodus
--sms (-S)
wählt den Kurznachrichtenübertragungsmodus
--mem
wählt den Speicher aus, der benutzt werden soll. Speicherplatznummern hängen von dieser Wahl ab. Die Ausgabe von --info zeigt unterstützte Speicher an. Wird diese Optioen nicht benutzt, wird eine eventuell vorhandene Vorgabe benutzt. Es gibt den besonderen Wert "?", der die selbe Ausgabe wie --mem-info hat, nur daß es auf den gewählten Modus eingeschränkt wird.
--slot
wählt die zu benutzende Speicherplatznummer aus. (siehe Ausgabe von --mem-info oder --mem=?). Wird diese Optioen nicht benutzt, wird eine eventuell vorhandene Vorgabe benutzt. Der besondere Wert "all" definiert the alle verfügbaren Speicherplatznummern für den gewählten Speicher und Modus (mit der Ausnahme von --sms mit --send). Für den Kurznachrichtenübertragungsmodus gibt es die besonderen Werte "read" (gelesen), "unread" (ungelesen), "sent" (bereits gesendet) und "unsent" (noch nicht gesendet). Die letzteren beiden können mit --sms und --send benutzt werden. Für den Telefonbuchmodus gibt es zusätzlich den Wert "last" (letzter). Wenn diese Option nicht angegeben wird, versucht scmxx einen leeren Speicherplatz zu finden (je nachdem kann dies auch länger dauern). Wenn ein Wert angegeben wurde und meherere Datei gesendet werden, ist die angebene Speicherplatznummer der Startpunkt für die Suche nach leeren Speicherplätzen. Mehere, nicht-leere Speicherplätze zu überscheiben wird noch nicht unterstützt, außer für den Spezialfall "all" (alle).
--text (-t)
definiert den Inhalt einer Kurzmitteilung oder eine Telefonbucheintrags. Bei Telefonbucheinträgen hängt die Länge vom gewählten Telefonbuch ab (siehe Ausgabe von --mem-info oder --mem=?).
--number (-n)
definiert die Nummber beim Senden einer Kurznachricht oder die Nummer bei einem Telefonbucheintrag. Die Nummer kann ein Prefix '+' für internationale Nummern haben und ist normalerweise auf 20 Ziffern (ohne das '+') limitiert, was genug sein sollte.
--direct
sendet/holt Kurznachrichten ohne sie auf dem Handy zu speichern. Dies ist kein Standardwert, weil man für das Senden von Kurznachrichten normalerweise Geld bezahlen muß. Beim direkten Holen werden Kurznachrichten, die nicht vom Type SMS-DELIVER sind trotzdem auf dem Handy gespeichert, da diese noch nicht dekodiert werden können.
--unicode
sendet Kurznachrichten als UCS-2 (16bit-Unicode-Zeichensatz). Dieser Parameter muß nicht angegeben werden, um Unicode-Kurznachrichten zu dekodieren.
--flash
dies setzt das Class0-Bit im DCS-Feld, was beim Empfänger normalerweise als "immediate display" (unmittelbar anzeigen) interpretiert wird. Nicht alle Empfangsgeräte unterstützen das. Man muß außerdem beachten, daß eine zweite Kurznachricht mit dieser Einstellung eine vorherige ohne Nachfrage überschreibt! Die Nutzung wirde deshalb nicht empfohlen.
--srr
dies setzt das Bit StatusReportRequest (Statusreport anfordern) im pdutype-Feld der SMS-PDU. Es hängt von der SMSC ab, ob dieses Bit beachtet wird. Bei manchen Providern kosten StatusReports extra.
--sort
sortiert die Kurznachrichten bei der Ausgabe. Mögliche Sortiermethoden sind "type", "slot" und "type,slot". "type" sortiert nach dem Nachrichtentyp mit einer internen Rangfolge: erst die nicht unterstützten Typen, dann SMS-SUBMIT, SMS-STATUS-REPORT und SMS-DELIVER. "slot" sortiert nach dem Speicherplatz der Kurzmitteilung. "type,slot" sortiert erst wie "type" und dann jeden Typen wie "slot". Die Vorgabe ist keine Sortierung (Reihenfolge hängt vom Handy ab).
--pin
ermöglichst die Nutzung einer PIN. Diese Option sollte nur benutzt werden, wenn nach eine Fehlermeldung erscheint, die nach einer PIN oder PUK verlangt. Für eine PIN ist dies die erwartete "<PIN>", für eine PUK ist dies die erwartete "<PUK>,<new PIN>". Der Wert wird nur ein einziges Mal benutzt. Die Pin-Datei sollte, wenn möglich, stattdessen benutzt werden (siehe unten).
--system-charset
definiert den Systemzeichensatz anstatt den Rückgabewert von nl_langinfo(CODESET) zu nutzen. Das ist eine Behelf für Systeme, die keine Unicode-Locales wie UTF-8 unterstützen oder wenn Daten von einem anderen System mit einer anderen Locale als Eingabe benutzt werden soll. Normalerweise wird diese Option nicht benötigt.

BEISPIELE

Senden einer Bitmapdatei an das Handy (Logo):
scmxx --send --binary --mem="bmp" --slot=0 myfile.bmp
Holen eines Logos vom Handy und speichern in eine neue Datei:
scmxx --get --binary --mem="bmp" --slot=0 --out=myfile.bmp
Holen aller ungelesenen (Vorhabe beim holen) Kurznachrichten und Ausgabe auf die Standardausgabe:
scmxx --get --sms --slot=unread --out=-

scmxx -gS -o-

Direkten empfangen einer Kurznachricht:
scmxx --send --sms --direct --number=123 --text="test"
Holen eines Telefonbuchs und speichern in eine Datei:
scmxx --get --pbook --mem=SM --out=SM.pb
Änders des Speicherplatzes 33 im Telefonbuch SM:
scmxx -sP --mem=SM --slot=33 --number=123 --text="test"

BESONDERHEITEN

Die Ausgabe von Text (Telefonbuch und SMS) hängt von dem Zeichensatz der gewählten Systemlocale ab, ebenso für die Eingabe. Das hat den Vorteil der Lokalisation aber auch den Nachteil, daß alle nicht von der Locale unterstützten Zeichen mit einer Sequenz \XXXX eingegeben werden müssen, wobei X ein Hexadezimalzeichen ist (z.B. \20ac für das Eurozeichen). Das ist der 16bit-Unicode-Wert. Die \XXXX-Ausgabe wird nur für Ausgaben benutzt, die normalerweise auch wieder als Eingabe dienen können. Für alle anderen Ausgabe wird ein Fragezeichen ('?') als Platzhalter genommen. Mit einer UTF-8-locale kann man sicherstellen, daß alle Zeichen konvertiert und angezeigt werden können. Das Zeichen für das Zeilenende kann als das übliche \n eingegeben werden und '\' muß sich selbst vorangestellt werden. In der bash kann dies sogar in einem "\\\\" enden.

VERBINDUNGSPROBLEME

Es gibt die zusätzlichen Parameter --ignore-serial-bits (serielle Bits ignorieren, Vorgabe) und --keep-serial-bits (serielle Bits beibehalten). Diese sollte man nur probieren, wenn das Handy keine Antwort zu geben scheint. Welchen Einstellung die richtig ist, hängt vom Kabel und vom seriellen Port ab und kann nicht automatisch bestimmt werden.

Wenn Timeouts beim ersten Kommando kommen, kann man außerdem die Option --start-delay=<seconds> (Anfangsverzögerung in Sekunden) probieren.

Eine weitere Option --device-timeout=<seconds> (Gerätetimeout in Sekunden) gibt es für den Fall, daß es das Handy nicht schafft, auf ein Kommando innerhalb von 10 Sekunden zu antworten. Eigentlich sollte dies mehr als genug sein, aber man weiß ja nie. Der minimal erlaubte Wert ist 1, der höchste von 25 bedeutet "unendlich lange".

SICHERHEIT

Die --pin Option sollte man mit Vorsicht benutzen. Diese Option mitsamt Wert ist in der Prozesslist sichtbar.

UMGEBUNGSVARIABLEN

SCMXX_TTY
siehe --device für eine Beschreibung
SCMXX_BAUD
siehe --baud für eine Beschreibung

DATEIEN

~/.scmxx/cache.pb
Diese Datei dient als Telefonbuch (für Nummer von Empfänger/Sender) während der Ausgabe von Kurznachrichten und als Alias für --number beim Senden von Kurznachrichten. Das Format ist dasselbe wie eine Telefonbuchdatei (die Speicherplatznummern sind nicht wichtig, müssen aber vorhanden sein).
~/.scmxx/config
Diese Datei kann Option in der langen Form (aber ohne die --) enthalten. Der Wert is von der Option durch ein '=' getrennt. Eine beliebige Anzahl von Leerzeichen ist am Anfang der Zeile, vor und nach dem Trennzeichen erlaubt. Ein '#' am Anfang der Zeile markiert diese Zeile als Kommentar. Beispiele:

          #eine andere Gerätedatei festlegen
          device  =  /dev/ttyS0
          #SMS immer als UCS-2 senden
          unicode
          

~/.scmxx/pin
Diese Datei wird als Alternative zur --pin Kommandozeilenoption benutzt. Die Datei DARF NICHT gruppenlesbar/-schreibbar oder weltlesbar/-schreibbar sein! Es MUSS auch eine reguläre Datei sein, kein SymLink. SCMxx wird sonst die Nutzung der Datei verwehren. Wenn ein PUK-Wert vom Gerät angefordert wird, muß ein zugehöriger PIN-Wert ebenfalls definiert sein. Die einzig nötigen Formatelemente sind '{', '=', ';' und '}'. Leerzeichen und Zeilenumbrüche werden ignoriert. Die Datei hat das folgende Format:

          sim 262031234567890 {
            pin = 1234
            puk = 12345678;
            pin2 = 4321;
            puk2 = 87654321;
          }
          device 350123456789012 {
            type SIM {
              pin = 0000;
              puk = 0000;
            }
          }
          

"sim"-Sektionen benutzen die IMSI als Variable, "device"-Sektionen benutzen die IMEI als Variable (siehe Ausgabe von --info). Da die IMSI benötigt wird, können sie hiermit nicht das Handy einschalten. Die "type"-Untersektion in der device-Sektion hat folgende Variablen:

SIM
Gerätecode (Diebstahlsicherung)
FSIM
die zuallererst eingelegte SIM
NET
Netwerk-Personalisierung
NETSUB
Netwerk-Subset-Personalisierung
SP
Service-Provider-Personalisierung
CORP
Corporate-Personalisierung

AUTOR

Hendrik Sattler [email protected]