# Der Hayes-Modem-Befehlssatz

Es folgt eine Beschreibung des Hayes-Befehlssatzes. Die meisten Modems verwenden diese Befehle zu einem großen Anteil. Diese Referenz ist nützlich, falls man seine Modem-Beschreibung verloren hat oder niemals eine hatte. Der Befehl zum Ausschalten des Lautsprechers lautet zum Beispiel `ATM0`.

Die Modem-Initialisierungszeichen bestehen aus einer Kette von Befehlen. Sie richten das Modem für die Kommunikation ein, legen den Wahlmodus, Wartezeiten, Erkennung des Besetztzeichens und viele andere Dinge fest. Neuere Modem-Kommunikationsprogramme stellen die Initialisierungszeichen abhängig von den gewählten Menüeinstellungen automatisch zusammen.

Hayes-Modems haben für viele Jahre den Standard bestimmt. Bei der Weiterentwicklung des Marktes haben alle Hersteller mindestens teilweise den Hayes-Standard verwendet. Es folgt eine unvollständige Liste des Hayes-Befehlssatzes. (auch AT-Befehle genannt). Der Befehlssatz kann in vier Bereiche eingeteilt werden:

Grundlegender Befehlssatz

- Ein großer Buchstabe gefolgt von einer Ziffer. Zum Beispiel `M1`.

Erweiterter Befehlssatz

- Ein & (Ampersand) und ein Großbuchstabe gefolgt von einer Ziffer. Es handelt sich um eine Erweiterung des grundlegenden Befehlssatzes. Zum Beispiel: `&M1`. Beachten Sie, dass `M1` sich in der Bedeutung von `&M1` unterscheidet.

Herstellerabhängiger Befehlssatz

- Diese Befehle beginnen entweder mit einem umgekehrten Schrägstrich(\) oder einem Prozentzeichen (%). Sie variieren sehr stark von Hersteller zu Hersteller. Aus diesem Grund werden hier nur wenige dieser Befehle aufgelistet.

Registerbefehle

- `S`r`=`n`` wobei `r` die Nummer des zu ändernden Registers und `n` der neue Wert dieses Registers ist.

  Ein Register ist eine Bezeichnung für eine bestimmte Stelle im Speicher. Modems haben einen kleinen Speicher integriert. Diese vierte Gruppe von Befehlen wird verwendet, um Werte in einem bestimmten Register (Speicherplatz) zu verändern. Jedes Register speichert eine bestimmte Variabel (alphanumerische Information), die vom Modem und dem Kommunikationsprogramm verwendet wird. Zum Beispiel setzt der Befehl `S7=60` das Register #7 auf den Wert 60.

Obwohl die meisten Befehle aus einer Buchstaben-Ziffern-Kombination (`L0`, `L1` &etc;) bestehen, ist die Verwendung der Null optional. Im Beispiel können Sie statt `L0` auch einfach `L` verwenden. Das ist wichtig für die folgende Tabelle.

Hier werden einige der wichtigsten Buchstaben einer Initialisierungs-Zeichenkette aufgelistet. Die Buchstaben sollten Sie normalerweise nicht verändern.

`AT`

- Informiert das Modem, dass ein Modem-Befehl folgt. Diese Zeichen müssen am Anfang jeder Befehlszeile stehen.

`Z`

- Setzt das Modem in den Standardzustand.

`,` (ein Komma)

- Hält das Programm für eine Sekunde an. Es können auch mehrere Kommata hintereinander verwendet werden. Zum Beispiel `,,,,` sorgt für eine Pause von vier Sekunden. (Die Dauer der Pause ist abhängig vom Inhalt des Registers `S8`).

`^M`

- Sendet einen abschließenden Zeilenende-Befehl an das Modem. Diese Kontrollsequenz wird von den meisten Kommunikationsprogrammen auch als Zeilenvorschub interpretiert.

## Der grundlegende Hayes-Modem-Befehlssatz

In alphabetischer Reihenfolge:

## Der grundlegende Hayes-Modem-Befehlssatz

