This commit was manufactured by cvs2svn to create tag 'bp_uc_works1'.
[gnokii.git] / Docs / developers / protocol / n6110.txt
1
2 Last update 06.02.2002
3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
5 Assembled by
6         Balazs Nagy (js@lsc.hu)
7         Harri Yli-Torkko (hyt@surfeu.fi)
8         Alfred R. Nurnberger <arnu@flosys.com>
9         Hugh Blemings <Hugh.Blemings@vsb.com.au>
10         Mike Bradley <mike@trumpington.st>
11         Odinokov Serge <serge@takas.lt>
12         Pavel Janik <Pavel@Janik.cz>
13         Pawel Kot <pkot@linuxnews.pl>
14         Marcin Wiacek (Marcin-Wiacek@TOPNET.PL)
15         ... and other members of gnokii mailing list
16             and authors of some WWW pages.
17
18 The data provided is for information purposes only. 
19 Some of the frames might be hazardous to your phone. Be careful!!! 
20 We do not take any responsibility or liability for damages, etc.
21
22 NOTE: this information isn't (and can't be) complete.  If you know anything
23 about features not listed here or you noticed a bug in this list, please
24 notify us via e-mail.  Thank you.
25
26 Document describing frames used in
27 GSM/PCN Nokia 6110 and derivatives (Nokia 6130, 6150, 6190, 5110, 5130, 5150,
28 5190, 3210, 3310)
29 Correct format is FBUS version 2/Direct IRDA/MBUS version 2
30 (see nokia.txt for protocol details):
31
32  List:
33
34 0x00: Monitoring values
35     r monitoring value      {+0x01, 0x01, block... }
36       where block: 0x5e, 0x05, 0x7a(?), 0xd0(?), 0x85(?), 0x02, percentHI, percentLO
37                       Battery percent level
38                    0x5e, 0x0c, 0x52(?), 0x4b(?), 0x6f(?), 0x02, voltageHI, voltageLO
39                       Battery standby voltage
40                    ............
41 0x01: Call Information
42     s Make call             { 0x0001, "number", type, block }
43                               where type:
44                                       0x01 - data call
45                                       0x05 - voice call
46                                     block:
47                                       data call (non digital lines):
48                                         0x02,0x01,0x05,0x81,0x01,0x00,0x00,0x01,0x02,0x0a,
49                                         0x07,0xa2,0x88,0x81,0x21,0x15,0x63,0xa8,0x00,0x00
50                                       data call (digital lines):
51                                         0x02,0x01,0x05,0x81,0x01,0x00,0x00,0x01,0x02,0x0a,
52                                         0x07,0xa1,0x88,0x89,0x21,0x15,0x63,0xa0,0x00,0x06,
53                                         0x88,0x90,0x21,0x48,0x40,0xbb
54                                       voice call:
55                                         0x01, 0x01, 0x05, 0x81/0x00, sendnum, 0x00, 0x00, 0x01
56                                         where:
57                                           sendnum (own number sending):
58                                               0x01: preset (depends on network)
59                                               0x03: on
60                                               0x02: off
61     r Call going msg        { 0x0002 }
62     r Call in progress      { 0x0003, seqnr }
63     r Remote end hang up    { 0x0004, seqnr, ?, error (like in netmon in 39) }
64     r incoming call alert   { 0x0005, seqnr, numlen, "number", namelen, "name" }
65     s Answer call part 2    { 0x0006, seqnr, 0x00 }
66     r answered call         { 0x0007, seqnr }
67     s Hang up               { 0x0008, seqnr, 0x85 }
68     r terminated call       { 0x0009, seqnr }
69     r call msg              { 0x000a, seqnr }
70     r Send DTMF/voice call  { 0x0040}
71     s Answer call part 1    { 0x0042,0x05,0x01,0x07,0xa2,0x88,0x81,0x21,0x15,0x63,0xa8,0x00,0x00,
72                                      0x07,0xa3,0xb8,0x81,0x20,0x15,0x63,0x80 }
73     s Sent after issuing    { 0x0042,0x05,0x81,0x07,0xa1,0x88,0x89,0x21,0x15,0x63,0xa0,0x00,0x06,
74       data call                      0x88,0x90,0x21,0x48,0x40,0xbb,0x07,0xa3,
75       (digital lines)                0xb8,0x81,0x20,0x15,0x63,0x80 }
76     s Sent after issuing    { 0x0042,0x05,0x01,0x07,0xa2,0xc8,0x81,0x21,0x15,0x63,0xa8,0x00,0x00,
77       data call                      0x07,0xa3,0xb8,0x81,0x20,0x15,0x63,0x80,
78       (non digital lines)            0x01,0x60 }
79     s Send DTMF             { 0x0050, length, {ascii codes for DTMF}, 0x01 }
80     
81     Note:
82       to make data call (non digital lines):
83         1.send "Make call" for non digital lines
84         2.send "Sent after issuing data call (non digital lines)"
85       to make data call (digital lines):
86         1.send "Answer call part 1"
87         2.send "Sent after issuing data call (digital lines)"
88         3.send "Make call" for digital lines
89       to answer call:
90         1.send "Answer call part 1"
91         2.send "Answer call part 2"
92
93 0x02: SMS handling
94     s Send SMS message      { 0x0001, 0x02, 0x00 (SEND REQUEST), ... }
95     r Message sent          { 0x0002 }
96     r Send failed           { 0x0003, ?, ?, error (like in netmon in 65)}    
97     s Get SMS message       { 0x0007, 0x02, location, 0x01, 0x64 }
98     s Initiate connection   { 0x000d, 0x00, 0x00, 0x02 }
99     r Initiate ACK          { 0x000e, 0x01 }
100     r SMS message received  { 0x0010, ...... } (whole message)
101     s Set CellBroadcast     { 0x0020, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01 }
102                                       for enable cell broadcast ?
103                                       0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
104                                       for disable cell broadcast ?
105     r Set CellBroadcast OK  { 0x0021, 0x01 }
106     r Read CellBroadcast    { 0x0023, ?, ?, ?, channel, ?, message... } ?
107     s Set SMS center        { 0x0030, 0x64, priority, checksum? ,0?, format,
108                                       validity, {DefaultRecipient no.}[12], 
109                                       {SMScenter no.}[12], {SMSC name}, 0x00}
110                               where tel.no.[12]: {len, type, {number(BCD)}}
111                                     type: 0x81: normal
112                                           0x91: + (international)
113                                           0xd0: alphanumeric
114                                     format: 0x00: text
115                                             0x22: fax
116                                             0x24: voice
117                                             0x25: ERMES
118                                             0x26: paging
119                                             0x31: X.400
120                                             0x32: email
121                                     validity: 0x0b:  1 hour
122                                               0x47:  6 hours
123                                               0xa7: 24 hours
124                                               0xa9: 72 hours
125                                               0xad:  1 week
126                                               0xff: max.time
127     r Set SMS center OK     { 0x0031 }
128     r Set SMS center error  { 0x0032, reason }
129     s Get SMS center        { 0x0033, 0x64, priority }
130     r SMS center received   { 0x0034, priority, checksum?, format, 0x00?,
131                                       validity, {DefaultRecipient no.}[12],
132                                       {SMScenter no.}[12], {SMSC name}, 0x00}
133                                       tel.no[12]: {len, type, {number(BCD)}} 
134                               where priority, checksum, type, validity,
135                                     tel.no.[12]: see 0x02/0x0030
136     r SMS center error recv { 0x0035, reason }
137 0x03: Phonebook functions
138     s Get mem location      { 0x0001, memtype, location, 0 }
139                             where memory:
140                                      0x01: telephone and SIM phonebook (in one)
141                                      0x02: telephone phonebook
142                                      0x03: SIM phonebook
143                                      0x04: SIM fixdialling-phonebook (?)
144                                      0x05: Own numbers
145                                      0x07: Dialled numbers
146                                      0x08: Missed calls
147                                      0x09: Received calls
148                                      0x0b: voice mailbox (location not important)
149     r mem location recvd    { 0x0002, 0x00,namelen,"name",numlen,"number",groupID, 0x01?, yearLO, yearHI, month, day, hour, minute, sec. }
150                             Note: in 3310 all entries have null name ("feature" of bug ?)
151     r mem loc error recvd   { 0x0003, errtype }
152                             where errtype: 0x7d: invalid memory type
153     s Set mem location      { 0x0004, memtype,location,namelen,"Name",numlen,"number",groupID }
154     r mem set OK            { 0x0005 }
155     r mem set error         { 0x0006, errtype }
156                             where errtype: 0x7d: name is too long
157     s Mem status request    { 0x0007, memtype }
158     r Mem status recvd      { 0x0008, memtype, free, used }
159     r Mem status error recv { 0x0009, errtype }
160                             where errtype: 0x6f: mem status error
161                                            0x7d: invalid memory type
162                                            0x8d: waiting for pin
163     s Get caller group data { 0x0010, groupID }
164     r Get caller group data { 0x0011, groupID, size, "Name", ringtoneID, graphic_on?1:0, lenHI, lenLO, OTABitmap (72x14 logo) }
165     r Get call.group error  { 0x0012, reason }
166                             where reason: 0x7d: invalid location
167     s Set caller group data { 0x0013, groupID, size, "Name", ringtoneID, graphic_on?1:0, lenHI, lenLO, OTABitmap (72x14 logo) }
168     r Set caller group OK   { 0x0014 }
169     r Set call.group error  { 0x0015, reason }
170                             where reason: 0x7d: invalid location
171     s Get speed dial        { 0x0016, index(1-9) }
172     r Get speed dial OK     { 0x0017, mem.type, location }
173                             where mem.type: 0x02: ME        (== 0 if not stored)
174                                             0x03: SIM
175                                   location: memory location (== 0 if not stored)
176     r Get speed dial error  { 0x0018 }
177     s Set speed dial        { 0x0019, index(1-9), mem.type, location }
178     r Set speed dial OK     { 0x001a }
179     r Set speed dial error  { 0x001b }
180 0x04: Phone Status
181     s Phone status          { 0x0001 }
182     r Phone status          { 0x0002, mode, signal str, ???, pwr, batt.level }
183                             where mode: 1: registered within the network
184                                         2: call in progress
185                                         3: waiting for pin
186                                         4: powered off
187                                   pwr: 1: AC/DC
188                                        2: battery
189     s Request Phone ID      { 0x0003 }
190     r RequestPhone ID       { 0x0004, 0x01, "imei", 0, "model", 0, "prod.code", 0, "HW", 0, "firmware", 0x00, 0x01 }
191 0x05: Profile settings
192     s Set profile feature   { 0x0010, 1, nr, feature, a, 1 }
193                             where nr: see 0x05/0x0013
194                                   feature: see 0x05/0x0014
195                                   a: see 0x05/0x0014
196     r Set profile feat. OK  { 0x0011, 1 }
197     s Get profile feature   { 0x0013, 1, nr, feature, 1 }
198                             where nr is profile number (general=0, silent, meeting, outdoor, pager, car, headset=6)
199                                   feature: see 0x05/0x0014
200     r Get profile feature   { 0x0014, 1, nr, feature, 4, a, b, c, d, 1 }
201
202       Note: For Nokia 3330 settings num 0x00 .. 0x09 can be assigned
203             separately to each profile (0x00 .. 0x05), but rest are common
204             to all profiles.
205
206       Features and answers (in a, b, c, d form):
207          0x00: keypad notes (in Nokia 33x0 feature 0x00)
208                xx, 1, 0, 2
209                    xx: 0xff: off
210                        0x00: level 1
211                        0x01: level 2
212                        0x02: level 3
213          0x01: lights (? only in car profile) (what number in Nokia 3310 ?)
214                xx, 0, 0, 1
215                    xx: 0x00: off
216                        0x??: on (maybe 0x01)
217          0x02: incoming call alert (in Nokia 33x0 feature 0x01)
218                xx, 1, 0, 7
219                    xx: 1: ringing,
220                        2: beep once,
221                        3: unknown
222                        4: off
223                        5: ring once
224                        6: ascending
225                        7: caller groups (see feature #0x08)
226          0x03: ringing tone (in Nokia 33x0 feature 0x02)
227                xx, 0, 0, 0
228                    xx: 0x12: ring ring
229                        0x13: low
230                        etc
231          0x04: ringing volume (in Nokia 33x0 feature 0x03)
232                xx, 0, 0, 0
233                    xx: level 1 (0x06) - level 5 (0x0a)
234          0x05: message alert tone (in Nokia 33x0 feature 0x04)
235                xx, 1, 0, 4
236                    xx: 0: no tone
237                        1: standard
238                        2: special
239                        3: beep once
240                        4: ascending
241          0x06: vibration (in Nokia 33x0 feature 0x05)
242                xx: 0: off
243                    1: on
244                    2: Vibrate first
245          0x07: warning and game tones (in Nokia 33x0 feature 0x06 called warning tones)
246                xx, 4, 0, 4
247                    xx: 0xff: off
248                        0x04: on
249          0x07: screen saver - Nokia 33x0
250                xx: 1: on
251                    0: off
252          0x08: incoming caller groups (what number in Nokia 3310 ?)
253                xx, 0, 0, 0
254                    xx: 1: family
255                        2: VIP
256                        4: friends
257                        8: collegues
258                       16: other
259          0x08: Screen saver -> Timeout (Nokia 33xx):
260                0x00 = 5 sec
261                0x01 = 20 sec
262                ....
263
264          0x09: automatic answer (what number in Nokia 3310 ?)
265                xx, 0, 0, 1
266                    xx: 0x00: off
267                        0x01: on 
268
269          0x09: Screen saver -> Screen saver (Nokia 33xx):
270                0x00 ... 0x0d = Number of picture image
271
272          0x0a: ???:
273           ...: ???:
274          0x15: ???: Read only?
275
276          0x16: ???:
277                0x00 = ???
278                0x01 = ???
279
280          0x17: Phone book -> Options -> Memory in use (Nokia 3330):
281                0x00 = Phone
282                0x01 = SIM card
283
284          0x18: Settings -> Phone settings -> Network selection (Nokia 3330):
285                0x00 = Automatic
286                0x01 = Manual
287
288          0x19  Settings -> Call settings -> Automatic redial(Nokia 3330):
289                0x00 = Off
290                0x01 = On
291
292          0x1a: Settings -> Call settings -> Speed dialling (Nokia 3330):
293                0x00 = Off
294                0x01 = On
295
296          0x1b: Settings -> Call settings -> Own number sending (Nokia 3330):
297                0x00 = Set by network
298                0x01 = On
299                0x02 = Off
300
301          0x1c: Settings -> Phone settings -> Cell info display (Nokia 3330):
302                0x00 = Off
303
304          0x1d: Phone book -> Options -> Type of view (Nokia 3330):
305                0x00 = Name list
306                0x01 = Name, number
307                0x02 = Large font
308
309          0x1e: Settings -> Phone settings -> Language (Nokia 3330):
310                0x00 = English
311                0x07 = Dansk
312                0x08 = Svenska
313                0x09 = Suomi
314                0x0c = Turcke
315                0x0e = Norsk
316                0x10 = Automatic
317
318          0x32 = Reboots ME (3330)
319
320          0x1f: ???: Read only? (3330)
321
322          0x20: Messages ->  Message settings -> Common -> Reply via same centre (N3330):
323                0x00 = No
324                0x01 = Yes
325
326          0x21: Messages ->  Message settings -> Common -> Delivery reports (3330):
327                0x00 = No
328                0x01 = Yes
329         
330          0x22: Clock -> Clock settings -> Show/Hide clock (3330):
331                0x00 = Show
332                0x01 = Hide
333
334          0x23: Clock -> Clock settings -> Time format (N3330):
335                0x00 = 24-hour
336                0x01 = 12-hour
337
338          0x24: Select profile (N3330):
339                0x00 = General
340                0x01 ... 0x05 = rest of them
341
342          0x25: ???: Read only? (N3330)
343
344          0x26: Settings -> Phone settings -> Confirm SIM service actions (N3330):
345                0x00 = Not asked
346                0x01 = Asked
347
348          0x27: Messages -> Write messages -> Options -> Dictionary (N3330):
349                0x00 = Off
350                0x01 = English
351                0x0a = Suomi
352
353          0x28: Messages -> Message settings -> Common -> Character support (N3330):
354                0x00 = Automatic
355                0x01 = GSM alphabet
356                0x02 = Unicode
357
358          0x29: Startup logo settings (N33x0):
359                0x00 = Your own uploaded logo
360                0x01 = Nokia
361                0x02 = Draft HUMAN technology(tm)
362                0x03 = Itineris
363
364          0x2a:???: 0x00 = ??? 0x01 = ??? (N3330)
365
366          0x2b: ???: 0x00 = ??? 0x01 = ??? (N3330)
367
368          0x2c: ???: Read only? (N3330)
369
370          0x2d: Clock -> Auto update of date and time (N3330):
371                0x00 = Off
372                0x01 = Confirm first
373                0x02 = On
374
375     s Get welcome message   { 0x0016 }
376     r Get welcome message   { 0x0017, no.of blocks, { block } * }
377                             where block: { id, {blockspecific} }
378                                   id: 1: startup logo { y, x, picture (coding?) }
379                                       2: welcome note { len, "message" }
380                                       3: operator msg { len, "message" }
381     s Set welcome message   { 0x0018, no.of blocks, { block } * }
382                             where block: see 0x05/0x0017
383     r Set welcome OK        { 0x0019, 0x01 }
384     s Get profile name      { 0x001a, nr }
385                             where nr: see 0x05/0x0013
386     r Profile name          { 0x001b, 1, 1, 3, flen, nr, len, {text} }
387                             where nr: see 0x05/0x0013
388                                   len: text length 
389                                   flen len + len(nr, len) = len + 2
390                             Note: in Nokia 3310 name is in Unicode
391     s ???                   { 0x001c }
392     r ???                   { 0x001d, 0x93 }
393     s Set oplogo            { 0x0030, location, MCC1, MCC2, MNC, lenhi=0x00, lenlo=0x82, OTABitmap }
394     r Set oplogo OK         { 0x0031 }
395     r Set oplogo error      { 0x0032, reason }
396                             where reason: 0x7d invalid location
397     s Get oplogo            { 0x0033, location }
398                             where location: 1 (doesn't seem to matter)
399     r Get oplogo            { 0x0034, location, MCC1, MCC2, MNC, lenhi=0x00, lenlo=0x82, OTABitmap }
400     r Get oplogo error      { 0x0035, reason }
401                             where reason: 0x7d invalid location
402     s Set ringtone          { 0x0036, location,0x00,0x78, ringtone packed according to SM2.0}
403     r Set ringtone OK       { 0x0037 }
404     r Set ringtone error    { 0x0038, reason }
405                             where reason=0x7d, when not supported location
406     s Get services settings { 0x0080, setting (2 bytes) }
407                             where: setting: 0x02,0x00=Nokia access number 1
408                                             0x02,0x01=Operator access number 1
409                                             0x01,0x00=Personal bookmark 1 settings (name only ?)
410                                             0x01,0x01=?
411                                             0x02,0x02=?
412     r Get services sett.OK  { 0x0081, .... }
413     r Get services sett.err { 0x0082, 0x7b }
414 0x06: Calling line restriction/Call forwarding etc
415     r Get call divert       { 0x0001, 0x02, x, 0x00, divtype, 0x02, calltype, y, z, 0x0b, number, 0x00...0x00, timeout (byte 45) }
416     s Set call divert       { 0x0001, 0x03, 0x00, divtype, calltype, 0x01, number(packed like in SMS), 0x00 ... 0x00,
417                                       length of number (byte 29), 0x00 ... 0x00, timeout (byte 52), 0x00, 0x00, 0x00}
418                             NOTE: msglen=0x37
419                             where timeout:
420                               0x00: not set ?
421                               0x05: 5 second
422                               0x0a: 10 second
423                               0x0f: 15 second
424                               0x1e: 20 second
425                               0x14: 25 second
426                               0x19: 30 second
427                             where divtype:
428                               0x02: all diverts for all call types ?
429                                     Found only, when deactivate all diverts for all call types (with call type 0x00)
430                               0x15: all calls
431                               0x43: when busy
432                               0x3d: when not answered
433                               0x3e: if not reached
434                             calltype:
435                               0x00: all calls (data, voice, fax)
436                               0x0b: voice calls
437                               0x0d: fax calla
438                               0x19: data calls
439     s Deactivate calldiverts{ 0x0001, 0x04, 0x00, divtype, calltype, 0x00 }
440                             where divtype, calltype: see above
441     s Get call diverts      { 0x0001, 0x05, 0x00, divtype, calltype, 0x00 }
442                             where divtype, calltype: see above
443     r Get prepaid(?) info   { 0x0005, ?,?,?,length,message(packed like in 7bit SMS)}
444 0x07:
445     s ???                   { 0x0022, ? (1&2 sounds OK) }
446     r ??? OK                { 0x0023, ?,?,? }
447     r ??? error             { 0x0024, reason }
448     s ???                   { 0x0025, ??? }
449     r ??? OK                { 0x0026, ??? }
450     r ??? error             { 0x0027, reason }
451 0x08: Security codes
452     s Change code           { 0x0004, code, "current", 0x00, "new", 0x00 }
453                             where code: 1: security code (5 chars)
454                                         2: PIN (4 chars)
455                                         3: PIN2 (4 chars)
456                                         4: PUK (8 chars)
457                                         5: PUK2 (8 chars)
458     s Status request        { 0x0007, 0x01 }
459     r pin recvd             { 0x0008, accepted }
460                             where accepted: 0x0c (or 0x06): OK
461                                             code: waiting for (0x08/0x0004) code
462     s entering code         { 0x000a, code, "code", 0x00 }
463                             where code: see 0x08/0x0004
464 0x09: SIM login
465     r login                 { 0x0080 }
466     r logout                { 0x0081 }
467 0x0a: Network status
468     s Key duplication on/off{ 0x0044, on? 0x01: 0x02 }
469     s get used network      { 0x0070 }
470     r network registration  { 0x0071, ?,?,?,length,netstatus,netsel,cellIDH,cellIDL,lacH,lacL,netcode,netcode,netcode }
471 0x0c: Keys
472     s Get key assignments   { 0x0040, 0x01 }
473     r Get key assignments   { 0x0041, {key '1'}, 0x00, {key '2'} ... {key '0'}, 0,0,0, {symbols}, 0 }
474                             where {key '0'} => ' ', '0'
475     s Press key             { 0x0042, press: 0x01; release: 0x02, button, 0x01 }
476                             where button: 0x01 - 0x09: 1-9
477                                           0x0a: 0
478                                           0x0b: #
479                                           0x0c: *
480                                           0x0d: Power
481                                           0x0e: Pick up phone
482                                           0x0f: Hang
483                                           0x10: Volume +
484                                           0x11: Volume -
485                                           0x17: Up
486                                           0x18: Down
487                                           0x19: Menu
488                                           0x1a: Names
489                                           0x1B onwards: don't know but they do produce
490                                                a beep and light up the keypad as if
491                                                a key had been pressed. 
492     r Press key ack         { 0x0043, press/release/error(0x05) }
493     s ???                   { 0x0044 }
494     r ??? ack               { 0x0045, 0x01 }
495 0x0d: Status
496     r Display               { 0x0050, 0x01, y, x, len, "string"(unicode) }
497     s Status request        { 0x0051 }
498     r Status                { 0x0052, no. of byte pairs, {byte pair} }
499                             where {byte pair}: {cmd, 1:off 2:on}
500                             cmd: 1: call in progress
501                                  2: ???
502                                  3: have unread sms
503                                  4: voice call active
504                                  5: fax call active
505                                  6: data call active
506                                  7: key lock active
507                                  8: is SMS storage full
508     s Display status        { 0x0053, 1:on 2:off }
509                             (will send displayed messages with x,y coordinates)
510     r Display status ack    { 0x0054, 1 }
511 0x11: Phone clock & alarm
512     s set date and time     { 0x0060, 1,1,7,yearh,yearl,month,mday,hour,min,0x00 }
513     r date and time set     { 0x0061 }
514     s get date and time     { 0x0062 }
515     r date and time recvd   { 0x0063,date_set?,time_set?,?,?,yearh,yearl,month,mday,hour,min,second }
516                             where: date_set & time_set==0x01 - set
517                                                         0x00 - not set, ?,?,yearh,yearl,month,mday,hour,min,second
518                                                                not available in frame
519     s set alarm             { 0x006b, 1,32,3,0x02(on-off),hour,min,0x00 }
520     r alarm set             { 0x006c }
521     s get alarm             { 0x006d }
522     r alarm received        { 0x006e,?,?,?,?,alrm(==2:on),hour,min }
523 0x12: Connect to NBS port (61xx only ?)
524     s Send                  {+0x0c, 0x01, UDH header, data}
525                             (without 0,1 header  -- for oplogo, cli, ringtone etc upload)
526                             where: UDH header = 0x06, 0x05, 0x04,destporth,destportl,srcporth,srcportl
527 0x13: Calendar notes
528     s Write calendar note   { 0x0064, 0x01, 0x10, length, type, yearH, yearL, month, day, hour, timezone,
529                               alarm?(alarm yearH, yearL, month, day, hour, timezone): (0,0,0,0,0,0),
530                               textlen, "text" }
531     r Write cal.note report { 0x0065, return }
532                             where return: 0x01: ok
533                                           0x73: failure
534                                           0x81: calendar functions busy. Exit Calendar menu and try again
535     s Calendar notes set    { 0x0066... }
536     r Calendar note recvd   { 0x0067, 0x01, ?, length, type, yrH,yrL,mon,day,hr,tz,alrm yrH,yrL,mon,day,hr,tz,textlen, "text" }
537     r Cal.note recvd error  { 0x0067, err }
538                             where err: 0x93: not available
539                                       (0x01: OK)
540                                        other: error
541     s Delete cal.note       { 0x0068, location }
542     r Del. cal.note report  { 0x0069, err }
543                             where err: 0x01: OK
544                                        0x93: cannot delete
545 0x14: SMS funcs
546     s Write SMS to SIM      { 0x0004, .... }
547     s Mark SMS as read      { 0x0007, 0x02, location, 0x00, 0x64 }
548     r SMS message frame rcv { 0x0008,subtype,?,num,?,BCD(smscenter)...} 20->type, 22->status
549                             where type: 0x06: delivery report 
550                                   status: 0x00: delivered
551                                           0x30: pending
552                                           0x46: failed
553                                           0x09: reading failed
554                                   subtype: 0x02: invalid mem type
555                                            0x07: empty SMS location
556                                            0x0c: no access to memory (no PIN in card, etc.)
557     s Delete SMS message    { 0x000a, 0x02, location }
558     r Delete OK             { 0x000b }
559     s SMS status request    { 0x0036, 0x64 }
560     r SMS status            { 0x0037,?,?,?,?,?,?,msgnumber,unread }
561     r SMS status error      { 0x0038 }
562 0x3f: WAP 
563     s Enable WAP frames     { 0x0000}
564     r Enable WAP frames     { 0x0002, 0x01}
565
566     s  ??                   { 0x0003}
567     r  ??                   { 0x0004}
568
569     s Get WAP bookmark      { 0x0006, 0x00, location}
570                               where location: 0 - 14
571     r Get WAP bookmark      { 0x0007, 0x00, name_len, name(unicode),
572                               url_len, url(unicode), 0x01,0x80,0x00[7]}
573     r Get WAP bookmark err  { 0x0008, error }
574                               where error:
575                                 0x00(?)invalid position
576                                 0x01   user inside "Bookmarks" menu. Must leave it
577                                 0x02   invalid/too high/empty location
578
579     s Set WAP bookmark      { 0x0009, 0xff, 0xff, name_len, name(unicode),
580                               url_len, url(unicode), 0x01,0x80,0x00[7] }
581                               Note: bookmark is added to the first free location.
582     r Set WAP bookmark OK   {+0x01, 0x36, 0x0a, block }
583                               where block:
584                                 0x0a, location_of_just_written_bookmark(?),
585                                 0x00, next_free_location(?)
586     r Set WAP bookmark err  {+0x01, 0x36, 0x0b, error }
587                               where error:
588                                0x04 - memory is full
589                                0x01 - we are in the bookmark menu
590                                0x00 - unknown reason for now ;(
591
592 ?   s Delete WAP bookmark   { 0x000c, 0x00, location }
593                               where: location = 0-14
594 ?   r Delete WAR bookmark OK{ 0x000d }
595 ?   r Delete WAPbookmark err{ 0x000e, 0x02 }
596
597     s ??                    { 0x000F}
598     r ??                    { 0x0010, 0x00}
599
600     s Get WAP settings 1    { 0x0015, location}
601                             where location: 0x00 - 0x05
602     r Get WAP settings 1 OK { 0x0016, title length, title (Unicode), URL length, URL(Unicode),con_type, ???[6 bytes],location, ???[5 bytes],security,...}
603                             where:
604                               con_type: 0x00 - temporary
605                                         0x01 - continuous
606                               location: when use "Get WAP settings 2 frame", must give it
607                               security: 0x00 = no, 0x01 = yes
608     r Get WAP settings 1 err{ 0x0017, error }
609                               where error:
610                                 0x01   user inside "Settings" menu. Must leave it
611                                 0x02   invalid/too high/empty location
612
613     s Get WAP settings 2    { 0x001b, location}
614                             where location: 0x00 - 0x1d (you get it in "Get WAP settings 1" frame)
615     r Get WAP settings 2 OK { 0x001c, 0x01, type, frame...}
616                             where type : 0x00 - SMS bearer
617                                            frame:
618                                              service_num_len, service_num (Unicode), server_num_len, server_num(Unicode)
619                                          0x01 - data bearer
620                                            frame:
621                                              auth, call_type, call_speed, ?, IP len, IP (Unicode), dialup len, dialup (Unicode),
622                                              user len, user (Unicode), password len, password (Unicode)
623                                              where auth: 0x00 - normal, 0x01 - secure
624                                                    call_type: 0x00 - analogue, 0x01 - ISDN
625                                                    call_speed: 0x00 - 9600, 0x01 - 14400
626                                          0x02 - USSD bearer
627                                            frame: type, service number len/IP len,service num (Unicode)/IP (Unicode),service code len,
628                                                   service code (Unicode)
629                                              where type: 0x01 - service number, 0x00 - IP
630     r Get WAP settings 2 err{ 0x001d,error}
631                             where: error=0x05    
632 0x40: Security commands
633     s ???                   {+0x00, 0x00, 0x07, 0x11, 0x00, 0x10, 0x00, 0x00}
634                             This frame hangs phone (N3310 4.02). Meaning unknown !
635     s Open simlock 1        { 0x02, 0x03, 0x1f, 0x11, 0x01, 0x01, 0x10, 0x00}
636     r Open simlock 1        { 0x02 }
637     s ???(N6150)            { 0x08, 0x00 }
638     r ???(N6150)            { 0x08 }
639     s Enable extended cmds  { 0x64, cmd }
640                             where cmd: 0x00: off
641                                        0x01: on
642                                        0x02: enter service mode ?
643                                        0x03: reset (doesn't ask for PIN again)
644                                        0x04: reset (PIN is requested)
645                                              In 5110 makes reset without PIN
646                                        0x06: CONTACT SERVICE!!! Don't try it!
647     s Reset phone settings  { 0x65, value, 0x00 }
648                             where value: 0x08 - reset UI (User Interface) settings
649                                          0x38 - reset UI, SCM and call counters
650     r Reset phone settings  { 0x65, 0x00 }
651     s Get IMEI              { 0x66 }
652     r Get IMEI              { 0x66, 0x01, IMEI, 0x00}
653     s (ACD Readings)?(N6150 { 0x68 }
654     r (ACD Readings)?(N6150 { 0x68, ... }
655     s Get Product Profile
656       Settings              { 0x6a}
657     r Get Product Profile
658       Settings              { 0x6a, 4bytes with Product Profile Settings }
659     s Set Product Profile
660       Settings              { 0x6b, 4bytes with Product Profile Settings }
661     r Set Product Profile
662       Settings OK ?         { 0x6b }
663     s Get code              { 0x6e, code }
664                             where code: see 0x08/0x0004 (only sec.code is allowed)
665     r Get code              { 0x6e, code, allowed, allowed? (sec code (text)) }
666                             where code: see 0x08/0x0004
667                                   allowed: 0: no
668                                            1: yes
669     s Set code              { 0x6f, code, sec code(text), 0x00 }
670                             where code: see 0x08/0x0004
671     s Start monitoring      { 0x70, block }
672                             where block(N6150):
673                               0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
674                               0xff,0xff,0xff,0xff,0xff,0xf9,0x76,0x65,0x20,0x00,
675                               0x00,0x00,0x00,0x00,0x18,0x26,0x15,0x7d,0x0a,0x00,
676                               0xf5,0x82,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
677                               0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x77,0x80,
678                               0x77,0x80,0xf2,0x82,0x20,0x20,0x20,0x20,0x20,0x20,
679                               0x20,0x20,0x20,0x20
680                             This block enables probably all possible monitorred parameters.
681                             After it phone sends 0x00 message type values
682     s Break monitoring      { 0x71 }
683     r Break monitoring      { 0x71 }
684     s Reset Permanent
685       Counters (nm->test36) { 0x74, 0x01, 0x01, 0x0e }
686     r Reset Permanent
687       Counters (nm->test36) { 0x74 }
688     s Call commands         { 0x7c, block }
689                             where where: command, (values)
690                                   command: 0x01
691                                       values: number(ASCII), 0x00 - makes voice call
692                                   command: 0x02 - answer call
693                                   command: 0x03 - release call
694     r Call commands         { 0x7c, command }
695     s Netmonitor            { 0x7e, field }
696                             where: field: 00: next
697                                           F0: reset
698                                           F1: off
699                                           F2: field test menus
700                                           F3: developer menus
701     s Open simlock 2        { 0x81, 0x01, locknumber, 0x10, 0x10, 0x10, 0x10, 0x10 }
702                             Note: sets simlock type to factory?
703                             where locknumber: 1,2,4,8
704     s Open simlock 2        { 0x81, 0x01, locknumber }
705                             where locknumber: 1,2,4,8
706     s Close simlock         { 0x82, 0x01, locknumber, 0x00, 0x00, locksinfo(lock1,4,2,3), 0x00 }
707                             where locknumber: 1,2,4,8
708     r Close simlock         { 0x82, the rest like in 0x40/0x8a }
709     s Get simlock info      { 0x8a, 0x00}
710     r Get simlock info      { 0x8a, 0x00, 0x01, lockstype, locksclosed, 0x00, 0x00, locksinfo(lock1,4,2,3), counter1,counter2,counter4,counter4,0x00 }
711                             where: lockstype:   bit1,bit2,bit3,bit4 - if set, selected lock is user lock
712                                    locksclosed: bit1,bit2,bit3,bit4 - if set, selected lock is closed
713                                    counter1 - counter4: counters for locks
714     s Set downloaded OpName { 0x8b, 0x00, MCC1, MCC2, MNC, Name, 0x00 }
715     r SetdownloadedOpNameOK?{ 0x8b, 0x00, 0x01 }
716     s Get downloaded OpName { 0x8c, 0x00 }
717     r Get downloaded OpName { 0x8c, 0x00, 0x01, MCC1, MCC2, MNC, Name, 0x00,...}
718     s Buzzer pitch          { 0x8f, volume, hzLO, hzHI }
719                             if volume and hz is 0, it's off
720     r Buzzer pitch          { 0x8f}
721     s ACD Readings ?        { 0x91, parameter?(0x02,0x03,0x04,0x05,0x07) }
722     r ACD Readings ?        { 0x91, parameter?, value? }
723     s Sleep mode test       { 0x92, 0x00, 0x00, howlong(2 bytes), enable }
724                             where: enable == 0x01 - enable after test
725                                              0x00 - don't enable after test
726                                    howlong (ms) = 0x07, 0xd0 = 2000
727     s ???(N6150)            { 0x98, 0x00 }
728     r ???(N6150)            { 0x98, 0x00, 0x04 }
729     s Get bin ringtone      { 0x9e, location }
730                             where: location=0,1,etc.
731     r Get bin ringtone      { 0x9e, location, error, contents... }
732                             where location=0,1,etc.
733                                   error=0x0a, ringtone NOT available
734                                         0x00, OK
735     s Set bin ringtone      { 0xa0, location, 0x00, contenst... }
736                             where: location=0,1,etc.
737     r Set bin ringtone      { 0xa0, location, error }
738                               where location=0,1,etc.
739                                     error=0x0a, ringtone NOT set
740                                           0x00, ringtone set OK
741     r Get MSid              { 0xb5, 0x01, 0x2f, msid, 0x25 }
742     s Get info about phone  { 0xc8, 0x01 }
743     r Get info about phone  { 0xc8, 0x01, 0x00, "V ", "firmware", 0x0a, "firmware date", 0x0a, "model", 0x0a, "(c) NMP.", 0x00 }
744     s Get MCU SW Checksum   { 0xc8, 0x02 }
745     r Get MCU SW Checksum   { 0xc8, 0x02, 0x00, checksum (4 bytes),0x00 }
746     s DPS External SW       { 0xc7, 0x03 }
747     r DSP External SW       { 0xc7, 0x03, 0x00, string,0x00 }
748     s Get HW                { 0xc8, 0x05 }
749     r Get HW                { 0xc8, 0x05, 0x00, HW version (4 bytes), 0x00 }
750     s Get "Made" Date       { 0xc8, 0x05 }
751     r Get "Made" Date       { 0xc8, 0x05, 0x00, date(4 bytes), 0x00 }
752     s Get DSP Internal SW   { 0xc8, 0x09 }
753     r Get DSP Internal SW   { 0xc8, 0x09, 0x00, version (1 bytes), 0x00 }
754     s Get PCI version       { 0xc8, 0x0b }
755     r Get PCI version       { 0xc8, 0x0b, 0x00, version, 0x00 }
756     s Get system ASIC       { 0xc8, 0x0c }
757     r Get system ASIC       { 0xc8, 0x0c, 0x00, string, 0x00 }
758     s Get COBBA             { 0xc8, 0x0d }
759     r Get COBBA             { 0xc8, 0x0d, 0x00, string, 0x00 }
760     s Get PLUSSA            { 0xc8, 0x0e }
761     r Get PLUSSA            { 0xc8, 0x0e, available, 0x00 }
762                             where available: 0x01: not available
763     s Get CCONT             { 0xc8, 0x0f }
764     r Get CCONT             { 0xc8, 0x0f, available, 0x00 }
765                             where available: 0x01: not available
766     s Get PPM version       { 0xc8, 0x10 }
767     r Get PPM version       { 0xc8, 0x10, 0x00, "V ", "firmware", 0x0a, "firmware date", 0x0a, "model", 0x0a, "(c) NMP.", 0x00 }
768     s Get PPM info          { 0xc8, 0x12 }
769     r Get PPM info          { 0xc8, 0x12, 0x00, PPM version ("B", "C", etc.), 0x00 }
770     s Set HW version        { 0xc9, 0x05, version, 0x00 }
771     s Get Product Code      { 0xca, 0x01 }
772     r Get Product Code      { 0xca, 0x01, 0x00, number, 0x00 }
773     s Get Order Number      { 0xca, 0x02 }
774     r Get Order Number      { 0xca, 0x02, 0x00, string, 0x00 }
775     s Get Prod.Ser.Number   { 0xca, 0x03 }
776     r Get Prod.Ser.Number   { 0xca, 0x03, 0x00, number, 0x00 }
777     s Get Basic Prod.Code   { 0xca, 0x04 }
778     r Get Basic Prod.Code   { 0xca, 0x04, 0x00, number, 0x00 }
779     s Set Product Code      { 0xcb, 0x01, product code, 0x00 }
780     s Set Order Number      { 0xcb, 0x02, number, 0x00 }
781     s Set Prod.Ser.Number   { 0xcb, 0x03, number, 0x00 }
782     s Get (original ?)IMEI  { 0xcc, 0x01 }
783     r Get (original ?)IMEI  { 0xcc, 0x01, IMEI, 0x00 }
784     s Get Manufacture Month { 0xcc, 0x02 }
785     r Get Manufacture Month { 0xcc, 0x02, 0x00, string, 0x00 }
786     s Get Purchare date     { 0xcc, 0x04 }
787     r Get Purchare date     { 0xcc, 0x04, 0x00, string, 0x00 }
788     s Set "Made" date       { 0xcd, 0x02, string, 0x00 }
789     s Make "all" phone tests{ 0xce,0x1d,0xfe,0x23,0x00,0x00}
790     s Make one phone test   { 0xce,0x1d,num1,num2,num3,num4}
791                             Where num1-num4: 0x02,0x00,0x00,0x00;
792                                              0x04,0x00,0x00,0x00;
793                                              0x08,0x00,0x00,0x00;
794                                              0x10,0x00,0x00,0x00;
795                                              0x20,0x00,0x00,0x00;
796                                              0x40,0x00,0x00,0x00;
797                                              0x80,0x00,0x00,0x00;
798                                              0x00,0x01,0x00,0x00;
799                                              0x00,0x02,0x00,0x00;
800                                              0x00,0x04,0x00,0x00; - "Power off"
801                                                No test for "Security data"
802                                              0x00,0x10,0x00,0x00;
803                                              0x00,0x20,0x00,0x00;
804                                              0x00,0x40,0x00,0x00;
805                                              0x00,0x80,0x00,0x00;
806                                              0x00,0x00,0x01,0x00;
807                                              ....
808                                              0x00,0x00,0x10,0x00;
809     s Result of phone tests { 0xcf }
810     r Result of phone tests { 0xcf, number of tests, results of next tests }
811     s ???                   { 0xd1 }
812     r ???(N5110)            { 0xd1, 0x00, 0x1d, 0x00, 0x01, 0x08, 0x00 }
813     s LCD Test              { 0xd3, value }
814                             where value: 0x03, 0x02 - 1'st test
815                                          0x03, 0x01 - 2'nd test
816                                          0x02, 0x03 - clears screen
817     s ACD Readings(N6150)?  { 0xd4, 0x02, 0x00, 0x02, 0x00, 0x0e, 0x01}
818     r ACD Readings(N6150)?  { 0xd4, 0x02, 0x00, 0x02, 0x00, 0x0e, 0x01, ?}
819     s Get EEPROM            { 0xd4, 0x02, 0x00, 0xa0, locationLo, locationHi, numofbytes }
820                             where: numofbytes - how many bytes to read
821                             Note: Works ONLY in MBUS
822     r Get EEPROM            { 0xd4, 0x02, 0x00, 0xa0, locationLo, locationHi, numofbytes, contest... }
823                             where numofbytes - how many bytes available
824                                      contest - bytes with contests (if numofbytes != 0)
825 0x41: Snake game ?
826 0x47:
827     s Get Picture Image     { 0x0001, location }
828     r Get Picture Image     when contains sender number
829                             { 0x0002, location, number(like in SMS), 0x00, len, text, 0x00, width, height, 0x01, bitmap }
830                             NOTE:
831                               Supports only 0x81 and 0x91 coding (NOT alphanumeric numbers!)
832                               in sender without sender number
833                             { 0x0002, location, 0x00, 0x00, 0x00, len, text, 0x00, width, height, 0x01, bitmap }
834     s Set Picture Image     { 0x0003, frame...}
835                             where frame: see 0x47/0x0002
836     r Get/Set PictureImageOK{ 0x0004 }
837     r Set Picture Image err { 0x0005, error? }
838                             where error=0x74 - wrong location ?
839 0x64:
840     s Phone ID request      { 0x0010 }
841     r Phone ID recvd        { 0x0011, "NOKIA", "imei", 0, "model", 0, "prod.code", 0, "HW", 0, "firmware", magic bytes x 4 ... }
842     s Accessory connection  { 0x0012, 16x0x00, 'NOKIA&NOKIA accessory', 3x0x00 } (45 bytes)
843 0x7f: Acknowledge(FBUS/IRDA){+type, seq }
844       Acknowledge(MBUS)...
845 0xd0: 
846     s Power on message seq1 {+04 }
847     r Power on message seq1 {+05 }
848 0xd1:
849     s Get HW&SW version     { 0x0003, 0x00 }
850 0xd2:
851     r Get HW&SW version     { 0x0003 "V " "firmware\n" "firmware date\n"
852                               "model\n" "(c) NMP." }
853 0xda: ? (during playing 2 player snake)
854 0xf0:
855     s Send RLP frame        {+0x00, 0xd9, ... }
856 0xf4: Power on message seq 2