Interfaccia AT del telefono Samsung GT-E1200

Non molto tempo fa mi è capitato tra le mani un telefono cellulare Samsung GT-E1200, piuttosto malandato ma funzionante: con l’intenzione di ricavarci qualcosa di utile ho cominciato a pasticciarci con l’idea di scoprire se c’era la possibilità di inviare SMS oppure effettuare telefonate inviando opportuni comandi da esterni (ovvero non utilizzando i tasti del telefono), in modo tale da poterlo utilizzare in un qualche progetto futuro. Dopo una rapida ricerca, questa pagina mi ha fornito la piedinatura del connettore laterale del dispositivo il quale, fortunatamente, presenta le connessioni per un’interfaccia seriale con la quale inviare comandi al microcontrollore interno. In aggiunta a questa la connessione USB fornisce un’interfaccia seriale identica alla precedente tranne per il fatto che la velocità di comunicazione è impostabile a piacimento.
La comunicazione seriale “classica” funziona ad una velocità di 115200 baud ed è attiva permantentemente solo se il pin indicato come IF_CON_SENSE (ovvero il pin 15) è forzato a massa, in caso contrario la comunicazione funzionerà solo per pochi secondi all’accensione del dispositivo oppure durante una telefonata (sia ricevuta che effettuata). La comunicazione con il dispositivo è basata sull’invio di comandi facenti parte dello standard AT per dispositivi GSM anche se è da segnalare che non tutti i comandi AT facenti parte dello standard vengono riconosciuti dal dispositivo oppure sono utilizzabili: ad esempio è possibile ricevere ed effettuare telefonate, mentre i comandi utilizzati per l’invio di SMS ottengono come risposta il codice di errore +CME ERROR: 0, ovvero “phone failure”.
In aggiunta ai comandi AT standard vengono riconosciuti i seguenti comandi AT proprietari, di cui si è annotato anche il messaggio di risposta da parte del dispositivo:

Comando: Risposta:  Annotazioni:
AT+IMEITEST NA
AT+EMEMTEST NA
AT+LVOFLOCK
AT+DETALOCK NA
AT+KEYULOCK NA
AT+VERSNAME con AT+VERSNAME? si riavvia
AT+KEY simula pressione dei tasti
AT+KEYTRACE
AT+FACTORST NA
AT+RSTVERIF NA
AT+VIBRTEST
AT+GETDISPLAY
AT+HEADINFO NA se AT+HEADINFO=xxx si riavvia
AT+MICSD
AT+FCBTTEST
AT+FCESTEST
AT+SMS
AT+KEYHOLD come AT+KEY, tasto premuto a lungo
AT+PRODCODE NG, NA
AT+TEMPTEST NA
AT+CALIDATE NA
AT+MAXPOWER NG se AT+MAXPOWER=xxx si riavvia
AT+FCMPTEST
AT+FCFMTEST
AT+FCEPTEST NA
AT+SPKSTEST NA
AT+LOOPTEST NA
AT+SIMDETEC NA
AT+SETTESTNV
AT+SETFULLTESTNV
AT+GETTESTNV
AT+GETFULLTESTNV
AT+GETFULLHISTNV
AT+LOGERASE
AT+SETFDATA
AT+SETFULLFDATA
AT+GETFDATA
AT+GETFULLFDATA
AT+RTCCTEST
AT+KEYSHORT

In particolare il comando AT+KEY è in grado di simulare la pressione dei tasti, consentendo di navigare nei menù, comporre numeri, … come se lo si stesse facendo di persona. La sintassi del comando è AT+KEY=xx, dove xx è un numero associato a ciascun tasto secondo la seguente tabella:

Codice:  Tasto: 
0 ignoto
1 tasto "1"
2 tasto "2"
3 tasto "3"
4 tasto "4"
5 tasto "5"
6 tasto "6"
7 tasto "7"
8 tasto "8"
9 tasto "9"
10 tasto "0"
11 tasto di inizio chiamata
12 tasto di chiusura chiamata  
13 tasto "#"
14 tasto "*"
15 tasto funzione destro
16 non assegnato
17 non assegnato
18 tasto freccia su
19 non assegnato
20 tasto freccia giu
21 non assegnato
22 ignoto
23 ignoto
24 tasto freccia sinistra
25 tasto freccia destra
26 non assegnato
27 tasto "OK"
27 tasto funzione sinistro