Befehl | Beschreibung | Kommentar
`A0` oder `A` | Eingehenden Anruf beantworten |
`A/` | Letzten Befehl wiederholen | Es wird kein `AT` vorangestellt. Das Eingabezeichen bricht normalerweise ab.
`B0` oder `B` | Anruf-Verhandlung | V32 Mode/CCITT Answer Seq.
`B1` | Anruf-Verhandlung | Bell 212A Answer Seq.
`B2` | Anruf-Verhandlung | Wortreich/still beantworten
`D` | Wählen | Die folgende Nummer wählen und die Verbindung im Originate-Modus herstellen. `P` Pulswahl `T` Tonwahl `W` Auf einen zweiten Wahlton warten `,` Warte die im Register `S8` angegebene Zeitspanne (normalerweise 2 Sekunden) `;` Nach der Anwahl im Befehlsmodus bleiben. `!` Für eine halbe Sekunde auflegen, wie bei der Weiterverbindung eines Anrufs. `L` Letzte Nummer noch einmal wählen
`E0` oder `E` | Kein Echo | Befehle werden nicht auf dem Computer angezeigt.
`E1` | Echo | Zeigt die Befehle auch auf dem Computer an (so kann man sehen, was man tippt)
`H0` | Verbindungsstatus | Bei Verbindung - Auflegen
`H1` | Verbindungsstatus | Ohne Verbindung - Telefon wurde abgehoben
`I0` oder `I` | Anfrage, Information oder Befragung | Dieser Befehl ist sehr modellabhängig. `I0` wird üblicherweise mit einer Nummer oder einer Zeichenkette beantwortet, während höhere Ziffern häufig viele wertvolle Informationen liefern.
`L0` oder `L` | Lautstärke. Modems mit Lautstärkeregler verfügen nicht über diese Option. | Aus oder geringe Lautstärke
`L1` |  | Geringe Lautstärke
`L2` |  | Mittlere Lautstärke
`L3` |  | Laut oder große Lautstärke
`M0` oder `M` | Lautsprecher aus | Der Befehl `M3` wird häufig verwendet, aber leider in unterschiedlichen Bedeutungen
`M1` |  | Lautsprecher an bis zum Verbindungsaufbau (carrier detected, also bis das andere Modem antwortet)
`M2` |  | Lautsprecher immer an (Datenübertragungen können nach dem Verbindungsaufbau gehört werden)
`N0` oder `N` | Verbindungsgeschwindigkeit | Verbindung nur mit der Geschwindigkeit `S37`
`N1` |  | Verbindung mit der größtmöglichen Geschwindigkeit größer als `S37`
`O0` oder `O` | Wechsel in den Online-Zustand | Sie auch `X1`, da die Wahltonerkennung aktiv sein kann.
`O1` |  | Neusynchronisation und Wechsel in den Online-Zustand
`Q0` oder `Q1` | Stiller Modus | Aus - Zeigt Resultate, der Benutzer sieht die Befehlsantworten (also ⪚ `OK`)
`Q1` | Stiller Modus | An - Resultate werden unterdrückt, der Benutzer sieht keine Antworten.
`S`n`?` |  | Abfrage des Inhalts von S-Register `n`
`S`n`=`r`` | Speichern | Speichert den Wert `r` im S-Register `n`
`V0` oder `V` | Wortreich | nummerische Resultate
`V1` |  | Englische Textresultate (⪚ `CONNECT`, `BUSY`, `NO CARRIER` &etc;)
`X0` oder `X` | Smartmodem | Hayes Smartmodem 300 kompatible Resultate
`X1` |  | Verbindungsgeschwindigkeit wird zusätzliche angezeigt (⪚ `CONNECT 1200`)
`X2` |  | Aktiviert die Wahltonerkennung (verhindert blindes Anwählen und manchmal `AT0`)
`X3` |  | Aktiviert die Besetztzeichenerkennung
`X4` |  | Aktiviert sowohl Wahlton- als auch Besetztzeichenerkennung
`Z0` oder `Z` | Reset | Setzt das Modem auf die gespeicherte Konfiguration zurück. Für unterschiedliche Einstellungen muss man `Z0`, `Z1` &etc; verwenden. Für Modems ohne NVRAM (non volatile memory) ist das gleichbedeutend mit `&F` für die Fabrikeinstellungen.

## Der Erweiterte Hayes-Modem-Befehlssatz

Ampersand-Befehle

## Der Erweiterte Hayes-Modem-Befehlssatz

