CodeDump : Nokia3510

CodeDump :: Categories :: PageIndex :: RecentChanges :: RecentlyCommented :: Login/Register

Linux meets Nokia 3510i

up

I have a Nokia 3510i cellphone (I believe the main difference between a 3510 and a 3510i is that the 3510i has a color screen and WAP functionality and the 3510 has not. But there can be other differences as well (I didn't look into that). Anyhow, the phone looks like the image below:
image
While searching for and s-video cable in one of my drawers (which I didnt' find) I found a Nokia 3510 datacable I once bought but I haven't had any time to play with it yet. And because finding the s-video cable I was looking for was not very successful I decided to play a bit with my gsm and the datacable. For the sake of illustration, below are some images I stole from some website that illustrate how to connect the datacable to the phone. But it's as simple as:
Removing the back cover:
image
Place the battery into the datacable
image
Place the datacable and the battery into the phone:
image
Et voila:
image
The only issue I had is you should assure the datacable is attache close enough to the phone, if I simply 'click' it in, the pins aren't connected firm enough to the phone and things don't work. The nokia phone uses a bus called the FBUS which is described at (along with some hardware projects) at http://www.embedtronics.com/nokia/fbus.html. So now, let's take a look at what we can do with this:

gnokii


The first thing Google showed me was gnokii which is described as: Datasuite for the mobile phones (console & X) Gnokii is a suite of programs linked against a backend library that allows communication with the phones. It current supports the most mobile phones, all AT capable mobiles as well as Symbian phones. by apt. The two available frontends are gnokii and xgnokii a commandline and a graphical tool to communicate with the phone. The first thing that I notice is that communicating with the phone goes extremely slow. In oder to illustrate gnokii here are the possible command line options:

helios@lapedb:~$ gnokii
GNOKII Version 0.6.8
Usage:
General options:
	      gnokii --help
	      gnokii --monitor [delay|once]
	      gnokii --version
SMS options:
	      gnokii --getsms memory_type start [end] [-f file] [-F file] [-d]
	      gnokii --deletesms memory_type start [end]
	      gnokii --sendsms destination [--smsc message_center_number |
	             --smscno message_center_index] [-r] [-C n] [-v n]
	             [--long n] [-i]
	      gnokii --savesms [--sender from] [--smsc message_center_number |
	             --smscno message_center_index] [--folder folder_id]
	             [--location number] [--sent | --read] [--deliver] 
	             [--datetime YYMMDDHHMMSS] 
	      gnokii --getsmsc [start_number [end_number]] [-r|--raw]
	      gnokii --setsmsc
	      gnokii --createsmsfolder name
	      gnokii --deletesmsfolder number
	      gnokii --showsmsfolderstatus
	      gnokii --smsreader
Phonebook options:
	      gnokii --getphonebook memory_type start_number [end_number|end]
	             [[-r|--raw]|[-v|--vcard]|[-l|--ldif]]
	      gnokii --writephonebook [[-o|--overwrite]|[-f|--find-free]]
	             [-m|--memory-type|--memory] [-n|--memory-location|--memory]
	             [[-v|--vcard]|[-l|--ldif]]
	      gnokii --deletephonebook memory_type start_number [end_number|end]
Calendar options:
	      gnokii --getcalendarnote start_number [end_number|end] [-v]
	      gnokii --writecalendarnote vcalendarfile number
	      gnokii --deletecalendarnote start [end_number|end]
ToDo options:
	      gnokii --gettodo start_number [end_number|end] [-v]
	      gnokii --writetodo vcalendarfile number
	      gnokii --deletealltodos
Dialling and call options:
	      gnokii --getspeeddial number
	      gnokii --setspeeddial number memory_type location
	      gnokii --dialvoice number
	      gnokii --senddtmf string
	      gnokii --answercall callid
	      gnokii --hangup callid
	      gnokii --divert {--op|-o} {register|enable|query|disable|erasure}
	             {--type|-t} {all|busy|noans|outofreach|notavail}
	             {--call|-c} {all|voice|fax|data}
	             [{--timeout|-m} time_in_seconds]
	             [{--number|-n} number]
Phone settings:
	      gnokii --getdisplaystatus
	      gnokii --displayoutput
	      gnokii --getprofile [start_number [end_number]] [-r|--raw]
	      gnokii --setprofile
	      gnokii --getactiveprofile
	      gnokii --setactiveprofile profile_number
	      gnokii --netmonitor {reset|off|field|devel|next|nr}
	      gnokii --reset [soft|hard]
	      gnokii --setdatetime [YYYY [MM [DD [HH [MM]]]]]
	      gnokii --getdatetime
	      gnokii --setalarm [HH MM]
	      gnokii --getalarm
WAP options:
	      gnokii --getwapbookmark number
	      gnokii --writewapbookmark name URL
	      gnokii --deletewapbookmark number
	      gnokii --getwapsetting number [-r]
	      gnokii --writewapsetting
	      gnokii --activatewapsetting number
Logo options:
	      gnokii --sendlogo {caller|op|picture} destination logofile
	             [network code]
	      gnokii --setlogo op [logofile] [network code]
	      gnokii --setlogo startup [logofile]
	      gnokii --setlogo caller [logofile] [caller group number] [group name]
	      gnokii --setlogo {dealer|text} [text]
	      gnokii --getlogo op [logofile] [network code]
	      gnokii --getlogo startup [logofile] [network code]
	      gnokii --getlogo caller [caller group number] [logofile]
	             [network code]
	      gnokii --getlogo {dealer|text}
	      gnokii --viewlogo logofile
Ringtone options:
	      gnokii --sendringtone rtttlfile destination
	      gnokii --getringtone rtttlfile [location] [-r|--raw]
	      gnokii --setringtone rtttlfile [location] [-r|--raw] [--name name]
	      gnokii --playringtone rtttlfile [--volume vol]
	      gnokii --ringtoneconvert source destination
	      gnokii --getringtonelist
	      gnokii --deleteringtone start [end]
Security options:
	      gnokii --identify
	      gnokii --getlocksinfo
	      gnokii --entersecuritycode PIN|PIN2|PUK|PUK2
	      gnokii --getsecuritycodestatus
	      gnokii --getsecuritycode
	      gnokii --changesecuritycode PIN|PIN2|PUK|PUK2
File options:
	      gnokii --getfilelist remote_path
	      gnokii --getfileid remote_filename
	      gnokii --getfile remote_filename [local_filename]
	      gnokii --getallfiles remote_path
	      gnokii --putfile local_filename remote_filename
	      gnokii --deletefile remote_filename
Misc options:
	      gnokii --keysequence
	      gnokii --enterchar
	      gnokii --listnetworks
	      gnokii --getnetworkinfo

xgnokii provides the user with a gui to read all this data. But I'm a die hard so I'll follow the console way here ;-). But when you plan to use your laptop to use you gsm (read sms/send sms/manage phone book/calendar (which doesn't work on my type of
phone)) you'll probably want to use xgnokii.

Getting some basic information

helios@lapedb:~$ gnokii --identify
GNOKII Version 0.6.8
IMEI         : 35337YEAHRIGHT
Manufacturer : Nokia
Model        : RH-9
Revision     : V 05.30
helios@lapedb:~$ gnokii --getnetworkinfo
GNOKII Version 0.6.8
Network      : Mobistar (Belgium)
Network code : 206 10
LAC          : 32c8
Cell id      : 8665
helios@lapedb:~$ gnokii --listnetworks  
GNOKII Version 0.6.8
Network  Name
-----------------------------------------
202 01   Cosmote
202 05   VODAFONE-PANAFON
202 09   Q-TELECOM
202 10   TELESTET
204 04   Vodafone
204 08   KPN Mobile The Netherlands BV
204 12   Telfort B.V.
204 16   T-Mobile NL
204 20   Orange Nederland N.V.
206 01   PROXIMUS
206 10   Mobistar
206 20   BASE
208 01   Orange F
208 10   SFR
208 20   Bouygues Telecom
213 03   MOBILAND
214 01   vodafone
214 03   AMENA
214 04   Xfera
214 07   MOVISTAR
216 01   PANNON GSM
216 30   WESTEL
216 70   Vodafone
218 03   ERONET
218 05   Mobilna Srpske
218 90   GSMBIH
219 01   HTmobile
219 10   VIPnet
220 01   MOBTEL
220 02   YU 02
220 03   Telekom Srbija
220 04   MONET

For a complete list click here. And for more information on these MCC (Mobile Country Codes) see wikipedia and IMSI (International Mobile Subscriber Identity) see wikipedia. But the two digits in front of the provider name are the MCC and the MNC, the Mobile Country Code for Belgium is 206. And within a country a network is defined by its MNC (Mobile Network Code).
helios@lapedb:~$ gnokii --monitor       
GNOKII Version 0.6.8
Entering monitor mode...
RFLevel: 100
Battery: 28
SIM: Used 30, Free 70
Phone: Used 0, Free 500
DC: Used 20, Free 236
EN: Used 0, Free 12544
FD: Used 0, Free 12544
MC: Used 10, Free 502
ON: Used 0, Free 50
RC: Used 10, Free 758
SMS Messages: Unread 0, Number 72
Network: Mobistar (Belgium), LAC: 32c8, CellID: 8665
CALL0: IDLE
CALL1: IDLE
helios@lapedb:~$ gnokii --getringtonelist
GNOKII Version 0.6.8
First user defined ringtone location: 231
Number of user defined ringtones: 10

loc   rwu   name
===============================
100   100   Nokia tune          
400   100   Air Glide           
402   100   Backgatone          
403   100   Bowling             
306   100   Carnival 2          
133   100   Cicada              
318   100   Clubbin'            
271   100   Futuristico         
274   100   Heavenly            
290   100   In the groove       
281   100   Nocturne            
313   100   Oompah              
252   100   Running late        
401   100   Sky Diver           
255   100   Upswing             
105   100   Bee                 
121   100   Bounce              
118   100   Chase               
115   100   City bird           
112   100   Etude               
103   100   Fly                 
146   100   Hurry up            
208   100   Jitters             
102   100   Low                 
104   100   Mosquito            
138   100   Polite              
101   100   Ring ring         
123   100   Robo N1X            
117   100   Rush hour           
187   100   Samba rumble        
211   100   Speedy              
219   100   Spiral              
207   100   Tingle              
342   100   Volatile 


gammu


Another nice tool I encountered was gammu, which looks less mature at first sight (no gui, and some bugs when installing it out of apt (which I reported)) but it feels more complete and faster than gnokii (partly because no probing for which module to use is used). In order to get gammu to do something I had to create a file ~/.gammurc which contained:

[gammu]
port = /dev/ttyS0
connection = fbus


After that I could:
edb@lapedb:~$ gammu --identify
Manufacturer  : Nokia
Model         : 3510i (RH-9)
Firmware      : 05.30 C (19-03-04)
Hardware      : 2018
IMEI          : 35337YEAHRIGHT
Original IMEI : 353374/YE/RIGH/T
Manufactured  : 06/2004
Product code  : 0511944
UEM           : 48

Monitor mode:
edb@lapedb:~$ gammu --monitor 1
Press Ctrl+C to break...
Entering monitor mode...

Enabling info about incoming SMS : No error.
Enabling info about incoming CB  : Function not implemented. Help required.
Enabling info about calls        : No error.
Enabling info about USSD         : No error.

SIM phonebook     : Used 031, Free 069
Dialled numbers   : Used 020, Free -08
Received numbers  : Used 010, Free 002
Missed numbers    : Used 010, Free 002
Own numbers       : Used 001, Free 002
Phone phonebook   : Used 000, Free 500
Calendar          : Used 2
Battery level     : 28 percent
Network level     : 100 percent
SIM SMS status    : 20 used, 0 unread, 20 locations
Phone SMS status  : 46 used, 2 unread, 50 locations, 20 templates
Network state     : home network
Network           : 206 10 (Mobistar, Belgium), LAC 32C8, CID 8665
Name in phone     : "Mobistar"

Leaving monitor mode...


The extensive help looks like:
edb@lapedb:~$ gammu --help
[Gammu version 1.05.00 built 18:45:07 Mar 29 2006]

Usage: gammu [confign] [nothing|text|textall|binary|errors] [options]

First parameter optionally specifies which config section to use (all are probed by default).
Second parameter optionally controls debug level, next one specifies actions.

For more details, call help on specific topic (gammu --help topic). Topics are:

	   call - Calls
	    sms - SMS and EMS
	 memory - Memory (phonebooks and calls)
 filesystem - Filesystem
	   logo - Logo and pictures
   ringtone - Ringtones
   calendar - Calendar notes
	   todo - To do lists
	   note - Notes
   datetime - Date, time and alarms
   category - Categories
	 backup - Backing up and restoring
	  nokia - Nokia specific
	siemens - Siemens specific
	network - Network
	    wap - WAP settings and bookmarks
	    mms - MMS and MMS settings
	  tests - Phone tests
	     fm - FM radio
	   info - Phone information
   settings - Phone settings
	  other - Functions that don't fit elsewhere

With help on inidividual subcategories. It's also possible to access the filesystem:

edb@lapedb:~$ gammu --getfilesystemstatus

Free memory: 689786, total memory: 876701
edb@lapedb:~$ gammu --getfilesystem
	1.   SFolder "Permanent_memory"
	2.   S |-- Folder "Gallery"
	3.   S |    |-- Folder "Graphics"
   18.     |    |    |-- "Birds.jpg"
   19.     |    |    |-- "Blue flowers.jpg"
   20.     |    |    |-- "City.jpg"
   21.     |    |    |-- "Dots.jpg"
   22.     |    |    |-- "Eight.jpg"
   23.     |    |    |-- "Elephant.jpg"
   24.     |    |    |-- "Flowers.jpg"
   25.     |    |    |-- "Landscape.jpg"
   26.     |    |    |-- "Numbers.jpg"
   27.     |    |    |-- "Party.jpg"
   28.     |    |    |-- "Rainbow.jpg"
   29.     |    |    |-- "Spectrum.jpg"
   30.     |    |    |-- "Teddy.jpg"
   31.     |    |    |-- "Wall.jpg"
   32.     |    |    |-- "Window.jpg"
	5.  HS |    |-- Folder "Received files"
	4.   S |    |-- Folder "Tones"
   17.PRH  |    |-- "User Content Package pc"
	6.P HS |-- Folder "Hidden"
   12.   S |-- Folder "Messages"
   16.   S |    |-- Folder "DRAFTS"
   13.   S |    |-- Folder "INBOX"
   14.   S |    |-- Folder "OUTBOX"
   15.   S |    |-- Folder "SENT"
	7.   S |-- Folder "java"
	8.   S |    |-- Folder "applications"
   10.   S |    |-- Folder "email"
	9.   S |    |-- Folder "games"
   33.   S |    |    |-- Folder "Bckg_en_nl-NL_fr_de_it_pt-PT_es-ES_tr-TR"
   34.     |    |    |    |-- "Bckg_en_nl-NL_fr_de_it_pt-PT_es-ES_tr-TR.jad"
   35.P    |    |    |    |-- "Bckg_en_nl-NL_fr_de_it_pt-PT_es-ES_tr-TR.jar"
   44.P    |    |    |    |-- "RMS.rms"
   36.   S |    |    |-- Folder "Rack_en_nl-NL_fr_de_it_pt-PT_es-ES_tr-TR"
   42.P    |    |    |    |-- "RMS.rms"
   37.     |    |    |    |-- "Rack_en_nl-NL_fr_de_it_pt-PT_es-ES_tr-TR.jad"
   38.P    |    |    |    |-- "Rack_en_nl-NL_fr_de_it_pt-PT_es-ES_tr-TR.jar"
   39.   S |    |    |-- Folder "Skyd_en_nl-NL_fr_de_it_pt-PT_es-ES_tr-TR"
   43.P    |    |    |    |-- "RMS.rms"
   40.     |    |    |    |-- "Skyd_en_nl-NL_fr_de_it_pt-PT_es-ES_tr-TR.jad"
   41.P    |    |    |    |-- "Skyd_en_nl-NL_fr_de_it_pt-PT_es-ES_tr-TR.jar"
   11.   S |    |-- Folder "imclient"

Phone memory: 876701 bytes (free 689786 bytes, used 186915 bytes)

Now it's possible to get some images (or the java applications):
edb@lapedb:~/l$ gammu --getfilefolder 3
Getting "Birds.jpg"
  100 percent                              
  Saving to Birds.jpg
Getting "Blue flowers.jpg"
  100 percent                              
  Saving to Blue flowers.jpg
Getting "City.jpg"
  100 percent                              
  Saving to City.jpg
Getting "Dots.jpg"
  100 percent                              
  Saving to Dots.jpg
Getting "Eight.jpg"
  100 percent                              
  Saving to Eight.jpg
Getting "Elephant.jpg"
  100 percent                              
  Saving to Elephant.jpg
Getting "Flowers.jpg"
  100 percent                              
  Saving to Flowers.jpg
Getting "Landscape.jpg"
  100 percent                              
  Saving to Landscape.jpg
Getting "Numbers.jpg"
  100 percent                              
  Saving to Numbers.jpg
Getting "Party.jpg"
  100 percent                              
  Saving to Party.jpg
Getting "Rainbow.jpg"
  100 percent                              
  Saving to Rainbow.jpg
Getting "Spectrum.jpg"
  100 percent                              
  Saving to Spectrum.jpg
Getting "Teddy.jpg"
  100 percent                              
  Saving to Teddy.jpg
Getting "Wall.jpg"
  100 percent                              
  Saving to Wall.jpg
Getting "Window.jpg"
  100 percent                              
  Saving to Window.jpg
edb@lapedb:~/l$ file Window.jpg 
	Window.jpg: JPEG image data, JFIF standard 1.02

So in order to add an image in order to set a new wallpaper for example, simply create a JPEG image which has a widht of 96 pixels and maximum height
of 65 (when the image is smaller the screen will be padde with white).
edb@lapedb:~/l$ gammu --addfile 3 debian.jpg -type JPG
Writing: 100 percent                              
ID of new file is "45"
edb@lapedb:~/l$ file debian.jpg 
debian.jpg: JPEG image data, JFIF standard 1.01
edb@lapedb:~/l$ gammu --getfolderlisting 3
18;File;"Birds.jpg";"Fri Mar 19 14:25:15 2004";3146;
19;File;"Blue flowers.jpg";"Fri Mar 19 14:25:15 2004";2745;
20;File;"City.jpg";"Fri Mar 19 14:25:15 2004";1615;
21;File;"Dots.jpg";"Fri Mar 19 14:25:15 2004";2517;
22;File;"Eight.jpg";"Fri Mar 19 14:25:15 2004";3283;
23;File;"Elephant.jpg";"Fri Mar 19 14:25:15 2004";3073;
24;File;"Flowers.jpg";"Fri Mar 19 14:25:15 2004";4090;
25;File;"Landscape.jpg";"Fri Mar 19 14:25:15 2004";1807;
26;File;"Numbers.jpg";"Fri Mar 19 14:25:15 2004";3243;
27;File;"Party.jpg";"Fri Mar 19 14:25:16 2004";2983;
28;File;"Rainbow.jpg";"Fri Mar 19 14:25:15 2004";3069;
29;File;"Spectrum.jpg";"Fri Mar 19 14:25:15 2004";1838;
30;File;"Teddy.jpg";"Fri Mar 19 14:25:15 2004";2726;
31;File;"Wall.jpg";"Fri Mar 19 14:25:16 2004";2494;
32;File;"Window.jpg";"Fri Mar 19 14:25:16 2004";2585;
45;File;"debian.jpg";"Sun Apr  9 14:47:00 2006";2695;

So my cellphone now has this logo: image (right mouse, save as) just keep in mind, that since the text is printed in black you should not make too dark images.
It's also possible to get various power levels, the first is without the charger connected, the second with a connected charger.

edb@lapedb:~/l$ gammu  --nokiagetadc
	  Battery voltage, divided: raw        406 unit result       3679 mV
	   Battery voltage, scaled: raw        406 unit result       3679 mV
	           Charger voltage: raw          0 unit result         85 mV
	           Charger current: raw          0 unit result          5 mA
	    Battery size indicator: raw        451 unit result      82300 Ohms
	       Battery temperature: raw        255 unit result        304 K
	   Headset interconnection: raw         82 unit result        239 mV
	      Hook interconnection: raw        680 unit result       1883 mV
	              Light sensor: raw        413 unit result        812 mV
   Power amplifier temperature: raw       1001 unit result      32767 K
	          VCXO temperature: raw       1006 unit result        219 K
 Resistive keyboard 1/headint2: raw       1004 unit result       2770 mV
   Resistive keyboard 1/auxdet: raw        551 unit result       1186 mV
	   Initial battery voltage: unit result       3653 mV
	           Battery Current: mA
	      Battery Current Fast: mA
edb@lapedb:~/l$ gammu  --nokiagetadc
	  Battery voltage, divided: raw        475 unit result       3875 mV
	   Battery voltage, scaled: raw        437 unit result       3771 mV
	           Charger voltage: raw        226 unit result       4276 mV
	           Charger current: raw        581 unit result        138 mA
	    Battery size indicator: raw        449 unit result      82600 Ohms
	       Battery temperature: raw        258 unit result        304 K
	   Headset interconnection: raw         82 unit result        239 mV
	      Hook interconnection: raw       1002 unit result       2764 mV
	              Light sensor: raw        550 unit result       1059 mV
   Power amplifier temperature: raw       1001 unit result      32767 K
	          VCXO temperature: raw       1006 unit result        218 K
 Resistive keyboard 1/headint2: raw       1005 unit result       2770 mV
   Resistive keyboard 1/auxdet: raw        600 unit result       1315 mV
	   Initial battery voltage: unit result       3653 mV
	           Battery Current: mA
	      Battery Current Fast: mA

With --nokiavibratest and --nokiasetlights it's also possible to toggle the LED states.

Taking it apart


And after a while a phone dies, and the only sane thing to do afterwards is to take it apart, so I proudly present, the dissection of a Nokia 3510i. First there is the easy part, removing the cover:


image


Now remove the 6 torx screws and you will be able to take the phone apart.


image


(For a larger version of the image here ) Mind that you see that LCD is connected by 8 pins, you can also see the connection of the speaker and you can see the four white LED's, these have their light distributed all over the phone using the plastic casing.

In the next step the PCB gets removed


image


(For a larger version of the image here ). Again a lot of connectors, the components still in the plastic casing on the right, from top to bottom and from left to right. At the highest point you can see the power button, then the antenna, the battery connector, the sim card connection and the data port, the microphone and the vibrating alert and finally the outside world power connection and such.


image


(For a larger version of the image here ). Now the metal shielding (most of it) was removed. This together with the front side of the LCD.


image
image


(For a larger version of the image here and here ).
The only thing to remove is some of the casing, it's not possible to remove this without destructing something, but here are some images:


image


(For a larger version of the image here). Note that the PCB uses six layers, all at the bottom you can see a number one printed on it and when you turn the pcb around (the side where the buttons used) to be you can see a number 6 there.
But what was hidden beneath the casing ? An SMD component with the following printing "FDK IT001", this is produced by FDK and is a VCO or Voltage Controller Oscillator. Some more specs can be found here. In fact the component is also a mini smd circuit covered by some additional casing.

Next to that VCO is a chip which has MJOLNER PMB3346 on it, google shows that this is an RF ASIC, the nokia partnumber of this chip is 4370867.

Anyhow, some documentation on the cellphone:

up
Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by Wikka Wakka Wiki 1.1.6.0
Page was generated in 0.1140 seconds