AT-Kommandos für GSM-Geräte

Ich führe primär die Befehle auf, die irgendwelche interessanten Dinge tun oder ausgeben. Nicht alle Optionen werden in allen Softwareversionen unterstützt, manche Optionen sind bereits in den GSM-Specs als 'not mandatory' bezeichnet und werden von Nokia oder Siemens (und auch anderen Herstellern) prompt nicht unterstützt.
Weiterhin erwähne ich nicht diejenigen Befehle, die sowieso immer gehen (ATD zum Wählen, ATZ, AT&F etc.)
Und vollständig ist die Liste ja sowieso nie.

 (die speziellen Befehle für Siemens-Telefone sind hier)
 

Call Control

 ATD...;Eine Rufnummer wählen
AT+CHUPAuflegen
AT+CRC'Cellular result codes' (erweitertes Format der RING-Meldung) Ein/Ausschalten
AT+CVIBden Vibrator aktivieren/deaktivieren/abfragen

Telefoninformation

AT+CBCBatterieladestatus abfragen
AT+CGMIAbfrage der Herstellerinformation
AT+CGMMAbfrage der Modellinformation
AT+CGMRAbfrage der Revisionsinformation
AT+CGSNAbfrage der Seriennummer
AT+GCAPAbfrage der implementierten Features

Netzwerkzugriff

AT+COPSEin-, Aus- und Herumbuchen in allen erreichbaren Netzen
AT+CREGAbfrage des Netzwerkstatus des Telefons
AT+CSQSignal Quality und Empfangspegel abfragen
AT+CLCKSetzen, Löschen und Abfragen von Sperren

Nachrichten

AT+CMGFAbfragen des Formats für ein- und ausgehende Nachrichten
AT+CSCSAbfrage/Setzen des verwendeten Zeichensatzes
AT+CNMIKonfiguration des Nachrichtenroutings/der Anzeige von neuen Nachrichten
AT+CMGSVersenden einer Kurznachricht im PDU-Mode
AT+CSCBEmpfangen von CellBroadcast-Nachrichten

Telefonbuch

AT+CPBSAuswählen eines Telefonbuchspeichers
AT+CPBRLesen der Telefonbucheinträge
AT+CPBWSchreiben der Telefonbucheinträge



atd...; Eine Rufnummer wählen
atd...;Baut eine Verbindung zu der angegebenen Nummer auf. Gültige Zeichen für den Wählstring sind: 1 2 3 4 5 6 7 8 9 0 * # + A B C. Das Semikolon baut explizit eine Sprachverbindung auf.
atds<s>;wie oben, wählt aber für ein s von 1 bis 9 eine Telefonnummer aus den Telefonbuchspeichern 1 bis 9
atdlwählt die letzte gewählte Rufnummer noch einmal

at+cbc Batterieladestatus abfragen
+CBC: a,b

a ist der Batteriestatus (0 Batteriebetrieb, 1 Netzbetrieb), b gibt den Ladungszustand der Batterie an. Verschiedene Hersteller liefern hier verschiedene Interpretationen:

HerstellerWerte für b
Siemens0,20,40,60,80,100
Nokia30,50,70,90

at+cgmi Abfrage der Herstellerinformation
+CGMI: aEine mögliche Antwort könnte +CGMI: SIEMENS sein. Die Implementierung dieses Kommandos ist optional.

at+cgmm Abfrage der Modellinformation
+CGMM: aEine mögliche Antwort könnte +CGMM: S10 sein. Die Implementierung dieses Kommandos ist optional.

at+cgmr Abfrage der Revisionsinformation
+CGMR: aEine mögliche Antwort könnte +CGMR: 08 sein. Die Implementierung dieses Kommandos ist optional. Bei SIEMENS-Geräten kann optional auch +GMR verwendet werden.

at+cgsn Abfrage der Seriennummer
+CGSN: aViele Telefone (darunter das S10) geben hier die IMEI zurück, was aber so nicht zwingend vorgeschrieben ist. Eine mögliche Antwort könnte +CGSN: 447968513455429 sein. Die Implementierung dieses Kommandos ist optional. Bei SIEMENS-Geräten kann optional auch +GSN verwendet werden.

at+chup Auflegen
at+chupTrennt eine bestehende Verbindung

at+cimi IMSI des eingelegten SIM abfragen
at+cimigibt die IMSI des ins Telefon eingelegten SIM aus:
at+cimi
2926202419208651
OK

at+clck Setzen von Sperren
at+clck=?Ergibt eine Liste mit unterstützten Sperrmöglichkeiten. Die Syntax ist sowas von krank, wer sowas braucht, dem schicke ich gerne die entsprechende GSM-Spec, das steht genau drin, wies geht.