Befehl | Beschreibung | Kommentar
`&B0` oder `&B` | Verzögerungsparameter | Automatische Verzögerung deaktivieren
`&B1` | Verzögerungsparameter | Automatische Verzögerung aktivieren
`&B2` | Verzögerungsparameter | Automatische Verzögerung wird aktiviert, aber falls innerhalb der Verzögerungszeit in `S7` keine Verbesserung erfolgt, wird die Verbindung beendet
`&C0` oder `&C1` | Antwort erkennen (Carrier detect) | Signal ist immer an
`&C1` | Antwort erkennen (Carrier detect) | Zeigt die entfernte Antwort an (normalerweise der Standard)
`&D0` oder `&D` | Data Terminal Ready (DTR) | Signal ignoriert (Das ist modemspezifisch, man muss im Handbuch für Informationen zu diesem Befehl nachlesen)
`&D1` | Data Terminal Ready (DTR) | Wenn das Signal DTR von An zu Aus wechselt, wechselt das Modem in den Befehlsmodus (nur einige Modems)
`&D2` | Data Terminal Ready (DTR) | Einige Modems beenden die Verbindung beim Wechsel von DTR von An zu Aus (das ist das übliche Standardverhalten)
`&D3` | Data Terminal Ready (DTR) | Bei DTR Verbindung beenden, Modem zurücksetzen und in den Befehlsmodus wechseln.
`&F0` oder `&F` | Fabrikeinstellungen laden | Generische Hayes-kompatible Standardeinstellungen. Dieser Befehl sollte in Initialisierungskette stehen, da die Befehle `&F1`-`&F3` von Modem zu Modem variieren und die Ursache für Verbindungsprobleme sein können. (Da man niemals genau weiß, was das Modem der Marke X beim `&F2`-Befehl genau ändert.) Auf der anderen Seite lohnt das Ausprobieren alternativer Werte, da einige Probleme statt mit einer komplizierten Init-Kette mit einem simplen `&F2` gelöst werden können. Falls man mit dem Aufbau einer Init-Kette beginnt, sollte man mit einem `&F` und nicht mit der modemspezifischen Variante anfangen.
`&F1` | Fabrikeinstellungen | Fabrikeinstellungen für einen IBM-PC-kompatiblen Computer
`&F2` | Fabrikeinstellungen | Fabrikeinstellungen für einen Mac mit Software-Handshaking
`&F3` | Fabrikeinstellungen | Fabrikeinstellungen für einen Mac mit Hardware-Handshaking
`&G0` oder `&G` | Wachton | Wachtöne deaktivieren
`&K0` oder `&K` | Lokale Flusskontrolle | Lokale Flusskontrolle deaktivieren
`&K1` | Lokale Flusskontrolle | Lokale RTS/CTS-Hardware-Flusskontrolle aktivieren
`&K2` | Lokale Flusskontrolle | Lokale XON/XOFF-Software-Flusskontrolle aktivieren
`&K3` | Lokale Flusskontrolle | Lokale RTS/CTS-Hardware-Flusskontrolle aktivieren
`&K4` | Lokale Flusskontrolle | Lokale XON/XOFF-Software-Flusskontrolle aktivieren
`&L0` oder `&L` | Wahlmodus | Wahlmodus festlegen
`&M0` oder `&M` | Fehlerkontrollmodus | Hier kann man asynchronen nicht-EC-Modus wählen (das gleiche wie `&Q0`)
`&P0` oder `&P` | Pulswahlverhältnis | In den USA und Kanada wird bei Pulswahl ein Verhältnis von 39 % Wahl und 61 % Abbruch verwendet.
`&P1` | Pulswahlverhältnis | In Großbritannien und Hongkong wird bei Pulswahl ein Verhältnis von 33 % Wahl und 67 % Abbruch verwendet
`&Q0` oder `&Q` | Fehlerkontrollmodus | Asynchroner nicht-EC-Modus. Keine Datenpufferung. ASB deaktiviert.
`&Q5` | Fehlerkontrollmodus | Wählt V.42 EC-Operation (erfordert Flusskontrolle)
`&Q6` | Fehlerkontrollmodus | Asynchroner Modus mit ASB (erfordert Flusskontrolle)
`&Q8` | Fehlerkontrollmodus | Wählt alternatives EC-Protokoll (MNP)
`&Q9` | Fehlerkontrollmodus | Bedingte Datenkompression: V.42bis = ja, MNP5 = nein.
`&S0` oder `&S` | DSR-Aktion auswählen | Immer an (Standard)
`&S1` | DSR-Aktion auswählen | Folgt der EIA-Spezifikation (Folgt aktiv dem Trägerton bis dieser verloren geht.)
`&T0` oder `&T` | Selbsttest | Bei einigen Modems wird ein modellspezifischer Selbsttest durchgeführt
`&U0` oder `&U` | Trellis-Code-Modulation | Aktiviert V.32 TCM
`&U1` | Trellis-Code-Modulation | Deaktiviert V.32 TCM
`&V0` oder `&V1` | Aktive | (und häufig gespeichert) Profileinstellungen (oder `ATI4`) anzeigen
`&W0` oder `&W` | Profil speichern | Im NVRAM (`&W0`, `&W1` &etc; bei mehreren Profilen). Einige Einstellungen können nicht gespeichert werden. Diese werden häufig beim Befehl `&V` oder `ATI4` nicht angezeigt.
`&Y0` oder `&Y` | Startkonfiguration auswählen | Profil 0 laden (Standard)
`&Y1` | Startkonfiguration auswählen | Profil 1 laden
`&Z`n`=`x`` | Modem zurücksetzen und das gespeichert Profil Nummer `n` laden | Beachten Sie, dass alle Befehle nach dem `&Z` in der Zeile ignoriert werden.

