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