at+cmgf
at+cmgf?Zeigt die aktuelle Einstellung an, CMGF=0 bedeutet PDU-Mode, CMGF=1 bedeutet Textmode.
at+cmgf=?Zeigt an, ob nur PDU-Mode oder auch Textmode zur Verfügung steht.
at+cmgf=xSetzt die zu verwendende Einstellung

at+cmgs Versenden einer Kurznachricht im PDU-Mode
at+cmgs=xVersendet eine Kurznachricht. Die Daten der Kurznachricht müssen im PDU-Format übergeben werden, was ein wenig Gehirnschmalz kostet. x gibt die Länge der übergebenen Daten der PDU an, wobei die (optionale) Angabe des zu verwendenden SMSC nicht mitgezählt wird. Wers wirklich tun will, der besuche den entsprechenden Exkurs.
Nach abschicken des Kommandos antwortet das Telefon mit einem Prompt '> ', nach dem die PDU an das Telefon übergeben werden kann. Die PDU wird mit CTRL-Z abgeschlossen.

at+cnmi Konfiguration des Nachrichtenroutings/der Anzeige von neuen Nachrichten
at+cnmi?zeigt die aktuellen Einstellungen an.
at+cnmi=
mode,mt,bm,ds,bfr

Uhh. Ich hasse dieses Kommando. Also:
mode gibt an, wie unverlangt eintreffende Benachrichtigungen über Nachrichtenereignisse behandelt werden sollen:

0immer im TA puffern
1zum TE senden, wenn der TA-TE-Link frei ist, andernfalls verwerfen
2im TA puffern, wenn der TA-TE-Link gerade benutzt wird, nach freiwerden des Links zum TE senden
3immer zum TE senden

mt gibt an, wie beim Empfang von Kurznachrichten verfahren werden soll. Hierbei ist zu beachten, daß das SM-Handling wesentlich von der verwendeten Kodierung abhängt:

0versuchen, die Nachricht zu speichern, aber keine Empfangshinweise erzeugen
1versuchen, die Nachricht zu speichern, Empfangshinweise bei erfolgreicher Speicherung erzeugen
2alle 'Class 2'-Nachrichten werden wie bei 1 behandelt, alle anderen Nachrichten werden direkt zum TE geschickt
3alle 'Class 3'-Nachrichten werden direkt zum TE geschickt, alle anderen werden wie bei 1 behandelt

bm gibt an, wie bei eintreffenden CellBroadcast-Nachrichten reagiert werden soll:

0keine Empfangshinweise erzeugen
1versuchen, die CBM zu speichern, Empfangshinweise bei erfolgreicher Speicherung erzeugen
2neue Nachrichten werden direkt zum TE geschickt
3neue 'Class 3'-Nachrichten werden direkt zum TE geschickt, alle anderen Nachrichten werden wie bei 1 behandelt.

ds gibt an, was mit eintreffenden SMS-Statusnachrichten geschehen soll:

0es werden keine Statusnachrichten zum TE geschickt
1SMS-Statusnachrichten werden zum TE geschickt
2SMS-Statusnachrichten werden im ME/TA gespeichert, im Erfolgsfall wird eine Nachricht zum TE geschickt

bfr gibt an, was mit den im TA gepufferten Nachrichten geschehen soll, wenn mode auf 1,2 oder 3 gesetzt wird:

0alle Nachrichten im Puffer zum TE senden
1den Puffer löschen

at+cops Ein- Aus- und Herumbuchen in allen erreichbaren Netzen
at+cops?zeigt das gerade gewählte Netz an
at+cops=?zeigt eine Liste der aktuell verfügbaren Netze an, etwa so:
+COPS: (2,"D2 PRIVAT",,26202),(3,"D1-TELEKOM",,26201),,(0,1,3,4) ,(0,2),
wobei die Zahl vor dem Betreibernamen den Verfügbarkeitsstatus angibt (0: unbekannt, 1: verfügbar, 2: eingebucht, 3: verboten)
at+cops=m,f,o

versucht eine Aktion abhängig von mode

0automatische Netzwahl, kein weiterer Parameter notwendig
1manuelle Netzwahl, format und network müssen angegeben werden
2ausbuchen (vom S10 nicht unterstützt)
3festlegen von format für die Ausgabe durch at+cops?
4eine Kombination aus 1 und 0: erst wird manuelles Einbuchen in network versucht, falls das nicht funktioniert, wird auf automatische Netzwahl umgeschaltet. format und network müssen angegeben werden

