# I comandi Hayes dei modem

Questa è una descrizione dei comandi Hayes. La maggior parte dei modem implementano in larga misura questi comandi. Se hai perso il manuale del tuo modem o non ne hai mai avuto uno, questa guida potrebbe esserti utile. Io, per esempio, ho finalmente scoperto come spegnere l'altoparlante del mio modem: `ATM0`. Finalmente un po' di silenzio!

La stringa di inizializzazione del modem è costituita da una serie di comandi. Essa prepara il modem per la comunicazione, impostando come comporre il numero, le attese, la rilevazione del segnale di occupato e molte altre impostazioni. I moderni programmi di comunicazione via modem riconfigurano la stringa di inizializzazione a seconda delle tue scelte, di quali funzionalità abiliti, eccetera.

Per molti anni i modem Hayes sono stati lo standard. Non appena il mondo dei costruttori di modem si è ampliato, la maggior parte ha aderito più o meno allo standard Hayes. Quanto segue è una lista parziale dei comandi Hayes (detti comandi AT). I comandi Hayes si possono dividere in quattro gruppi:

Comandi di base

  Un carattere maiuscolo seguito da una cifra; per esempio, `M1`.

Comandi estesi

  Un & (e commerciale) e una lettera maiuscola seguiti da una cifra (questa è un'estensione dei comandi di base); per esempio, `&M1`. Nota che `M1` è diverso da `&M1`.

Comandi proprietari

  Di solito iniziano con una barra inversa (\) o un segno di percentuale (&percnt;); questi comandi cambiano molto tra diversi produttori di modem. Per questa ragione, solo alcuni di questi sono elencati qui sotto.

Comandi di registro

  `Sr=n` dove r è il numero del registro da modificare e n è il nuovo valore da assegnare.

  Un registro, nel gergo informatico, indica un luogo fisico specifico di memoria. I modem possiedono piccole quantità di memoria integrata. Questo quarto insieme di comandi si usa per inserire valori in un registro particolare (luogo di memoria). Il registro memorizzerà una particolare variabile (informazione alfanumerica), che verrà utilizzata dal modem e dal software di comunicazione; per esempio, `S7=60` dice al computer di impostare il registro numero 7 al valore 60.

Anche se la maggior parte dei comandi sono definiti dalla combinazione di una lettera e di una cifra (`L0`, `L1`, eccetera), l'uso dello zero è opzionale. In questo esempio `L0` è identico al semplice `L`. Tienilo a mente mentre leggi la tabella che segue.

Sono qui elencati i caratteri più importanti che possono apparire nella stringa di inizializzazione del modem. Questi caratteri normalmente non dovrebbero essere modificati.

`AT`

  Dice al modem che seguiranno dei comandi per esso. Questa sequenza deve essere all'inizio di ogni riga di comandi.

`Z`

  Riporta il modem al suo stato predefinito

`,` (una virgola)

  mette in pausa il software per un secondo. Puoi usare più `,` alla volta; per esempio, `,,,,` dice al software di mettersi in pausa per quattro secondi. La durata della pausa è determinata dall'impostazione del registro `S8`.

`^M`

  Invia al modem il carattere di terminazione di ritorno a capo. Questo è un codice di controllo che la maggior parte dei software di comunicazione traduce come ritorno a capo.

## Comandi Hayes di base

In ordine alfabetico:

### Comandi Hayes di base

Comando | Descrizione | Commenti
--- | --- | ---
`A0` o `A` | Rispondi ad una chiamata |
`A/` | Ripeti l'ultimo comando | Non anteporre `AT`. &Enter; di solito annulla.
`B0` o `B` | Negoziazione della chiamata | Sequenza di risposta in modalità V.32/CCITT
`B1` | Negoziazione della chiamata | Sequenza di risposta Bell 212A
`B2` | Negoziazione della chiamata | Prolisso o silenzioso alla risposta

`D`

Chiama

Compone il numero seguente, quindi esegue la negoziazione alla maniera d'origine.

`P`

  Composizione decadica

`T`

  Composizione in multifrequenza

`W`

  Attendi il secondo tono di chiamata

`,`

  Mette in pausa per il tempo specificato nel registro `S8` (di solito 2 secondi)

`;`

  Rimani in modalità di comando dopo la chiamata

`!`

  Riattacca per poco (riattacca per mezzo secondo, come quando si trasferisce una chiamata)

`L`

  Ricomponi l'ultimo numero

`E0` o `E` | Senza eco | Non manderà l'eco dei comandi al computer
`E1` | Eco | Manderà l'eco dei comandi al computer (per poter leggere quello che si digita)
`H0` | Stato della connessione | Se connesso, riattacca
`H1` | Stato della connessione | Se disconnesso, prendi la linea
`I0` o `I` | Ricerca, informazione o interrogazione | Questo comando dipende molto dal dispositivo. `I0` restituisce di solito un numero o un codice, mentre i numeri più grandi forniscono spesso informazioni molto più utili.
`L0` o `L` | Volume dell'altoparlante. I modem con manopole per la regolazione del volume non avranno queste opzioni. | Volume spento o basso
`L1` |  | Volume basso
`L2` |  | Volume medio
`L3` |  | Volume forte o alto
`M0` o `M` | Altoparlante spento | Anche `M3` è comune, ma diverso da marca a marca
`M1` |  | Altoparlante attivo finché non viene rilevata la portante remota (cioè finché non si sente l'altro modem)
`M2` |  | Altoparlante sempre attivo (si possono sentire i suoni dei dati dopo CONNECT)
`N0` o `N` | Velocità di negoziazione | Negoziazione solo alla velocità in `S37`
`N1` |  | Negoziazione a velocità massima maggiore di `S37`
`O0` o `O` | Torna in linea | Guarda anche `X1` perché il rilevamento del tono di chiamata potrebbe essere attivo.
`O1` |  | Torna in linea dopo una sequenza di ricondizionamento dell'equalizzatore
`Q0` o `Q1` | Modalità silenziosa | Disattivata: mostra i codici dei risultati e l'utente vede le risposte ai comandi (per esempio `OK`)
`Q1` | Modalità silenziosa | Attivata: i codici dei risultati non sono mostrati e l'utente non vede le risposte.
`Sn?` |  | Richiedi il contenuto del registro Sn
`Sn=r` | Memorizza | Memorizza il valore r nel registro Sn
`V0` o `V` | Prolisso | Codici numerici dei risultati
`V1` |  | Codici dei risultati in inglese (per esempio, `CONNECT`, `BUSY`, `NO CARRIER` eccetera)
`X0` o `X` | Smartmodem | Codici dei risultati compatibili con l'Hayes Smartmodem 300
`X1` |  | Di solito aggiunge la velocità di connessione ai codici dei risultati di base (per esempio `CONNECT 1200`)
`X2` |  | Di solito aggiunge il rilevamento del tono di chiamata (evitando chiamate alla cieca, e alcune volte evitando `AT0`)
`X3` |  | Di solito aggiunge l'identificazione del segnale di occupato
`X4` |  | Di solito aggiunge il rilevamento sia del segnale di occupato che del tono di chiamata
`Z0` o `Z` | Ripristina | Riporta il modem a una configurazione memorizzata. Usa `Z0`, `Z1`, eccetera per più profili. Questo è la stessa cosa che `&F` per i valori di fabbrica su modem senza NVRAM (memoria non volatile)

## Comandi Hayes estesi

Comandi con E commerciale

### Comandi Hayes estesi

Comando | Descrizione | Commenti
--- | --- | ---
`&B0` o `&B` | Ricondiziona i parametri | Disattiva la funzione di ricondizionamento automatico
`&B1` | Ricondiziona i parametri | Attiva la funzione di ricondizionamento automatico
`&B2` | Ricondiziona i parametri | Attiva il ricondizionamento automatico, ma si scollega se non si ottiene un miglioramento della linea nel periodo indicato da `S7`
`&C0` o `&C1` | Rilevamento della portante | Segnale sempre attivo
`&C1` | Rilevamento della portante | Indica la portante remota (impostazione predefinita preferita)
`&D0` o `&D` | Terminale di dati pronto (DTR) | Segnale ignorato (questo dipende dal tipo di modem, devi consultare il manuale per saperne di più)
`&D1` | Terminale di dati pronto (DTR) | Se il DTR viene disattivato il modem va in modalità di comando (solo con alcuni modem)
`&D2` | Terminale di dati pronto (DTR) | Alcuni modem riattaccano all'attivazione del DTR (questa è l'impostazione predefinita preferita)
`&D3` | Terminale di dati pronto (DTR) | Riattacca, ripristina il modem, e torna alla modalità di comando all'attivazione del DTR

`&F0` o `&F`

Valori di fabbrica

Valori predefiniti compatibili con Hayes.

È di solito una buona cosa da usare nella stringa di inizializzazione, dato che le impostazioni `&F1` e `&F3` possono cambiare da modem a modem, e potrebbero essere la causa di problemi di connessione (visto che non puoi mai sapere cosa fa davvero il `&F2` della tal marca).

D'altro canto, vale la pena di provare le altre opzioni sotto: i problemi di molti utenti si possono risolvere sostituendo una stringa di inizializzazione complicata con un semplice `&F2` o simile. Comunque, se stai costruendo una stringa di inizializzazione, è meglio cominciare con un semplice `&F`, e non usare la forma personalizzata dei valori predefiniti.

`&F1` | Valori predefiniti di fabbrica | Valori predefiniti di fabbrica studiati per un utente di un computer compatibile con lo standard PC di IBM
`&F2` | Valori predefiniti di fabbrica | Valori di fabbrica per un Mac con negoziazione software
`&F3` | Valori predefiniti di fabbrica | Valori di fabbrica per un Mac con negoziazione hardware
`&G0` o `&G` | Toni di guardia | Disattiva i toni di guardia
`&K0` o `&K` | Controllo di flusso locale | Disabilita il controllo di flusso locale
`&K1` | Controllo di flusso locale | Abilita il flusso di controllo locale hardware RTS/CTS
`&K2` | Controllo di flusso locale | Abilita il controllo di flusso locale software XON/XOFF
`&K3` | Controllo di flusso locale | Abilita il flusso di controllo locale hardware RTS/CTS
`&K4` | Controllo di flusso locale | Abilita il controllo di flusso locale software XON/XOFF
`&L0` o `&L` | Modalità di chiamata | Seleziona la modalità di chiamata
`&M0` o `&M` | Modalità di controllo degli errori | Seleziona modalità asincrona senza controllo degli errori (la stessa cosa che fa `&Q0`)
`&P0` o `&P` | Rapporto | Rapporto di composizione decadica 39% chiuso e 61% aperto, per USA e Canada
`&P1` | Rapporto | Rapporto di composizione decadica 33% chiuso e 67% aperto, per Inghilterra e Hong Kong
`&Q0` o `&Q` | Modalità di controllo degli errori | Modalità asincrona senza controllo degli errori. Senza buffering di dati. ASB disabilitato.
`&Q5` | Modalità di controllo degli errori | Seleziona operazione V.42 con correzione degli errori (richiede controllo di flusso)
`&Q6` | Modalità di controllo degli errori | Modalità asincrona con ASB (richiede controllo di flusso)
`&Q8` | Modalità di controllo degli errori | Seleziona protocollo di correzione degli errori alternativo (MNP)
`&Q9` | Modalità di controllo degli errori | Compressione di dati condizionale: V.42bis = sì, MNP5 = no.
`&S0` o `&S` | Selezione dell'azione DSR | Sempre attivo (predefinito)
`&S1` | Selezione dell'azione DSR | Segue la specifica EIA (segue attivamente il tono della portante finché non la si perde)
`&T0` o `&T` | Autodiagnosi | Autodiagnosi specifica su alcuni modem
`&U0` o `&U` | Modulazione con codifica a traliccio | Abilita la TCM V.32
`&U1` | Modulazione con codifica a traliccio | Disabilita la TCM V.32
`&V0` o `&V1` | Vedi impostazioni di profilo attive | Le impostazioni dei profili di configurazione sono spesso memorizzate (o `ATI4`)
`&W0` o `&W` | Memorizza profilo | Nella NVRAM (`&W0`, `&W1` eccetera per profili multipli), alcune impostazioni non si possono memorizzare. Queste spesso non appaiono sotto `&V` o `ATI4`
`&Y0` o `&Y` | Scegli la configurazione caricata all'accensione | Carica il profilo 0 (predefinito)
`&Y1` | Scegli la configurazione caricata all'accensione | Carica il profilo 1
`&Zn=x` | Ripristino leggero e caricamento del profilo memorizzato numero x | Nota che tutti gli elementi nella riga di comando dopo `&Z` vengono ignorati

## Comandi con barra inversa e percento

### Comandi con barra inversa e percento

Comando | Descrizione | Commenti
--- | --- | ---
`\A0` o `\A` | Dimensione massima dei blocchi MNP dei caratteri | Massimo 64 caratteri
`\A1` | Dimensione massima dei blocchi MNP dei caratteri | Massimo 128 caratteri
`\A2` | Dimensione massima dei blocchi MNP dei caratteri | Massimo 192 caratteri
`\A3` | Dimensione massima dei blocchi MNP dei caratteri | Massimo 256 caratteri
`&percnt;C0` o `&percnt;C` | Attivazione o disattivazione della compressione dei dati | Disattivata
`&percnt;C1` | Attivazione o disattivazione della compressione dei dati | MNP5 abilitato
`&percnt;C2` | Attivazione o disattivazione della compressione dei dati | V.42bis (BTLZ) abilitato
`&percnt;C3` | Attivazione o disattivazione della compressione dei dati | MNP5 e V.42bis (BTLZ) abilitati
`&percnt;D0` o `&percnt;D` | Compressione dei dati | Dimensione del dizionario BLTZ 512
`&percnt;D1` | Compressione dei dati | Dimensione del dizionario BLTZ 1024
`&percnt;D2` | Compressione dei dati | Dimensione del dizionario BLTZ 2048
`&percnt;D3` | Compressione dei dati | Dimensione del dizionario BLTZ 4096
`&percnt;E0` o `&percnt;E1` | Metodo di escape | Escape disattivato
`&percnt;E1` | Metodo di escape | Metodo `+++AT` (predefinito)
`&percnt;E2` | Metodo di escape | Metodo `Break` `AT`
`&percnt;E3` | Metodo di escape | Entrambi i metodi abilitati
`&percnt;E4` | Metodo di escape | Disabilita `OK` per `+++`
`&percnt;E5` | Metodo di escape | Abilita `OK` per `+++`
`\J0` o `\J` | Regolazione automatica della velocità DTE | Disattivata
`\J1` | Regolazione automatica della velocità DTE | La velocità DTE viene regolata per adattarsi alla velocità della portante
`\N0` o `\N` | Tipo di connessione | Connessione normale (vedi sotto per le definizioni)
`\N1` | Tipo di connessione | Connessione diretta
`\N2` | Tipo di connessione | Connessione auto-affidabile MNP
`\N3` | Tipo di connessione | Connessione auto-affidabile
`\N4` | Tipo di connessione | Collegamento V.42bis affidabile con rilevamento di fase
`\N5` | Tipo di connessione | Collegamento V.42bis auto-affidabile con rilevamento di fase
`\N6` | Tipo di connessione | Collegamento V.42 affidabile con rilevamento di fase
`\N7` | Tipo di connessione | Collegamento V.42 auto-affidabile con rilevamento di fase

Una connessione diretta è una semplice connessione senza correzione degli errori o compressione dei dati. In questo caso, le velocità tra computer e modem e tra modem e modem devono essere identiche.

Una connessione normale usa il controllo di flusso (software oppure hardware) per memorizzare in un buffer i dati inviati o ricevuti, in modo che il modem li possa trasmettere ad una velocità diversa da quella a cui il computer li sta inviando o ricevendo. Per esempio, un computer può inviare dati a 57kbps ma, usando compressione, il modem può inviare solo a 28,8kbps. Questa è la modalità usata dalla maggior parte dei modem.

Una connessione affidabile è un tipo di connessione normale; se, per qualche motivo, la compressione dei dati o la correzione degli errori non possono essere stabilite o mantenute, la connessione verrà interrotta. In sostanza, un simile modem garantisce che tutte le connessioni siano affidabili, perché riattaccherà se non lo sono.

Similmente, una connessione auto-affidabile è praticamente lo stesso, tranne che il modem cercherà di rinegoziare la connessione per stabilirne una affidabile. Di nuovo, questa è la modalità usata dalla maggior parte dei modem.

## Registri S

### Registri S

Registro | Intervallo | Predefinito | Funzione
--- | --- | --- | ---
`S0` | 0-255 squilli | 1-2 | Rispondi al numero di squillo. Non rispondere se è 0
`S1` | 0-255 squilli | 0 | se `S0` è maggiore di 0, questo registro conta il numero di squilli ricevuti.
`S2` | 0-127 ASCII | 43 + | Carattere per passare alla modalità di comando
`S2` | >127 |  | Impossibile passare
`S3` | 0-127 ASCII | 13 CR | Carattere di ritorno a capo
`S4` | 0-127 ASCII | 10 LF | Carattere di linea nuova
`S5` | 0-32, 127 ASCII | 8 BS | Carattere backspace
`S6` | 2-255 secondi | 2 | Tempo di attesa del tono di chiamata (chiamata alla cieca, vedi Xn)
`S7` | 1-255 secondi | 30-60 | Tempo di attesa per la portante remota
`S8` | 0-255 secondi | 2 | Tempo di pausa con virgola usato nella composizione
`S9` | 1-255 decimi di secondo | 6 | Tempo di rilevamento della portante richiesto per il riconoscimento
`S10` | 1-255 decimi di secondo | 7-14 | Tempo tra perdita della portante e riaggancio
`S11` | 50-255 millisecondi | 70-95 | Durata e spaziatura dei toni in multifrequenza
`S12` | 0-255 cinquantesimi di secondo | 50 | Tempo di guardia per la pausa attorno alla sequenza di comando `+++`

`S36`

Opzioni di ripiego quando il collegamento con correzione degli errori non riesce:

- 0: disconnetti

- 1: stabilisci connessione diretta

- 3: stabilisci connessione normale

- 4: stabilisci una connessione MNP se possibile, altrimenti disconnetti

- 5: stabilisci una connessione MNP se possibile, altrimenti una connessione diretta

- 7: stabilisci una connessione MNP se possibile, altrimenti una connessione normale

7

Trattamento delle negoziazioni non riuscite

`S37`

- 1 = 300 bps

- 5 = 1200 bps

- 6 = 2400 bps

- 7 = 1200/75 bps (modalità v.23)

- 8 = 4800 bps

- 9 = 9600 bps

- 10 = 12000 bps

- 11 = 14400 bps

- 12 = 7200 bps

0

Negoziazione della velocità (negoziazione iniziale)

Molti modem hanno dozzine o anche centinaia di registri S, ma solo la prima dozzina è più o meno standard. Sono modificati con un comando come `ATSn=N`, ed esaminati con `ATSn?` (per esempio ``AT` `S10``=70` `S1?`` direbbe al modem di non riagganciare per sette secondi se non dovesse sentire una risposta dal modem remoto, e restituirebbe il numero di volte che il telefono ha squillato).