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