Hayes modem AT commando set
- Hayes AT commando set, de geschiedenis
- Data mode en commando mode
- Basis, uitgebreide, merkspecifieke en register commando’s
- Basis Hayes AT commando’s
Direct naar commando’s: ATA, ATB, ATE, ATH, ATL, ATM, ATQ, ATV, ATX, ATZ
Hayes AT commando set, de geschiedenis
Modems worden gebruikt sinds het begin van de computer geschiedenis. Het woord modem is een combinatie van de woorden modulator en demodulator en dit is typisch wat definiëert wat modems doen. Digitale gegevens die komen van een DTE, data terminal equipment wordt op zo’n manier gemoduleerd dat het kan worden verzonden over transmissielijnen. Aan de andere zijde van de lijn demoduleert een modem de gegevens en zendt ze daar verder.
De oudste modems waren alleen in staat gegevens te verzenden en te ontvangen. Om een verbinding te maken was een extern apparaat zoals een kiezer benodigd. Soms werden verbindingen gelegd door handmatig te bellen naar het gewenste telefoonnummer en het modem pas in te schakelen nadat de verbinding gelegd was. Dit was geen probleem in vroeger dagen toen computers nog bediend werden door goed opgeleide techneuten en de kosten van een externe kiezer in het niet vielen in vergelijking tot de kosten van terminals, modems en mainframes. In de zeventiger jaren begonnen kleine computers langzaam op te komen in de privé sfeer en kosten en gebrek aan technische kennis werden langzaam aan belangrijker.
We spreken nu over een periode waarbij internet, telebankieren en andere gangbare toepassingen zoals we ze nu kennen nog niet bestonden. De belangrijkste reden voor mensen om een modem te gebruiken was om verbindingen te maken met BBSen, Bullitin Board Systems. Centrale computersystemen die gerund werden door bedrijven of vrijwilligers waar mensen met elkaar konden communiceren via berichten en software en utilities konden up- en downloaden. Low-cost en eenvoudig te gebruiken modems waren noodzakelijk om dit mogelijk te maken. In het ideale geval zouden deze modems zelf in staat moeten zijn om de gewenste telefoonnummers te kiezen, zonder tussenkomst van de gebruiker of een externe kiezer.
Zoals te zien is in de RS232 poort layout, beschrijft de RS232 standaard een secundair communicatiekanaal op de 25 pins DB25 connector die oorspronkelijk was bedoeld om controle commando’s naar het aangesloten modem te sturen. Hierbij zouden ook commando’s om een specifiek telefoonnummer te kiezen kunnen horen. Helaas was op de low-cost RS232 implementaties die aanwezig waren op de home computers van de jaren zeventig dit secondaire communicatiekanaal niet geïmplementeerd. Daarom moest een methode worden gedefiniëerd waarmee het bestaande datakanaal niet alleen data kon overbrengen van de ene zijde naar de andere, maar ook zou kunnen worden gebruikt om controle commando’s te verzenden die alleen voor het lokale modem bestemd zouden moeten zijn. Dennis Hayes kwam in 1977 met de oplossing. Zijn smart modem gebruikte het enkele RS232 communicatiekanaal dat met de computer verbonden was om zowel controle commando’s als data over te dragen. Omdat elk commando startte met AT van attention werd de commandotaal van Hayes al snel bekend als de Hayes AT commando set. Vanwege de eenvoud en de low-cost implementatie werd de Hayes AT commando set al snel overgenomen in modems van andere fabrikanten. Naarmate functionaliteit en complexiteit van modems vergrote in de loop der tijd, werd ook de Hayes AT commandotaal steeds uitgebreider en al snel implementeerde elke modemfabrikant zijn eigen dialect. Tegenwoordig bevat de Hayes AT commando set commando’s voor data, fax, spraak en SMS communicatie.
Data mode en commando mode
Het lukte Dennis Hayes om slechts één communicatiekanaal voor zijn smart modem te gebruiken door een data mode en commando mode te definiëren. Het schakelen van commando mode naar data mode was eenvoudig , een controle commando kon hiervoor worden gebruikt. Terugschakelen van data mode naar commandomode met in-band signalling was echter wat ingewikkelder. Eén mogelijkheid had het gebruik van het default ASCII DLE data link escape karakter kunnen zijn als trigger om terug te schakelen van data mode naar commando mode. Maar dit geeft problemen wanneer binaire data wordt verstuurd omdat die byte waarde zeerwel aanwezig kan zijn in de verstuurde gegevens. Een binaire datastroom die over een modem verbinding versuurd kan worden kan bestaan uit elke combinatie van karakters. Een specifieke byte volgorde aanwijzen als trigger om over te schakelen van data mode naar commando mode zou er toe kunnen leiden dat het modem elke keer teruschakelt naar commando mode als die specifieke datarij wordt gedetecteerd, zelfs als het per ongeluk onderdeel is van de reguliere datastroom. De byte volgorde om terug te scvhakelen naar commando mode werd gedefiniëerd als “+++”, drie plus tekens. De kans dat drie plus tekens in een datastroom het overschakelen zouden triggeren werd gereduceerd door een extra regel toe te voegen: alleen wanneer de “+++” gegevensrij werd voorafgegaan en gevolgd door een seconde van stilte op de lijn, zou het modem dit herkennen als een escape commando. Als additionele data wordt verzonden van de aangesloten computer binnen een tijdframe van een seconde neemt het modem aan dat de drie plustekens onderdeel zijn van de reguliere datastroom en zullen ze worden doorgezonden naar het andere modem. In de praktijk is de kans dat drie plustekens in een datastroom worden voorafgegaan en gevolgd door een seconde stilte verwaarloosbaar.
Basis, uitgebreide, merkspecifieke en register commando’s
De regels van de Hayes AT commando taal zijn redelijk eenvoudig. Ten eerste moeten we enkele basisregels onthouden:
- Elk commando start met “AT” of “at”. De strings “aT” en “At” zijn ongeldig om een commando te starten. De enige uitzonderingen op deze regel zijn “+++” waarmee van data mode naar commando mode wordt overgeschakeld, en “A/” om het vorige commando te herhalen.
- Commando’s kunnen zowel in hoofdletters, als in kleine letters worden gegeven.
- Meerdere commando’s kunnen worden gecombineerd op één commandoregel.
- De lengte van een commandoregel moet korter zijn dan veertig karakters.
- Om handmatige wijziging mogelijk te maken wordt de backspace herkend om het ervoor ingetikte karakter in de commando string te wissen.
- Elk commando dat begint met “AT” of “at” moet worden afgesloten met ENTER.
- Telefoonnummers mogen de karakters “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “*”, “=”, “,”, “;”, “#”, “+” en “>” bevatten. Alle andere karakters in een telefoonnummer worden genegeerd.
- Wanneer een numerieke parameter in een commando wordt weggelaten, wordt aangenomen dat de waarde nul is.
- Het ATZ commando om het modem te resetten moet gevolgd worden door een pauze van tenminste twee seconden voor het volgende commando wordt ingevoerd.
Zoals al eerder gezegd begonnen zodra andere fabrikanten de Hayes AT commando set overnamen in hun eigen modems dialecten te ontstaan. Dialecten voegen alleen nieuwe commando’s toe aan de bestaande AT commando set, maar wijzigen in het algemeen niet de originele commando’s. Dit is mogelijk door het definiëren van drie niveaus van commando’s in het modem, de basis commando set, de uitgebreide commando set en de merkspecifieke commando set.
De basis commandoset bevat alle noodzakelijke commando’s om het modem te gebruiken. Basis commando’s kunnen worden herkend door de letter die direct volgt op de “AT”. Uitgebreide commando’s worden gebruikt voor functionaliteit die niet aanwezig was in de eerste Hayes smart modem implementatie. Deze commando’s zijn nog steeds standaard zijn ze zijn aanwezig op praktisch alle moderne modems. Uitgebreide commando’s kunnen worden herkend door het “&” teken dat direct op de “AT” volgt. Merkspecifieke commando’s verschillen per modemfabrikant en zelfs tussen verschillende modellen. Modemfabrikanten gebruiken verscheidene karakters na de “AT” om hun eigen specifieke commando’s te defininëren. Vaal worden de backslash “\” en procentteken “%” gebruikt, maar er zijn ook andere implementaties.
Om instellingen in een modem op te slaan, zoals de standaard timeout periode die moet worden gebruikt bij het kiezen van een telefoonnummer, zijn registers gedefiniëerd. Registers hebben een uniek nummer. In een commandostring worden registers gedefiniëerd als “Sxxx”, waarbij xxx het specifieke registernummer is. Registerwaarden kunnen worden opgeslagen, gelezen en verwijderd uit het geheugen door gebruik te maken van basis AT commando’s.
Basis Hayes AT commando’s
- ATA, Beantwoord inkomend gesprek
-
ATA kan worden gebruikt om handmatig een binnenkomend gesprek te beantwoorden. Een ander modem moet op dat moment al bezig zijn een verbinding te maken en de lijn moet overgaan. Na het ATA commando neemt het modem de lijn op, onderhandelt met het andere modem over de data transfer snelheid en error correctie instellingen en schakelt vervolgens over naar dataoverdracht mode. In het geval van succes wordt de string “CONNECT” teruggegeven, anders is de geretourneerde string “ERROR”. In dat laatste geval blijft het modem in de commando mode. De “CONNECT” string kan worden gevolgd door een text waarin de snelheid en protocol instellingen van de gebruikte sessie worden aangegeven.
- ATB, Selecteer communicatiestandaard
-
De originele Hayes modems stonden het protocol toe om op 300 en 1200 bps met het ATB commando de handshake uit te voeren. Zowel CCITT en Bell protocollen kunnen worden geselecteerd. Andere fabrikanten voegden hogere snelheden toe en gebruikten het ATB commando om de snelheid van de maximaal onderhandelbare verbindingssnelheid te limiteren. Het commando retourneert “OK” wanneer de protocol selectie lukt. Anders wordt de string “ERROR” geretourneerd. De meeste moderne modems negeren het ATB commando en retourneren altijd “OK” om compatible te blijven. B0 Selecteer V32 mode/CCITT protocol
- B0 Selecteer V32 mode/CCITT protocol
- B1 Selecteer Bell 212A protocol
- ATE, Selecteer lokale echo
-
Ingegeven commando’s kunnen teruggeechoed worden naar de zender wanneer het ATE commando wordt gebruikt. Normaal gesproken worden commando’s niet teruggeeechoed, maar het kan handig zijn bij debug activiteiten of wanneer het modem handmatig aangesproken wordt via een terminal emulatieprogramma. Twee parameters zijn toegestaan. Normaliter wordt ‘OK” teruggegevenen ERROR, wanneer de parameter een waarde anders dan “0” of “1” representeert.
- E0 Schakel echo uit
- E1 Schakel echo aan
- . ATH, Lijncontrole
-
Het modem is uitgevoerd met zijn eigen telefoonlijn interface. Net als met een normale telefoon kan het modem van de haak gaan waarbij de interface met de telefoonlijn verbonden wordt, of op de haak om de lijn te verbreken. Dit wordt geregeld met het ATH commando. Het cijfer na de H definieert de gewenste haak stand. Het commando retourneert “OK” wanneer een geldige parameter is opgegeven en anders “ERROR”.
- H0 Ga op de haak (verbreek)
- H1 Ga van de haak (verbind)
- ATL, Zet speaker volume
-
De meeste modems zijn uitgevoerd met een speaker. Deze speaker kan worden gebruikt om problemen tijdens de verbinding op te sporen. Het volume van de speaker wordt geregeld door het ATL commando. Het cijfer volgend op de L geeft het gewenste speaker volume aan. Verschillende volumeinstellingen zijn mogelijk. Het commando retourneert “OK” wanneer de speaker op het gewenste volume kon worden ingesteld, en “ERROR” bij een fout in de uitvoering.
- L0 Laagste speaker volume, of uit
- L1 Laag speaker volume
- L2 Gemiddeld speaker volume
- L3 Hoogste speaker volume
- ATM, Speaker controle
-
In veel gevallen is de speaker alleen noodzakelijk om de kies en onderhandelingsfase van het modem te beluisteren. In andere situaties is het gewenst om de speaker tijdens de hele sessie aan te houden, of om hem vanaf het begin uit te schakelen. Het ATM commando kan worden gebruikt om te selecteren wanneer de speaker zou moeten werken. Het cijfer dat volgt op de M definiëert de speaker mode. Er kan uit vier verschillende modes worden gekozen. Het commando retourneert “OK” wanneer de speaker setting succesvol is en anders “ERROR”.
- M0 Speaker altijd uit
- M1 Speaker aan totdat de carrier is gedetecteerd
- M2 Speaker altijd aan
- M3 Speaker alleen aan tijdens het beantwoorden.
- ATQ, Stille modus
-
Wanneer er geen verwerking van door het modem teruggegeven response codes plaats zal vinden.
- ATV, Uitgebreide mode
-
Het modem stuurt berichten terug naar de computer om de retourstatus van commandos, interrupts zoals een binnenkomend gesprek en gespreksvoortgang aan te geven. Deze meldingen kunnen zowel in Engelse text, als numeriek zijn. Tijdens handmatig werken hebben tekstmeldingen de voorkeur. Maar bij aansturing door een programma zijn numerieke retourcodes aanvoudiger te interpreteren. Het ATV commando kan worden gebruikt om te schakelen tussen tekst en numerieke retourberichten. Het cijfer achter de V geeft aan welk berichten type moet worden teruggegeven. Het commando retourneert “OK” wanneer een geldige parameter is opgegeven en anders “ERROR”.
- V0 Numierieke retourwaarden
- V1 Engelse text retourwaarden (“OK”, “ERROR”, “CONNECT”, etc)
- ATX, Selecteer verbinding voortgangsmethode
-
Het proces om een ander modem te bereiken en te onderhandelen over de verbindingsinstellingen gaat door verschillende stappen. Het ATX commando kan worden gebruikt om te selecteren welke stappen in het proces moeten worden teruggemeld aan de sturende computer. Het commando retourneert “OK” wanneer een geldige parameter is opgegeven. Anders wordt de string “ERROR” geretourneerd. De volgende opties zijn beschikbaar.
- X0 Hayes smartmoden 300 compatibele procesvoortgang. Blind bellen en geen in-gesprek detectie. “CONNECT”melding wanneer de verbinding gemaakt is.
- X1 Blind bellen en geen in-gesprek detectie. De verbindingssnelheid in bps wordt toegevoeg aan de CONNECT string.
- X2 Beltoon detectie, maar geen in-gesprek detectie. De geretourneerde string is “CONNECT”, gevolgd door de verbindingssnelheid in bits per seconde.
- X3 Blind bellen, geen in-gesprek detectie. De geretourneerde string is “CONNECT, gevolgd door de verbindingssnelheid in bits per seconde.
- X4 Beltoon detectie en in-gesprek detectie. De geretourneerde string is “CONNECT”., gevolgd door de verbindingssnelheid in bits per seconde.
- ATZ, Reset modem
-
Het modem kan gereset worden naar een standaard instelling met het ATZ commando. Het cijfer dat volgt op de Z geeft aan naar welke status het modem moet worden gereset. Volgend op dit commando is een pauze van tenminste twee seconden nodig om het modem tijd te geven om zijn nieuwe toestand te initialiseren. Wanneer het reset commando wordt gegeven zal een lopende communicatiesessie worden afgebroken en de lijn gaat op de haak. De volgende reset statussen kunnen worden geselecteerd. Deze statussen zijn opgeslagen in het residente geheugen van het modem. In modems zijn ten minste twee opgeslagen profielen beschikbaar, maar sommige modems hebben meer. De functie retourneert “OK” wanneer het profiel beschikbaar is, en anders “ERROR”.
- Z0 Herstel opgeslagen profiel 0
- Z1 Herstel opgeslagen profiel 1
If anything can go wrong, it will.
MURPHY'S LAW
|