## Befehle mit Schrägstrich links (Backslash) und Prozentzeichen

Befehl | Beschreibung | Kommentar
`\A0` oder `\A` | Maximale MNP-Zeichenblockgröße | 64-Zeichen-Maximum
`\A1` | Maximale MNP-Zeichenblockgröße | 128-Zeichen-Maximum
`\A2` | Maximale MNP-Zeichenblockgröße | 192-Zeichen-Maximum
`\A3` | Maximale MNP-Zeichenblockgröße | 256-Zeichen-Maximum
`%C0` oder `%C` | Datenkompression aktivieren/deaktivieren | Deaktiviert
`%C1` | Datenkompression aktivieren/deaktivieren | MNP5 aktiviert
`%C2` | Datenkompression aktivieren/deaktivieren | V.42bis (BTLZ) aktiviert
`%C3` | Datenkompression aktivieren/deaktivieren | MNP5 & V.42bis (BTLZ) aktiviert
`%D0` oder `%D` | Datenkompression | 512 BLTZ Dictionary-Größe
`%D1` | Datenkompression | 1024 BLTZ Dictionary-Größe
`%D2` | Datenkompression | 2048 BLTZ Dictionary-Größe
`%D3` | Datenkompression | 4096 BLTZ Dictionary-Größe
`%E0` oder `%E1` | Abbruch-Methode | ESCAPE DEAKTIVIERT
`%E1` | Abbruch-Methode | `+++AT`-Methode (Standard)
`%E2` | Abbruch-Methode | `Break` `AT`-Methode
`%E3` | Abbruch-Methode | Beide Methoden aktiviert
`%E4` | Abbruch-Methode | `OK` für den Befehl `+++` deaktivieren
`%E5` | Abbruch-Methode | `OK` für den Befehl `+++` aktivieren
`\J0` oder `\J` | DTE Datenrate automatisch anpassen | Deaktiviert
`\J1` | DTE Datenrate automatisch anpassen | DTE Rate wird an den Träger angepasst.
`\N0` oder `\N` | Verbindungstyp | Normale Verbindung (Definition siehe unten)
`\N1` | Verbindungstyp | Direkte Verbindung
`\N2` | Verbindungstyp | MNP Auto-reliable Verbindung
`\N3` | Verbindungstyp | Auto-reliable Verbindung
`\N4` | Verbindungstyp | V.42bis zuverlässige Verbindung mit Phasenerkennung
`\N5` | Verbindungstyp | V.42bis auto-verlässliche Verbindung mit Phasenerkennung
`\N6` | Verbindungstyp | V.42 verlässliche Verbindung mit Phasenerkennung
`\N7` | Verbindungstyp | V.42 auto-verlässliche Verbindung mit Phasenerkennung

Eine direkte Verbindung ist eine simple Verbindung ohne Fehlererkennung und Datenkompression. In diesem Falls muss die Verbindung Computer-Modem die gleiche Geschwindigkeit wie die Verbindung Modem-Modem haben.

