This commit was manufactured by cvs2svn to create branch 'uc'.
[gnokii.git] / Docs / developers / protocol / n7110.txt
1 \r
2 Last update 16.02.2002
3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r
4 \r
5 Assembled by\r
6         Balazs Nagy (js@lsc.hu)\r
7         Marcin Wiacek (Marcin-Wiacek@TOPNET.PL)\r
8         Jens Bennfors <jens.bennfors@ing.hj.se>\r
9         Michael Hund <michael@drhund.de>\r
10         Jay Bertrand <jay.bertrand@libertysurf.fr>\r
11         Gabriele Zappi <gzappi@inwind.it>\r
12         Markus Plail <plail@web.de>
13         Ralf Thelen <ralf@mythelen.de>
14         ... and other members of gnokii mailing list\r
15             and authors of some WWW pages.\r
16 \r
17 The data provided is for information purposes only. \r
18 Some of the frames might be hazardous to your phone. Be careful!!! \r
19 We do not take any responsibility or liability for damages, etc.\r
20 \r
21 NOTE: this information isn't (and can't be) complete.  If you know anything\r
22 about features not listed here or you noticed a bug in this list, please\r
23 notify us via e-mail.  Thank you.\r
24 \r
25 Document describing frames used in\r
26 GSM Nokia 6210 and derivatives (7110)\r
27 Correct format is FBUS version 2/Infrared/MBUS version 2\r
28 (see nokia.txt for protocol details):\r
29 \r
30  List:\r
31 \r
32 0x00: Connect to NBS port ?\r
33     r Set ringtone          {+0x7c,0x01,0x00,0x0d,0x06[6],0x78,ringtone packed according to SM2.0}\r
34                             Seems not to work in MBUS!\r
35 0x01: Communication Status\r
36 ?   r Call msg              { 0x0002 }\r
37 ?   r Call in progress      { 0x0003, seqnr }\r
38 ?   r Remote end hang up    { 0x0004, seqnr, ?, error (like in netmon in 39) }\r
39 ?   r incoming call alert   { 0x0005, seqnr, numlen, "number", namelen, "name" }\r
40 ?   r answered call         { 0x0007, seqnr }\r
41 ?   r terminated call       { 0x0009, seqnr }\r
42 ?   r call msg              { 0x000a, seqnr }\r
43     Note: in 6210 4.27 all msg from 0x01 seems to be unavailable\r
44 0x02: SMS handling\r
45     s Send SMS message      { 0x0001, 0x02, 0x00 (SEND REQUEST), ... }\r
46     r Message sent          { 0x0002 }\r
47     r Send failed           { 0x0003, ?, ?, error (like in netmon in 65)}\r
48     s Incoming SMS info on  { 0x000d, 0x00, 0x00, 0x02}\r
49                             note: no info about Delivery Reports\r
50     r Incoming SMS info onOK{ 0x000e }\r
51                             note: no info about Delivery Reports\r
52     r Incoming SMS infoonerr{ 0x000f, error }\r
53                             where error: 0x0c - no PIN\r
54     r SMS message received  { 0x0011, ...... } (whole message)\r
55     s Set CellBroadcast     { 0x0020, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01 }\r
56                                       for enable cell broadcast ?\r
57                                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }\r
58                                       for disable cell broadcast ?\r
59     r Set CellBroadcast OK  { 0x0021, 0x01 }\r
60     r Read CellBroadcast    { 0x0023, ?, ?, ?, channel, ?, message... } ?\r
61     s Set SMS center        { 0x0030, 0x64, priority, checksum?, format,\r
62                                       validity[2], {DefaultRecipient no.}[12],\r
63                                       {SMScenter no.}[12], {SMSC name}, 0x00}\r
64                               where tel.no.[12]: {len, type, {number(BCD)}}\r
65                                     type: 0x81: normal\r
66                                           0x91: + (international)\r
67                                           0xd0: alphanumeric\r
68                                     format: 0x00: text\r
69                                             0x22: fax\r
70                                             0x24: voice\r
71                                             0x25: ERMES\r
72                                             0x26: paging\r
73                                             0x31: X.400\r
74                                             0x32: email\r
75                                     validity: 0x000b:  1 hour\r
76                                               0x0047:  6 hours\r
77                                               0x00a7: 24 hours\r
78                                               0x00a9: 72 hours\r
79                                               0x00ad:  1 week\r
80                                               0x00ff: max.time\r
81     r Set SMS center OK     { 0x0031 }\r
82     r Set SMS center error  { 0x0032, reason }\r
83     s Get SMS center        { 0x0033, 0x64, priority }\r
84     r SMS center received   { 0x0034, priority, checksum?, type,\r
85                                       validity[2], {DefaultRecipient no.}[12],\r
86                                       {SMScenter no.}[12], {SMSC name}, 0x00 }\r
87                               where priority, checksum, type, validity,\r
88                                     tel.no.[12]: see 0x02/0x0030\r
89     r SMS center error recv { 0x0035, reason }\r
90     s??                     { 0x0074}\r
91     r??                     { 0x0075, 0xFF, 0x11, 0x98}\r
92     s??                     { 0x008C}\r
93     r??                     { 0x008D, 0x00}\r
94 0x03: Phonebook functions\r
95     s Get memory status     { 0x0103, 0x02, memory type }\r
96                             where: memory type - see 0x03/0x0107\r
97     r Get memory status     { 0x0104, 0x00, xL, 0x00[2], y1H, y1L, 0x10,\r
98                                       0x00[2], z?, ymaxH, ymaxL, y2H, y2L,\r
99                                       0x0d?, xH?, 0x00[2]? }\r
100                               where y1: location (lowermost)\r
101                                     y2: no. of locations\r
102                                     ymax: maximum location no.\r
103     s Read memory           { 0x0107, 0x01, 0x01, 0x00, 0x01, xH, xL,\r
104                                      yH, yL, 0x00, 0x00}\r
105                             where x: memory type\r
106                                      0x01: (256) Dialled numbers\r
107                                      0x02: (512) Missed calls\r
108                                      0x03: (768) Received calls\r
109                                      0x05: (500) telephone phonebook\r
110                                      0x06: (160) SIM phonebook\r
111                                      0x07: (10/0)\r
112                                      0x08: (1/0)\r
113                                      0x09: (4) voice mailbox\r
114                                      0x0e: (10) speed dials\r
115                                      0x10: (5) caller groups\r
116                                   y: location\r
117     r Read memory error     { 0x0108, 0x00, 0x01,\r
118                              code,0x00, 0x00, z, error}\r
119                             where code==0x0f\r
120                                   error: 0x34 - phonebook location not found\r
121                                          0x3b - speed dial not assigned\r
122     r Read memory OK        { 0x0108, 0x00, 0x01,\r
123                              code,0x00, 0x00, z, xH, xL, yH, yL, 0x00, 0x00, 0x00, no.of blocks, { block } * }\r
124                             where code: != 0x0f\r
125                               y: location\r
126                               z: generic block size\r
127                               block: {id, 0, 0, blocksize, block no.,\r
128                                       {contents}, 0x00}\r
129                                 id: 0x04 pointer to another memory location { 0xff?, yH, yL, xL,0x00[3] }\r
130                                     0x07 name {len, (unicode)},\r
131                                     0x08 email\r
132                                     0x09 postal\r
133                                     0x0a note {len, (unicode)}\r
134                                     0x0b number {type, 0x00[3], len, (unicode)}\r
135                                     0x0c ringtone {ringtone no., 0, 0}\r
136                                     0x13 date for a called list (DC, RC, etc.)\r
137                                     0x1b caller group graphic {width, height, 0, 0 {bitmap}}\r
138                                     0x1c caller group graphic on? {(1: yes, 0: no), 0, 0}\r
139                                     0x1e caller group number {number, 0, 0}\r
140                                    type: 0x0a: General,\r
141                                          0x03: Mobile (office ?),\r
142                                          0x06: Work,\r
143                                          0x04: Fax,\r
144                                          0x02: Home (mobile ?)\r
145     s Set mem location      { 0x010b, 0x00, 0x01, 0x01, 0x00, 0x00, z,\r
146                                       xH, xL, yH, yL, 0x00, 0x00, 0x00,\r
147                                       no.of blocks, { block }[no.of blocks] }\r
148     r Set mem location      { 0x010c, 0?, 1?, code, 0?, 0?, z?, 0?, 0?,\r
149                                       yH, yL, xL }\r
150                             where code:\r
151                                     0x3d - wrong entry type\r
152                                     0x3e - too much entries\r
153     s Delete mem location   { 0x010f, 0x00, 0x01, 0x04, 0x00, 0x00, 0x0c, 0x01, 0xff, xH, xL,
154                                       yH, yL, 0x00, 0x00}
155                                       where   x: location
156                                       y: memory type
157     r Delete mem location   { 0x0110, 0x00, 0x00 }
158 0x06: Calling line restriction/Call forwarding etc
159     r Get call divert       { 0x0001, 0x02, x, 0x00, divtype, 0x02, calltype, y, z, 0x0b, number, 0x00...0x00, timeout (byte 45) }
160     s Set call divert       { 0x0001, 0x03, 0x00, divtype, calltype, 0x01, number(packed like in SMS), 0x00 ... 0x00,
161                                       length of number (byte 29), 0x00 ... 0x00, timeout (byte 52), 0x00, 0x00, 0x00}
162                             NOTE: msglen=0x37
163                             where timeout:
164                               0x00: not set ?
165                               0x05: 5 second
166                               0x0a: 10 second
167                               0x0f: 15 second
168                               0x1e: 20 second
169                               0x14: 25 second
170                               0x19: 30 second
171                             where divtype: 
172                               0x02: all diverts for all call types ?
173                                     Found only, when deactivate all diverts for all call types (with call type 0x00)
174                               0x15: all calls
175                               0x43: when busy
176                               0x3d: when not answered
177                               0x3e: if not reached
178                             calltype:
179                               0x00: all calls (data, voice, fax)
180                               0x0b: voice calls
181                               0x0d: fax calla
182                               0x19: data calls
183     s Deactivate calldiverts{ 0x0001, 0x04, 0x00, divtype, calltype, 0x00 }
184                             where divtype, calltype: see above
185     s Get call diverts      { 0x0001, 0x05, 0x00, divtype, calltype, 0x00 }
186                             where divtype, calltype: see above
187 0x0a: Network status\r
188     s get used network      { 0x0070 }\r
189     r get used network      { 0x0071, available,?,?,length,netstatus,netsel,cellIDH,\r
190                                       cellIDL,lacH,lacL,MCC+MNC[3],{Opstr}, 4?,\r
191                                       len, xlen(78), ylen(21), 0, {bitmap} }\r
192                               where {Opstr}: namelen, {operator name(unicode)}\r
193                                     len: {xlen, ylen, 0, {bitmap} + 2\r
194                                     {bitmap}: bitmaplen, 0, 0, {OTA bitmap}\r
195                                     available: 0x02 if the logo following is valid,\r
196                                                0x01 for no operator logo following\r
197     s get network status    { 0x0081 }\r
198     r get network status    { 0x0082, network%, 0x14? }\r
199     s set operator logo     { 0x01a3 0x01, oplogo?, MCC+MNC[3], 0?,4?,len,\r
200                                      xlen(78),ylen(21), 0 (frames?),\r
201                                      {bitmap}*?, 0x00(padding) }\r
202                               where len, {bitmap}: see 0x0a/0x0071\r
203     r set operator logo OK  { 0x01a4 }\r
204     s clear operator logo   { 0x00af, x}
205                             where x==0 to 4
206     r clear operator logo   { 0x00bf}
207 0x13: Calendar notes\r
208     s Add meeting note      { 0x0001, body like in subtype 0x001a...}\r
209     r Add meeting note      { 0x0002, location (2 bytes), status (2 bytes)}\r
210     s Add call note         { 0x0003, body like in subtype 0x001a...}\r
211     r Add call note         { 0x0004, location (2 bytes), status (2 bytes)}\r
212     s Add birthday note     { 0x0005, location (2 bytes), entry type, 0x00, year of birth(2 bytes),
213                                       Month, Day, 0x00, 0x00, alarm (4 bytes), alarm type, length, text (Unicode)}
214     r Add birthday note     { 0x0006, location (2 bytes), status (2 bytes)}\r
215     s Add reminder note     { 0x0007, body like in subtype 0x001a...}\r
216     r Add reminder note     { 0x0008, location (2 bytes), status (2 bytes)}\r
217     s Delete calendar note  { 0x000b, location (2 bytes) }\r
218     r Delete calendar note  { 0x000c, location (2 bytes), ?, ?, ?, ? }\r
219     s Get calendar note     { 0x0019, location (2 bytes) }\r
220     r Calendar note recvd   { 0x001a, location (2 bytes), entry type, 0x00, year (2 bytes), Month, Day, block}\r
221                             where: entry type - 0x01 - Meeting, 0x02 - Call, 0x04 - Birthday, 0x08 - Reminder\r
222                                    block: for Meeting:{hour,minute,alarm (two bytes),recurrance (two bytes),len,0x00,string(unicode)}\r
223                                           where alarm=Number of minutes before the time of the meeting\r
224                                                   that the alarm should be triggered:\r
225                                                   For meetings with "No alarm"=0xFFFF (-1).\r
226                                                   For "On time"=0x0000\r
227                                                   half an hour=0x001E, and so on.\r
228                                                 Recurrance=in hours, between future occurances of this meeting.\r
229                                                   If there is no repeat, this value is 0x0000. The special value 0xffff \r
230                                                   means 1 Year!\r
231                                           for Call:{Hour,Minute,Alarm (as above),Recurrance (as above),namelen,numberlen,\r
232                                                     name(unicode),number(unicode)}\r
233                                           for Reminder:{Recurrance (as above),len,0x00,string(unicode)}\r
234                                           for Birthday:{byte1,byte2,alarm(4 bytes),yearofbirth,alarmtype,len,string(unicode)}\r
235                                                     byte1 and byte2 may vary (???). Usually are 0x00 both (but not always)\r
236                                                     In Birthday, the Year in the common part, usually contains a strange year.\r
237                                                     So, don't consider it as Year of note, neither year of BirthDay (for Year of\r
238                                                     Birthday use the value described below).\r
239                                           where alarm=32-bit integer that is the number of seconds between the desired\r
240                                                   alarm time and 11:59:58pm on the birthday.For "No Alarm", the value is\r
241                                                   0x0000FFFF (65535).\r
242                                                 YearOfBirth=used instead of the one in the common part of the entry (see above)\r
243                                                   but only when reading birthday entries. For storing entries, this field does\r
244                                                   not exist.\r
245                                                 AlarmType: 0x00 - Tone, 0x01 - Silent\r
246 ?   s???                    { 0x0021 }\r
247 ?   r???                    { 0x0022, 0x5A, 0x00 }\r
248 ?   s???                    { 0x0025 }\r
249 ?   r???                    { 0x0026, 0x04, 0x00 }\r
250 ?   s                       { 0x0029 }\r
251 ?   r                       { 0x002A, 0x04, 0x00 }\r
252     s Get first free pos    { 0x0031 }\r
253     r Get first free pos    { 0x0032, location (2bytes) }\r
254     s Get notes info        { 0x003a, 0xFF, 0xFE}\r
255     r Get notes info        { 0x003b, how many notes used (2 bytes), 0x01, 0x07, { two bytes with location for each note} *}\r
256 ?   s Get calendar note??   { 0x003E, location (2 bytes) }\r
257 ?   r Get calendar note??   { 0x003F, location (2bytes), ... }\r
258 0x14:\r
259     s Get Picture Image     { 0x0007, location, number[2 bytes], 0x00, 0x64 }\r
260     r Get Picture Image     { 0x0008, 0x07, location, number[2 bytes], 0x07, ??[38],\r
261                                      width, height, lenH, lenL, {bitmap}, 0x00, 0x00, text len, text(coded like in SMS)...}\r
262     r Get SMS failed        { 0x0009, 0x02 },
263     s Get SMS status        { 0x0036, 0x64 }
264     r Get SMS Status        { 0x0037, 0x05/0x03, 0x01, 0x00, 0x00,\r
265                               a (2 octets), b (2 octets), c (2 octets),\r
266                               d (2 octets), e (2 octets), 0x00\r
267                               where:\r
268                               a - according to P.Kot:\r
269                                 Number of locations in "fixed" memory. These are all\r
270                                 Templates entries in my Nokias 6210 (NPE-3 (c) NMP V05.36\r
271                                 14-11-01, NPE-3 (c) NMP V05.27 01-08-01).\r
272                                 I can't remove any of Templates entries in my phone.\r
273                                 Marcin WiÂ¥cek: Rather not ! I don't agree.\r
274                                 I have 0x00, 0x0f and 10 templates and 3 SMS\r
275                                 and 10 Picture Images.\r
276                               b - Number of used messages in phone memory. These\r
277                                 are messages manually moved from the other folders.\r
278                                 Picture messages are saved here.\r
279                               c - Number of unread messages in phone memory. Probably\r
280                                 only smart messsages.\r
281                               d - Number of used messages in SIM memory. These are\r
282                                 either received messages or saved into Outbox/Inbox.\r
283                                 Note that you *can't* save message into this memory\r
284                                 using 'Move' option. Picture messages are not here.\r
285                               e - Number of unread messages in SIM memory\r
286 \r
287     s Set Picture Image     { 0x0050, 0x07, location, number[2 bytes], 0x07, ??[38], \r
288                                      width, height, lenH, lenL, {bitmap}, 0x00, 0x00, text len, text(coded like in SMS)...}\r
289                               std. size: 72x28\r
290     r Set Picture Image     { 0x0051, location, number[2 bytes], 0x07 }\r
291     s Set SMS name          { 0x0083,folder,location(2bytes),name(Unicode),0x00 , 0x00}\r
292     r Set SMS name          { 0x0084,folder,0x00, 0x00, name (Unicode),0x00,0x00}\r
293     s List Picture Images   { 0x0096, location, 0x0f, 0x07 }\r
294                               where location:\r
295                                  LM tries with 0x09, 0x11, 0x19, 0x21, 0x29, 0x31, 0x39, 0x41, 0x49\r
296                                  Returned value with 0x21\r
297     r List Picture Images   { 0x0097, number of pictures[2 bytes], number1[2 bytes], number2[2 bytes], ..., }\r
298     s Write SMS to folder   { 0x0104, status, folder ID, location(2 bytes), 0x02, 0x01, SMS stuff ... }
299     r Write SMS to folder   { 0x0105, folder ID, location(2 bytes), 0x00 }
300     r Write SMS to folder   { 0x0106, 0x02 (write failed errorcode ?) }
301     s Get SMS from folder   { 0x0107, folderID, location(2 bytes), 0x01, 0x65, 0x01}\r
302                             where: folderID - see 0x14/0x017B\r
303     r Get SMS from folder   { 0x0108, status, folderID, 0x00, location, type, sender number,...}
304
305                             where: status=0x01 - reveived/read
306                                           0x03 - received/unread
307                                           0x05 - stored/sent
308                                           0x07 - stored/not sent
309
310                             where: folderID - see 0x14/0x017B
311
312                             where: type=0x00 - received SMS
313                                         0x01 - delivery report
314                                         0x02 - stored SMS
315                                         0x07 - picture message\r
316     s Delete SMS message    { 0x010a, folderID, location(2 bytes), 0x01 }
317     r Delete SMS            { 0x010b }
318     s Get folder status     { 0x016b, folderID, 0x0F, 0x01}\r
319                             where: folderID - see 0x14/0x017B\r
320     r Get folder status     { 0x016c, number of entries (2 bytes), entry1number (2 bytes), entry2number(2 bytes), ....}\r
321     s Get folder names      { 0x017A, 0x00, 0x00}\r
322     r Get folder names      { 0x017B, number of strings, folderID, name1, 0x00, folderID, name2, 0x00, name3, 0x00,...}\r
323                             where: folderID=0x08 - Inbox\r
324                                             0x10 - Outbox\r
325                                             0x18 - Archive\r
326                                             0x20 - Templates
327                                             0x29 - first "My folders"
328                                             0x31 - second "My folders"
329                                             0x39 - third -"-
330                                             and so on\r
331 0x17:\r
332     s Get Battery info      { 0x0002 }\r
333     r Get Battery info      { 0x0003, 0x0b, batt%, 0x14?, 0x01? }\r
334 0x19: Phone clock & alarm\r
335 \r
336     These frames are like the same frames subtypes in 0x11 in 6110\r
337 \r
338     s set date and time     { 0x0060, 1,1,7,yearh,yearl,month,mday,hour,min,0x00 }\r
339     r date and time set     { 0x0061 }\r
340     s get date and time     { 0x0062 }\r
341     r date and time recvd   { 0x0063,date_set?,time_set?,?,?,yearh,yearl,month,mday,hour,min,second }\r
342                             where: date_set & time_set==0x01 - set\r
343                                                         0x00 - not set, ?,?,yearh,yearl,month,mday,hour,min,second\r
344                                                                not available in frame\r
345     s set alarm             { 0x006b, 1,32,3,0x02(on-off),hour,min,0x00 }\r
346     r alarm set             { 0x006c }\r
347     s get alarm             { 0x006d }\r
348     r alarm received        { 0x006e,?,?,?,?,alrm(==2:on),hour,min }\r
349 \r
350     These are new (?)\r
351 \r
352 ?   s ??                    { 0x0083, id }\r
353 ?   r ??                    { 0x0084, 0x01, 0x40, 0x03, id, 0x00, 0x00 }\r
354 ?   r ??                    { 0x0084, 0x01, 0x40, 0x03, id, 0x00, 0x01 }\r
355 ?   r ??                    { 0x0084, 0x01, 0x40, 0x03, id, 0x01, 0x00 }\r
356                             where: id=0x27,0x2a,0x32,0x28,0x40\r
357 0x1b:\r
358     s Get IMEI              { 0x0001 }\r
359     r Get IMEI              { 0x0002, {IMEI(ASCII)}, 0x00 }\r
360     s get HW&SW version     { 0x0003, 0x01, 0x32 }\r
361     r get HW&SW version     { 0x0004, "V " "firmware\n" "firmware date\n"\r
362                               "model\n" "(c) NMP." 0x00 0xff[14] }\r
363 0x1f:\r
364     s ???                   { 0x0010, 0x02, 0x00, 0xff, 0xff }\r
365     r ???                   { 0x0011, length, 0x00, {block}[length] }\r
366                               where block: { unicode letter[2], 0x0000,\r
367                                 0x00, 0x55, ??, ?? }\r
368     s Set ringtone          { 0x011f, 0x00, location, 0x00, name(Unicode),\r
369                               ringtone(format the same to 0x40/0x019e and 0x40/0x01a0) }\r
370                               where: location: 0x87 to 0x8b on N6210\r
371                                                0x74 to ... on N7110\r
372     s Get ringtone          { 0x0122, 0x00, location}\r
373     r Get ringtone          { 0x0123, 0x00, location, name(Unicode), 0x00,...,0x00, 0x02,0xFC,0x09(ringtone contenst)}\r
374     r Get ringtone error    { 0x0124, ...}\r
375 0x39:\r
376     s get profile feature   { 0x0101, 0x01, 0x01, 0x01, number1, number2}\r
377                             where number1: from 0x00 to 0x07 (for each profile ?)\r
378                                   number2: 0x00 - 0x09, 0x0A, 0x16 - 0x19, 0x1a - 0x1f, 0x20 - 0x29, 0x2a - 0x2c, 0xff\r
379                                      where 0x09: keypad tones\r                                           0x02: incoming call alert\r                                           0x03: ringtone number\r
380                                            0x04: ringing volume\r
381                                            0x05: message alert tone\r                                           0x06: vibra\r                                           0x07: warning tones\r                                           0x08: caller groups alert for\r                                        0x09: automatic answer
382                                            0xff: name\r
383     r get profile feature   { 0x0102, 0x01, 0x02, number2, block...}\r
384                             for number2==0xff: (Profile Name)\r
385                               block: 0x01, length, name(Unicode), 0x00, 0x00\r
386                             for number2==0x00: (Keypad Tones)\r
387                               block: 0x01, 0x01, 0x01, Type, 0x01\r
388                               where: Type : 0x00 = Off\r
389                                             0x01 to 0x03 = Level1 .. Level3\r
390                             for number2==0x02: (Incoming Call Alert)\r
391                               block: 0x01, 0x01, 0x01, Type, 0x01\r
392                               where: Type : 0x00 = Ringing\r
393                                             0x01 = Ascending\r
394                                             0x02 = Ring Once\r
395                                             0x03 = Beep Once\r
396                                             0x05 = Off\r
397                             for number2==0x03: (Ringtone Number)\r
398                               block: 0x01, 0x01, 0x01, Number, 0x01\r
399                               where: Number : 0x40 to 0x62 - gives number of factory ringtone. The number of menu is\r
400                                               obtained by doing (Number - 0x3f);\r
401                               where: Number : 0x89 to 0x8d - gives number of uploaded ringtone. The number of menu is\r
402                                               obtained by doing (Number - 0x65),while the uploaded ringtone number is\r
403                                               obtained by doing (Number - 0x88).\r
404                             for number2==0x04: (Ringing volume)\r
405                               block: 0x01, 0x??, 0x??, Volume, 0x01\r
406                               where: Volume : 0 = Level1 .. to 4 = Level5\r
407                             for number2==0x05: (Message Alert Tone)\r
408                               block: 0x01, 0x01, 0x??, Type, 0x01\r
409                               where: Type : 0x00 = Off\r
410                                             0x01 = Standard\r
411                                             0x02 = Special\r
412                                             0x03 = Beep Once\r
413                                             0x04 = Ascending\r
414                             for number2==0x06: (Vibration)\r
415                               block: 0x01, 0x??, 0x??, Switch, 0x01\r
416                               where: Switch : 0 = Off, 1 = On\r
417                             for number2==0x07: (Warning Tones)\r
418                               block: 0x01, 0x??, 0x??, Switch, 0x01\r
419                               where: Switch : 0 = Off, 1 = On\r
420                             for number2==0x08: (Caller groups Alert for)\r
421                               block: 0x01, 0x??, 0x??, Callers, 0x01\r
422                               where: Callers : 0xff = All calls alert (Read below *)\r
423                                                0x01 = Family\r
424                                                0x02 = VIP\r
425                                                0x04 = Friends\r
426                                                0x08 = Colleagues\r
427                                                0x10 = Others\r
428                                      All logical OR among groups are valid, so if you select from one phone's profile\r
429                                      alert for Friends and Collegues, a 0x0c will return (because 0x04 OR 0x08 = 0x0c).\r
430                                  (*) If Callers==0xff, means "Alert for All calls". Then, in this case, you don't\r
431                                      need to read other groups selection.\r
432                             for number2==0x09: (Automatic answer)\r
433                               block: 0x01, 0x??, 0x??, Switch, 0x01\r
434                               where: Switch : 0 = Off, 1 = On\r
435                                 N.B. This feature is valid for Handsfree and Headset profiles only!\r
436     s ???                   { 0x0101, 0x04, 0x01, 0x01, 0xff, 0x03 }\r
437     r ???                   { 0x0102, 0x01, 0x02, 0x03, 0x01, 0x01, 0x01, 0x85/0x087 }\r
438 \r
439     s ?                     { 0x0105}\r
440     r ?                     { 0x0106, 0x01, 0x04}\r
441 0x3f: WAP \r
442     s Enable WAP frames     { 0x0000}\r
443     r Enable WAP frames     { 0x0002, 0x01}\r
444 \r
445     s  ??                   { 0x0003}\r
446     r  ??                   { 0x0004}\r
447 \r
448     s Get WAP bookmark      { 0x0006, 0x00, location}\r
449                               where location: 0 - 14\r
450     r Get WAP bookmark      { 0x0007, 0x00, name_len, name(unicode),\r
451                               url_len, url(unicode), 0x01,0x80,0x00[7]}\r
452     r Get WAP bookmark err  { 0x0008, error }\r
453                               where error:\r
454                                 0x00(?)invalid position\r
455                                 0x01   user inside "Bookmarks" menu. Must leave it\r
456                                 0x02   invalid/too high/empty location\r
457 \r
458     s Set WAP bookmark      { 0x0009, 0xff, 0xff, name_len, name(unicode),\r
459                               url_len, url(unicode), 0x01,0x80,0x00[7] }\r
460                               Note: bookmark is added to the first free location.\r
461     r Set WAP bookmark OK   {+0x01, 0x36, 0x0a, block }\r
462                               where block:\r
463                                 0x0a, location_of_just_written_bookmark(?),\r
464                                 0x00, next_free_location(?)\r
465     r Set WAP bookmark err  {+0x01, 0x36, 0x0b, error }\r
466                               where error:\r
467                                0x04 - memory is full\r
468                                0x01 - we are in the bookmark menu\r
469                                0x00 - unknown reason for now ;(\r
470                                
471 ?   s Delete WAP bookmark   { 0x000c, 0x00, location }\r
472                               where: location = 0-14\r
473 ?   r Delete WAR bookmark OK{ 0x000d }\r
474 ?   r Delete WAPbookmark err{ 0x000e, 0x02 }\r
475 \r
476     s ??                    { 0x000F}\r
477     r ??                    { 0x0010, 0x00}\r
478 \r
479     s Get WAP settings 1    { 0x0015, location}\r
480                             where location: 0x00 - 0x05\r
481     r Get WAP settings 1 OK { 0x0016, title length, title (Unicode), URL length, URL(Unicode),con_type, ???[6 bytes],location, ???[5 bytes],security,...}\r
482                             where:\r
483                               con_type: 0x00 - temporary\r
484                                         0x01 - continuous\r
485                               location: when use "Get WAP settings 2 frame", must give it\r
486                               security: 0x00 = no, 0x01 = yes\r
487     r Get WAP settings 1 err{ 0x0017, error }\r
488                               where error:\r
489                                 0x01   user inside "Settings" menu. Must leave it\r
490                                 0x02   invalid/too high/empty location\r\r
491     s Get WAP settings 2    { 0x001b, location}\r
492                             where location: 0x00 - 0x1d (you get it in "Get WAP settings 1" frame)\r
493     r Get WAP settings 2 OK { 0x001c, 0x01, type, frame...}\r
494                             where type : 0x00 - SMS bearer\r
495                                            frame:\r
496                                              service_num_len, service_num (Unicode), server_num_len, server_num(Unicode)\r
497                                          0x01 - data bearer\r
498                                            frame:\r
499                                              auth, call_type, call_speed, ?, IP len, IP (Unicode), dialup len, dialup (Unicode),\r
500                                              user len, user (Unicode), password len, password (Unicode)\r
501                                              where auth: 0x00 - normal, 0x01 - secure\r
502                                                    call_type: 0x00 - analogue, 0x01 - ISDN\r
503                                                    call_speed: 0x00 - 9600, 0x01 - 14400\r
504                                          0x02 - USSD bearer
505                                            frame: type, service number len/IP len,service num (Unicode)/IP (Unicode),service code len,
506                                                   service code (Unicode)
507                                              where type: 0x01 - service number, 0x00 - IP
508     r Get WAP settings 2 err{ 0x001d,error}\r
509                             where: error=0x05    \r
510 0x40: Security commands\r
511 ?   s ???(N6150)            { 0x08, 0x00 }\r
512 ?   r ???(N6150)            { 0x08 }\r
513     s Enable extended cmds  { 0x64, cmd }\r
514                             where cmd: 0x00: off\r
515                                        0x01: on\r
516                                        0x03: reset (doesn't ask for PIN again)\r
517                                        0x04: reset (PIN is requested)\r
518                                              In 5110 makes reset without PIN\r
519                                        0x06: CONTACT SERVICE!!! Don't try it!\r
520     s Get IMEI              { 0x66 }\r
521     r Get IMEI              { 0x66, 0x01, IMEI, 0x00}\r
522     s (ACD Readings)?(N6150 { 0x68 }\r
523     r (ACD Readings)?(N6150 { 0x68, ... }\r
524     s Get Product Profile\r
525       Settings              { 0x6a}\r
526     r Get Product Profile\r
527       Settings              { 0x6a, 4bytes with Product Profile Settings }\r
528     s Set Product Profile\r
529       Settings              { 0x6b, 4bytes with Product Profile Settings }\r
530     r Set Product Profile\r
531       Settings OK ?         { 0x6b }\r
532     s Get code              { 0x6e, code }\r
533                             where code: see 0x08/0x0004 (no allowed code !)\r
534     r Get code              { 0x6e, code, allowed, allowed? (sec code (text)) }\r
535                             where code: see 0x08/0x0004\r
536                                   allowed: 0: no\r
537                                            1: yes\r
538 ?   s Reset Permanent\r
539 ?     Counters (nm->test36) { 0x74, 0x01, 0x01, 0x0e }\r
540 ?   r Reset Permanent\r
541 ?     Counters (nm->test36) { 0x74 }\r
542     s Call commands         { 0x7c, block }\r
543                             where where: command, (values)\r
544                                   command: 0x01\r
545                                       values: number(ASCII), 0x00 - makes voice call\r
546                                   command: 0x02 - answer call\r
547                                   command: 0x03 - release call\r
548     r Call commands         { 0x7c, command }\r
549     s Netmonitor            { 0x7e, field }\r
550                             where: field: 00: next\r
551                                           F0: reset\r
552                                           F1: off\r
553                                           F2: field test menus\r
554                                           F3: developer menus\r
555     s Get simlock info      { 0x8a, 0x00}\r
556     r Get simlock info      { 0x8a, 0x00, 0x01, lockstype, locksclosed, 0x00, 0x00, locksinfo(lock1,4,2,3), counter1,counter2,counter4,counter4,0x00 }\r
557                             where: lockstype:   bit1,bit2,bit3,bit4 - if set, selected lock is user lock\r
558                                    locksclosed: bit1,bit2,bit3,bit4 - if set, selected lock is closed\r
559                                    counter1 - counter4: counters for locks\r
560     s Buzzer pitch          { 0x8f, volume, hzLO, hzHI }\r
561                             if volume and hz is 0, it's off\r
562     r Buzzer pitch          { 0x8f}\r
563     s ACD Readings ?        { 0x91, parameter?(0x02,0x03,0x04,0x05,0x07) }\r
564     r ACD Readings ?        { 0x91, parameter?, value? }\r
565 ?   s ???(N6150)            { 0x98, 0x00 }\r
566 ?   r ???(N6150)            { 0x98, 0x00, 0x04 }\r
567     s Get bin ringtone      { 0x9e, location }\r
568                             where: location=0,1,etc.\r
569     r Get bin ringtone      { 0x9e, location, error, contents... }\r
570                             where location=0,1,etc.\r
571                                   error=0x0a, ringtone NOT available\r
572                                         0x00, OK\r
573     s Set bin ringtone      { 0xa0, location, 0x00, contenst... }\r
574                             where: location=0,1,etc.\r
575     r Set bin ringtone      { 0xa0, location, error }\r
576                               where location=0,1,etc.\r
577                                     error=0x0a, ringtone NOT set\r
578                                           0x00, ringtone set OK\r
579 ?   r Get MSid              { 0xb5, 0x01, 0x2f, msid, 0x25 }\r
580     s Get info about phone  { 0xc8, 0x01 }\r
581     r Get info about phone  { 0xc8, 0x01, 0x00, "V ", "firmware", 0x0a, "firmware date", 0x0a, "model", 0x0a, "(c) NMP.", 0x00 }\r
582     s Get MCU SW Checksum   { 0xc8, 0x02 }\r
583     r Get MCU SW Checksum   { 0xc8, 0x02, 0x00, checksum (4 bytes),0x00 }\r
584     s DPS External SW       { 0xc7, 0x03 }\r
585     r DSP External SW       { 0xc7, 0x03, 0x00, string,0x00 }\r
586     s Get HW                { 0xc8, 0x05 }\r
587     r Get HW                { 0xc8, 0x05, 0x00, HW version (4 bytes), 0x00 }\r
588     s Get "Made" Date       { 0xc8, 0x05 }\r
589     r Get "Made" Date       { 0xc8, 0x05, 0x00, date(4 bytes), 0x00 }\r
590     s Get DSP Internal SW   { 0xc8, 0x09 }\r
591     r Get DSP Internal SW   { 0xc8, 0x09, 0x00, version (1 bytes), 0x00 }\r
592     s Get PCI version       { 0xc8, 0x0b }\r
593     r Get PCI version       { 0xc8, 0x0b, 0x00, version, 0x00 }\r
594     s Get system ASIC       { 0xc8, 0x0c }\r
595     r Get system ASIC       { 0xc8, 0x0c, 0x00, string, 0x00 }\r
596     s Get COBBA             { 0xc8, 0x0d }\r
597     r Get COBBA             { 0xc8, 0x0d, 0x00, string, 0x00 }\r
598     s Get PLUSSA            { 0xc8, 0x0e }\r
599     r Get PLUSSA            { 0xc8, 0x0e, available, 0x00 }\r
600                             where available: 0x01: not available\r
601     s Get CCONT             { 0xc8, 0x0f }\r
602     r Get CCONT             { 0xc8, 0x0f, available, 0x00 }\r
603                             where available: 0x01: not available\r
604     s Get PPM version       { 0xc8, 0x10 }\r
605     r Get PPM version       { 0xc8, 0x10, 0x00, "V ", "firmware", 0x0a, "firmware date", 0x0a, "model", 0x0a, "(c) NMP.", 0x00 }\r
606     s Get PPM info          { 0xc8, 0x12 }\r
607     r Get PPM info          { 0xc8, 0x12, 0x00, PPM version ("B", "C", etc.), 0x00 }\r
608     s Set HW version        { 0xc9, 0x05, version, 0x00 }\r
609     s Get Product Code      { 0xca, 0x01 }\r
610     r Get Product Code      { 0xca, 0x01, 0x00, number, 0x00 }\r
611     s Get Order Number      { 0xca, 0x02 }\r
612     r Get Order Number      { 0xca, 0x02, 0x00, string, 0x00 }\r
613     s Get Prod.Ser.Number   { 0xca, 0x03 }\r
614     r Get Prod.Ser.Number   { 0xca, 0x03, 0x00, number, 0x00 }\r
615     s Get Basic Prod.Code   { 0xca, 0x04 }\r
616     r Get Basic Prod.Code   { 0xca, 0x04, 0x00, number, 0x00 }\r
617     s Set Product Code      { 0xcb, 0x01, product code, 0x00 }\r
618     s Set Order Number      { 0xcb, 0x02, number, 0x00 }\r
619     s Set Prod.Ser.Number   { 0xcb, 0x03, number, 0x00 }\r
620     s Get (original ?)IMEI  { 0xcc, 0x01 }\r
621     r Get (original ?)IMEI  { 0xcc, 0x01, IMEI, 0x00 }\r
622     s Get Manufacture Month { 0xcc, 0x02 }\r
623     r Get Manufacture Month { 0xcc, 0x02, 0x00, string, 0x00 }\r
624     s Get Purchare date     { 0xcc, 0x04 }\r
625     r Get Purchare date     { 0xcc, 0x04, 0x00, string, 0x00 }\r
626     s Set "Made" date       { 0xcd, 0x02, string, 0x00 }\r
627     s Make "all" phone tests{ 0xce,0x1d,0xfe,0x23,0x00,0x00}\r
628     s Make one phone test   { 0xce,0x1d,num1,num2,num3,num4}\r
629                             Where num1-num4: 0x02,0x00,0x00,0x00;\r
630                                              0x04,0x00,0x00,0x00;\r
631                                              0x08,0x00,0x00,0x00;\r
632                                              0x10,0x00,0x00,0x00;\r
633                                              0x20,0x00,0x00,0x00;\r
634                                              0x40,0x00,0x00,0x00;\r
635                                              0x80,0x00,0x00,0x00;\r
636                                              0x00,0x01,0x00,0x00;\r
637                                              0x00,0x02,0x00,0x00;\r
638                                              0x00,0x04,0x00,0x00; - "Power off"\r
639                                                No test for "Security data"\r
640                                              0x00,0x10,0x00,0x00;\r
641                                              0x00,0x20,0x00,0x00;\r
642                                              0x00,0x40,0x00,0x00;\r
643                                              0x00,0x80,0x00,0x00;\r
644                                              0x00,0x00,0x01,0x00;\r
645                                              ....\r
646                                              0x00,0x00,0x10,0x00;\r
647     s Result of phone tests { 0xcf }\r
648     r Result of phone tests { 0xcf, number of tests, results of next tests }\r
649 ?   s ???                   { 0xd1 }\r
650 ?   r ???(N5110)            { 0xd1, 0x00, 0x1d, 0x00, 0x01, 0x08, 0x00 }\r
651     s LCD Test              { 0xd3, value }\r
652                             where value: 0x03, 0x02 - 1'st test\r
653                                          0x03, 0x01 - 2'nd test\r
654                                          0x02, 0x03 - clears screen\r
655     s ACD Readings(N6150)?  { 0xd4, 0x02, 0x00, 0x02, 0x00, 0x0e, 0x01}\r
656     r ACD Readings(N6150)?  { 0xd4, 0x02, 0x00, 0x02, 0x00, 0x0e, 0x01, ?}\r
657     r Function of           { 0xff, 0x8c }\r
658       0x40 msgtype not\r
659       supported ?\r
660 0x78:\r
661     s Status confirm        { 0x0201, 0x03 }\r
662     r Incoming call seq1    { 0x0102 0x0e 0x03 }\r
663     r Incoming call seq2    { 0x0102 0x7e 0x01 }\r
664 0x79:\r
665     s CarKit enable         { 0x0201 0x01 0x62 0x00 }\r
666     r CarKit enabled        { 0x0201 0x02 0x06 0x00 "V " {version} "\nHFU"\r
667                                      0x00 }\r
668 0x7a: settings\r
669     r Set setting           { 0x01eb, number, 0x00 }\r
670     s Set setting           { 0x01ec, number, contents }\r
671                             where for number:\r
672                               0x02 (startup text) : 0x00, text (Unicode)\r
673                               0x15 (startup logo) : 0x00, 0x00, 0x00, 0x04,\r
674                                         0xc0, 0x02, 0x00, height, 0xc0, 0x03, 0x00, width,\r
675                                         0xc0, 0x04, 0x03, 0x00, {bitmap} }\r
676                                 where width, height, {bitmap}: see 0x7a/0x01ed 0x15\r
677     s Get setting           { 0x01ee, number}\r
678                             where number: 0x01 - 0x1e\r
679                               0x02: startup text\r
680                               0x15: startup logo\r
681                               0x1c: security code\r
682     r Get setting           { 0x01ed,number, 0x00, contents}\r
683                             where for number:\r
684                               0x02 (startup text) : 0x00, text (Unicode)\r
685                               0x15 (startup logo) : 0x00, 0x00, 0x00, 0x04,\r
686                                         0xc0, 0x02, 0x00, height, 0xc0, 0x03, 0x00, width,\r
687                                         0xc0, 0x04, 0x03, 0x00, {bitmap} }\r
688                                 where height: 60 (0x3c) or 65\r
689                                       width:  96 (0x60)\r
690                                       {bitmap}: like other bitmaps but pixels\r
691                                                 placed vertically.\r
692                               0x1c (security code): {code(ascii)}, 0x00 \r
693 0x7f: Acknowledge(FBUS/IRDA){+type, seq }\r
694       Acknowledge(MBUS)...\r
695 0xd0: \r
696     s Power on message seq1 {+04 }\r
697     r Power on message seq1 {+05 }\r
698 0xd1:\r
699     s Get HW&SW version     { 0x0003, 0x00 }\r
700 0xd2:\r
701     r Get HW&SW version     { 0x0003 "V " "firmware\n" "firmware date\n"\r
702                               "model\n" "(c) NMP." }\r
703 0xf4: Power on message seq 2\r