format gibt an, in welchem Format network geliefert wird und kann die folgenden Werte annehmen:

0Zeichenkette, lange Form, etwa "D2 PRIVAT"
1Zeichenkette, kurze Form (wird nicht unterstützt)
2numerisches Format, etwa 26202

at+cpbr Lesen der Telefonbucheinträge
at+cpbr=?gibt die möglichen Parameter und damit auch die Konfiguration des gewählten Telefonbuchs aus:
at+cpbr=?
+CPBR: (1-100),20,18
bedeutet: 100 Einträge im Telefonbuch, die Nummer darf 20 Stellen lang sein, der assoziierte Name darf 18 Stellen lang sein.
at+cpbr=xgibt den Telefonbucheintrag mit der Nummer x aus. Zum Format der Ausgabe siehe at+cpbw.
at+cpbr=1
+CPBR: 1,"+491721212",145,"D2 Kundenbetreuung"

at+cpbs Auswählen eines Telefonbuchspeichers
at+cpbs=?

Abfrage der möglichen Telefonbuchspeicher. Es bedeuten:

"FD"feste Rufnummern im SIM (fixed dialling numbers)
"LD"Wahlwiederholspeic her (last dialled numbers)
"ME"Rufnummernspeicher im Telefon (mobile equipment phonebook)
"SM"Rufnummernspeicher im SIM
"MT"Kombination aus "ME" und "SM"
"TA"Rufnummernspeicher im TA
"OW"Liste der eigenen Rufnummern
at+cpbs=aa ist einer der oben angegebenen Telefonbuchspeicher, der hiermit als aktuell zu benutzender Telefonbuchspeicher ausgewählt wird.
at+cpbs?
+CPBS: a,b,c
Fragt den aktuellen Zustand ab. a ist der ausgewählte Telefonbuchspeicher, b die Anzahl der benutzten Einträge und c die Gesamtanzahl der Speicherplätze im ausgewählten Speicher.
b und c werden im S10 nicht unterstützt.

at+cpbw Schreiben der Telefonbucheinträge
at+cpbw=?

gibt die möglichen Parameter und damit auch die Konfiguration des gewählten Telefonbuchs aus:
AT+CPBW=?
+CPBW: (1-100),20,(128-255),18

bedeutet: 100 mögliche Einträge, die Nummer darf 20 Zeichen lang sein, als 'type of address' wird ein Wert von 128-255 akzeptiert, der Name darf 18 Zeichen lang sein. Mögliche, sinnvolle Werte für den 'type of address' (nach GSM 04.08) sind:

145'international number', also alles, was mit '+...' beginnt
129'unknown number format', also alles, was nicht mit '+...' beginnt.
at+cpbw=...schreibt einen Telefonbucheintrag im oben angegebenen Format
at+cpbw=1,"+491721212",145,"D2 Kundenbetreuung
OK

at+crc 'Cellular result codes' (erweitertes Format der RING-Meldung) Ein/Ausschalten
at+crc?Fragt den aktuellen Stand ab
at+crc=(0,1)

Schaltet die 'Cellular result codes' ein oder aus. Wie üblich: 0 aus, 1 ein. Das erwartet auf den interessierten Beobachter an Stelle eines simplen RING:

+CRING: ASYNCDaten asynchron transparent
+CRING: SYNCDaten synchron transparent
+CRING: REL ASYNCDaten asynchron non-transparent
+CRING: REL SYNCDaten synchron non-transparent
+CRING: FAXFax
+CRING: VOICESprachanruf
+CRING: VOICE/XXXDaten nach Sprache, XXX ist eine der 4 Datenkennungen (BS81 nach GSM 02.02)
+CRING: ALT VOICE/XXXAbwechselnd Daten und Sprache, Sprache zuerst (BS61 nach GSM 02.02)
+CRING: ALT XXX/VOICEAbwechselnd Daten und Sprache, Daten zuerst (BS61 nach GSM 02.02)
+CRING: ALT VOICE/FAXAbwechselnd Fax und Sprache, Sprache zuerst (TS61 nach GSM 02.02)
+CRING: ALT FAX/VOICEAbwechselnd Fax und Sprache, Fax zuerst (TS61 nach GSM 02.02)

at+creg Abfrage des Netzwerkstatus des Telefons
at+creg=n

n T> erzeugt einen der nachgenannten Effekte:

0keine Meldungen bei Änderung des Netzwerkstatus oder der Einbuchung (default)
1Meldung bei Änderung des Netzwerkstatus in der Form +CREG: x
2Meldung bei Änderung des Netzwerkstatus oder der aktuell gewählten Zelle in der Form +CREG: x,la,ci
S10 : nicht implementiert
at+creg?

