NAME¶
scmxx - 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 post@hendrik-sattler.de