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 |