gibt den Wert von n und den aktuellen Netzwerkstatus sowie bei Status 1 oder 5 Informationen zur aktuell gewählten Zelle aus, etwa
at+creg? +CREG: 0,1,02D0,416F bedeutet: Meldungen werden nicht ausgegeben, Status ist 1, eingebucht im Heimatnetz in LA 02D0, dort aktuell gewählte Zelle 416F. Als Status wird zurückgemeldet:

0 nicht eingebucht, keine Netzsuche
1eingebucht, Heimatnetz
2nicht eingebucht, Netzsuche
3nicht eingebucht, Einbuchung abgelehnt
4Status unbekannt
5eingebucht, Fremdnetz

at+cscb Empfangen von CellBroadcast-Nachrichten
at+cscb?gibt den momentanen Empfangsstatus für CB aus
at+cscb=mode,id,cssetzt die Empfangsparameter für CB
mode: die Nachrichten, auf die die in id und cs angegebenen Werte zutreffen, werden empfangen (mode: 0) oder nicht empfangen (mode: 1)
id: ein oder mehrere Bereiche von CB-Message-IDs
cs: ein oder mehrere Bereiche von CB-Codierungsschemata
Beispiele:
at+cscb=1,"",""empfängt alle eintreffenden CB-Nachrichten
at+cscb=0,"50,100","0-99" empfängt die Kanäle 50 und 100
at+cscb=1,"1-99",""emp fängt alle CB-Nachrichten der Kanäle 0 und 100-999
Die eintreffenden Nachrichten erscheinen normalerweise leider nicht im Textmode, also als lesbarer Klartext, sondern im PDU-Mode, also in genau der Form, in der sie zwischen BTS und MS übertragen werden. Das sind 88 Byte, davon sind 6 Byte Headerinformationen und 82 Byte Nutzdaten. Etwa so:
+CBM: 88
431302580011CD246BE69AB97....
Der Header enthält folgende Informationen:
Byte 1-2die 'Message serial number', darin versteckt der 'Geographical scope indicator', der 'Message code' und die 'Update number'
Byte 3-4'Message identifier', der CB-Kanal
Byte 5das 'Data Coding Scheme'
Byte 6der 'Page Parameter'
Und damit das nicht so einfach ist, sind die maximal 93 7-Bit-Zeichen pro Seite einer CellBroadcast-Nachricht in die restlichen 82 Byte verpackt. Urks. Etwa so:
aus 8*7Bit
6543210
6543210
6543210
6543210
6543210
6543210
6543210
6543210
werden 7*8Bit
06543210
10654321
21065432
32106543
43210654
54321065
65432106
Nicht benutzte Bits im letzten Byte sollten auf '0' gesetzt werden. Und wers genauer wissen will, der kann in TS GSM 03.41 (Technical realization of Short Message Service Cell Broadcast (SMSCB)) und TS GSM 03.38 (Alphabets and language-specific information) genaueres dazu finden.

at+cscs Abfrage/Setzen des verwendeten Zeichensatzes
beim S10 nur implementiert: +CSCS: ("GSM"), also der in TS GSM 03.38/6.2.1 definierte 7Bit-Zeichensatz. Der hier:
GSM 03.38 CharSet
Die Spezifikation bemerkt hierzu: this setting causes easily software flow control (XON/XOFF) problems. Dem wäre nichts hinzuzufügen...

at+csq Signal Quality abfragen
+csq: a,b

a ist der momentane Empfangspegel in folgenden Stufen:

0-113dBm oder schlechter
1-111dBm
2...30-109dBm bis -53dBm
31-51dBm oder besser
99nicht lesbar / unbekannt

b ist RXQUAL wie in GSM 05.08 (hier ist die Umrechnungstabelle), wobei RXQUAL natürlich nur während einer Verbindung gelesen werden kann. Im idle mode gibt das Telefon 99 zurück.

Auch hier ist der Bereich der Interpretation der TS GSM weit und unerwartet:

HerstellerWerte für aWerte gem. GSM 05.08
Siemens0 - 31JA
Ericsson0 - 31JA
Nokia0,8,16,24,31NEIN

at+cvib Vibrator ein/ausschalten oder abfragen
at+cvib?Zeigt an, ab der Vibrator aktuell ein- oder ausgeschaltet ist
at+cvib=aSchaltet den Vibrator ein (a := 1) oder aus (a := 0)

at+gcap Abfrage der implementierten Features
+gcap: abei reinen GSM-Geräten wenig nützlich, da nur +GCAP: +CGSM implementiert.

© by N. Hüttisch (nobbi@nobbi.com)