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