Visualizzazione post con etichetta Nokia. Mostra tutti i post
Visualizzazione post con etichetta Nokia. Mostra tutti i post

lunedì 27 febbraio 2017

Debian in tasca : Nokia N810 e N900

Il Nokia 900 e' stato per tanto tempo un irraggiungibile terminale (piu' che altro per il prezzo) che mi ha interessato per la programmazione diretta in Qt

Anche ai nostri giorni su Ebay si trovano dei Nokia N900 a prezzo di circa 350 euro,,,frugando ed aspettando ho comunque avuto modo di mettere le mani su un paio di Nokia N810 e N900 ad una cirnquantina di euro


Sono entrambi dispositivi risalenti agli anni 2008 e 2009 ma si differenziano sostanzialmente, Il Nokia N810 e' praticamente un tablet ante litteram (solo connessione WiFi) mentre il Nokia N900 e' un vero e proprio smartphone (giusto per la cronaca nel 2009 era venduto a circa 500 dollari ed era a pari prezzo con i primi IPhone)


Scatola completa nel Nokia N900


Accessori N810

Il Nokia 810 ed il Nokia 900 erano basati su un sistema operativo Linux fortemente derivato da Debian con un kernel della serie 2.6 Linux Nokia-N810-43-7 2.6.21-omap1 Oct 14 2008 armv61 (piu' in dettaglio N810 monta Diablo mentre N900 monta Fremantle)

Si puo' usare questi dispositivi al giorno d'oggi....con un po' di pazienza si'.
Per prima cosa si devono aggiornare i repository perche' quelli originali di Nokia sono morti da tempo. Per fare cio' si deve prima installare rootsh per acquisire i privilegi di root (apt-get install rootsh)
si digita poi

sudo gainroot

e si edita il file in /etc/apt/sources.list.d/hildon-application-manager.list

visto che usare vi con la tastiera del telefono e' un dramma si fa prima a cancellare il file e poi a digitare

per N810
echo "deb http://repository.maemo.org/extras/ diablo free non-free" > hildon-application-manager.list

Per N900
echo "deb http://repository.maemo.org/extras/ fremantle free non-free" > hildon-application-manager.list

apt-get update ed ecco che si puo' configurare il dispositivo...ovviamente e' software datato..tanto per dare un'idea viene installato Python 2.5

Ma si puo' sviluppare al giorno d'oggi applicazioni per Nokia N900??

La via Linux (quella difficile)

E' possibile scaricare una immagine Ubuntu 9.04 dell'SDK ma una volta aperta ci si accorge che non c'e' software preinstallato ma solo degli script (che ovviamente non funzionano piu')

per prima cosa si deve aggiornare la sources.list per aggiornare i pacchetti. Essendo una distribuzione dismessa i pacchetti sono messi in http://old-releases.ubuntu.com/ubuntu/dists/

-------------------------------------------------
#deb cdrom:[Ubuntu 9.04 _Jaunty Jackalope_ - releases i386 (20090420.1)]/
jaunty main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.

deb http://old-releases.ubuntu.com/ubuntu/ jaunty main restricted
deb-src http://old-releases.ubuntu.com/ubuntu/ jaunty main restricted

## Major bug fix updates produced after the final releases of the
## distribution.
deb http://old-releases.ubuntu.com/ubuntu/ jaunty-updates main restricted
deb-src http://old-releases.ubuntu.com/ubuntu/ jaunty-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://old-releases.ubuntu.com/ubuntu/ jaunty universe
deb-src http://old-releases.ubuntu.com/ubuntu/ jaunty universe
deb http://old-releases.ubuntu.com/ubuntu/ jaunty-updates universe
deb-src http://old-releases.ubuntu.com/ubuntu/ jaunty-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://old-releases.ubuntu.com/ubuntu/ jaunty multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ jaunty multiverse
deb http://old-releases.ubuntu.com/ubuntu/ jaunty-updates multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ jaunty-updates multiverse

## Uncomment the following two lines to add software from the 'backports'
## repository.
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main releases, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
# deb http://old-releases.ubuntu.com/ubuntu/ jaunty-backports main
restricted universe multiverse
# deb-src http://old-releases.ubuntu.com/ubuntu/ jaunty-backports main
restricted universe multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu jaunty partner
# deb-src http://archive.canonical.com/ubuntu jaunty partner

deb http://old-releases.ubuntu.com/ubuntu jaunty-security main restricted
deb-src http://old-releases.ubuntu.com/ubuntu jaunty-security main restricted
deb http://old-releases.ubuntu.com/ubuntu jaunty-security universe
deb-src http://old-releases.ubuntu.com/ubuntu jaunty-security universe
deb http://old-releases.ubuntu.com/ubuntu jaunty-security multiverse
deb-src http://old-releases.ubuntu.com/ubuntu jaunty-security multiverse

deb http://scratchbox.org/debian/ stable main

deb http://repository.maemo.org/ fremantle/sdk free non-free
deb-src http://repository.maemo.org/ fremantle/sdk free

deb http://repository.maemo.org/ fremantle/tools free non-free
deb-src http://repository.maemo.org/ fremantle/tools free
-------------------------------------------------

poi si installano i seguenti pacchetti

sudo apt-get install scratchbox-core scratchbox-devkit-apt-https scratchbox-devkit-autotools-legacy scratchbox-devkit-debian-squeeze scratchbox-devkit-doctools scratchbox-devkit-git scratchbox-devkit-perl scratchbox-devkit-python-legacy scratchbox-devkit-qemu scratchbox-devkit-svn scratchbox-libs scratchbox-toolchain-cs2007q3-glibc2.5-arm7 scratchbox-toolchain-cs2007q3-glibc2.5-i486 scratchbox-toolchain-host-gcc


si scarica il file, lo si rende eseguibile e lo si esegue


c'e' un piccolo problema quando si deve accettare l'EULA di Nokia perche' non e' disponibile. Basta saltare..

a questo punto se tutto e' andato bene si puo' aprire la shell di scratchbox e si digitando i comandi


sb-conf select FREMANTLE_ARMEL

si edita il file /etc/apt/sources.list (non e' quello generale gia' modificato) aggiungendo la riga


deb http://repository.maemo.org/ fremantle/4bc37c7c77ebe90177c050b805a8dc79 nokia-binaries




si salva e si digita

apt-get update
fakeroot apt-get install nokia-binaries nokia-apps

si deve ripetere la procedura con 
sb-conf select FREMANTLE_X84
andando di nuovo a modificare il fi
le sources.list ed installando i pacchetti

quasi finito. Si esce da scratchhox (exit) e si apre una shell e digita

Xephyr :2 -host-cursor -screen 800x480x16 -dpi 96 -ac &

mentre su un'altra shell si riapre scratchbox e si digita
export DISPLAY=:2
>af-sb-init.sh start

Si ha alla fine la finestra dell'emulatore funzionate


La via Windows (la via facile)
Si puo' utilizzare il pacchetto Nokia_Qt_SDK_Win_offline_v1_0_en per ottenere l'ambiente di sviluppo Qt e l'emulatore per Nokia N900 (piu' Symbian) senza sforzo

Lo sviluppo e' molto simile a quello di una normale applicazione Qt salvo per il target che deve essere selezionato come Mobile Qt Application




L'emulatore e' incluso nel pacchetto e si attiva automaticamente





il progetto compilato si mostra come un classico pacchetto Debian da installare sul dispositivo


Per i dettagli su come trasportare il pacchetto deb sul dispositivo reale si rimanda a questo link

venerdì 13 novembre 2015

Nokia Lumia 630 Hard Reset

Il Nokia 630 ha smesso in maniera del tutto improvvisa di rispondere ai comandi (qualcosa mi  dice che Windows non perde il vizio di freezare in modo inaspettato)


L'unico sistema per riconquistare il controllo e' stato effettuare un hard reset. La procedura e' la seguente


  • Spengere il telefono
  • Riaccenderlo con il tasto Vol Giu' premuto e collegando l'alimentazione

a questo punto appare un punto esclamativo sullo schermo. Si procede con la sequenza

  • Vol Su
  • Vol Giu'
  • Tasto accensione
  • Vol Giu'

A questo punto compare l'immagine con gli ingranaggi (vedi foto).
Con questa procedura si ottiene la completa formattazione (non ci sono piu' contatti, foto, messaggi ecc.) ma le foto possono essere recuperati da OneDrive. Si deve quindi riprocedere con tutta la configurazione del telefono come se fosse uscito dal negozio

lunedì 16 dicembre 2013

Flashare un Nokia C7-00

In questi giorni e' arrivato al settore informatico in Nokia C7-00 aziendale bloccato con il pin.
Impossibile risalire all'utente e tutti i pin stupidi (0000,1234 etc) non hanno sbloccato il telefono
Pur non essendo un gran terminale e' comunque considerato di fascia medio-alta per un costo superiore ai 300 euro (sul mercato dell'usato e' sui 100 euro) e quindi vale la pena perderci un po' di tempo per riprenderne il possesso



Non avevo esperienza con i Nokia ma una breve ricerca su Internet mi ha fatto approdare sul software Phoenix (attenzioni: molte indicazioni che si trovano nei blog sono vecchie e non funzionano piu', si devono selezionare solo fonti recenti, per esempio il software Navifirm+ e' dichiarato non piu' funzionante, le stesse operazioni si possono compiere dall'interno di Phoenix)

Per prima cosa si deve disattivare l'antivirus perche' Phoenix viene visto come programma ostile e si devono concedere i permessi per aprire alcune porte sul firewall (non ne conosco il motivo ma per sicurezza la procedura e' stata fatta su una macchina muletto sacrificabile in caso di problemi di sicurezza)

A questo punto si identifica il Product Code nascosto sotto la batteria (nel caso 059D8F3) per scaricare il firmware, il software identifica correttamente il tipo di software RM-675 e si scarica un file da ben 327 Mb


A questo punto si va in firmware update e si lancia Refurbish (verificare che la stringa nel Product Code sia corretta) e verificare che il Options non ci siano scritte in rosso (eliminare nel caso)


Si lancia e si attende



Al termine il terminale e' sbloccato ed usabile. Semplice ed indolore




mercoledì 10 luglio 2013

Stringhe su Nokia 5110 da Raspberry

In questo esempio viene mostrato come scrivere stringhe sul display Nokia 5110 utilizzando Raspberry

Nel caso specifico la stringa viene ripresa dal primo parametro della linea di comando
Per la compilazione e maggiori dettagli si rimanda  a questo post




-------------------------------------------------
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#include "../PCD8544.h"

// pin setup
int _din = 1;
int _sclk = 0;
int _dc = 2;
int _rst = 4;
int _cs = 3;
  
// lcd contrast 
int contrast = 50;
int i;
  
int main (int argc, char *argv[])
{
  if (wiringPiSetup() == -1)
  {
printf("wiringPi-Error\n");
    exit(1);
  }
  
  LCDInit(_sclk, _din, _dc, _cs, _rst, contrast);
  LCDclear();
  LCDdrawstring(1, 1, argv[1]);
  LCDdisplay();
  delay(2000);

  LCDclear();
  
  return 0;
}

Mandelbrot in Raspberry con display Nokia 5110

Mettendo insieme i precedenti post Display Nokia 5110 su RaspberryArduino Uno + Display Nokia 5110 = Mandelbrot 48x84 ho provato a ripetere la stessa cosa su Raspberry

il codice per generare l'immagine e' sempre il solito (che fortunatamente si ricicla in mille modi) e si compila con la seguente linea

cc -o mandel mandel.c ../PCD8544.c -L/usr/local/lib -lwiringPi


----------------------------------------------

#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#include "../PCD8544.h"

#define SCREEN_WIDTH 84
#define SCREEN_HEIGHT 48

// pin setup
int _din = 1;
int _sclk = 0;
int _dc = 2;
int _rst = 4;
int _cs = 3;
// lcd contrast 
int contrast = 50;
  

float re_min = -2.0;
float im_min = -1.2;
float re_max = 1.0;
float im_max = 1.2;
int iterazioni = 1024;
float a,b;
float x,y,x_new,y_new;
int k,j,i;


int main (void)
{
  // check wiringPi setup
  if (wiringPiSetup() == -1)
  {
printf("wiringPi-Error\n");
    exit(1);
  }
  
  // init and clear lcd
  LCDInit(_sclk, _din, _dc, _cs, _rst, contrast);
  LCDclear();

  
  float re_factor = (re_max-re_min);
  float im_factor = (im_max-im_min);
    

for (i=0;i<SCREEN_HEIGHT;i++)
{
for (j=0;j<SCREEN_WIDTH;j++)
 {
 a = re_min+(j*re_factor/SCREEN_WIDTH); 
 b = im_min+(i*im_factor/SCREEN_HEIGHT);
 
 x = 0;
 y = 0;

 
 for (k=0;k<iterazioni;k++)
  {
  x_new = (x*x)-(y*y)+a;
  y_new = (2*x*y)+b;
  if (((x_new*x_new)+(y_new*y_new))>4)
{
test = k;
if (k%2 == 0)  LCDsetPixel(j, i, BLACK);
// LCDdisplay();    
break;
}
  x = x_new;
  y = y_new;
  }
 
 }

}
  
  
  LCDdisplay();
  delay(2000);
  return 0;

}

----------------------------------------------

L'aspetto piu' interessante e' la differenza di velocita', su Raspberry l'immagine appare in modo praticamente istantaneo mentre su Arduino era necessario circa un minuto



lunedì 8 luglio 2013

Display Nokia 5110 su Raspberry

Per utilizzare il display Nokia 5110 su Raspberry la via piu' semplice e' quella di utilizzare la libreria PCD8544 presente a questo sito
Prima pero' deve essere soddisfatta la dipendenza dalla libreria WiringPi che si puo' scaricare da questo sito

La compilazione di WiringPi e' semplice in quanto, dopo aver spacchettato l'archivio. e' sufficiente da root digitare ./build

A questo punto si puo' spacchettare la libreria PCD8544 e procedere alla sua compilazione.
Una volta spacchettato l'archivio se si tenta di lanciare la compilazione con i comandi proposti dal sito


cc -o pcd8544_test pcd8544_test.c ../PCD8544.c -L/usr/local/lib -lwiringPi
cc -o pcd8544_test2 pcd8544_test2.c ../PCD8544.c -L/usr/local/lib -lwiringPi
cc -o pcd8544_rpi pcd8544_rpi.c ../PCD8544.c -L/usr/local/lib -lwiringPi

questa fallisce

La cosa da fare e' modificare leggermente i file contenuti nella cartella samples modificando la riga dell'include da
#include "PCD8544.h"

a
#include "../PCD8544.h"

a questo punto si puo' compilare con successo

Attenzione: i collegamenti sono validi solo per la Raspberry Ver.2. Nei commenti del sito originario e' presente lo schema di collegamento per la Raspberry Ver.1 a cui devono essere accoppiate anche delle leggere modifiche al codice

Le connessione sono le seguenti
LCD pins      Raspberry Pi
---------------------------------------
LCD1 - GND    P06  - GND
LCD2 - VCC    P01 - 3.3V
LCD3 - CLK    P11 - GPIO0
LCD4 - Din    P12 - GPIO1
LCD5 - D/C    P13 - GPIO2
LCD6 - CS     P15 - GPIO3
LCD7 - RST    P16 - GPIO4
LCD8 - LED    P01 - 3.3V

in piu' per avere il led della retroilluminazione acceso si puo' collegare il pin BL del display all'alimentazione a 3.3 V della Raspberry

Dettaglio dei collegamenti


L'esempio test2 in esecuzione


Quadro completo




mercoledì 26 giugno 2013

Arduino Uno + Display Nokia 5110 = Mandelbrot 48x84

In questo post viene descritto come disegnare un insieme di Mandelbrot utilizzando una Arduino Uno ed un display Nokia 5110

Il display, utilizzato per esempio nel telefono Nokia 3310, viene adesso venduto separatamente ed ha una risoluzione di 84x48 pixel monocromatici

Il mio vecchio Nokia 3310

Il modello usato nell'esempio e' stato acquistato per circa 5 euro da DealExtreme ed a differenza del display originale, connesso con un cavo flat, utilizzata una strip per connetterlo facilmente ad una breadboard

Per l'utilizzo si devono inserire le librerie Arduino per il controller 8544 e per la grafica 

Attenzione che rispetto agli esempi riportati su Internet i nomi dei pin sono leggermente differenti e con un ordine differente tra quelli di Adafruit o Sparkfun e quello comprato su DealExtreme...comunque anche senza istruzioni si riesce a venirne a capo semplicemente


Usando una Arduino Uno e' importante inserire le resistenze (come indicato qui)  in quanto la tensione di esercizio del display e' di 3.3 V



Di seguito lo script per la realizzazione di Mandelbrot

--------------------------------
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>

// tempo di esecuzione 
// 1minuto e 15 secondi su Arduino Uno
// aggiornando il display solo alla fine
// 2 minuti ed 11 secondi aggiornando il display ogni pixel


// 48 righe
// 84 colonne
#define SCREEN_WIDTH 84
#define SCREEN_HEIGHT 48

// pin 7 - Serial clock out (SCLK)
// pin 6 - Serial data out (DIN)
// pin 5 - Data/Command select (D/C)
// pin 4 - LCD chip select (CS)
// pin 3 - LCD reset (RST)
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);

float re_min = -2.0;
float im_min = -1.2;

float re_max = 1.0;
float im_max = 1.2;

int iterazioni = 1024;


float a,b;
float x,y,x_new,y_new;

int test;

int k,j,i;



void setup()   {
  display.begin();
  display.setContrast(50);
  display.clearDisplay();   // clears the screen and buffer

  float re_factor = (re_max-re_min);
  float im_factor = (im_max-im_min);
    

for (i=0;i<SCREEN_HEIGHT;i++)
     {
     for (j=0;j<SCREEN_WIDTH;j++)
      {
      a = re_min+(j*re_factor/SCREEN_WIDTH); 
      b = im_min+(i*im_factor/SCREEN_HEIGHT);
      
      x = 0;
      y = 0;
      test = 0;
      
      for (k=0;k<iterazioni;k++)
       {
       x_new = (x*x)-(y*y)+a;
       y_new = (2*x*y)+b;
       if (((x_new*x_new)+(y_new*y_new))>4)
        {
        test = k;
        if (k%2 == 0) display.drawPixel(j, i, BLACK);
        display.display();       
        break;
        }
       x = x_new;
       y = y_new;
       }
             
      }
    
     }

  //altrimenti se si fa tutto alla fine e' molto piu' veloce
  display.display();
  delay(2000);
}


void loop() {
  
}

lunedì 20 agosto 2012

Nokia 6161 e comandi AT

Dovendo fare qualche prova con uno script seriale e non avendo a tiro nessun modem seriale vero ho tirato fuori il vecchio Nokia 6161 che ha una interfaccia con comandi AT


Il collegamento con il telefono puo' essere effettuato con accoppiamento Bluetooth mediante il menu del telefono oppure mediante il cavo USB (che non porta corrente ma solo segnale per cui e' bene inserire anche l'alimentatore per le prove)

Collegamento Bluetooth
per il collegamento bluetooth si accoppia con il classico comando


rfcomm bind 0 00:1B:EE:58:93:22
la porta su cui collegarsi e' /dev/rfcomm0

Collegamento USB con cavo Ca-53
per il collegamento via cavo devono essere caricati i moduli
usbcore,usbserial,cdc_acm,usbhid,ehci_hcd,ohci_hcd
la porta su cui collegarsi e' /dev/ttyACM0

il syslog riporta le seguenti linee
Aug 20 09:35:25 kranz kernel: [ 1858.174324] usb 5-1: New USB device found, idVendor=0421, idProduct=04d2
Aug 20 09:35:25 kranz kernel: [ 1858.174340] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Aug 20 09:35:25 kranz kernel: [ 1858.174346] usb 5-1: Product: Nokia 6151
Aug 20 09:35:25 kranz kernel: [ 1858.174351] usb 5-1: Manufacturer: Nokia

usando il seguente script in Python si inviano due comandi
il primo corretto ed il secondo errato
-------------------------------------------------------------

import time
import serial

ser = serial.Serial()
ser.baudrate = 9600
ser.bytesize = 8
ser.stopbits = 1
ser.port = '/dev/rfcomm0'
ser.parity=serial.PARITY_NONE

ser.open()
ser.isOpen()

while True :
#controlla il livello della batteria
out = ''
ser.write("AT+CBC\r\n")
print "AT+CBC"
time.sleep(1)
while ser.inWaiting()>  0:
out += ser.read(1)
if out != '':
print out
#print "<<"+out[24]
#if out[24] == "O":
#print "Ok"


#forza un comando errato
out = ''
ser.write("AT+CGMM1\r\n")
print "AT+CGMM1"
time.sleep(1)
while ser.inWaiting()>  0:
out += ser.read(1)
if out != '':
print out
#print out[12]
#if out[12] == "E":
#print "Errore"
-------------------------------------------------------------
La risposta al comando corretto e' composta dalla ripetizione del comando
il valore di risposta (in questo caso lo stato di carica della batteria) ed infine
una riga con il codice OK
-------------------------------------------------------------
AT+CBC

+CBC: 1,93

OK
-------------------------------------------------------------

La risposta al comando scorretto e' composta dalla ripetizione del comando
e la stringa ERROR
-------------------------------------------------------------
AT+CGMM1

ERROR
-------------------------------------------------------------
come si puo' osservare la risposta e' data da una stringa unica con piu' ritorni a capo e senza un separatore univoco..per questo motivo per fare un check da programma del corretto funzionamento si puo' controllare nel primo caso se il carattere 24 della stringa di out contiene una "O" di "OK" mentre nel secondo caso se il carattere 12 contiene una "E" di Error

Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...