Eine normale Verbindung verwendet eine Flusskontrolle (entweder software- oder hardware-kontrolliert) um die gesendeten oder empfangenen Datenpakete zu puffern, sodass das Modem die Daten mit einer anderen Geschwindigkeit als der Computer übertragen kann. Zum Beispiel sendet vielleicht der Computer Daten mit 57kbps einschließlich Kompression und das Modem sendet nur mit 28.8kbps. Dieser Modus wird von den meisten Modems verwendet.

Eine verlässliche Verbindung ist eine Art von normaler Verbindung. Falls aus irgendeinem Grund die Fehlererkennung oder Kompression nicht eingerichtet oder beibehalten werden kann, wird die Verbindung getrennt. (Das Modem stellt sicher, dass alle übertragenen Daten korrekt sind oder es beendet die Verbindung).

Ähnlich verhält es sich mit einer auto-verlässlichen Verbindung. Das Modem versucht hierbei, die Übertragungsparameter so anzupassen, das die Verbindung wieder verlässlich wird. Das ist ebenfalls eine Methode, die die meisten Modems verwenden.

## S-Register

## S Register

Register | Bereich | Standard | Funktion
`S0` | 0-255 Klingelzeichen | 1-2 | Antwortet beim angegebenen Klingelzeichen. Bei 0 wird nicht geantwortet
`S1` | 0-255 Klingelzeichen | 0 | Wenn der Wert in `S0` größer als 0 ist, zählt dieses Register die eingehenden Klingelzeichen.
`S2` | 0-127 ASCII | 43 + | Zeichen zum Abbruch in den Befehlsmodus
`S2` | >127 |  | kein ESC
`S3` | 0-127 ASCII | 13 CR | Zeilenende-Zeichen
`S4` | 0-127 ASCII | 10 LF | Zeilenvorschub-Zeichen
`S5` | 0-32, 127 ASCII | 8 BS | Rückgängig-Zeichen
`S6` | 2-255 Sekunden | 2 | Wartezeit auf den Wahlton (für blindes Wählen siehe X`n`)
`S7` | 1-255 Sekunden | 30-60 | Wartezeit auf das entfernte Trägersignal
`S8` | 0-255 Sekunden | 2 | Wartezeit bei Eingabe eines Komma bei der Anwahl
`S9` | 1-255 1/10tel Sekunden | 6 | Trägersignalzeit, die zur Erkennung notwendig ist
`S10` | 1-255 1/10tel Sekunden | 7-14 | Zeit zwischen Verlust des Trägersignals und Verbindungsende
`S11` | 50-255 Millisekunden | 70-95 | Dauer und Abstand der Töne bei der Tonwahl
`S12` | 0-255 1/50tel Sekunden | 50 | Wachzeit für eine Pause um die Befehlssequenz `+++`
`S36` | Sicherheitsoptionen, falls die Fehlerkorrektur fehlschlägt: 0 - Verbindung beenden 1 - Direkte Verbindung herstellen 3 - Normale Verbindung herstellen 4 - Möglichst eine MNP-Verbindung herstellen, ansonsten Verbindung beenden 5 - Möglichst eine MNP-Verbindung herstellen, ansonsten eine direkte Verbindung. 7 - Möglichst eine MNP-Verbindung herstellen, ansonsten eine normale Verbindung | 7 | Übertragungsparameterfehlerbehandlung
`S37` | 1 = 300 bps 5 = 1200 bps 6 = 2400 bps 7 = 1200/75 bps (v.23-Modus) 8 = 4800 bps 9 = 9600 bps 10 = 12000 bps 11 = 14400 bps 12 = 7200 bps | 0 | Verbindungsgeschwindigkeit (Anfangsverbindung)

Einige Modems haben Dutzende, manche sogar Hunderte, von S-Registern, von denen nur ungefähr das erste Dutzend standardisiert ist. Sie werden durch einen Befehl wie `ATS`n`=`N`` verändert und durch `ATS`n`?` (⪚ ``AT` `S10``=70` `S1?`` würde das Modem veranlassen, für sieben Sekunden aufzulegen, falls das entfernte Modem nicht antwortet, und die Anzahl der Anwahlversuche auszugeben) ausgelesen.