\r\n -> \n
authorshort <>
Sun, 17 Mar 2002 20:36:59 +0000 (20:36 +0000)
committershort <>
Sun, 17 Mar 2002 20:36:59 +0000 (20:36 +0000)
71 files changed:
Docs/developers/gnokii/gettext-howto
Docs/developers/gnokii/gnokii.txt
Docs/developers/gnokii/packaging-howto
Docs/developers/gnokii/untitled.txt
Docs/developers/other/RE RE.txt
Docs/developers/other/dmcp/addsms
Docs/developers/other/dmcp/readme
Docs/developers/other/dmcp/removesms
Docs/developers/other/sniffs/Telefonbucheditor7110.txt
Docs/developers/other/sniffs/irda/info.txt
Docs/developers/protocol/n6110.txt
Docs/developers/protocol/n7110.txt
Docs/developers/protocol/nokia.txt
Docs/en_US/gnokii/config.htm
Docs/en_US/gnokii/faq.htm
Docs/en_US/gnokii/gnokii-6210-7110-IrDA
Docs/en_US/gnokii/gnokii.htm
Docs/en_US/gnokii/phones.htm
Docs/en_US/gnokii/todologo
Docs/en_US/gnokii/xgnokii/calendar/index.htm
Docs/en_US/gnokii/xgnokii/contacts/index.htm
Docs/en_US/gnokii/xgnokii/dtmf/index.htm
Docs/en_US/gnokii/xgnokii/main/index.htm
Docs/en_US/gnokii/xgnokii/netmon/index.htm
Docs/en_US/gnokii/xgnokii/sms/index.htm
Docs/en_US/gnokii/xgnokii/speeddial/index.htm
Docs/en_US/gnokii/xgnokii/xkeyb/index.htm
Docs/en_US/gsm/cables/cables.htm
Docs/en_US/gsm/codes/codes.htm
Docs/en_US/gsm/compare/1.htm
Docs/en_US/gsm/compare/compare.htm
Docs/en_US/gsm/compare/index.htm
Docs/en_US/gsm/compare/null.htm
Docs/en_US/gsm/firmware/firm12.htm
Docs/en_US/gsm/firmware/firm3.htm
Docs/en_US/gsm/firmware/firm5.htm
Docs/en_US/gsm/firmware/firm6_1.htm
Docs/en_US/gsm/firmware/firm6_2.htm
Docs/en_US/gsm/firmware/firm7.htm
Docs/en_US/gsm/firmware/firm8.htm
Docs/en_US/gsm/firmware/firm9.htm
Docs/en_US/gsm/firmware/firmware.htm
Docs/en_US/gsm/irda/irda.htm
Docs/en_US/gsm/logos/logos.htm
Docs/en_US/gsm/netmon/faq_net0.htm
Docs/en_US/gsm/netmon/faq_net1.htm
Docs/en_US/gsm/netmon/faq_net2.htm
Docs/en_US/gsm/netmon/faq_net3.htm
Docs/en_US/gsm/netmon/faq_net4.htm
Docs/en_US/gsm/netmon/faq_net5.htm
Docs/en_US/gsm/netmon/faq_net6.htm
Docs/en_US/gsm/netmon/net_spis.htm
Docs/en_US/gsm/sms/sms.htm
Docs/en_US/index.htm
Docs/en_US/styl.css
Docs/examples/test.vcs
Docs/pl_PL/mygnokii.htm
Docs/pl_PL/styl.css
README
common/devices/device.c
common/files/gsm-filetypes.c
common/files/midifile.c
common/gsm-coding.c
common/gsm-datetime.c
common/newmodules/n3110.c
common/newmodules/n6110.c
common/newmodules/n7110.c
common/newmodules/sniff/sniff.c
include/newmodules/n3110.h
include/newmodules/n6110.h
include/newmodules/sniff/sniff.h

index b014220..c24e67d 100644 (file)
-1. What do I need?\r
-\r
-- a reasonably recent version of GNU gettext (e.g. 0.10.35)\r
-  Check the version using e.g. msgfmt -V\r
-\r
-- autoconf\r
-\r
-- gnokii distribution :-)\r
-\r
-- if you have the variable LINGUAS in the environment\r
-  (most Red Hats have, no idea about other distributions),\r
-  unset it\r
-\r
-\r
-2. How to make gnokii.pot file?\r
-\r
-gnokii.pot file is a collection of all localizable strings\r
-in the gnokii package. It will be generated automagically\r
-and is included in the standard distribution package.\r
-\r
-If you need to regenerate it, goto "po" directory,\r
-remove gnokii.pot and say\r
-\r
-        make gnokii.pot\r
-\r
-\r
-3.1 How to start translating for a new language?\r
-\r
-First, you would like to contact the authors or write\r
-to the mailing list - maybe there already is someone\r
-working on this translation. \r
-\r
-If you get the OK from the maintainer, there are several\r
-steps to do:\r
-\r
-- add the code of your language to the ALL_LINGUAS line\r
-  in the configure.in file\r
-\r
-  Caution: the language code may differ from the country\r
-  code, e.g. czech language is cs, Czech Republic is cz \r
-\r
-- run autoconf to recreate configure script\r
-\r
-- reconfigure the package (./configure)\r
-\r
-- in the po directory, copy gnokii.pot to <country>.po\r
-\r
-- start translating\r
-  \r
-\r
-3.2 How to merge existing translations with the updated gnokii.pot?\r
-\r
-This is simple. Rename the old file and use msgmerge to create\r
-an updated one:\r
-\r
-        mv cs.po cs.po.bak\r
-        msgmerge -o cs.po cs.po.bak gnokii.pot\r
-\r
-\r
-4. How to generate a .mo file\r
-\r
-When you say make in the po directory, all existing\r
-translations will be generated. The suffix will be .gmo.\r
-\r
-If you want to do this manually, use the msgfmt utility, e.g.\r
-\r
-        msgfmt -o cs.mo -v cs.po \r
-\r
-\r
-5. How to install the files\r
-\r
-Again, the makefile takes care of this. Simply use (as root)\r
-\r
-        make install\r
-\r
-in the po directory. If you want to do this manually (and/or\r
-for your language only), move the .mo file to\r
-/usr/share/locale/<your locale>/LC_MESSAGES/gnokii.mo \r
-\r
-\r
-I'm from Czech republic, so I did (well, I did not, but if you would\r
-like to localize gnokii, you should :-):\r
-\r
-        cd po\r
-        make gnokii.pot\r
-        cp gnokii.pot cs.po\r
-        <translating messages in cs.po>\r
-        <checking the translations using> msgfmt -o cs.mo -v cs.po\r
-       make\r
-        make install\r
-\r
-And now:\r
-\r
-SnowWhite:/tmp/gnokii$ export LC_MESSAGES=cs_CZ\r
-SnowWhite:/tmp/gnokii$ ./gnokii --version\r
-GNOKII Version 0.3.1 Copyright (C) Hugh Blemings 1999. <hugh@linuxcare.com>\r
-        Kompilace: 19:09:02 Mar 13 1999 pro model 6110 na portu /dev/ttyS0 \r
-SnowWhite:/tmp/gnokii$ \r
-\r
-The second line is in czech language :-) There are some problems - for\r
-example with "Mar" which is substitute by the C preprocessor.\r
-\r
+1. What do I need?
+
+- a reasonably recent version of GNU gettext (e.g. 0.10.35)
+  Check the version using e.g. msgfmt -V
+
+- autoconf
+
+- gnokii distribution :-)
+
+- if you have the variable LINGUAS in the environment
+  (most Red Hats have, no idea about other distributions),
+  unset it
+
+
+2. How to make gnokii.pot file?
+
+gnokii.pot file is a collection of all localizable strings
+in the gnokii package. It will be generated automagically
+and is included in the standard distribution package.
+
+If you need to regenerate it, goto "po" directory,
+remove gnokii.pot and say
+
+        make gnokii.pot
+
+
+3.1 How to start translating for a new language?
+
+First, you would like to contact the authors or write
+to the mailing list - maybe there already is someone
+working on this translation. 
+
+If you get the OK from the maintainer, there are several
+steps to do:
+
+- add the code of your language to the ALL_LINGUAS line
+  in the configure.in file
+
+  Caution: the language code may differ from the country
+  code, e.g. czech language is cs, Czech Republic is cz 
+
+- run autoconf to recreate configure script
+
+- reconfigure the package (./configure)
+
+- in the po directory, copy gnokii.pot to <country>.po
+
+- start translating
+  
+
+3.2 How to merge existing translations with the updated gnokii.pot?
+
+This is simple. Rename the old file and use msgmerge to create
+an updated one:
+
+        mv cs.po cs.po.bak
+        msgmerge -o cs.po cs.po.bak gnokii.pot
+
+
+4. How to generate a .mo file
+
+When you say make in the po directory, all existing
+translations will be generated. The suffix will be .gmo.
+
+If you want to do this manually, use the msgfmt utility, e.g.
+
+        msgfmt -o cs.mo -v cs.po 
+
+
+5. How to install the files
+
+Again, the makefile takes care of this. Simply use (as root)
+
+        make install
+
+in the po directory. If you want to do this manually (and/or
+for your language only), move the .mo file to
+/usr/share/locale/<your locale>/LC_MESSAGES/gnokii.mo 
+
+
+I'm from Czech republic, so I did (well, I did not, but if you would
+like to localize gnokii, you should :-):
+
+        cd po
+        make gnokii.pot
+        cp gnokii.pot cs.po
+        <translating messages in cs.po>
+        <checking the translations using> msgfmt -o cs.mo -v cs.po
+       make
+        make install
+
+And now:
+
+SnowWhite:/tmp/gnokii$ export LC_MESSAGES=cs_CZ
+SnowWhite:/tmp/gnokii$ ./gnokii --version
+GNOKII Version 0.3.1 Copyright (C) Hugh Blemings 1999. <hugh@linuxcare.com>
+        Kompilace: 19:09:02 Mar 13 1999 pro model 6110 na portu /dev/ttyS0 
+SnowWhite:/tmp/gnokii$ 
+
+The second line is in czech language :-) There are some problems - for
+example with "Mar" which is substitute by the C preprocessor.
+
index 0d265dd..f24e690 100644 (file)
@@ -1,69 +1,69 @@
 NOTE for command line gnokii:
 
---netmonitordata\r
-\r\r
-       we have used two data structure, defined in gnokii.h :\r
-\r
-       PARAM_INFO_MON wich is a single linked recursive list of pointers,\r
-       each pointers contain the complete description of one netmonitor param.\r
-\r
-       ///////////////////////////////////////////////////////////////////////\r
-       // start->next->next->next-> ...->next->NULL\r
-       //           |     |     |           |\r
-       //           V     V     V           V\r
-       //          par0  par1  par2        parN\r
-       ///////////////////////////////////////////////////////////////////////\r
-       \r
-       OUT_INFO_MON, contains parameters as specified\r
-       from the command line and an array of data pointers requested by user,\r
-       each one point to a single PARAM_INFO_MON\r
-       for optimization reason, also we filled in one array of required screen.\r
-\r
-\r
-       this the block diagram of program:\r
-       \r
-       PARAM_INFO_MON *info:\r
-       OUT_INFO_MON *out:\r
-\r
-       netmonitordata()\r
-\r
-               check for -S option, assign filename\r
-       \r
-               check for -I option, assign filename\r
-               \r
-               autodetect_phonemodel_phone_version()   This is TO DO\r
-       \r
-               info = get_min_param_info()             // nedeed here, so later we can check args param\r
-       \r
-                                                       // here we check command line arguments\r
-               if -I option\r
-\r
-                       for each line\r
-                       do\r
-                               parse_check(f_argc, f_argv, info, file, line)\r
-                       done\r
-               else\r
-                       parse_check(argc, argv, info, NULL, 0)\r
-               fi\r
-\r
-               \r
-                                                       // HERE, ALL IS CHECKED\r
-       \r
-                                                       // here we make OUT_INFO_MON\r
-               if -I option\r
-\r
-                       for each line\r
-                       do\r
-                               out = parse_process(f_argc, f_argv, info, file, line)\r
-\r
-                               nmd_output(out)\r
-\r
-                               free(out)\r
-                       done\r
-               else\r
-                       out = parse_process(argc, argv, info, NULL, 0)\r
-\r
-                       nmd_output(out)\r
-\r
-                       free(out)\r
-               fi\r
+--netmonitordata
+
+       we have used two data structure, defined in gnokii.h :
+
+       PARAM_INFO_MON wich is a single linked recursive list of pointers,
+       each pointers contain the complete description of one netmonitor param.
+
+       ///////////////////////////////////////////////////////////////////////
+       // start->next->next->next-> ...->next->NULL
+       //           |     |     |           |
+       //           V     V     V           V
+       //          par0  par1  par2        parN
+       ///////////////////////////////////////////////////////////////////////
+       
+       OUT_INFO_MON, contains parameters as specified
+       from the command line and an array of data pointers requested by user,
+       each one point to a single PARAM_INFO_MON
+       for optimization reason, also we filled in one array of required screen.
+
+
+       this the block diagram of program:
+       
+       PARAM_INFO_MON *info:
+       OUT_INFO_MON *out:
+
+       netmonitordata()
+
+               check for -S option, assign filename
+       
+               check for -I option, assign filename
+               
+               autodetect_phonemodel_phone_version()   This is TO DO
+       
+               info = get_min_param_info()             // nedeed here, so later we can check args param
+       
+                                                       // here we check command line arguments
+               if -I option
+
+                       for each line
+                       do
+                               parse_check(f_argc, f_argv, info, file, line)
+                       done
+               else
+                       parse_check(argc, argv, info, NULL, 0)
+               fi
+
+               
+                                                       // HERE, ALL IS CHECKED
+       
+                                                       // here we make OUT_INFO_MON
+               if -I option
+
+                       for each line
+                       do
+                               out = parse_process(f_argc, f_argv, info, file, line)
+
+                               nmd_output(out)
+
+                               free(out)
+                       done
+               else
+                       out = parse_process(argc, argv, info, NULL, 0)
+
+                       nmd_output(out)
+
+                       free(out)
+               fi
index 25a63b7..988ee92 100644 (file)
@@ -1,60 +1,60 @@
-\r
- Common information:\r
-       \r
-       For more install/compilation information see the INSTALL file.\r
-       \r
-       (!) Makefiles support make install prefix=<your_directory> \r
-           for package building. You can use it example in for .spec:\r
-               \r
-               ./configure --prefix=/usr\r
-               make install prefix=$RPM_BUILD_ROOT/usr\r
-\r
-           (You not need create any dirs - all make make install.)\r
-\r
-           For a installation procedure is used 'make install' or\r
-           'make install prefix=', and all outputs from this routine must be \r
-           correct. Please, not make any correction in your package specific \r
-           build system (example use 'cp' in package routines - .spec - \r
-           it is job for Makefiles). Write more different routines for \r
-           instalation is good way to hell...\r
-       \r
-        'make install' not install documentation, because for this use \r
-        any distribution itself routines. If you want install docs via\r
-        Makefile you must type 'make install-docs'  \r
-\r
- Debian:\r
-       \r
-       1/ Add new lines to Debian/changelog and set corect verion in this\r
-           file.\r
-\r
-       2/ Check files: rules, menu, docs\r
-\r
-       3/ Well, because gnokii's debian directory is in subdirectory \r
-          'packaging' and it is total non-standard for Debian package \r
-          building system, you must firstly type in top directory:\r
-\r
-          # ln -s packaging/Debian debian      \r
-  \r
-       3/ In source type:\r
-\r
-          # debian/rules binary\r
-          # debian/rules clean\r
-\r
-       4/ Delete symlink\r
-\r
-           # rm debian\r
-\r
\r
-\r
- FreeBSD:\r
-\r
\r
-\r
- RedHat:\r
-\r
-\r
-\r
-\r
-\r
- Win32:\r
+
+ Common information:
+       
+       For more install/compilation information see the INSTALL file.
+       
+       (!) Makefiles support make install prefix=<your_directory> 
+           for package building. You can use it example in for .spec:
+               
+               ./configure --prefix=/usr
+               make install prefix=$RPM_BUILD_ROOT/usr
+
+           (You not need create any dirs - all make make install.)
+
+           For a installation procedure is used 'make install' or
+           'make install prefix=', and all outputs from this routine must be 
+           correct. Please, not make any correction in your package specific 
+           build system (example use 'cp' in package routines - .spec - 
+           it is job for Makefiles). Write more different routines for 
+           instalation is good way to hell...
+       
+        'make install' not install documentation, because for this use 
+        any distribution itself routines. If you want install docs via
+        Makefile you must type 'make install-docs'  
+
+ Debian:
+       
+       1/ Add new lines to Debian/changelog and set corect verion in this
+           file.
+
+       2/ Check files: rules, menu, docs
+
+       3/ Well, because gnokii's debian directory is in subdirectory 
+          'packaging' and it is total non-standard for Debian package 
+          building system, you must firstly type in top directory:
+
+          # ln -s packaging/Debian debian      
+  
+       3/ In source type:
+
+          # debian/rules binary
+          # debian/rules clean
+
+       4/ Delete symlink
+
+           # rm debian
+
+
+ FreeBSD:
+
+
+ RedHat:
+
+
+
+
+
+ Win32:
        
\ No newline at end of file
index 200ab77..f06a8f6 100644 (file)
@@ -1,42 +1,42 @@
-Subject: RE: Xgnokii in win32 ?\r
-Date: Mon, 29 Nov 1999 08:45:31 +0100\r
-From: Acquadro Daniele <acquadro.daniele@logicasiel.it>\r
-To: marcinw0@poczta.onet.pl\r
-CC: gnokii <gnokii@net.lut.ac.uk>\r
-\r
-Hi ,\r
-gtk for windows can be donloaded from www.gtk.org. On the left there's a\r
-link to GTK+ on win32 (on the bottom of the page).\r
-\r
-To compile xGnokii, using VC ide, you have to create a new win32 CONSOLE\r
-application (NOT a win32 application) and then add the libraries.\r
-TO COMPILE you need those libraries\r
-gdk-1.3.lib\r
-gtk-1.3.lib\r
-glib-1.3.lib\r
-\r
-        bye\r
-        Daniele\r
-> -----Original Message-----\r
-> From: Marcin Wiacek [SMTP:marcinw0@poczta.onet.pl]\r
-> Sent: domenica 28 novembre 1999 22.50\r
-> To:   GNU Nokia mailing List\r
-> Subject:      Xgnokii in win32 ?\r
->\r
->\r
-> Hi,\r
->\r
-> I want to know only, where can I get GTK libraries for win32 (they're\r
-> required for compiling xgnokii) from ?\r
->\r
-> Or maybe somebody will write on the list/some WWW page, what to do to\r
-> compile xgnokii in win32 (how to replace GTK libraries with win procedures\r
-> -\r
-> I think, it will be better) ?\r
->\r
-> ...maybe I shouldn't ask for it, but it isn't written in gnokii source...\r
->\r
-> Regards,\r
->\r
-> Marcin\r
->\r
+Subject: RE: Xgnokii in win32 ?
+Date: Mon, 29 Nov 1999 08:45:31 +0100
+From: Acquadro Daniele <acquadro.daniele@logicasiel.it>
+To: marcinw0@poczta.onet.pl
+CC: gnokii <gnokii@net.lut.ac.uk>
+
+Hi ,
+gtk for windows can be donloaded from www.gtk.org. On the left there's a
+link to GTK+ on win32 (on the bottom of the page).
+
+To compile xGnokii, using VC ide, you have to create a new win32 CONSOLE
+application (NOT a win32 application) and then add the libraries.
+TO COMPILE you need those libraries
+gdk-1.3.lib
+gtk-1.3.lib
+glib-1.3.lib
+
+        bye
+        Daniele
+> -----Original Message-----
+> From: Marcin Wiacek [SMTP:marcinw0@poczta.onet.pl]
+> Sent: domenica 28 novembre 1999 22.50
+> To:   GNU Nokia mailing List
+> Subject:      Xgnokii in win32 ?
+>
+>
+> Hi,
+>
+> I want to know only, where can I get GTK libraries for win32 (they're
+> required for compiling xgnokii) from ?
+>
+> Or maybe somebody will write on the list/some WWW page, what to do to
+> compile xgnokii in win32 (how to replace GTK libraries with win procedures
+> -
+> I think, it will be better) ?
+>
+> ...maybe I shouldn't ask for it, but it isn't written in gnokii source...
+>
+> Regards,
+>
+> Marcin
+>
index 1652e4c..aa25178 100644 (file)
@@ -1,66 +1,66 @@
-Do: Markus Plail\r
-Temat: RE: RE:\r
-\r
-\r
-Hi,\r
-\r
-> Sorry for the confusion. I wrote the subject (getsms for 6210) in \r
-> the CC field.\r
-No problem :-)\r
-\r
-> So this is what I want to try, in linux btw. U wrote that u can \r
-> give some information on that topic.\r
-OK. Good.\r
-\r
-First of all, you HAVE to understand, how/where are created all phone functions. Look into n7110.c for N7110_Functions. This is our structure for each function - getting SMS, etc. You have pointers to each function sending request.\r
-\r
-Example:  N6110_NetMonitor for netmonitor function.\r
-\r
-If each function (let's say N6110_NetMonitor) you send frame for phone:\r
------------------------------\r
-  unsigned char req[] = { 0x00, 0x01, 0x7e, 0x00 };\r
-  \r
-  GSM_Error error;\r
-  \r
-  error=N6110_EnableExtendedCommands(0x01);\r
-  if (error!=GE_NONE) return error;\r
-\r
-  CurrentNetmonitor=Screen;\r
-\r
-  req[3]=mode;\r
-\r
-  return N6110_SendMessageSequence\r
-    (20, &CurrentNetmonitorError, 4, 0x40, req);\r
----------------------------\r
-In req you prepare it (see 6110.txt/7110.txt for frame for netmonitor and compare it with req).\r
-\r
-First (this is specific for netmonitor and some other) need to send something, we call EnableExtendedCommands - we must send special frame and wait for answer. And ONLY after it phone will answer with 0x40 frames. For SMS in 6210 it's not required.\r
-\r
-After it we set pointer to structure given by user (pointers are declared in gsm-api.c & gsm-api.h): CurrentNetmonitor=Screen;\r
-\r
-Prepare frame send to phone...\r
-\r
-And use N6110_SendMessageSequence -> first is, how long we can wait for phone answer (20), next: what variable is used to see, if phone answered (I will later describe more - variable created in gsm-api.c & gsm-api.h), how many bytes in req, frame type and req.\r
-\r
-That's all here.\r
-\r
-All answers are handled in N7110_DispatchMessage\r
-\r
-In example look for:\r
-\r
-        fprintf(stdout, _("Message: Netmonitor menu %d received:\n"), MessageBuffer[3]);\r
-\r
-You copy formatted answer to structure pointed by CurrentNetmonitor (in example) and set CurrentNetmonitorError to GE_NONE (it makes, that N6110_SendMessageSequence returns: NO error). That's all.\r
---------------------\r
-If you understand, let's start:\r
-\r
-1.need to make new N7110_GetSMSFolders similiar to N6110_GetSMSFolders (send frame - it's described in 7110.txt: "Get folder names", wait for answer and return it) and set N7110_Functions to point on it (in line 127).\r
-\r
-After it we will be able to make "real" getsms...\r
-\r
-Any questions ?\r
-\r
-Pozdrowienia/Best Regards\r
---\r
-Marcin Wiacek -> mailto:marcinwiacek@topnet.pl http://marcin-wiacek.topnet.pl (http://www.fkn.pl/marcinw) -> netmonitor, firmware, mygnokii (GSM & Nokia)\r
+Do: Markus Plail
+Temat: RE: RE:
+
+
+Hi,
+
+> Sorry for the confusion. I wrote the subject (getsms for 6210) in 
+> the CC field.
+No problem :-)
+
+> So this is what I want to try, in linux btw. U wrote that u can 
+> give some information on that topic.
+OK. Good.
+
+First of all, you HAVE to understand, how/where are created all phone functions. Look into n7110.c for N7110_Functions. This is our structure for each function - getting SMS, etc. You have pointers to each function sending request.
+
+Example:  N6110_NetMonitor for netmonitor function.
+
+If each function (let's say N6110_NetMonitor) you send frame for phone:
+-----------------------------
+  unsigned char req[] = { 0x00, 0x01, 0x7e, 0x00 };
+  
+  GSM_Error error;
+  
+  error=N6110_EnableExtendedCommands(0x01);
+  if (error!=GE_NONE) return error;
+
+  CurrentNetmonitor=Screen;
+
+  req[3]=mode;
+
+  return N6110_SendMessageSequence
+    (20, &CurrentNetmonitorError, 4, 0x40, req);
+---------------------------
+In req you prepare it (see 6110.txt/7110.txt for frame for netmonitor and compare it with req).
+
+First (this is specific for netmonitor and some other) need to send something, we call EnableExtendedCommands - we must send special frame and wait for answer. And ONLY after it phone will answer with 0x40 frames. For SMS in 6210 it's not required.
+
+After it we set pointer to structure given by user (pointers are declared in gsm-api.c & gsm-api.h): CurrentNetmonitor=Screen;
+
+Prepare frame send to phone...
+
+And use N6110_SendMessageSequence -> first is, how long we can wait for phone answer (20), next: what variable is used to see, if phone answered (I will later describe more - variable created in gsm-api.c & gsm-api.h), how many bytes in req, frame type and req.
+
+That's all here.
+
+All answers are handled in N7110_DispatchMessage
+
+In example look for:
+
+        fprintf(stdout, _("Message: Netmonitor menu %d received:\n"), MessageBuffer[3]);
+
+You copy formatted answer to structure pointed by CurrentNetmonitor (in example) and set CurrentNetmonitorError to GE_NONE (it makes, that N6110_SendMessageSequence returns: NO error). That's all.
+--------------------
+If you understand, let's start:
+
+1.need to make new N7110_GetSMSFolders similiar to N6110_GetSMSFolders (send frame - it's described in 7110.txt: "Get folder names", wait for answer and return it) and set N7110_Functions to point on it (in line 127).
+
+After it we will be able to make "real" getsms...
+
+Any questions ?
+
+Pozdrowienia/Best Regards
+--
+Marcin Wiacek -> mailto:marcinwiacek@topnet.pl http://marcin-wiacek.topnet.pl (http://www.fkn.pl/marcinw) -> netmonitor, firmware, mygnokii (GSM & Nokia)
 http://www.mds.mdh.se/~cel95eig/mygnokii/ & http://grumble.zereau.com/gnokii/ & http://reinhold.bachrain.de/ -> mygnokii mirrors
\ No newline at end of file
index d213649..bc4b0bf 100644 (file)
@@ -1,19 +1,19 @@
-//SCKL1584 \r
-BODY:\r
-IA:\r
-OPER ariel\r
-Link up\r
-N\r
-\r
-M SMS\r
-+6421XXXXXX/+6421YYYYYY\r
-6:LINKUP\r
---\r
-IA:\r
-OPER ariel\r
-Link down\r
-N\r
-\r
-M SMS\r
-+6421XXXXXX/+6421YYYYYY\r
-8:LINKDOWN\r
+//SCKL1584 
+BODY:
+IA:
+OPER ariel
+Link up
+N
+
+M SMS
++6421XXXXXX/+6421YYYYYY
+6:LINKUP
+--
+IA:
+OPER ariel
+Link down
+N
+
+M SMS
++6421XXXXXX/+6421YYYYYY
+8:LINKDOWN
index fe34861..9d9aefe 100644 (file)
-\r
-1.see Smart Messaging 2.0 for info, what the DMCP is\r
-\r
-2.I didn't have success in changing menus via cable (without sending SMS).\r
-  Here is example foogle funtion. You will see only "Nokia service update failed"\r
-------------------------------------\r
-int foogle(char *argv[])\r
-{\r
-  GSM_NetworkInfo NetworkInfo;\r
-  int i;\r
-\r
-  char buffer[100]= { 0x0c, 0x01,\r
-                            0x06,  /* User Data Header Length */\r
-                            0x05,  /* IEI: application port addressing scheme, 16 bit address */\r
-                            0x04,  /* IEDL (IED length ?) */\r
-                            0x15,  /* destination address: high byte */\r
-                           0x84,  /* destination address: low byte */\r
-                            0x00,  /* originator address: high byte */\r
-                           0x00}; /* originator address: low byte */\r
-\r
-  int MSGLEN=9;\r
-\r
-  /* Initialise the code for the GSM interface. */     \r
-\r
-  fbusinit(NULL);\r
-\r
-  buffer[MSGLEN++]='B';\r
-  buffer[MSGLEN++]='O';     \r
-  buffer[MSGLEN++]='D';\r
-  buffer[MSGLEN++]='Y';\r
-  buffer[MSGLEN++]=':';\r
-  buffer[MSGLEN++]=10;\r
-  buffer[MSGLEN++]='I';\r
-  buffer[MSGLEN++]='A';\r
-  buffer[MSGLEN++]=':';\r
-  buffer[MSGLEN++]=10;\r
-  buffer[MSGLEN++]='O';\r
-  buffer[MSGLEN++]='P';\r
-  buffer[MSGLEN++]='E';\r
-  buffer[MSGLEN++]='R';\r
-  buffer[MSGLEN++]=' ';\r
-  buffer[MSGLEN++]='a';\r
-  buffer[MSGLEN++]='l';\r
-  buffer[MSGLEN++]=10;\r
-  buffer[MSGLEN++]='L';\r
-  buffer[MSGLEN++]='i';\r
-  buffer[MSGLEN++]='n';\r
-  buffer[MSGLEN++]='k';\r
-  buffer[MSGLEN++]=10;\r
-  buffer[MSGLEN++]='N';\r
-  buffer[MSGLEN++]=10;\r
-  buffer[MSGLEN++]=10;\r
-  buffer[MSGLEN++]='M';\r
-  buffer[MSGLEN++]=' ';\r
-  buffer[MSGLEN++]='S';\r
-  buffer[MSGLEN++]='M';\r
-  buffer[MSGLEN++]='S';\r
-  buffer[MSGLEN++]=10;\r
-  buffer[MSGLEN++]='+';\r
-  buffer[MSGLEN++]='4';\r
-  buffer[MSGLEN++]='8';\r
-  buffer[MSGLEN++]='6';\r
-  buffer[MSGLEN++]='0';\r
-  buffer[MSGLEN++]='2';\r
-  buffer[MSGLEN++]='9';\r
-  buffer[MSGLEN++]='5';\r
-  buffer[MSGLEN++]='1';\r
-  buffer[MSGLEN++]='1';\r
-  buffer[MSGLEN++]='1';\r
-  buffer[MSGLEN++]='1';\r
-  buffer[MSGLEN++]='/';\r
-  buffer[MSGLEN++]='+';\r
-  buffer[MSGLEN++]='4';\r
-  buffer[MSGLEN++]='8';\r
-  buffer[MSGLEN++]='6';\r
-  buffer[MSGLEN++]='0';\r
-  buffer[MSGLEN++]='2';\r
-  buffer[MSGLEN++]='9';\r
-  buffer[MSGLEN++]='5';\r
-  buffer[MSGLEN++]='1';\r
-  buffer[MSGLEN++]='1';\r
-  buffer[MSGLEN++]='1';\r
-  buffer[MSGLEN++]='1';\r
-\r
-  for (i=0;i<MSGLEN;i++) {\r
-    fprintf(stdout,_("%c"),buffer[i]);\r
-  }\r
-\r
-  Protocol->SendMessage(MSGLEN, 0x12, buffer);\r
-  GSM->GetNetworkInfo(&NetworkInfo); //need to make something\r
-\r
-  \r
-  GSM->Terminate();\r
-\r
-  return 0;\r
-}\r
------------------------------------\r
-3.to change via SMS - read parts of email sent by Martin Lucina [mato@kotelna.sk]\r
------------------------------------\r
-\r
-1. First of all, use the OPER (Operator) services rather than the Nokia\r
-   services. There's probably no reason why you couldn't use either but\r
-   there may be extra hooks in the phone firmware regarding Nokia\r
-   services that I don't know about.\r
-\r
-2. Make sure that "Operator access number 1" and "Operator access number\r
-   2" are set correctly in the services menu. The former should be set\r
-   to the SMS centre the messages you send are going to come from\r
-   (important, send yourself a test message and check it's details, some\r
-   operators set the sending SMSC number to one different from the one\r
-   you originally sent the message to). The latter should be the number\r
-   of the MS you are sending the SMS from.\r
-\r
-3. Don't send the messages as binary NBS messsages using the UDH. I\r
-   haven't been able to get this method to work and besides, the //SCK\r
-   compatibility header works just fine. \r
-   \r
-   Also, while I haven't seen this, it's possible that if you send a\r
-   message in binary format, the destination MS will reply in binary\r
-   format. This makes the reply useless if you are sending from another\r
-   NBS-aware phone, since the NBS router will most likely silently\r
-   discard it (or try to forward it to the phones TTML/DMCP server,\r
-   which won't help either). \r
-   \r
-   If you send the messages as text, the replies I've seen also come\r
-   back as text so you can retrieve them from the phone in the normal\r
-   fashion.\r
-\r
-One caveat I've noticed with sending NBS messages using the //SCK\r
-compatibility header is that the NBS grammar in the Nokia SM spec\r
-version 2 contradicts the grammar in the original Intel NBS spec. Nokia\r
-says you can using either a newline or space as the delimiter after\r
-"//SCK", it turns out that you _must_ use a space (as stated in the\r
-Intel spec). Of course you can still stick a newline in afterwards.\r
-\r
-I have attached a test file that will add two menu items that send SMS\r
-messages to your services menu. I send this to the phone using\r
-\r
-$ sendsms +6421XXXXXX < addsms\r
-\r
-[...]\r
-\r
-Cheers,\r
-\r
--- \r
-Martin Lucina http://www.kotelna.sk/mato/ Wellington, New Zealand             \r
-I've always been mad I know I've been mad like the most of us are             \r
-Pretty hard to explain why you're a madman even if you're not mad             \r
+
+1.see Smart Messaging 2.0 for info, what the DMCP is
+
+2.I didn't have success in changing menus via cable (without sending SMS).
+  Here is example foogle funtion. You will see only "Nokia service update failed"
+------------------------------------
+int foogle(char *argv[])
+{
+  GSM_NetworkInfo NetworkInfo;
+  int i;
+
+  char buffer[100]= { 0x0c, 0x01,
+                            0x06,  /* User Data Header Length */
+                            0x05,  /* IEI: application port addressing scheme, 16 bit address */
+                            0x04,  /* IEDL (IED length ?) */
+                            0x15,  /* destination address: high byte */
+                           0x84,  /* destination address: low byte */
+                            0x00,  /* originator address: high byte */
+                           0x00}; /* originator address: low byte */
+
+  int MSGLEN=9;
+
+  /* Initialise the code for the GSM interface. */     
+
+  fbusinit(NULL);
+
+  buffer[MSGLEN++]='B';
+  buffer[MSGLEN++]='O';     
+  buffer[MSGLEN++]='D';
+  buffer[MSGLEN++]='Y';
+  buffer[MSGLEN++]=':';
+  buffer[MSGLEN++]=10;
+  buffer[MSGLEN++]='I';
+  buffer[MSGLEN++]='A';
+  buffer[MSGLEN++]=':';
+  buffer[MSGLEN++]=10;
+  buffer[MSGLEN++]='O';
+  buffer[MSGLEN++]='P';
+  buffer[MSGLEN++]='E';
+  buffer[MSGLEN++]='R';
+  buffer[MSGLEN++]=' ';
+  buffer[MSGLEN++]='a';
+  buffer[MSGLEN++]='l';
+  buffer[MSGLEN++]=10;
+  buffer[MSGLEN++]='L';
+  buffer[MSGLEN++]='i';
+  buffer[MSGLEN++]='n';
+  buffer[MSGLEN++]='k';
+  buffer[MSGLEN++]=10;
+  buffer[MSGLEN++]='N';
+  buffer[MSGLEN++]=10;
+  buffer[MSGLEN++]=10;
+  buffer[MSGLEN++]='M';
+  buffer[MSGLEN++]=' ';
+  buffer[MSGLEN++]='S';
+  buffer[MSGLEN++]='M';
+  buffer[MSGLEN++]='S';
+  buffer[MSGLEN++]=10;
+  buffer[MSGLEN++]='+';
+  buffer[MSGLEN++]='4';
+  buffer[MSGLEN++]='8';
+  buffer[MSGLEN++]='6';
+  buffer[MSGLEN++]='0';
+  buffer[MSGLEN++]='2';
+  buffer[MSGLEN++]='9';
+  buffer[MSGLEN++]='5';
+  buffer[MSGLEN++]='1';
+  buffer[MSGLEN++]='1';
+  buffer[MSGLEN++]='1';
+  buffer[MSGLEN++]='1';
+  buffer[MSGLEN++]='/';
+  buffer[MSGLEN++]='+';
+  buffer[MSGLEN++]='4';
+  buffer[MSGLEN++]='8';
+  buffer[MSGLEN++]='6';
+  buffer[MSGLEN++]='0';
+  buffer[MSGLEN++]='2';
+  buffer[MSGLEN++]='9';
+  buffer[MSGLEN++]='5';
+  buffer[MSGLEN++]='1';
+  buffer[MSGLEN++]='1';
+  buffer[MSGLEN++]='1';
+  buffer[MSGLEN++]='1';
+
+  for (i=0;i<MSGLEN;i++) {
+    fprintf(stdout,_("%c"),buffer[i]);
+  }
+
+  Protocol->SendMessage(MSGLEN, 0x12, buffer);
+  GSM->GetNetworkInfo(&NetworkInfo); //need to make something
+
+  
+  GSM->Terminate();
+
+  return 0;
+}
+-----------------------------------
+3.to change via SMS - read parts of email sent by Martin Lucina [mato@kotelna.sk]
+-----------------------------------
+
+1. First of all, use the OPER (Operator) services rather than the Nokia
+   services. There's probably no reason why you couldn't use either but
+   there may be extra hooks in the phone firmware regarding Nokia
+   services that I don't know about.
+
+2. Make sure that "Operator access number 1" and "Operator access number
+   2" are set correctly in the services menu. The former should be set
+   to the SMS centre the messages you send are going to come from
+   (important, send yourself a test message and check it's details, some
+   operators set the sending SMSC number to one different from the one
+   you originally sent the message to). The latter should be the number
+   of the MS you are sending the SMS from.
+
+3. Don't send the messages as binary NBS messsages using the UDH. I
+   haven't been able to get this method to work and besides, the //SCK
+   compatibility header works just fine. 
+   
+   Also, while I haven't seen this, it's possible that if you send a
+   message in binary format, the destination MS will reply in binary
+   format. This makes the reply useless if you are sending from another
+   NBS-aware phone, since the NBS router will most likely silently
+   discard it (or try to forward it to the phones TTML/DMCP server,
+   which won't help either). 
+   
+   If you send the messages as text, the replies I've seen also come
+   back as text so you can retrieve them from the phone in the normal
+   fashion.
+
+One caveat I've noticed with sending NBS messages using the //SCK
+compatibility header is that the NBS grammar in the Nokia SM spec
+version 2 contradicts the grammar in the original Intel NBS spec. Nokia
+says you can using either a newline or space as the delimiter after
+"//SCK", it turns out that you _must_ use a space (as stated in the
+Intel spec). Of course you can still stick a newline in afterwards.
+
+I have attached a test file that will add two menu items that send SMS
+messages to your services menu. I send this to the phone using
+
+$ sendsms +6421XXXXXX < addsms
+
+[...]
+
+Cheers,
+
+-- 
+Martin Lucina http://www.kotelna.sk/mato/ Wellington, New Zealand             
+I've always been mad I know I've been mad like the most of us are             
+Pretty hard to explain why you're a madman even if you're not mad             
index 36aac35..06a47ab 100644 (file)
@@ -1,5 +1,5 @@
-//SCKL1584 \r
-BODY:\r
-IR:\r
-OPER ariel\r
-Link up\r
+//SCKL1584 
+BODY:
+IR:
+OPER ariel
+Link up
index 4c1d0ff..2ca658c 100644 (file)
@@ -1,19 +1,19 @@
-Od: owner-gnokii@net.lut.ac.uk w imieniu Bernhard Mähr [Bernhard.Maehr@GMX.at]\r
-Wys&#322;ano: 25 listopada 2000 17:06\r
-Do: gnokii@net.lut.ac.uk\r
-Temat: Telefonbucheditor 7110 \r
-\r
-For everyone who trys to decode the 7110 FBUS protocol a tip:\r
-If in the Windows-Registry HKEY_LOCAL_MACHINE\SOFTWARE\moosy.development\TBE7110 \r
-the String Data is replaced with a Binary with the name Data the program shows a \r
-error message at the begin but it also enables a option debug. This option \r
-displays a second window showing the trace of the FBUS. So it should be easier \r
-to decode the protocol. So it is possible to see the communiction while loading \r
-the phone numbers,  adresses,... and also syncronizing the calendar. \r
\r
-I know it is a little bit unfair, don't tell me that.\r
\r
-I hope this is useful for someone\r
\r
-Bernhard Mähr\r
\r
+Od: owner-gnokii@net.lut.ac.uk w imieniu Bernhard Mähr [Bernhard.Maehr@GMX.at]
+Wys&#322;ano: 25 listopada 2000 17:06
+Do: gnokii@net.lut.ac.uk
+Temat: Telefonbucheditor 7110 
+
+For everyone who trys to decode the 7110 FBUS protocol a tip:
+If in the Windows-Registry HKEY_LOCAL_MACHINE\SOFTWARE\moosy.development\TBE7110 
+the String Data is replaced with a Binary with the name Data the program shows a 
+error message at the begin but it also enables a option debug. This option 
+displays a second window showing the trace of the FBUS. So it should be easier 
+to decode the protocol. So it is possible to see the communiction while loading 
+the phone numbers,  adresses,... and also syncronizing the calendar. 
+I know it is a little bit unfair, don't tell me that.
+I hope this is useful for someone
+Bernhard Mähr
index a19e7c0..ca030f9 100644 (file)
@@ -1,13 +1,12 @@
-To irda sniffs use irda_intercept.tgz\r
-(http://www.dev-thomynet.de/nokworld/noktrace/index.html or \rtools directory
+To irda sniffs use irda_intercept.tgz
+(http://www.dev-thomynet.de/nokworld/noktrace/index.html or tools directory
 - unpacked source is there) from Thomas Schneider
-\r
-how to use it:\r
-you MUST stop irda support  ('rcirda stop' fur SUSE)\r
-to free the infrared tty port.\r
-just type irda_intercept and you should see\r
-irda packages of port /dv/ttyS1 (hardcoded in source).\r
-The tool writes also to file 'out.trc'.\r
-Use this file to decode: 'gnokii --decodefile out.trc'\r
+
+how to use it:
+you MUST stop irda support  ('rcirda stop' fur SUSE)
+to free the infrared tty port.
+just type irda_intercept and you should see
+irda packages of port /dv/ttyS1 (hardcoded in source).
+The tool writes also to file 'out.trc'.
+Use this file to decode: 'gnokii --decodefile out.trc'
 (mygnokii have to be compiled with debug)
-\r
\ No newline at end of file
index 7a04373..afd92e4 100644 (file)
-\r
-Last update 23.02.2002\r
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r
-\r
-Assembled by\r
-       Balazs Nagy (js@lsc.hu)\r
-        Harri Yli-Torkko (hyt@surfeu.fi)\r
-       Alfred R. Nurnberger <arnu@flosys.com>\r
-       Hugh Blemings <Hugh.Blemings@vsb.com.au>\r
-       Mike Bradley <mike@trumpington.st>\r
-       Odinokov Serge <serge@takas.lt>\r
-       Pavel Janik <Pavel@Janik.cz>\r
+
+Last update 23.02.2002
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Assembled by
+       Balazs Nagy (js@lsc.hu)
+        Harri Yli-Torkko (hyt@surfeu.fi)
+       Alfred R. Nurnberger <arnu@flosys.com>
+       Hugh Blemings <Hugh.Blemings@vsb.com.au>
+       Mike Bradley <mike@trumpington.st>
+       Odinokov Serge <serge@takas.lt>
+       Pavel Janik <Pavel@Janik.cz>
         BORBELY Zoltan (bozo@andrews.hu)
-       Pawel Kot <pkot@linuxnews.pl>\r
-       Marcin Wiacek (Marcin-Wiacek@TOPNET.PL)\r
-       ... and other members of gnokii mailing list\r
-            and authors of some WWW pages.\r
-\r
-The data provided is for information purposes only. \r
-Some of the frames might be hazardous to your phone. Be careful!!! \r
-We do not take any responsibility or liability for damages, etc.\r
-\r
-NOTE: this information isn't (and can't be) complete.  If you know anything\r
-about features not listed here or you noticed a bug in this list, please\r
-notify us via e-mail.  Thank you.\r
-\r
-Document describing frames used in\r
-GSM/PCN Nokia 6110 and derivatives (Nokia 6130, 6150, 6190, 5110, 5130, 5150,\r
-5190, 3210, 3310)\r
-Correct format is FBUS version 2/Direct IRDA/MBUS version 2\r
-(see nokia.txt for protocol details):\r
-\r
- List:\r
-\r
-0x00: Monitoring values\r
-    r monitoring value      {+0x01, 0x01, block... }\r
-      where block: 0x5e, 0x05, 0x7a(?), 0xd0(?), 0x85(?), 0x02, percentHI, percentLO\r
-                      Battery percent level\r
-                   0x5e, 0x0c, 0x52(?), 0x4b(?), 0x6f(?), 0x02, voltageHI, voltageLO\r
-                      Battery standby voltage\r
-                   ............\r
-0x01: Call Information\r
-    s Make call             { 0x0001, "number", type, block }\r
-                              where type:\r
-                                      0x01 - data call\r
-                                      0x05 - voice call\r
-                                   block:\r
-                                     data call (non digital lines):\r
-                                       0x02,0x01,0x05,0x81,0x01,0x00,0x00,0x01,0x02,0x0a,\r
-                                       0x07,0xa2,0x88,0x81,0x21,0x15,0x63,0xa8,0x00,0x00\r
-                                     data call (digital lines):\r
-                                       0x02,0x01,0x05,0x81,0x01,0x00,0x00,0x01,0x02,0x0a,\r
-                                       0x07,0xa1,0x88,0x89,0x21,0x15,0x63,0xa0,0x00,0x06,\r
-                                       0x88,0x90,0x21,0x48,0x40,0xbb\r
-                                      voice call:\r
-                                       0x01, 0x01, 0x05, 0x81/0x00, sendnum, 0x00, 0x00, 0x01\r
-                                        where:\r
-                                          sendnum (own number sending):\r
-                                              0x01: preset (depends on network)\r
-                                              0x03: on\r
-                                              0x02: off\r
-    r Call going msg        { 0x0002 }\r
-    r Call in progress      { 0x0003, seqnr }\r
-    r Remote end hang up    { 0x0004, seqnr, ?, error (like in netmon in 39) }\r
-    r incoming call alert   { 0x0005, seqnr, numlen, "number", namelen, "name" }\r
-    s Answer call part 2    { 0x0006, seqnr, 0x00 }\r
-    r answered call         { 0x0007, seqnr }\r
-    s Hang up               { 0x0008, seqnr, 0x85 }\r
-    r terminated call       { 0x0009, seqnr }\r
-    r call msg              { 0x000a, seqnr }\r
-    r call held             { 0x0023, seqnr, 0x01 }\r
-    r call resumed          { 0x0025, seqnr, 0x01 }\r
-    r Send DTMF/voice call  { 0x0040}\r
-    s Answer call part 1    { 0x0042,0x05,0x01,0x07,0xa2,0x88,0x81,0x21,0x15,0x63,0xa8,0x00,0x00,\r
-                                    0x07,0xa3,0xb8,0x81,0x20,0x15,0x63,0x80 }\r
-    s Sent after issuing    { 0x0042,0x05,0x81,0x07,0xa1,0x88,0x89,0x21,0x15,0x63,0xa0,0x00,0x06,\r
-      data call                             0x88,0x90,0x21,0x48,0x40,0xbb,0x07,0xa3,\r
-      (digital lines)                0xb8,0x81,0x20,0x15,0x63,0x80 }\r
-    s Sent after issuing    { 0x0042,0x05,0x01,0x07,0xa2,0xc8,0x81,0x21,0x15,0x63,0xa8,0x00,0x00,\r
-      data call                             0x07,0xa3,0xb8,0x81,0x20,0x15,0x63,0x80,\r
-      (non digital lines)            0x01,0x60 }\r
-    s Send DTMF             { 0x0050, length, {ascii codes for DTMF}, 0x01 }\r
-    \r
-    Note:\r
-      to make data call (non digital lines):\r
-        1.send "Make call" for non digital lines\r
-       2.send "Sent after issuing data call (non digital lines)"\r
-      to make data call (digital lines):\r
-        1.send "Answer call part 1"\r
-       2.send "Sent after issuing data call (digital lines)"\r
-        3.send "Make call" for digital lines\r
-      to answer call:\r
-        1.send "Answer call part 1"\r
-        2.send "Answer call part 2"\r
-\r
-0x02: SMS handling\r
-    s Send SMS message      { 0x0001, 0x02, 0x00 (SEND REQUEST), ... }\r
-    r Message sent          { 0x0002 }\r
-    r Send failed           { 0x0003, ?, ?, error (like in netmon in 65)}    \r
-    s Get SMS message       { 0x0007, 0x02, location, 0x01, 0x64 }\r
-    s Initiate connection   { 0x000d, 0x00, 0x00, 0x02 }\r
-    r Initiate ACK          { 0x000e, 0x01 }\r
-    r SMS message received  { 0x0010, ...... } (whole message)\r
-    s Set CellBroadcast     { 0x0020, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01 }\r
-                                      for enable cell broadcast ?\r
-                                      0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }\r
-                                      for disable cell broadcast ?\r
-    r Set CellBroadcast OK  { 0x0021, 0x01 }\r
-    r Read CellBroadcast    { 0x0023, ?, ?, ?, channel, ?, message... } ?\r
-    s Set SMS center        { 0x0030, 0x64, priority, checksum? ,0?, format,\r
-                                      validity, {DefaultRecipient no.}[12], \r
-                                      {SMScenter no.}[12], {SMSC name}, 0x00}\r
-                              where tel.no.[12]: {len, type, {number(BCD)}}\r
-                                    type: 0x81: normal\r
-                                          0x91: + (international)\r
-                                          0xd0: alphanumeric\r
-                                    format: 0x00: text\r
-                                            0x22: fax\r
-                                            0x24: voice\r
-                                            0x25: ERMES\r
-                                            0x26: paging\r
-                                            0x31: X.400\r
-                                            0x32: email\r
-                                    validity: 0x0b:  1 hour\r
-                                              0x47:  6 hours\r
-                                              0xa7: 24 hours\r
-                                              0xa9: 72 hours\r
-                                              0xad:  1 week\r
-                                              0xff: max.time\r
-    r Set SMS center OK     { 0x0031 }\r
-    r Set SMS center error  { 0x0032, reason }\r
-    s Get SMS center        { 0x0033, 0x64, priority }\r
-    r SMS center received   { 0x0034, priority, checksum?, format, 0x00?,\r
-                                      validity, {DefaultRecipient no.}[12],\r
-                                      {SMScenter no.}[12], {SMSC name}, 0x00}\r
-                                      tel.no[12]: {len, type, {number(BCD)}} \r
-                              where priority, checksum, type, validity,\r
-                                    tel.no.[12]: see 0x02/0x0030\r
-    r SMS center error recv { 0x0035, reason }\r
-0x03: Phonebook functions\r
-    s Get mem location      { 0x0001, memtype, location, 0 }\r
-                            where memory:\r
-                                     0x01: telephone and SIM phonebook (in one)\r
-                                     0x02: telephone phonebook\r
-                                     0x03: SIM phonebook\r
-                                     0x04: SIM fixdialling-phonebook (?)\r
-                                     0x05: Own numbers\r
-                                     0x07: Dialled numbers\r
-                                     0x08: Missed calls\r
-                                     0x09: Received calls\r
-                                     0x0b: voice mailbox (location not important)\r
-    r mem location recvd    { 0x0002, 0x00,namelen,"name",numlen,"number",groupID, 0x01?, yearLO, yearHI, month, day, hour, minute, sec. }\r
-                            Note: in 3310 all entries have null name ("feature" of bug ?)\r
-    r mem loc error recvd   { 0x0003, errtype }\r
-                            where errtype: 0x7d: invalid memory type\r
-    s Set mem location      { 0x0004, memtype,location,namelen,"Name",numlen,"number",groupID }\r
-    r mem set OK            { 0x0005 }\r
-    r mem set error         { 0x0006, errtype }\r
-                            where errtype: 0x7d: name is too long\r
-    s Mem status request    { 0x0007, memtype }\r
-    r Mem status recvd      { 0x0008, memtype, free, used }\r
-    r Mem status error recv { 0x0009, errtype }\r
-                            where errtype: 0x6f: mem status error\r
-                                           0x7d: invalid memory type\r
-                                           0x8d: waiting for pin\r
-    s Get caller group data { 0x0010, groupID }\r
-    r Get caller group data { 0x0011, groupID, size, "Name", ringtoneID, graphic_on?1:0, lenHI, lenLO, OTABitmap (72x14 logo) }\r
-    r Get call.group error  { 0x0012, reason }\r
-                            where reason: 0x7d: invalid location\r
-    s Set caller group data { 0x0013, groupID, size, "Name", ringtoneID, graphic_on?1:0, lenHI, lenLO, OTABitmap (72x14 logo) }\r
-    r Set caller group OK   { 0x0014 }\r
-    r Set call.group error  { 0x0015, reason }\r
-                            where reason: 0x7d: invalid location\r
-    s Get speed dial        { 0x0016, index(1-9) }\r
-    r Get speed dial OK     { 0x0017, mem.type, location }\r
-                            where mem.type: 0x02: ME        (== 0 if not stored)\r
-                                            0x03: SIM\r
-                                  location: memory location (== 0 if not stored)\r
-    r Get speed dial error  { 0x0018 }\r
-    s Set speed dial        { 0x0019, index(1-9), mem.type, location }\r
-    r Set speed dial OK     { 0x001a }\r
-    r Set speed dial error  { 0x001b }\r
-0x04: Phone Status\r
-    s Phone status          { 0x0001 }\r
-    r Phone status          { 0x0002, mode, signal str, ???, pwr, batt.level }\r
-                            where mode: 1: registered within the network\r
-                                        2: call in progress\r
-                                        3: waiting for pin\r
-                                        4: powered off\r
-                                  pwr: 1: AC/DC\r
-                                       2: battery\r
-    s Request Phone ID      { 0x0003 }\r
-    r RequestPhone ID       { 0x0004, 0x01,"NOKIA""imei", 0, "model", 0, "prod.code", 0, "HW", 0, "firmware", 0x00, 0x01 }\r
-0x05: Profile settings\r
-    s Set profile feature   { 0x0010, 1, nr, feature, a, 1 }\r
-                            where nr: see 0x05/0x0013\r
-                                  feature: see 0x05/0x0014\r
-                                  a: see 0x05/0x0014\r
-    r Set profile feat. OK  { 0x0011, 1 }\r
-    s Get profile feature   { 0x0013, 1, nr, feature, 1 }\r
-                            where nr is profile number (general=0, silent, meeting, outdoor, pager, car, headset=6)\r
-                                  feature: see 0x05/0x0014\r
-    r Get profile feature   { 0x0014, 1, nr, feature, 4, a, b, c, d, 1 }\r
-\r
-      Note: For Nokia 3330 settings num 0x00 .. 0x09 can be assigned\r
-            separately to each profile (0x00 .. 0x05), but rest are common\r
-            to all profiles.\r
-\r
-      Features and answers (in a, b, c, d form):\r
-         0x00: keypad notes (in Nokia 33x0 feature 0x00)\r
-               xx, 1, 0, 2\r
-                   xx: 0xff: off\r
-                       0x00: level 1\r
-                       0x01: level 2\r
-                       0x02: level 3\r
-         0x01: lights (? only in car profile) (what number in Nokia 3310 ?)\r
-               xx, 0, 0, 1\r
-                   xx: 0x00: off\r
-                       0x??: on (maybe 0x01)\r
-         0x02: incoming call alert (in Nokia 33x0 feature 0x01)\r
-               xx, 1, 0, 7\r
-                   xx: 1: ringing,\r
-                       2: beep once,\r
-                       3: unknown\r
-                       4: off\r
-                       5: ring once\r
-                       6: ascending\r
-                       7: caller groups (see feature #0x08)\r
-         0x03: ringing tone (in Nokia 33x0 feature 0x02)\r
-               xx, 0, 0, 0\r
-                   xx: 0x12: ring ring\r
-                       0x13: low\r
-                       etc\r
-         0x04: ringing volume (in Nokia 33x0 feature 0x03)\r
-               xx, 0, 0, 0\r
-                   xx: level 1 (0x06) - level 5 (0x0a)\r
-         0x05: message alert tone (in Nokia 33x0 feature 0x04)\r
-               xx, 1, 0, 4\r
-                   xx: 0: no tone\r
-                       1: standard\r
-                       2: special\r
-                       3: beep once\r
-                       4: ascending\r
-        0x06: vibration (in Nokia 33x0 feature 0x05)\r
-              xx: 0: off\r
-                  1: on\r
-                   2: Vibrate first\r
-         0x07: warning and game tones (in Nokia 33x0 feature 0x06 called warning tones)\r
-               xx, 4, 0, 4\r
-                   xx: 0xff: off\r
-                       0x04: on\r
-        0x07: screen saver - Nokia 33x0\r
-              xx: 1: on\r
-                  0: off\r
-         0x08: incoming caller groups (what number in Nokia 3310 ?)\r
-               xx, 0, 0, 0\r
-                   xx: 1: family\r
-                       2: VIP\r
-                       4: friends\r
-                       8: collegues\r
-                      16: other\r
-         0x08: Screen saver -> Timeout (Nokia 33xx):\r
-               0x00 = 5 sec\r
-               0x01 = 20 sec\r
-               ....\r
-\r
-         0x09: automatic answer (what number in Nokia 3310 ?)\r
-               xx, 0, 0, 1\r
-                   xx: 0x00: off\r
-                       0x01: on \r
-\r
-         0x09: Screen saver -> Screen saver (Nokia 33xx):\r
-               0x00 ... 0x0d = Number of picture image\r
-\r
-         0x0a: ???:\r
-          ...: ???:\r
-         0x15: ???: Read only?\r
-\r
-         0x16: ???:\r
-               0x00 = ???\r
-               0x01 = ???\r
-\r
-         0x17: Phone book -> Options -> Memory in use (Nokia 3330):\r
-               0x00 = Phone\r
-               0x01 = SIM card\r
-\r
-         0x18: Settings -> Phone settings -> Network selection (Nokia 3330):\r
-               0x00 = Automatic\r
-               0x01 = Manual\r
-\r
-         0x19  Settings -> Call settings -> Automatic redial(Nokia 3330):\r
-               0x00 = Off\r
-               0x01 = On\r
-\r
-         0x1a: Settings -> Call settings -> Speed dialling (Nokia 3330):\r
-               0x00 = Off\r
-               0x01 = On\r
-\r
-         0x1b: Settings -> Call settings -> Own number sending (Nokia 3330):\r
-               0x00 = Set by network\r
-               0x01 = On\r
-               0x02 = Off\r
-\r
-         0x1c: Settings -> Phone settings -> Cell info display (Nokia 3330):\r
-               0x00 = Off\r
-\r
-         0x1d: Phone book -> Options -> Type of view (Nokia 3330):\r
-               0x00 = Name list\r
-               0x01 = Name, number\r
-               0x02 = Large font\r
-\r
-         0x1e: Settings -> Phone settings -> Language (Nokia 3330):\r
-               0x00 = English\r
-               0x07 = Dansk\r
-               0x08 = Svenska\r
-               0x09 = Suomi\r
-               0x0c = Turcke\r
-               0x0e = Norsk\r
-               0x10 = Automatic\r
-\r
-         0x32 = Reboots ME (3330)\r
-\r
-         0x1f: ???: Read only? (3330)\r
-\r
-         0x20: Messages ->  Message settings -> Common -> Reply via same centre (N3330):\r
-               0x00 = No\r
-               0x01 = Yes\r
-\r
-         0x21: Messages ->  Message settings -> Common -> Delivery reports (3330):\r
-               0x00 = No\r
-               0x01 = Yes\r
-       \r
-         0x22: Clock -> Clock settings -> Show/Hide clock (3330):\r
-               0x00 = Show\r
-               0x01 = Hide\r
-\r
-         0x23: Clock -> Clock settings -> Time format (N3330):\r
-               0x00 = 24-hour\r
-               0x01 = 12-hour\r
-\r
-         0x24: Select profile (N3330):\r
-               0x00 = General\r
-               0x01 ... 0x05 = rest of them\r
-\r
-         0x25: ???: Read only? (N3330)\r
-\r
-         0x26: Settings -> Phone settings -> Confirm SIM service actions (N3330):\r
-               0x00 = Not asked\r
-               0x01 = Asked\r
-\r
-         0x27: Messages -> Write messages -> Options -> Dictionary (N3330):\r
-               0x00 = Off\r
-               0x01 = English\r
-               0x0a = Suomi\r
-\r
-         0x28: Messages -> Message settings -> Common -> Character support (N3330):\r
-               0x00 = Automatic\r
-               0x01 = GSM alphabet\r
-               0x02 = Unicode\r
-\r
-         0x29: Startup logo settings (N33x0):\r
-               0x00 = Your own uploaded logo\r
-               0x01 = Nokia\r
-               0x02 = Draft HUMAN technology(tm)\r
-               0x03 = Itineris\r
-\r
-         0x2a:???: 0x00 = ??? 0x01 = ??? (N3330)\r
-\r
-         0x2b: ???: 0x00 = ??? 0x01 = ??? (N3330)\r
-\r
-         0x2c: ???: Read only? (N3330)\r
-\r
-         0x2d: Clock -> Auto update of date and time (N3330):\r
-               0x00 = Off\r
-               0x01 = Confirm first\r
-               0x02 = On\r
-\r
-    s Get welcome message   { 0x0016 }\r
-    r Get welcome message   { 0x0017, no.of blocks, { block } * }\r
-                            where block: { id, {blockspecific} }\r
-                                  id: 1: startup logo { y, x, picture (coding?) }\r
-                                      2: welcome note { len, "message" }\r
-                                      3: operator msg { len, "message" }\r
-    s Set welcome message   { 0x0018, no.of blocks, { block } * }\r
-                            where block: see 0x05/0x0017\r
-    r Set welcome OK        { 0x0019, 0x01 }\r
-    s Get profile name      { 0x001a, nr }\r
-                            where nr: see 0x05/0x0013\r
-    r Profile name          { 0x001b, 1, 1, 3, flen, nr, len, {text} }\r
-                            where nr: see 0x05/0x0013\r
-                                  len: text length \r
-                                  flen len + len(nr, len) = len + 2\r
-                            Note: in Nokia 3310 name is in Unicode\r
-    s ???                   { 0x001c }\r
-    r ???                   { 0x001d, 0x93 }\r
-    s Set oplogo            { 0x0030, location, MCC1, MCC2, MNC, lenhi=0x00, lenlo=0x82, OTABitmap }\r
-    r Set oplogo OK         { 0x0031 }\r
-    r Set oplogo error      { 0x0032, reason }\r
-                            where reason: 0x7d invalid location\r
-    s Get oplogo            { 0x0033, location }\r
-                            where location: 1 (doesn't seem to matter)\r
-    r Get oplogo            { 0x0034, location, MCC1, MCC2, MNC, lenhi=0x00, lenlo=0x82, OTABitmap }\r
-    r Get oplogo error      { 0x0035, reason }\r
-                            where reason: 0x7d invalid location\r
-    s Set ringtone          { 0x0036, location,0x00,0x78, ringtone packed according to SM2.0}\r
-    r Set ringtone OK       { 0x0037 }\r
-    r Set ringtone error    { 0x0038, reason }\r
-                            where reason=0x7d, when not supported location\r
-    s Get services settings { 0x0080, setting (2 bytes) }\r
-                            where: setting: 0x02,0x00=Nokia access number 1\r
-                                            0x02,0x01=Operator access number 1\r
-                                            0x01,0x00=Personal bookmark 1 settings (name only ?)\r
-                                            0x01,0x01=?\r
-                                            0x02,0x02=?\r
-    r Get services sett.OK  { 0x0081, .... }\r
-    r Get services sett.err { 0x0082, 0x7b }\r
-0x06: Calling line restriction/Call forwarding etc\r
+       Pawel Kot <pkot@linuxnews.pl>
+       Marcin Wiacek (Marcin-Wiacek@TOPNET.PL)
+       ... and other members of gnokii mailing list
+            and authors of some WWW pages.
+
+The data provided is for information purposes only. 
+Some of the frames might be hazardous to your phone. Be careful!!! 
+We do not take any responsibility or liability for damages, etc.
+
+NOTE: this information isn't (and can't be) complete.  If you know anything
+about features not listed here or you noticed a bug in this list, please
+notify us via e-mail.  Thank you.
+
+Document describing frames used in
+GSM/PCN Nokia 6110 and derivatives (Nokia 6130, 6150, 6190, 5110, 5130, 5150,
+5190, 3210, 3310)
+Correct format is FBUS version 2/Direct IRDA/MBUS version 2
+(see nokia.txt for protocol details):
+
+ List:
+
+0x00: Monitoring values
+    r monitoring value      {+0x01, 0x01, block... }
+      where block: 0x5e, 0x05, 0x7a(?), 0xd0(?), 0x85(?), 0x02, percentHI, percentLO
+                      Battery percent level
+                   0x5e, 0x0c, 0x52(?), 0x4b(?), 0x6f(?), 0x02, voltageHI, voltageLO
+                      Battery standby voltage
+                   ............
+0x01: Call Information
+    s Make call             { 0x0001, "number", type, block }
+                              where type:
+                                      0x01 - data call
+                                      0x05 - voice call
+                                   block:
+                                     data call (non digital lines):
+                                       0x02,0x01,0x05,0x81,0x01,0x00,0x00,0x01,0x02,0x0a,
+                                       0x07,0xa2,0x88,0x81,0x21,0x15,0x63,0xa8,0x00,0x00
+                                     data call (digital lines):
+                                       0x02,0x01,0x05,0x81,0x01,0x00,0x00,0x01,0x02,0x0a,
+                                       0x07,0xa1,0x88,0x89,0x21,0x15,0x63,0xa0,0x00,0x06,
+                                       0x88,0x90,0x21,0x48,0x40,0xbb
+                                      voice call:
+                                       0x01, 0x01, 0x05, 0x81/0x00, sendnum, 0x00, 0x00, 0x01
+                                        where:
+                                          sendnum (own number sending):
+                                              0x01: preset (depends on network)
+                                              0x03: on
+                                              0x02: off
+    r Call going msg        { 0x0002 }
+    r Call in progress      { 0x0003, seqnr }
+    r Remote end hang up    { 0x0004, seqnr, ?, error (like in netmon in 39) }
+    r incoming call alert   { 0x0005, seqnr, numlen, "number", namelen, "name" }
+    s Answer call part 2    { 0x0006, seqnr, 0x00 }
+    r answered call         { 0x0007, seqnr }
+    s Hang up               { 0x0008, seqnr, 0x85 }
+    r terminated call       { 0x0009, seqnr }
+    r call msg              { 0x000a, seqnr }
+    r call held             { 0x0023, seqnr, 0x01 }
+    r call resumed          { 0x0025, seqnr, 0x01 }
+    r Send DTMF/voice call  { 0x0040}
+    s Answer call part 1    { 0x0042,0x05,0x01,0x07,0xa2,0x88,0x81,0x21,0x15,0x63,0xa8,0x00,0x00,
+                                    0x07,0xa3,0xb8,0x81,0x20,0x15,0x63,0x80 }
+    s Sent after issuing    { 0x0042,0x05,0x81,0x07,0xa1,0x88,0x89,0x21,0x15,0x63,0xa0,0x00,0x06,
+      data call                             0x88,0x90,0x21,0x48,0x40,0xbb,0x07,0xa3,
+      (digital lines)                0xb8,0x81,0x20,0x15,0x63,0x80 }
+    s Sent after issuing    { 0x0042,0x05,0x01,0x07,0xa2,0xc8,0x81,0x21,0x15,0x63,0xa8,0x00,0x00,
+      data call                             0x07,0xa3,0xb8,0x81,0x20,0x15,0x63,0x80,
+      (non digital lines)            0x01,0x60 }
+    s Send DTMF             { 0x0050, length, {ascii codes for DTMF}, 0x01 }
+    
+    Note:
+      to make data call (non digital lines):
+        1.send "Make call" for non digital lines
+       2.send "Sent after issuing data call (non digital lines)"
+      to make data call (digital lines):
+        1.send "Answer call part 1"
+       2.send "Sent after issuing data call (digital lines)"
+        3.send "Make call" for digital lines
+      to answer call:
+        1.send "Answer call part 1"
+        2.send "Answer call part 2"
+
+0x02: SMS handling
+    s Send SMS message      { 0x0001, 0x02, 0x00 (SEND REQUEST), ... }
+    r Message sent          { 0x0002 }
+    r Send failed           { 0x0003, ?, ?, error (like in netmon in 65)}    
+    s Get SMS message       { 0x0007, 0x02, location, 0x01, 0x64 }
+    s Initiate connection   { 0x000d, 0x00, 0x00, 0x02 }
+    r Initiate ACK          { 0x000e, 0x01 }
+    r SMS message received  { 0x0010, ...... } (whole message)
+    s Set CellBroadcast     { 0x0020, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01 }
+                                      for enable cell broadcast ?
+                                      0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
+                                      for disable cell broadcast ?
+    r Set CellBroadcast OK  { 0x0021, 0x01 }
+    r Read CellBroadcast    { 0x0023, ?, ?, ?, channel, ?, message... } ?
+    s Set SMS center        { 0x0030, 0x64, priority, checksum? ,0?, format,
+                                      validity, {DefaultRecipient no.}[12], 
+                                      {SMScenter no.}[12], {SMSC name}, 0x00}
+                              where tel.no.[12]: {len, type, {number(BCD)}}
+                                    type: 0x81: normal
+                                          0x91: + (international)
+                                          0xd0: alphanumeric
+                                    format: 0x00: text
+                                            0x22: fax
+                                            0x24: voice
+                                            0x25: ERMES
+                                            0x26: paging
+                                            0x31: X.400
+                                            0x32: email
+                                    validity: 0x0b:  1 hour
+                                              0x47:  6 hours
+                                              0xa7: 24 hours
+                                              0xa9: 72 hours
+                                              0xad:  1 week
+                                              0xff: max.time
+    r Set SMS center OK     { 0x0031 }
+    r Set SMS center error  { 0x0032, reason }
+    s Get SMS center        { 0x0033, 0x64, priority }
+    r SMS center received   { 0x0034, priority, checksum?, format, 0x00?,
+                                      validity, {DefaultRecipient no.}[12],
+                                      {SMScenter no.}[12], {SMSC name}, 0x00}
+                                      tel.no[12]: {len, type, {number(BCD)}} 
+                              where priority, checksum, type, validity,
+                                    tel.no.[12]: see 0x02/0x0030
+    r SMS center error recv { 0x0035, reason }
+0x03: Phonebook functions
+    s Get mem location      { 0x0001, memtype, location, 0 }
+                            where memory:
+                                     0x01: telephone and SIM phonebook (in one)
+                                     0x02: telephone phonebook
+                                     0x03: SIM phonebook
+                                     0x04: SIM fixdialling-phonebook (?)
+                                     0x05: Own numbers
+                                     0x07: Dialled numbers
+                                     0x08: Missed calls
+                                     0x09: Received calls
+                                     0x0b: voice mailbox (location not important)
+    r mem location recvd    { 0x0002, 0x00,namelen,"name",numlen,"number",groupID, 0x01?, yearLO, yearHI, month, day, hour, minute, sec. }
+                            Note: in 3310 all entries have null name ("feature" of bug ?)
+    r mem loc error recvd   { 0x0003, errtype }
+                            where errtype: 0x7d: invalid memory type
+    s Set mem location      { 0x0004, memtype,location,namelen,"Name",numlen,"number",groupID }
+    r mem set OK            { 0x0005 }
+    r mem set error         { 0x0006, errtype }
+                            where errtype: 0x7d: name is too long
+    s Mem status request    { 0x0007, memtype }
+    r Mem status recvd      { 0x0008, memtype, free, used }
+    r Mem status error recv { 0x0009, errtype }
+                            where errtype: 0x6f: mem status error
+                                           0x7d: invalid memory type
+                                           0x8d: waiting for pin
+    s Get caller group data { 0x0010, groupID }
+    r Get caller group data { 0x0011, groupID, size, "Name", ringtoneID, graphic_on?1:0, lenHI, lenLO, OTABitmap (72x14 logo) }
+    r Get call.group error  { 0x0012, reason }
+                            where reason: 0x7d: invalid location
+    s Set caller group data { 0x0013, groupID, size, "Name", ringtoneID, graphic_on?1:0, lenHI, lenLO, OTABitmap (72x14 logo) }
+    r Set caller group OK   { 0x0014 }
+    r Set call.group error  { 0x0015, reason }
+                            where reason: 0x7d: invalid location
+    s Get speed dial        { 0x0016, index(1-9) }
+    r Get speed dial OK     { 0x0017, mem.type, location }
+                            where mem.type: 0x02: ME        (== 0 if not stored)
+                                            0x03: SIM
+                                  location: memory location (== 0 if not stored)
+    r Get speed dial error  { 0x0018 }
+    s Set speed dial        { 0x0019, index(1-9), mem.type, location }
+    r Set speed dial OK     { 0x001a }
+    r Set speed dial error  { 0x001b }
+0x04: Phone Status
+    s Phone status          { 0x0001 }
+    r Phone status          { 0x0002, mode, signal str, ???, pwr, batt.level }
+                            where mode: 1: registered within the network
+                                        2: call in progress
+                                        3: waiting for pin
+                                        4: powered off
+                                  pwr: 1: AC/DC
+                                       2: battery
+    s Request Phone ID      { 0x0003 }
+    r RequestPhone ID       { 0x0004, 0x01,"NOKIA""imei", 0, "model", 0, "prod.code", 0, "HW", 0, "firmware", 0x00, 0x01 }
+0x05: Profile settings
+    s Set profile feature   { 0x0010, 1, nr, feature, a, 1 }
+                            where nr: see 0x05/0x0013
+                                  feature: see 0x05/0x0014
+                                  a: see 0x05/0x0014
+    r Set profile feat. OK  { 0x0011, 1 }
+    s Get profile feature   { 0x0013, 1, nr, feature, 1 }
+                            where nr is profile number (general=0, silent, meeting, outdoor, pager, car, headset=6)
+                                  feature: see 0x05/0x0014
+    r Get profile feature   { 0x0014, 1, nr, feature, 4, a, b, c, d, 1 }
+
+      Note: For Nokia 3330 settings num 0x00 .. 0x09 can be assigned
+            separately to each profile (0x00 .. 0x05), but rest are common
+            to all profiles.
+
+      Features and answers (in a, b, c, d form):
+         0x00: keypad notes (in Nokia 33x0 feature 0x00)
+               xx, 1, 0, 2
+                   xx: 0xff: off
+                       0x00: level 1
+                       0x01: level 2
+                       0x02: level 3
+         0x01: lights (? only in car profile) (what number in Nokia 3310 ?)
+               xx, 0, 0, 1
+                   xx: 0x00: off
+                       0x??: on (maybe 0x01)
+         0x02: incoming call alert (in Nokia 33x0 feature 0x01)
+               xx, 1, 0, 7
+                   xx: 1: ringing,
+                       2: beep once,
+                       3: unknown
+                       4: off
+                       5: ring once
+                       6: ascending
+                       7: caller groups (see feature #0x08)
+         0x03: ringing tone (in Nokia 33x0 feature 0x02)
+               xx, 0, 0, 0
+                   xx: 0x12: ring ring
+                       0x13: low
+                       etc
+         0x04: ringing volume (in Nokia 33x0 feature 0x03)
+               xx, 0, 0, 0
+                   xx: level 1 (0x06) - level 5 (0x0a)
+         0x05: message alert tone (in Nokia 33x0 feature 0x04)
+               xx, 1, 0, 4
+                   xx: 0: no tone
+                       1: standard
+                       2: special
+                       3: beep once
+                       4: ascending
+        0x06: vibration (in Nokia 33x0 feature 0x05)
+              xx: 0: off
+                  1: on
+                   2: Vibrate first
+         0x07: warning and game tones (in Nokia 33x0 feature 0x06 called warning tones)
+               xx, 4, 0, 4
+                   xx: 0xff: off
+                       0x04: on
+        0x07: screen saver - Nokia 33x0
+              xx: 1: on
+                  0: off
+         0x08: incoming caller groups (what number in Nokia 3310 ?)
+               xx, 0, 0, 0
+                   xx: 1: family
+                       2: VIP
+                       4: friends
+                       8: collegues
+                      16: other
+         0x08: Screen saver -> Timeout (Nokia 33xx):
+               0x00 = 5 sec
+               0x01 = 20 sec
+               ....
+
+         0x09: automatic answer (what number in Nokia 3310 ?)
+               xx, 0, 0, 1
+                   xx: 0x00: off
+                       0x01: on 
+
+         0x09: Screen saver -> Screen saver (Nokia 33xx):
+               0x00 ... 0x0d = Number of picture image
+
+         0x0a: ???:
+          ...: ???:
+         0x15: ???: Read only?
+
+         0x16: ???:
+               0x00 = ???
+               0x01 = ???
+
+         0x17: Phone book -> Options -> Memory in use (Nokia 3330):
+               0x00 = Phone
+               0x01 = SIM card
+
+         0x18: Settings -> Phone settings -> Network selection (Nokia 3330):
+               0x00 = Automatic
+               0x01 = Manual
+
+         0x19  Settings -> Call settings -> Automatic redial(Nokia 3330):
+               0x00 = Off
+               0x01 = On
+
+         0x1a: Settings -> Call settings -> Speed dialling (Nokia 3330):
+               0x00 = Off
+               0x01 = On
+
+         0x1b: Settings -> Call settings -> Own number sending (Nokia 3330):
+               0x00 = Set by network
+               0x01 = On
+               0x02 = Off
+
+         0x1c: Settings -> Phone settings -> Cell info display (Nokia 3330):
+               0x00 = Off
+
+         0x1d: Phone book -> Options -> Type of view (Nokia 3330):
+               0x00 = Name list
+               0x01 = Name, number
+               0x02 = Large font
+
+         0x1e: Settings -> Phone settings -> Language (Nokia 3330):
+               0x00 = English
+               0x07 = Dansk
+               0x08 = Svenska
+               0x09 = Suomi
+               0x0c = Turcke
+               0x0e = Norsk
+               0x10 = Automatic
+
+         0x32 = Reboots ME (3330)
+
+         0x1f: ???: Read only? (3330)
+
+         0x20: Messages ->  Message settings -> Common -> Reply via same centre (N3330):
+               0x00 = No
+               0x01 = Yes
+
+         0x21: Messages ->  Message settings -> Common -> Delivery reports (3330):
+               0x00 = No
+               0x01 = Yes
+       
+         0x22: Clock -> Clock settings -> Show/Hide clock (3330):
+               0x00 = Show
+               0x01 = Hide
+
+         0x23: Clock -> Clock settings -> Time format (N3330):
+               0x00 = 24-hour
+               0x01 = 12-hour
+
+         0x24: Select profile (N3330):
+               0x00 = General
+               0x01 ... 0x05 = rest of them
+
+         0x25: ???: Read only? (N3330)
+
+         0x26: Settings -> Phone settings -> Confirm SIM service actions (N3330):
+               0x00 = Not asked
+               0x01 = Asked
+
+         0x27: Messages -> Write messages -> Options -> Dictionary (N3330):
+               0x00 = Off
+               0x01 = English
+               0x0a = Suomi
+
+         0x28: Messages -> Message settings -> Common -> Character support (N3330):
+               0x00 = Automatic
+               0x01 = GSM alphabet
+               0x02 = Unicode
+
+         0x29: Startup logo settings (N33x0):
+               0x00 = Your own uploaded logo
+               0x01 = Nokia
+               0x02 = Draft HUMAN technology(tm)
+               0x03 = Itineris
+
+         0x2a:???: 0x00 = ??? 0x01 = ??? (N3330)
+
+         0x2b: ???: 0x00 = ??? 0x01 = ??? (N3330)
+
+         0x2c: ???: Read only? (N3330)
+
+         0x2d: Clock -> Auto update of date and time (N3330):
+               0x00 = Off
+               0x01 = Confirm first
+               0x02 = On
+
+    s Get welcome message   { 0x0016 }
+    r Get welcome message   { 0x0017, no.of blocks, { block } * }
+                            where block: { id, {blockspecific} }
+                                  id: 1: startup logo { y, x, picture (coding?) }
+                                      2: welcome note { len, "message" }
+                                      3: operator msg { len, "message" }
+    s Set welcome message   { 0x0018, no.of blocks, { block } * }
+                            where block: see 0x05/0x0017
+    r Set welcome OK        { 0x0019, 0x01 }
+    s Get profile name      { 0x001a, nr }
+                            where nr: see 0x05/0x0013
+    r Profile name          { 0x001b, 1, 1, 3, flen, nr, len, {text} }
+                            where nr: see 0x05/0x0013
+                                  len: text length 
+                                  flen len + len(nr, len) = len + 2
+                            Note: in Nokia 3310 name is in Unicode
+    s ???                   { 0x001c }
+    r ???                   { 0x001d, 0x93 }
+    s Set oplogo            { 0x0030, location, MCC1, MCC2, MNC, lenhi=0x00, lenlo=0x82, OTABitmap }
+    r Set oplogo OK         { 0x0031 }
+    r Set oplogo error      { 0x0032, reason }
+                            where reason: 0x7d invalid location
+    s Get oplogo            { 0x0033, location }
+                            where location: 1 (doesn't seem to matter)
+    r Get oplogo            { 0x0034, location, MCC1, MCC2, MNC, lenhi=0x00, lenlo=0x82, OTABitmap }
+    r Get oplogo error      { 0x0035, reason }
+                            where reason: 0x7d invalid location
+    s Set ringtone          { 0x0036, location,0x00,0x78, ringtone packed according to SM2.0}
+    r Set ringtone OK       { 0x0037 }
+    r Set ringtone error    { 0x0038, reason }
+                            where reason=0x7d, when not supported location
+    s Get services settings { 0x0080, setting (2 bytes) }
+                            where: setting: 0x02,0x00=Nokia access number 1
+                                            0x02,0x01=Operator access number 1
+                                            0x01,0x00=Personal bookmark 1 settings (name only ?)
+                                            0x01,0x01=?
+                                            0x02,0x02=?
+    r Get services sett.OK  { 0x0081, .... }
+    r Get services sett.err { 0x0082, 0x7b }
+0x06: Calling line restriction/Call forwarding etc
     r Get call divert       { 0x0001, 0x02, x, 0x00, divtype, 0x02, calltype, y, z, 0x0b, number, 0x00...0x00, timeout (byte 45) }
     s Set call divert       { 0x0001, 0x03, 0x00, divtype, calltype, 0x01, number(packed like in SMS), 0x00 ... 0x00,
                                       length of number (byte 29), 0x00 ... 0x00, timeout (byte 52), 0x00, 0x00, 0x00}
-                            NOTE: msglen=0x37\r
-                            where timeout:\r
-                              0x00: not set ?\r
-                              0x05: 5 second\r
-                              0x0a: 10 second\r
-                              0x0f: 15 second\r
-                              0x14: 20 second\r
-                              0x19: 25 second\r
-                              0x1e: 30 second\r
-                            where divtype:\r
-                              0x02: all diverts for all call types ?\r
-                                    Found only, when deactivate all diverts for all call types (with call type 0x00)\r
-                              0x15: all calls\r
-                              0x43: when busy\r
-                              0x3d: when not answered\r
-                              0x3e: if not reached\r
-                            calltype:\r
-                              0x00: all calls (data, voice, fax)\r
-                              0x0b: voice calls\r
-                              0x0d: fax calla\r
-                              0x19: data calls\r
-    s Deactivate calldiverts{ 0x0001, 0x04, 0x00, divtype, calltype, 0x00 }\r
-                            where divtype, calltype: see above\r
-    s Get call diverts      { 0x0001, 0x05, 0x00, divtype, calltype, 0x00 }\r
-                            where divtype, calltype: see above\r
-    r Get prepaid(?) info   { 0x0005, ?,?,?,length,message(packed like in 7bit SMS)}\r
-0x07:\r
-    s ???                   { 0x0022, ? (1&2 sounds OK) }\r
-    r ??? OK                { 0x0023, ?,?,? }\r
-    r ??? error             { 0x0024, reason }\r
-    s ???                   { 0x0025, ??? }\r
-    r ??? OK                { 0x0026, ??? }\r
-    r ??? error             { 0x0027, reason }\r
-0x08: Security codes\r
-    s Change code           { 0x0004, code, "current", 0x00, "new", 0x00 }\r
-                            where code: 1: security code (5 chars)\r
-                                        2: PIN (4 chars)\r
-                                        3: PIN2 (4 chars)\r
-                                        4: PUK (8 chars)\r
-                                        5: PUK2 (8 chars)\r
-    s Status request        { 0x0007, 0x01 }\r
-    r pin recvd             { 0x0008, accepted }\r
-                            where accepted: 0x0c (or 0x06): OK\r
-                                            code: waiting for (0x08/0x0004) code\r
-    s entering code         { 0x000a, code, "code", 0x00 }\r
-                            where code: see 0x08/0x0004\r
-0x09: SIM login\r
-    r login                 { 0x0080 }\r
-    r logout                { 0x0081 }\r
-0x0a: Network status\r
-    s Key duplication on/off{ 0x0044, on? 0x01: 0x02 }\r
-    s get used network      { 0x0070 }\r
-    r network registration  { 0x0071, ?,?,?,length,netstatus,netsel,cellIDH,cellIDL,lacH,lacL,netcode,netcode,netcode }\r
-0x0c: Keys\r
-    s Get key assignments   { 0x0040, 0x01 }\r
-    r Get key assignments   { 0x0041, {key '1'}, 0x00, {key '2'} ... {key '0'}, 0,0,0, {symbols}, 0 }\r
-                            where {key '0'} => ' ', '0'\r
-    s Press key             { 0x0042, press: 0x01; release: 0x02, button, 0x01 }\r
-                            where button: 0x01 - 0x09: 1-9\r
-                                          0x0a: 0\r
-                                          0x0b: #\r
-                                          0x0c: *\r
-                                          0x0d: Power\r
-                                          0x0e: Pick up phone\r
-                                          0x0f: Hang\r
-                                          0x10: Volume +\r
-                                          0x11: Volume -\r
-                                          0x17: Up\r
-                                          0x18: Down\r
-                                          0x19: Menu\r
-                                          0x1a: Names\r
-                                          0x1B onwards: don't know but they do produce\r
-                                               a beep and light up the keypad as if\r
-                                               a key had been pressed. \r
-    r Press key ack         { 0x0043, press/release/error(0x05) }\r
-    s ???                   { 0x0044 }\r
-    r ??? ack               { 0x0045, 0x01 }\r
-0x0d: Status\r
-    r Display               { 0x0050, 0x01, y, x, len, "string"(unicode) }\r
-    s Status request        { 0x0051 }\r
-    r Status                { 0x0052, no. of byte pairs, {byte pair} }\r
-                            where {byte pair}: {cmd, 1:off 2:on}\r
-                            cmd: 1: call in progress\r
-                                 2: ???\r
-                                 3: have unread sms\r
-                                 4: voice call active\r
-                                 5: fax call active\r
-                                 6: data call active\r
-                                 7: key lock active\r
-                                 8: is SMS storage full\r
-    s Display status        { 0x0053, 1:on 2:off }\r
-                            (will send displayed messages with x,y coordinates)\r
-    r Display status ack    { 0x0054, 1 }\r
-0x11: Phone clock & alarm\r
-    s set date and time     { 0x0060, 1,1,7,yearh,yearl,month,mday,hour,min,0x00 }\r
-    r date and time set     { 0x0061 }\r
-    s get date and time     { 0x0062 }\r
-    r date and time recvd   { 0x0063,date_set?,time_set?,?,?,yearh,yearl,month,mday,hour,min,second }\r
-                            where: date_set & time_set==0x01 - set\r
-                                                       0x00 - not set, ?,?,yearh,yearl,month,mday,hour,min,second\r
-                                                               not available in frame\r
-    s set alarm             { 0x006b, 1,32,3,0x02(on-off),hour,min,0x00 }\r
-    r alarm set             { 0x006c }\r
-    s get alarm             { 0x006d }\r
-    r alarm received        { 0x006e,?,?,?,?,alrm(==2:on),hour,min }\r
-0x12: Connect to NBS port (61xx only ?)\r
-    s Send                  {+0x0c, 0x01, UDH header, data}\r
-                            (without 0,1 header  -- for oplogo, cli, ringtone etc upload)\r
-                           where: UDH header = 0x06, 0x05, 0x04,destporth,destportl,srcporth,srcportl\r
-0x13: Calendar notes\r
-    s Write calendar note   { 0x0064, 0x01, 0x10, length, type, yearH, yearL, month, day, hour, timezone,\r
-                              alarm?(alarm yearH, yearL, month, day, hour, timezone): (0,0,0,0,0,0),\r
-                              textlen, "text" }\r
-    r Write cal.note report { 0x0065, return }\r
-                            where return: 0x01: ok\r
-                                          0x73: failure\r
-                                         0x81: calendar functions busy. Exit Calendar menu and try again\r
-    s Calendar notes set    { 0x0066... }\r
-    r Calendar note recvd   { 0x0067, 0x01, ?, length, type, yrH,yrL,mon,day,hr,tz,alrm yrH,yrL,mon,day,hr,tz,textlen, "text" }\r
-    r Cal.note recvd error  { 0x0067, err }\r
-                            where err: 0x93: not available\r
-                                      (0x01: OK)\r
-                                       other: error\r
-    s Delete cal.note       { 0x0068, location }\r
-    r Del. cal.note report  { 0x0069, err }\r
-                            where err: 0x01: OK\r
-                                       0x93: cannot delete\r
-0x14: SMS funcs\r
-    s Write SMS to SIM      { 0x0004, .... }\r
-    s Mark SMS as read      { 0x0007, 0x02, location, 0x00, 0x64 }\r
-    r SMS message frame rcv { 0x0008,subtype,?,num,?,BCD(smscenter)...} 20->type, 22->status\r
-                            where type: 0x06: delivery report \r
-                                  status: 0x00: delivered\r
-                                          0x30: pending\r
-                                          0x46: failed\r
-                                          0x09: reading failed\r
-                                  subtype: 0x02: invalid mem type\r
-                                           0x07: empty SMS location\r
-                                          0x0c: no access to memory (no PIN in card, etc.)\r
-    s Delete SMS message    { 0x000a, 0x02, location }\r
-    r Delete OK             { 0x000b }\r
-    s SMS status request    { 0x0036, 0x64 }\r
-    r SMS status            { 0x0037,?,?,?,?,?,?,msgnumber,unread }\r
-    r SMS status error      { 0x0038 }\r
-0x3f: WAP \r
-    s Enable WAP frames     { 0x0000}\r
-    r Enable WAP frames     { 0x0002, 0x01}\r
-\r
-    s  ??                   { 0x0003}\r
-    r  ??                   { 0x0004}\r
-\r
-    s Get WAP bookmark      { 0x0006, 0x00, location}\r
-                              where location: 0 - 14\r
-    r Get WAP bookmark      { 0x0007, 0x00, name_len, name(unicode),\r
-                              url_len, url(unicode), 0x01,0x80,0x00[7]}\r
-    r Get WAP bookmark err  { 0x0008, error }\r
-                              where error:\r
-                                0x00(?)invalid position\r
-                                0x01   user inside "Bookmarks" menu. Must leave it\r
-                                0x02   invalid/too high/empty location\r
-\r
-    s Set WAP bookmark      { 0x0009, 0xff, 0xff, name_len, name(unicode),\r
-                              url_len, url(unicode), 0x01,0x80,0x00[7] }\r
-                              Note: bookmark is added to the first free location.\r
-    r Set WAP bookmark OK   {+0x01, 0x36, 0x0a, block }\r
-                              where block:\r
-                                0x0a, location_of_just_written_bookmark(?),\r
-                                0x00, next_free_location(?)\r
-    r Set WAP bookmark err  {+0x01, 0x36, 0x0b, error }\r
-                              where error:\r
-                               0x04 - memory is full\r
-                               0x01 - we are in the bookmark menu\r
-                               0x00 - unknown reason for now ;(\r
-\r
-?   s Delete WAP bookmark   { 0x000c, 0x00, location }\r
-                              where: location = 0-14\r
-?   r Delete WAR bookmark OK{ 0x000d }\r
-?   r Delete WAPbookmark err{ 0x000e, 0x02 }\r
-\r
-    s ??                    { 0x000F}\r
-    r ??                    { 0x0010, 0x00}\r
-\r
-    s Get WAP settings 1    { 0x0015, location}\r
-                            where location: 0x00 - 0x05\r
-    r Get WAP settings 1 OK { 0x0016, title length, title (Unicode), URL length, URL(Unicode),con_type, ???[6 bytes],location, ???[5 bytes],security,...}\r
-                            where:\r
-                              con_type: 0x00 - temporary\r
-                                        0x01 - continuous\r
-                              location: when use "Get WAP settings 2 frame", must give it\r
-                              security: 0x00 = no, 0x01 = yes\r
-    r Get WAP settings 1 err{ 0x0017, error }\r
-                              where error:\r
-                                0x01   user inside "Settings" menu. Must leave it\r
-                                0x02   invalid/too high/empty location\r
-\r
-    s Get WAP settings 2    { 0x001b, location}\r
-                            where location: 0x00 - 0x1d (you get it in "Get WAP settings 1" frame)\r
-    r Get WAP settings 2 OK { 0x001c, 0x01, type, frame...}\r
-                            where type : 0x00 - SMS bearer\r
-                                           frame:\r
-                                             service_num_len, service_num (Unicode), server_num_len, server_num(Unicode)\r
-                                         0x01 - data bearer\r
-                                           frame:\r
-                                             auth, call_type, call_speed, ?, IP len, IP (Unicode), dialup len, dialup (Unicode),\r
-                                             user len, user (Unicode), password len, password (Unicode)\r
-                                             where auth: 0x00 - normal, 0x01 - secure\r
-                                                   call_type: 0x00 - analogue, 0x01 - ISDN\r
-                                                   call_speed: 0x00 - 9600, 0x01 - 14400\r
-                                        0x02 - USSD bearer\r
-                                          frame: type, service number len/IP len,service num (Unicode)/IP (Unicode),service code len,\r
-                                                 service code (Unicode)\r
-                                            where type: 0x01 - service number, 0x00 - IP\r
-    r Get WAP settings 2 err{ 0x001d,error}\r
-                            where: error=0x05    \r
-0x40: Security commands\r
-    s ???                   {+0x00, 0x00, 0x07, 0x11, 0x00, 0x10, 0x00, 0x00}\r
-                            This frame hangs phone (N3310 4.02). Meaning unknown !\r
+                            NOTE: msglen=0x37
+                            where timeout:
+                              0x00: not set ?
+                              0x05: 5 second
+                              0x0a: 10 second
+                              0x0f: 15 second
+                              0x14: 20 second
+                              0x19: 25 second
+                              0x1e: 30 second
+                            where divtype:
+                              0x02: all diverts for all call types ?
+                                    Found only, when deactivate all diverts for all call types (with call type 0x00)
+                              0x15: all calls
+                              0x43: when busy
+                              0x3d: when not answered
+                              0x3e: if not reached
+                            calltype:
+                              0x00: all calls (data, voice, fax)
+                              0x0b: voice calls
+                              0x0d: fax calla
+                              0x19: data calls
+    s Deactivate calldiverts{ 0x0001, 0x04, 0x00, divtype, calltype, 0x00 }
+                            where divtype, calltype: see above
+    s Get call diverts      { 0x0001, 0x05, 0x00, divtype, calltype, 0x00 }
+                            where divtype, calltype: see above
+    r Get prepaid(?) info   { 0x0005, ?,?,?,length,message(packed like in 7bit SMS)}
+0x07:
+    s ???                   { 0x0022, ? (1&2 sounds OK) }
+    r ??? OK                { 0x0023, ?,?,? }
+    r ??? error             { 0x0024, reason }
+    s ???                   { 0x0025, ??? }
+    r ??? OK                { 0x0026, ??? }
+    r ??? error             { 0x0027, reason }
+0x08: Security codes
+    s Change code           { 0x0004, code, "current", 0x00, "new", 0x00 }
+                            where code: 1: security code (5 chars)
+                                        2: PIN (4 chars)
+                                        3: PIN2 (4 chars)
+                                        4: PUK (8 chars)
+                                        5: PUK2 (8 chars)
+    s Status request        { 0x0007, 0x01 }
+    r pin recvd             { 0x0008, accepted }
+                            where accepted: 0x0c (or 0x06): OK
+                                            code: waiting for (0x08/0x0004) code
+    s entering code         { 0x000a, code, "code", 0x00 }
+                            where code: see 0x08/0x0004
+0x09: SIM login
+    r login                 { 0x0080 }
+    r logout                { 0x0081 }
+0x0a: Network status
+    s Key duplication on/off{ 0x0044, on? 0x01: 0x02 }
+    s get used network      { 0x0070 }
+    r network registration  { 0x0071, ?,?,?,length,netstatus,netsel,cellIDH,cellIDL,lacH,lacL,netcode,netcode,netcode }
+0x0c: Keys
+    s Get key assignments   { 0x0040, 0x01 }
+    r Get key assignments   { 0x0041, {key '1'}, 0x00, {key '2'} ... {key '0'}, 0,0,0, {symbols}, 0 }
+                            where {key '0'} => ' ', '0'
+    s Press key             { 0x0042, press: 0x01; release: 0x02, button, 0x01 }
+                            where button: 0x01 - 0x09: 1-9
+                                          0x0a: 0
+                                          0x0b: #
+                                          0x0c: *
+                                          0x0d: Power
+                                          0x0e: Pick up phone
+                                          0x0f: Hang
+                                          0x10: Volume +
+                                          0x11: Volume -
+                                          0x17: Up
+                                          0x18: Down
+                                          0x19: Menu
+                                          0x1a: Names
+                                          0x1B onwards: don't know but they do produce
+                                               a beep and light up the keypad as if
+                                               a key had been pressed. 
+    r Press key ack         { 0x0043, press/release/error(0x05) }
+    s ???                   { 0x0044 }
+    r ??? ack               { 0x0045, 0x01 }
+0x0d: Status
+    r Display               { 0x0050, 0x01, y, x, len, "string"(unicode) }
+    s Status request        { 0x0051 }
+    r Status                { 0x0052, no. of byte pairs, {byte pair} }
+                            where {byte pair}: {cmd, 1:off 2:on}
+                            cmd: 1: call in progress
+                                 2: ???
+                                 3: have unread sms
+                                 4: voice call active
+                                 5: fax call active
+                                 6: data call active
+                                 7: key lock active
+                                 8: is SMS storage full
+    s Display status        { 0x0053, 1:on 2:off }
+                            (will send displayed messages with x,y coordinates)
+    r Display status ack    { 0x0054, 1 }
+0x11: Phone clock & alarm
+    s set date and time     { 0x0060, 1,1,7,yearh,yearl,month,mday,hour,min,0x00 }
+    r date and time set     { 0x0061 }
+    s get date and time     { 0x0062 }
+    r date and time recvd   { 0x0063,date_set?,time_set?,?,?,yearh,yearl,month,mday,hour,min,second }
+                            where: date_set & time_set==0x01 - set
+                                                       0x00 - not set, ?,?,yearh,yearl,month,mday,hour,min,second
+                                                               not available in frame
+    s set alarm             { 0x006b, 1,32,3,0x02(on-off),hour,min,0x00 }
+    r alarm set             { 0x006c }
+    s get alarm             { 0x006d }
+    r alarm received        { 0x006e,?,?,?,?,alrm(==2:on),hour,min }
+0x12: Connect to NBS port (61xx only ?)
+    s Send                  {+0x0c, 0x01, UDH header, data}
+                            (without 0,1 header  -- for oplogo, cli, ringtone etc upload)
+                           where: UDH header = 0x06, 0x05, 0x04,destporth,destportl,srcporth,srcportl
+0x13: Calendar notes
+    s Write calendar note   { 0x0064, 0x01, 0x10, length, type, yearH, yearL, month, day, hour, timezone,
+                              alarm?(alarm yearH, yearL, month, day, hour, timezone): (0,0,0,0,0,0),
+                              textlen, "text" }
+    r Write cal.note report { 0x0065, return }
+                            where return: 0x01: ok
+                                          0x73: failure
+                                         0x81: calendar functions busy. Exit Calendar menu and try again
+    s Calendar notes set    { 0x0066... }
+    r Calendar note recvd   { 0x0067, 0x01, ?, length, type, yrH,yrL,mon,day,hr,tz,alrm yrH,yrL,mon,day,hr,tz,textlen, "text" }
+    r Cal.note recvd error  { 0x0067, err }
+                            where err: 0x93: not available
+                                      (0x01: OK)
+                                       other: error
+    s Delete cal.note       { 0x0068, location }
+    r Del. cal.note report  { 0x0069, err }
+                            where err: 0x01: OK
+                                       0x93: cannot delete
+0x14: SMS funcs
+    s Write SMS to SIM      { 0x0004, .... }
+    s Mark SMS as read      { 0x0007, 0x02, location, 0x00, 0x64 }
+    r SMS message frame rcv { 0x0008,subtype,?,num,?,BCD(smscenter)...} 20->type, 22->status
+                            where type: 0x06: delivery report 
+                                  status: 0x00: delivered
+                                          0x30: pending
+                                          0x46: failed
+                                          0x09: reading failed
+                                  subtype: 0x02: invalid mem type
+                                           0x07: empty SMS location
+                                          0x0c: no access to memory (no PIN in card, etc.)
+    s Delete SMS message    { 0x000a, 0x02, location }
+    r Delete OK             { 0x000b }
+    s SMS status request    { 0x0036, 0x64 }
+    r SMS status            { 0x0037,?,?,?,?,?,?,msgnumber,unread }
+    r SMS status error      { 0x0038 }
+0x3f: WAP 
+    s Enable WAP frames     { 0x0000}
+    r Enable WAP frames     { 0x0002, 0x01}
+
+    s  ??                   { 0x0003}
+    r  ??                   { 0x0004}
+
+    s Get WAP bookmark      { 0x0006, 0x00, location}
+                              where location: 0 - 14
+    r Get WAP bookmark      { 0x0007, 0x00, name_len, name(unicode),
+                              url_len, url(unicode), 0x01,0x80,0x00[7]}
+    r Get WAP bookmark err  { 0x0008, error }
+                              where error:
+                                0x00(?)invalid position
+                                0x01   user inside "Bookmarks" menu. Must leave it
+                                0x02   invalid/too high/empty location
+
+    s Set WAP bookmark      { 0x0009, 0xff, 0xff, name_len, name(unicode),
+                              url_len, url(unicode), 0x01,0x80,0x00[7] }
+                              Note: bookmark is added to the first free location.
+    r Set WAP bookmark OK   {+0x01, 0x36, 0x0a, block }
+                              where block:
+                                0x0a, location_of_just_written_bookmark(?),
+                                0x00, next_free_location(?)
+    r Set WAP bookmark err  {+0x01, 0x36, 0x0b, error }
+                              where error:
+                               0x04 - memory is full
+                               0x01 - we are in the bookmark menu
+                               0x00 - unknown reason for now ;(
+
+?   s Delete WAP bookmark   { 0x000c, 0x00, location }
+                              where: location = 0-14
+?   r Delete WAR bookmark OK{ 0x000d }
+?   r Delete WAPbookmark err{ 0x000e, 0x02 }
+
+    s ??                    { 0x000F}
+    r ??                    { 0x0010, 0x00}
+
+    s Get WAP settings 1    { 0x0015, location}
+                            where location: 0x00 - 0x05
+    r Get WAP settings 1 OK { 0x0016, title length, title (Unicode), URL length, URL(Unicode),con_type, ???[6 bytes],location, ???[5 bytes],security,...}
+                            where:
+                              con_type: 0x00 - temporary
+                                        0x01 - continuous
+                              location: when use "Get WAP settings 2 frame", must give it
+                              security: 0x00 = no, 0x01 = yes
+    r Get WAP settings 1 err{ 0x0017, error }
+                              where error:
+                                0x01   user inside "Settings" menu. Must leave it
+                                0x02   invalid/too high/empty location
+
+    s Get WAP settings 2    { 0x001b, location}
+                            where location: 0x00 - 0x1d (you get it in "Get WAP settings 1" frame)
+    r Get WAP settings 2 OK { 0x001c, 0x01, type, frame...}
+                            where type : 0x00 - SMS bearer
+                                           frame:
+                                             service_num_len, service_num (Unicode), server_num_len, server_num(Unicode)
+                                         0x01 - data bearer
+                                           frame:
+                                             auth, call_type, call_speed, ?, IP len, IP (Unicode), dialup len, dialup (Unicode),
+                                             user len, user (Unicode), password len, password (Unicode)
+                                             where auth: 0x00 - normal, 0x01 - secure
+                                                   call_type: 0x00 - analogue, 0x01 - ISDN
+                                                   call_speed: 0x00 - 9600, 0x01 - 14400
+                                        0x02 - USSD bearer
+                                          frame: type, service number len/IP len,service num (Unicode)/IP (Unicode),service code len,
+                                                 service code (Unicode)
+                                            where type: 0x01 - service number, 0x00 - IP
+    r Get WAP settings 2 err{ 0x001d,error}
+                            where: error=0x05    
+0x40: Security commands
+    s ???                   {+0x00, 0x00, 0x07, 0x11, 0x00, 0x10, 0x00, 0x00}
+                            This frame hangs phone (N3310 4.02). Meaning unknown !
     s Open simlock 1        { 0x02, 0x03, 0x1f, 0x11, 0x01, 0x01, 0x10, 0x00}
     r Open simlock 1        { 0x02 }
-    s ???(N6150)            { 0x08, 0x00 }\r
-    r ???(N6150)            { 0x08 }\r
-    s Enable extended cmds  { 0x64, cmd }\r
-                            where cmd: 0x00: off\r
-                                       0x01: on\r
+    s ???(N6150)            { 0x08, 0x00 }
+    r ???(N6150)            { 0x08 }
+    s Enable extended cmds  { 0x64, cmd }
+                            where cmd: 0x00: off
+                                       0x01: on
                                       0x02: enter service mode ?
-                                       0x03: reset (doesn't ask for PIN again)\r
-                                       0x04: reset (PIN is requested)\r
-                                             In 5110 makes reset without PIN\r
-                                       0x06: CONTACT SERVICE!!! Don't try it!\r
+                                       0x03: reset (doesn't ask for PIN again)
+                                       0x04: reset (PIN is requested)
+                                             In 5110 makes reset without PIN
+                                       0x06: CONTACT SERVICE!!! Don't try it!
     s Reset phone settings  { 0x65, value, 0x00 }
                             where value: 0x08 - reset UI (User Interface) settings
                                         0x38 - reset UI, SCM and call counters
     r Reset phone settings  { 0x65, 0x00 }
-    s Get IMEI              { 0x66 }\r
-    r Get IMEI              { 0x66, 0x01, IMEI, 0x00}\r
-    s (ACD Readings)?(N6150 { 0x68 }\r
-    r (ACD Readings)?(N6150 { 0x68, ... }\r
-    s Get Product Profile\r
-      Settings              { 0x6a}\r
-    r Get Product Profile\r
-      Settings              { 0x6a, 4bytes with Product Profile Settings }\r
-    s Set Product Profile\r
-      Settings              { 0x6b, 4bytes with Product Profile Settings }\r
-    r Set Product Profile\r
-      Settings OK ?         { 0x6b }\r
-    s Get code              { 0x6e, code }\r
-                            where code: see 0x08/0x0004 (only sec.code is allowed)\r
-    r Get code              { 0x6e, code, allowed, allowed? (sec code (text)) }\r
-                            where code: see 0x08/0x0004\r
-                                  allowed: 0: no\r
-                                           1: yes\r
+    s Get IMEI              { 0x66 }
+    r Get IMEI              { 0x66, 0x01, IMEI, 0x00}
+    s (ACD Readings)?(N6150 { 0x68 }
+    r (ACD Readings)?(N6150 { 0x68, ... }
+    s Get Product Profile
+      Settings              { 0x6a}
+    r Get Product Profile
+      Settings              { 0x6a, 4bytes with Product Profile Settings }
+    s Set Product Profile
+      Settings              { 0x6b, 4bytes with Product Profile Settings }
+    r Set Product Profile
+      Settings OK ?         { 0x6b }
+    s Get code              { 0x6e, code }
+                            where code: see 0x08/0x0004 (only sec.code is allowed)
+    r Get code              { 0x6e, code, allowed, allowed? (sec code (text)) }
+                            where code: see 0x08/0x0004
+                                  allowed: 0: no
+                                           1: yes
     s Set code              { 0x6f, code, sec code(text), 0x00 }
-                            where code: see 0x08/0x0004\r
-    s Start monitoring      { 0x70, block }\r
-                            where block(N6150):\r
-                              0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,\r
-                              0xff,0xff,0xff,0xff,0xff,0xf9,0x76,0x65,0x20,0x00,\r
-                              0x00,0x00,0x00,0x00,0x18,0x26,0x15,0x7d,0x0a,0x00,\r
-                              0xf5,0x82,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,\r
-                              0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x77,0x80,\r
-                              0x77,0x80,0xf2,0x82,0x20,0x20,0x20,0x20,0x20,0x20,\r
-                              0x20,0x20,0x20,0x20\r
-                            This block enables probably all possible monitorred parameters.\r
-                            After it phone sends 0x00 message type values\r
-    s Break monitoring      { 0x71 }\r
-    r Break monitoring      { 0x71 }\r
-    s Reset Permanent\r
-      Counters (nm->test36) { 0x74, 0x01, 0x01, 0x0e }\r
-    r Reset Permanent\r
-      Counters (nm->test36) { 0x74 }\r
-    s Call commands         { 0x7c, block }\r
-                            where where: command, (values)\r
-                                 command: 0x01\r
-                                     values: number(ASCII), 0x00 - makes voice call\r
-                                 command: 0x02 - answer call\r
-                                 command: 0x03 - release call\r
-    r Call commands         { 0x7c, command }\r
-    s Netmonitor            { 0x7e, field }\r
-                            where: field: 00: next\r
-                                          F0: reset\r
-                                          F1: off\r
-                                          F2: field test menus\r
-                                          F3: developer menus\r
+                            where code: see 0x08/0x0004
+    s Start monitoring      { 0x70, block }
+                            where block(N6150):
+                              0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+                              0xff,0xff,0xff,0xff,0xff,0xf9,0x76,0x65,0x20,0x00,
+                              0x00,0x00,0x00,0x00,0x18,0x26,0x15,0x7d,0x0a,0x00,
+                              0xf5,0x82,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+                              0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x77,0x80,
+                              0x77,0x80,0xf2,0x82,0x20,0x20,0x20,0x20,0x20,0x20,
+                              0x20,0x20,0x20,0x20
+                            This block enables probably all possible monitorred parameters.
+                            After it phone sends 0x00 message type values
+    s Break monitoring      { 0x71 }
+    r Break monitoring      { 0x71 }
+    s Reset Permanent
+      Counters (nm->test36) { 0x74, 0x01, 0x01, 0x0e }
+    r Reset Permanent
+      Counters (nm->test36) { 0x74 }
+    s Call commands         { 0x7c, block }
+                            where where: command, (values)
+                                 command: 0x01
+                                     values: number(ASCII), 0x00 - makes voice call
+                                 command: 0x02 - answer call
+                                 command: 0x03 - release call
+    r Call commands         { 0x7c, command }
+    s Netmonitor            { 0x7e, field }
+                            where: field: 00: next
+                                          F0: reset
+                                          F1: off
+                                          F2: field test menus
+                                          F3: developer menus
     s Open simlock 2        { 0x81, 0x01, locknumber, 0x10, 0x10, 0x10, 0x10, 0x10 }
                             Note: sets simlock type to factory?
                            where locknumber: 1,2,4,8
@@ -709,151 +709,151 @@ Correct format is FBUS version 2/Direct IRDA/MBUS version 2
     s Close simlock         { 0x82, 0x01, locknumber, 0x00, 0x00, locksinfo(lock1,4,2,3), 0x00 }
                             where locknumber: 1,2,4,8
     r Close simlock         { 0x82, the rest like in 0x40/0x8a }
-    s Get simlock info      { 0x8a, 0x00}\r
-    r Get simlock info      { 0x8a, 0x00, 0x01, lockstype, locksclosed, 0x00, 0x00, locksinfo(lock1,4,2,3), counter1,counter2,counter4,counter4,0x00 }\r
-                            where: lockstype:   bit1,bit2,bit3,bit4 - if set, selected lock is user lock\r
-                                   locksclosed: bit1,bit2,bit3,bit4 - if set, selected lock is closed\r
-                                   counter1 - counter4: counters for locks\r
-    s Set downloaded OpName { 0x8b, 0x00, MCC1, MCC2, MNC, Name, 0x00 }\r
-    r SetdownloadedOpNameOK?{ 0x8b, 0x00, 0x01 }\r
-    s Get downloaded OpName { 0x8c, 0x00 }\r
-    r Get downloaded OpName { 0x8c, 0x00, 0x01, MCC1, MCC2, MNC, Name, 0x00,...}\r
-    s Buzzer pitch          { 0x8f, volume, hzLO, hzHI }\r
-                            if volume and hz is 0, it's off\r
-    r Buzzer pitch          { 0x8f}\r
-    s ACD Readings ?        { 0x91, parameter?(0x02,0x03,0x04,0x05,0x07) }\r
-    r ACD Readings ?        { 0x91, parameter?, value? }\r
+    s Get simlock info      { 0x8a, 0x00}
+    r Get simlock info      { 0x8a, 0x00, 0x01, lockstype, locksclosed, 0x00, 0x00, locksinfo(lock1,4,2,3), counter1,counter2,counter4,counter4,0x00 }
+                            where: lockstype:   bit1,bit2,bit3,bit4 - if set, selected lock is user lock
+                                   locksclosed: bit1,bit2,bit3,bit4 - if set, selected lock is closed
+                                   counter1 - counter4: counters for locks
+    s Set downloaded OpName { 0x8b, 0x00, MCC1, MCC2, MNC, Name, 0x00 }
+    r SetdownloadedOpNameOK?{ 0x8b, 0x00, 0x01 }
+    s Get downloaded OpName { 0x8c, 0x00 }
+    r Get downloaded OpName { 0x8c, 0x00, 0x01, MCC1, MCC2, MNC, Name, 0x00,...}
+    s Buzzer pitch          { 0x8f, volume, hzLO, hzHI }
+                            if volume and hz is 0, it's off
+    r Buzzer pitch          { 0x8f}
+    s ACD Readings ?        { 0x91, parameter?(0x02,0x03,0x04,0x05,0x07) }
+    r ACD Readings ?        { 0x91, parameter?, value? }
     s Sleep mode test       { 0x92, 0x00, 0x00, howlong(2 bytes), enable }
                             where: enable == 0x01 - enable after test
                                             0x00 - don't enable after test
                                   howlong (ms) = 0x07, 0xd0 = 2000
-    s ???(N6150)            { 0x98, 0x00 }\r
-    r ???(N6150)            { 0x98, 0x00, 0x04 }\r
-    s Get bin ringtone      { 0x9e, location }\r
-                            where: location=0,1,etc.\r
-    r Get bin ringtone      { 0x9e, location, error, contents... }\r
-                            where location=0,1,etc.\r
-                                  error=0x0a, ringtone NOT available\r
-                                        0x00, OK\r
-    s Set bin ringtone      { 0xa0, location, 0x00, contenst... }\r
-                            where: location=0,1,etc.\r
-    r Set bin ringtone      { 0xa0, location, error }\r
-                              where location=0,1,etc.\r
-                                    error=0x0a, ringtone NOT set\r
-                                          0x00, ringtone set OK\r
-    r Get MSid              { 0xb5, 0x01, 0x2f, msid, 0x25 }\r
-    s Get info about phone  { 0xc8, 0x01 }\r
-    r Get info about phone  { 0xc8, 0x01, 0x00, "V ", "firmware", 0x0a, "firmware date", 0x0a, "model", 0x0a, "(c) NMP.", 0x00 }\r
-    s Get MCU SW Checksum   { 0xc8, 0x02 }\r
-    r Get MCU SW Checksum   { 0xc8, 0x02, 0x00, checksum (4 bytes),0x00 }\r
-    s DPS External SW       { 0xc7, 0x03 }\r
-    r DSP External SW       { 0xc7, 0x03, 0x00, string,0x00 }\r
-    s Get HW                { 0xc8, 0x05 }\r
-    r Get HW                { 0xc8, 0x05, 0x00, HW version (4 bytes), 0x00 }\r
-    s Get "Made" Date       { 0xc8, 0x05 }\r
-    r Get "Made" Date       { 0xc8, 0x05, 0x00, date(4 bytes), 0x00 }\r
-    s Get DSP Internal SW   { 0xc8, 0x09 }\r
-    r Get DSP Internal SW   { 0xc8, 0x09, 0x00, version (1 bytes), 0x00 }\r
-    s Get PCI version       { 0xc8, 0x0b }\r
-    r Get PCI version       { 0xc8, 0x0b, 0x00, version, 0x00 }\r
-    s Get system ASIC       { 0xc8, 0x0c }\r
-    r Get system ASIC       { 0xc8, 0x0c, 0x00, string, 0x00 }\r
-    s Get COBBA             { 0xc8, 0x0d }\r
-    r Get COBBA             { 0xc8, 0x0d, 0x00, string, 0x00 }\r
-    s Get PLUSSA            { 0xc8, 0x0e }\r
-    r Get PLUSSA            { 0xc8, 0x0e, available, 0x00 }\r
-                            where available: 0x01: not available\r
-    s Get CCONT             { 0xc8, 0x0f }\r
-    r Get CCONT             { 0xc8, 0x0f, available, 0x00 }\r
-                            where available: 0x01: not available\r
-    s Get PPM version       { 0xc8, 0x10 }\r
-    r Get PPM version       { 0xc8, 0x10, 0x00, "V ", "firmware", 0x0a, "firmware date", 0x0a, "model", 0x0a, "(c) NMP.", 0x00 }\r
-    s Get PPM info          { 0xc8, 0x12 }\r
-    r Get PPM info          { 0xc8, 0x12, 0x00, PPM version ("B", "C", etc.), 0x00 }\r
-    s Set HW version        { 0xc9, 0x05, version, 0x00 }\r
-    s Get Product Code      { 0xca, 0x01 }\r
-    r Get Product Code      { 0xca, 0x01, 0x00, number, 0x00 }\r
-    s Get Order Number      { 0xca, 0x02 }\r
-    r Get Order Number      { 0xca, 0x02, 0x00, string, 0x00 }\r
-    s Get Prod.Ser.Number   { 0xca, 0x03 }\r
-    r Get Prod.Ser.Number   { 0xca, 0x03, 0x00, number, 0x00 }\r
-    s Get Basic Prod.Code   { 0xca, 0x04 }\r
-    r Get Basic Prod.Code   { 0xca, 0x04, 0x00, number, 0x00 }\r
-    s Set Product Code      { 0xcb, 0x01, product code, 0x00 }\r
-    s Set Order Number      { 0xcb, 0x02, number, 0x00 }\r
-    s Set Prod.Ser.Number   { 0xcb, 0x03, number, 0x00 }\r
-    s Get (original ?)IMEI  { 0xcc, 0x01 }\r
-    r Get (original ?)IMEI  { 0xcc, 0x01, IMEI, 0x00 }\r
-    s Get Manufacture Month { 0xcc, 0x02 }\r
-    r Get Manufacture Month { 0xcc, 0x02, 0x00, string, 0x00 }\r
-    s Get Purchare date     { 0xcc, 0x04 }\r
-    r Get Purchare date     { 0xcc, 0x04, 0x00, string, 0x00 }\r
-    s Set "Made" date       { 0xcd, 0x02, string, 0x00 }\r
-    s Make "all" phone tests{ 0xce,0x1d,0xfe,0x23,0x00,0x00}\r
-    s Make one phone test   { 0xce,0x1d,num1,num2,num3,num4}\r
-                            Where num1-num4: 0x02,0x00,0x00,0x00;\r
-                                             0x04,0x00,0x00,0x00;\r
-                                             0x08,0x00,0x00,0x00;\r
-                                             0x10,0x00,0x00,0x00;\r
-                                             0x20,0x00,0x00,0x00;\r
-                                             0x40,0x00,0x00,0x00;\r
-                                             0x80,0x00,0x00,0x00;\r
-                                             0x00,0x01,0x00,0x00;\r
-                                             0x00,0x02,0x00,0x00;\r
-                                             0x00,0x04,0x00,0x00; - "Power off"\r
-                                               No test for "Security data"\r
-                                             0x00,0x10,0x00,0x00;\r
-                                             0x00,0x20,0x00,0x00;\r
-                                             0x00,0x40,0x00,0x00;\r
-                                             0x00,0x80,0x00,0x00;\r
-                                             0x00,0x00,0x01,0x00;\r
-                                             ....\r
-                                             0x00,0x00,0x10,0x00;\r
-    s Result of phone tests { 0xcf }\r
-    r Result of phone tests { 0xcf, number of tests, results of next tests }\r
-    s ???                   { 0xd1 }\r
-    r ???(N5110)            { 0xd1, 0x00, 0x1d, 0x00, 0x01, 0x08, 0x00 }\r
-    s LCD Test              { 0xd3, value }\r
-                            where value: 0x03, 0x02 - 1'st test\r
-                                         0x03, 0x01 - 2'nd test\r
-                                         0x02, 0x03 - clears screen\r
-    s ACD Readings(N6150)?  { 0xd4, 0x02, 0x00, 0x02, 0x00, 0x0e, 0x01}\r
-    r ACD Readings(N6150)?  { 0xd4, 0x02, 0x00, 0x02, 0x00, 0x0e, 0x01, ?}\r
+    s ???(N6150)            { 0x98, 0x00 }
+    r ???(N6150)            { 0x98, 0x00, 0x04 }
+    s Get bin ringtone      { 0x9e, location }
+                            where: location=0,1,etc.
+    r Get bin ringtone      { 0x9e, location, error, contents... }
+                            where location=0,1,etc.
+                                  error=0x0a, ringtone NOT available
+                                        0x00, OK
+    s Set bin ringtone      { 0xa0, location, 0x00, contenst... }
+                            where: location=0,1,etc.
+    r Set bin ringtone      { 0xa0, location, error }
+                              where location=0,1,etc.
+                                    error=0x0a, ringtone NOT set
+                                          0x00, ringtone set OK
+    r Get MSid              { 0xb5, 0x01, 0x2f, msid, 0x25 }
+    s Get info about phone  { 0xc8, 0x01 }
+    r Get info about phone  { 0xc8, 0x01, 0x00, "V ", "firmware", 0x0a, "firmware date", 0x0a, "model", 0x0a, "(c) NMP.", 0x00 }
+    s Get MCU SW Checksum   { 0xc8, 0x02 }
+    r Get MCU SW Checksum   { 0xc8, 0x02, 0x00, checksum (4 bytes),0x00 }
+    s DPS External SW       { 0xc7, 0x03 }
+    r DSP External SW       { 0xc7, 0x03, 0x00, string,0x00 }
+    s Get HW                { 0xc8, 0x05 }
+    r Get HW                { 0xc8, 0x05, 0x00, HW version (4 bytes), 0x00 }
+    s Get "Made" Date       { 0xc8, 0x05 }
+    r Get "Made" Date       { 0xc8, 0x05, 0x00, date(4 bytes), 0x00 }
+    s Get DSP Internal SW   { 0xc8, 0x09 }
+    r Get DSP Internal SW   { 0xc8, 0x09, 0x00, version (1 bytes), 0x00 }
+    s Get PCI version       { 0xc8, 0x0b }
+    r Get PCI version       { 0xc8, 0x0b, 0x00, version, 0x00 }
+    s Get system ASIC       { 0xc8, 0x0c }
+    r Get system ASIC       { 0xc8, 0x0c, 0x00, string, 0x00 }
+    s Get COBBA             { 0xc8, 0x0d }
+    r Get COBBA             { 0xc8, 0x0d, 0x00, string, 0x00 }
+    s Get PLUSSA            { 0xc8, 0x0e }
+    r Get PLUSSA            { 0xc8, 0x0e, available, 0x00 }
+                            where available: 0x01: not available
+    s Get CCONT             { 0xc8, 0x0f }
+    r Get CCONT             { 0xc8, 0x0f, available, 0x00 }
+                            where available: 0x01: not available
+    s Get PPM version       { 0xc8, 0x10 }
+    r Get PPM version       { 0xc8, 0x10, 0x00, "V ", "firmware", 0x0a, "firmware date", 0x0a, "model", 0x0a, "(c) NMP.", 0x00 }
+    s Get PPM info          { 0xc8, 0x12 }
+    r Get PPM info          { 0xc8, 0x12, 0x00, PPM version ("B", "C", etc.), 0x00 }
+    s Set HW version        { 0xc9, 0x05, version, 0x00 }
+    s Get Product Code      { 0xca, 0x01 }
+    r Get Product Code      { 0xca, 0x01, 0x00, number, 0x00 }
+    s Get Order Number      { 0xca, 0x02 }
+    r Get Order Number      { 0xca, 0x02, 0x00, string, 0x00 }
+    s Get Prod.Ser.Number   { 0xca, 0x03 }
+    r Get Prod.Ser.Number   { 0xca, 0x03, 0x00, number, 0x00 }
+    s Get Basic Prod.Code   { 0xca, 0x04 }
+    r Get Basic Prod.Code   { 0xca, 0x04, 0x00, number, 0x00 }
+    s Set Product Code      { 0xcb, 0x01, product code, 0x00 }
+    s Set Order Number      { 0xcb, 0x02, number, 0x00 }
+    s Set Prod.Ser.Number   { 0xcb, 0x03, number, 0x00 }
+    s Get (original ?)IMEI  { 0xcc, 0x01 }
+    r Get (original ?)IMEI  { 0xcc, 0x01, IMEI, 0x00 }
+    s Get Manufacture Month { 0xcc, 0x02 }
+    r Get Manufacture Month { 0xcc, 0x02, 0x00, string, 0x00 }
+    s Get Purchare date     { 0xcc, 0x04 }
+    r Get Purchare date     { 0xcc, 0x04, 0x00, string, 0x00 }
+    s Set "Made" date       { 0xcd, 0x02, string, 0x00 }
+    s Make "all" phone tests{ 0xce,0x1d,0xfe,0x23,0x00,0x00}
+    s Make one phone test   { 0xce,0x1d,num1,num2,num3,num4}
+                            Where num1-num4: 0x02,0x00,0x00,0x00;
+                                             0x04,0x00,0x00,0x00;
+                                             0x08,0x00,0x00,0x00;
+                                             0x10,0x00,0x00,0x00;
+                                             0x20,0x00,0x00,0x00;
+                                             0x40,0x00,0x00,0x00;
+                                             0x80,0x00,0x00,0x00;
+                                             0x00,0x01,0x00,0x00;
+                                             0x00,0x02,0x00,0x00;
+                                             0x00,0x04,0x00,0x00; - "Power off"
+                                               No test for "Security data"
+                                             0x00,0x10,0x00,0x00;
+                                             0x00,0x20,0x00,0x00;
+                                             0x00,0x40,0x00,0x00;
+                                             0x00,0x80,0x00,0x00;
+                                             0x00,0x00,0x01,0x00;
+                                             ....
+                                             0x00,0x00,0x10,0x00;
+    s Result of phone tests { 0xcf }
+    r Result of phone tests { 0xcf, number of tests, results of next tests }
+    s ???                   { 0xd1 }
+    r ???(N5110)            { 0xd1, 0x00, 0x1d, 0x00, 0x01, 0x08, 0x00 }
+    s LCD Test              { 0xd3, value }
+                            where value: 0x03, 0x02 - 1'st test
+                                         0x03, 0x01 - 2'nd test
+                                         0x02, 0x03 - clears screen
+    s ACD Readings(N6150)?  { 0xd4, 0x02, 0x00, 0x02, 0x00, 0x0e, 0x01}
+    r ACD Readings(N6150)?  { 0xd4, 0x02, 0x00, 0x02, 0x00, 0x0e, 0x01, ?}
     s Get EEPROM            { 0xd4, 0x02, 0x00, 0xa0, locationLo, locationHi, numofbytes }
                             where: numofbytes - how many bytes to read
                            Note: Works ONLY in MBUS
     r Get EEPROM            { 0xd4, 0x02, 0x00, 0xa0, locationLo, locationHi, numofbytes, contest... }
                             where numofbytes - how many bytes available
                                     contest - bytes with contests (if numofbytes != 0)
-0x41: Snake game ?\r
-0x47:\r
-    s Get Picture Image     { 0x0001, location }\r
-    r Get Picture Image     when contains sender number\r
-                            { 0x0002, location, number(like in SMS), 0x00, len, text, 0x00, width, height, 0x01, bitmap }\r
-                           NOTE:\r
-                              Supports only 0x81 and 0x91 coding (NOT alphanumeric numbers!)\r
-                              in sender without sender number\r
-                            { 0x0002, location, 0x00, 0x00, 0x00, len, text, 0x00, width, height, 0x01, bitmap }\r
-    s Set Picture Image     { 0x0003, frame...}\r
-                            where frame: see 0x47/0x0002\r
-    r Get/Set PictureImageOK{ 0x0004 }\r
-    r Set Picture Image err { 0x0005, error? }\r
-                            where error=0x74 - wrong location ?\r
-0x64:\r
-    s Phone ID request      { 0x0010 }\r
-    r Phone ID recvd        { 0x0011, "NOKIA", "imei", 0, "model", 0, "prod.code", 0, "HW", 0, "firmware", magic bytes x 4 ... }\r
-    s Accessory connection  { 0x0012, 16x0x00, 'NOKIA&NOKIA accessory', 3x0x00 } (45 bytes)\r
-0x7f: Acknowledge(FBUS/IRDA){+type, seq }\r
-      Acknowledge(MBUS)...\r
-0xd0: \r
-    s Power on message seq1 {+04 }\r
-    r Power on message seq1 {+05 }\r
-0xd1:\r
-    s Get HW&SW version     { 0x0003, 0x00 }\r
-0xd2:\r
-    r Get HW&SW version     { 0x0003 "V " "firmware\n" "firmware date\n"\r
-                              "model\n" "(c) NMP." }\r
-0xda: ? (during playing 2 player snake)\r
-0xf0:\r
-    s Send RLP frame        {+0x00, 0xd9, ... }\r
-0xf4: Power on message seq 2\r
+0x41: Snake game ?
+0x47:
+    s Get Picture Image     { 0x0001, location }
+    r Get Picture Image     when contains sender number
+                            { 0x0002, location, number(like in SMS), 0x00, len, text, 0x00, width, height, 0x01, bitmap }
+                           NOTE:
+                              Supports only 0x81 and 0x91 coding (NOT alphanumeric numbers!)
+                              in sender without sender number
+                            { 0x0002, location, 0x00, 0x00, 0x00, len, text, 0x00, width, height, 0x01, bitmap }
+    s Set Picture Image     { 0x0003, frame...}
+                            where frame: see 0x47/0x0002
+    r Get/Set PictureImageOK{ 0x0004 }
+    r Set Picture Image err { 0x0005, error? }
+                            where error=0x74 - wrong location ?
+0x64:
+    s Phone ID request      { 0x0010 }
+    r Phone ID recvd        { 0x0011, "NOKIA", "imei", 0, "model", 0, "prod.code", 0, "HW", 0, "firmware", magic bytes x 4 ... }
+    s Accessory connection  { 0x0012, 16x0x00, 'NOKIA&NOKIA accessory', 3x0x00 } (45 bytes)
+0x7f: Acknowledge(FBUS/IRDA){+type, seq }
+      Acknowledge(MBUS)...
+0xd0: 
+    s Power on message seq1 {+04 }
+    r Power on message seq1 {+05 }
+0xd1:
+    s Get HW&SW version     { 0x0003, 0x00 }
+0xd2:
+    r Get HW&SW version     { 0x0003 "V " "firmware\n" "firmware date\n"
+                              "model\n" "(c) NMP." }
+0xda: ? (during playing 2 player snake)
+0xf0:
+    s Send RLP frame        {+0x00, 0xd9, ... }
+0xf4: Power on message seq 2
index a172f36..2e051aa 100644 (file)
-\r
+
 Last update 16.02.2002
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r
-\r
-Assembled by\r
-       Balazs Nagy (js@lsc.hu)\r
-       Marcin Wiacek (Marcin-Wiacek@TOPNET.PL)\r
-        Jens Bennfors <jens.bennfors@ing.hj.se>\r
-        Michael Hund <michael@drhund.de>\r
-        Jay Bertrand <jay.bertrand@libertysurf.fr>\r
-        Gabriele Zappi <gzappi@inwind.it>\r
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Assembled by
+       Balazs Nagy (js@lsc.hu)
+       Marcin Wiacek (Marcin-Wiacek@TOPNET.PL)
+        Jens Bennfors <jens.bennfors@ing.hj.se>
+        Michael Hund <michael@drhund.de>
+        Jay Bertrand <jay.bertrand@libertysurf.fr>
+        Gabriele Zappi <gzappi@inwind.it>
         Markus Plail <plail@web.de>
        Ralf Thelen <ralf@mythelen.de>
-       ... and other members of gnokii mailing list\r
-            and authors of some WWW pages.\r
-\r
-The data provided is for information purposes only. \r
-Some of the frames might be hazardous to your phone. Be careful!!! \r
-We do not take any responsibility or liability for damages, etc.\r
-\r
-NOTE: this information isn't (and can't be) complete.  If you know anything\r
-about features not listed here or you noticed a bug in this list, please\r
-notify us via e-mail.  Thank you.\r
-\r
-Document describing frames used in\r
-GSM Nokia 6210 and derivatives (7110)\r
-Correct format is FBUS version 2/Infrared/MBUS version 2\r
-(see nokia.txt for protocol details):\r
-\r
- List:\r
-\r
-0x00: Connect to NBS port ?\r
-    r Set ringtone          {+0x7c,0x01,0x00,0x0d,0x06[6],0x78,ringtone packed according to SM2.0}\r
-                            Seems not to work in MBUS!\r
-0x01: Communication Status\r
-?   r Call msg              { 0x0002 }\r
-?   r Call in progress      { 0x0003, seqnr }\r
-?   r Remote end hang up    { 0x0004, seqnr, ?, error (like in netmon in 39) }\r
-?   r incoming call alert   { 0x0005, seqnr, numlen, "number", namelen, "name" }\r
-?   r answered call         { 0x0007, seqnr }\r
-?   r terminated call       { 0x0009, seqnr }\r
-?   r call msg              { 0x000a, seqnr }\r
-    Note: in 6210 4.27 all msg from 0x01 seems to be unavailable\r
-0x02: SMS handling\r
-    s Send SMS message      { 0x0001, 0x02, 0x00 (SEND REQUEST), ... }\r
-    r Message sent          { 0x0002 }\r
-    r Send failed           { 0x0003, ?, ?, error (like in netmon in 65)}\r
-    s Incoming SMS info on  { 0x000d, 0x00, 0x00, 0x02}\r
-                            note: no info about Delivery Reports\r
-    r Incoming SMS info onOK{ 0x000e }\r
-                            note: no info about Delivery Reports\r
-    r Incoming SMS infoonerr{ 0x000f, error }\r
-                            where error: 0x0c - no PIN\r
-    r SMS message received  { 0x0011, ...... } (whole message)\r
-    s Set CellBroadcast     { 0x0020, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01 }\r
-                                      for enable cell broadcast ?\r
-                                      0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }\r
-                                      for disable cell broadcast ?\r
-    r Set CellBroadcast OK  { 0x0021, 0x01 }\r
-    r Read CellBroadcast    { 0x0023, ?, ?, ?, channel, ?, message... } ?\r
-    s Set SMS center        { 0x0030, 0x64, priority, checksum?, format,\r
-                                      validity[2], {DefaultRecipient no.}[12],\r
-                                      {SMScenter no.}[12], {SMSC name}, 0x00}\r
-                              where tel.no.[12]: {len, type, {number(BCD)}}\r
-                                    type: 0x81: normal\r
-                                          0x91: + (international)\r
-                                          0xd0: alphanumeric\r
-                                    format: 0x00: text\r
-                                            0x22: fax\r
-                                            0x24: voice\r
-                                            0x25: ERMES\r
-                                            0x26: paging\r
-                                            0x31: X.400\r
-                                            0x32: email\r
-                                    validity: 0x000b:  1 hour\r
-                                              0x0047:  6 hours\r
-                                              0x00a7: 24 hours\r
-                                              0x00a9: 72 hours\r
-                                              0x00ad:  1 week\r
-                                              0x00ff: max.time\r
-    r Set SMS center OK     { 0x0031 }\r
-    r Set SMS center error  { 0x0032, reason }\r
-    s Get SMS center        { 0x0033, 0x64, priority }\r
-    r SMS center received   { 0x0034, priority, checksum?, type,\r
-                                      validity[2], {DefaultRecipient no.}[12],\r
-                                      {SMScenter no.}[12], {SMSC name}, 0x00 }\r
-                              where priority, checksum, type, validity,\r
-                                    tel.no.[12]: see 0x02/0x0030\r
-    r SMS center error recv { 0x0035, reason }\r
-    s??                     { 0x0074}\r
-    r??                     { 0x0075, 0xFF, 0x11, 0x98}\r
-    s??                     { 0x008C}\r
-    r??                     { 0x008D, 0x00}\r
-0x03: Phonebook functions\r
-    s Get memory status     { 0x0103, 0x02, memory type }\r
-                            where: memory type - see 0x03/0x0107\r
-    r Get memory status     { 0x0104, 0x00, xL, 0x00[2], y1H, y1L, 0x10,\r
-                                      0x00[2], z?, ymaxH, ymaxL, y2H, y2L,\r
-                                      0x0d?, xH?, 0x00[2]? }\r
-                              where y1: location (lowermost)\r
-                                    y2: no. of locations\r
-                                    ymax: maximum location no.\r
-    s Read memory           { 0x0107, 0x01, 0x01, 0x00, 0x01, xH, xL,\r
-                                     yH, yL, 0x00, 0x00}\r
-                            where x: memory type\r
-                                     0x01: (256) Dialled numbers\r
-                                     0x02: (512) Missed calls\r
-                                     0x03: (768) Received calls\r
-                                     0x05: (500) telephone phonebook\r
-                                     0x06: (160) SIM phonebook\r
-                                     0x07: (10/0)\r
-                                     0x08: (1/0)\r
-                                     0x09: (4) voice mailbox\r
-                                     0x0e: (10) speed dials\r
-                                     0x10: (5) caller groups\r
-                                  y: location\r
-    r Read memory error     { 0x0108, 0x00, 0x01,\r
-                             code,0x00, 0x00, z, error}\r
-                            where code==0x0f\r
-                                  error: 0x34 - phonebook location not found\r
-                                         0x3b - speed dial not assigned\r
-    r Read memory OK        { 0x0108, 0x00, 0x01,\r
-                             code,0x00, 0x00, z, xH, xL, yH, yL, 0x00, 0x00, 0x00, no.of blocks, { block } * }\r
-                            where code: != 0x0f\r
-                              y: location\r
-                              z: generic block size\r
-                              block: {id, 0, 0, blocksize, block no.,\r
-                                      {contents}, 0x00}\r
-                                id: 0x04 pointer to another memory location { 0xff?, yH, yL, xL,0x00[3] }\r
-                                    0x07 name {len, (unicode)},\r
-                                    0x08 email\r
-                                    0x09 postal\r
-                                    0x0a note {len, (unicode)}\r
-                                    0x0b number {type, 0x00[3], len, (unicode)}\r
-                                    0x0c ringtone {ringtone no., 0, 0}\r
-                                   0x13 date for a called list (DC, RC, etc.)\r
-                                    0x1b caller group graphic {width, height, 0, 0 {bitmap}}\r
-                                    0x1c caller group graphic on? {(1: yes, 0: no), 0, 0}\r
-                                    0x1e caller group number {number, 0, 0}\r
-                                   type: 0x0a: General,\r
-                                         0x03: Mobile (office ?),\r
-                                         0x06: Work,\r
-                                         0x04: Fax,\r
-                                         0x02: Home (mobile ?)\r
-    s Set mem location      { 0x010b, 0x00, 0x01, 0x01, 0x00, 0x00, z,\r
-                                      xH, xL, yH, yL, 0x00, 0x00, 0x00,\r
-                                      no.of blocks, { block }[no.of blocks] }\r
-    r Set mem location      { 0x010c, 0?, 1?, code, 0?, 0?, z?, 0?, 0?,\r
-                                      yH, yL, xL }\r
-                            where code:\r
-                                    0x3d - wrong entry type\r
-                                    0x3e - too much entries\r
+       ... and other members of gnokii mailing list
+            and authors of some WWW pages.
+
+The data provided is for information purposes only. 
+Some of the frames might be hazardous to your phone. Be careful!!! 
+We do not take any responsibility or liability for damages, etc.
+
+NOTE: this information isn't (and can't be) complete.  If you know anything
+about features not listed here or you noticed a bug in this list, please
+notify us via e-mail.  Thank you.
+
+Document describing frames used in
+GSM Nokia 6210 and derivatives (7110)
+Correct format is FBUS version 2/Infrared/MBUS version 2
+(see nokia.txt for protocol details):
+
+ List:
+
+0x00: Connect to NBS port ?
+    r Set ringtone          {+0x7c,0x01,0x00,0x0d,0x06[6],0x78,ringtone packed according to SM2.0}
+                            Seems not to work in MBUS!
+0x01: Communication Status
+?   r Call msg              { 0x0002 }
+?   r Call in progress      { 0x0003, seqnr }
+?   r Remote end hang up    { 0x0004, seqnr, ?, error (like in netmon in 39) }
+?   r incoming call alert   { 0x0005, seqnr, numlen, "number", namelen, "name" }
+?   r answered call         { 0x0007, seqnr }
+?   r terminated call       { 0x0009, seqnr }
+?   r call msg              { 0x000a, seqnr }
+    Note: in 6210 4.27 all msg from 0x01 seems to be unavailable
+0x02: SMS handling
+    s Send SMS message      { 0x0001, 0x02, 0x00 (SEND REQUEST), ... }
+    r Message sent          { 0x0002 }
+    r Send failed           { 0x0003, ?, ?, error (like in netmon in 65)}
+    s Incoming SMS info on  { 0x000d, 0x00, 0x00, 0x02}
+                            note: no info about Delivery Reports
+    r Incoming SMS info onOK{ 0x000e }
+                            note: no info about Delivery Reports
+    r Incoming SMS infoonerr{ 0x000f, error }
+                            where error: 0x0c - no PIN
+    r SMS message received  { 0x0011, ...... } (whole message)
+    s Set CellBroadcast     { 0x0020, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01 }
+                                      for enable cell broadcast ?
+                                      0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
+                                      for disable cell broadcast ?
+    r Set CellBroadcast OK  { 0x0021, 0x01 }
+    r Read CellBroadcast    { 0x0023, ?, ?, ?, channel, ?, message... } ?
+    s Set SMS center        { 0x0030, 0x64, priority, checksum?, format,
+                                      validity[2], {DefaultRecipient no.}[12],
+                                      {SMScenter no.}[12], {SMSC name}, 0x00}
+                              where tel.no.[12]: {len, type, {number(BCD)}}
+                                    type: 0x81: normal
+                                          0x91: + (international)
+                                          0xd0: alphanumeric
+                                    format: 0x00: text
+                                            0x22: fax
+                                            0x24: voice
+                                            0x25: ERMES
+                                            0x26: paging
+                                            0x31: X.400
+                                            0x32: email
+                                    validity: 0x000b:  1 hour
+                                              0x0047:  6 hours
+                                              0x00a7: 24 hours
+                                              0x00a9: 72 hours
+                                              0x00ad:  1 week
+                                              0x00ff: max.time
+    r Set SMS center OK     { 0x0031 }
+    r Set SMS center error  { 0x0032, reason }
+    s Get SMS center        { 0x0033, 0x64, priority }
+    r SMS center received   { 0x0034, priority, checksum?, type,
+                                      validity[2], {DefaultRecipient no.}[12],
+                                      {SMScenter no.}[12], {SMSC name}, 0x00 }
+                              where priority, checksum, type, validity,
+                                    tel.no.[12]: see 0x02/0x0030
+    r SMS center error recv { 0x0035, reason }
+    s??                     { 0x0074}
+    r??                     { 0x0075, 0xFF, 0x11, 0x98}
+    s??                     { 0x008C}
+    r??                     { 0x008D, 0x00}
+0x03: Phonebook functions
+    s Get memory status     { 0x0103, 0x02, memory type }
+                            where: memory type - see 0x03/0x0107
+    r Get memory status     { 0x0104, 0x00, xL, 0x00[2], y1H, y1L, 0x10,
+                                      0x00[2], z?, ymaxH, ymaxL, y2H, y2L,
+                                      0x0d?, xH?, 0x00[2]? }
+                              where y1: location (lowermost)
+                                    y2: no. of locations
+                                    ymax: maximum location no.
+    s Read memory           { 0x0107, 0x01, 0x01, 0x00, 0x01, xH, xL,
+                                     yH, yL, 0x00, 0x00}
+                            where x: memory type
+                                     0x01: (256) Dialled numbers
+                                     0x02: (512) Missed calls
+                                     0x03: (768) Received calls
+                                     0x05: (500) telephone phonebook
+                                     0x06: (160) SIM phonebook
+                                     0x07: (10/0)
+                                     0x08: (1/0)
+                                     0x09: (4) voice mailbox
+                                     0x0e: (10) speed dials
+                                     0x10: (5) caller groups
+                                  y: location
+    r Read memory error     { 0x0108, 0x00, 0x01,
+                             code,0x00, 0x00, z, error}
+                            where code==0x0f
+                                  error: 0x34 - phonebook location not found
+                                         0x3b - speed dial not assigned
+    r Read memory OK        { 0x0108, 0x00, 0x01,
+                             code,0x00, 0x00, z, xH, xL, yH, yL, 0x00, 0x00, 0x00, no.of blocks, { block } * }
+                            where code: != 0x0f
+                              y: location
+                              z: generic block size
+                              block: {id, 0, 0, blocksize, block no.,
+                                      {contents}, 0x00}
+                                id: 0x04 pointer to another memory location { 0xff?, yH, yL, xL,0x00[3] }
+                                    0x07 name {len, (unicode)},
+                                    0x08 email
+                                    0x09 postal
+                                    0x0a note {len, (unicode)}
+                                    0x0b number {type, 0x00[3], len, (unicode)}
+                                    0x0c ringtone {ringtone no., 0, 0}
+                                   0x13 date for a called list (DC, RC, etc.)
+                                    0x1b caller group graphic {width, height, 0, 0 {bitmap}}
+                                    0x1c caller group graphic on? {(1: yes, 0: no), 0, 0}
+                                    0x1e caller group number {number, 0, 0}
+                                   type: 0x0a: General,
+                                         0x03: Mobile (office ?),
+                                         0x06: Work,
+                                         0x04: Fax,
+                                         0x02: Home (mobile ?)
+    s Set mem location      { 0x010b, 0x00, 0x01, 0x01, 0x00, 0x00, z,
+                                      xH, xL, yH, yL, 0x00, 0x00, 0x00,
+                                      no.of blocks, { block }[no.of blocks] }
+    r Set mem location      { 0x010c, 0?, 1?, code, 0?, 0?, z?, 0?, 0?,
+                                      yH, yL, xL }
+                            where code:
+                                    0x3d - wrong entry type
+                                    0x3e - too much entries
     s Delete mem location   { 0x010f, 0x00, 0x01, 0x04, 0x00, 0x00, 0x0c, 0x01, 0xff, xH, xL,
                                       yH, yL, 0x00, 0x00}
                                       where   x: location
@@ -184,122 +184,122 @@ Correct format is FBUS version 2/Infrared/MBUS version 2
                             where divtype, calltype: see above
     s Get call diverts      { 0x0001, 0x05, 0x00, divtype, calltype, 0x00 }
                             where divtype, calltype: see above
-0x0a: Network status\r
-    s get used network      { 0x0070 }\r
-    r get used network      { 0x0071, available,?,?,length,netstatus,netsel,cellIDH,\r
-                                      cellIDL,lacH,lacL,MCC+MNC[3],{Opstr}, 4?,\r
-                                      len, xlen(78), ylen(21), 0, {bitmap} }\r
-                              where {Opstr}: namelen, {operator name(unicode)}\r
-                                    len: {xlen, ylen, 0, {bitmap} + 2\r
-                                    {bitmap}: bitmaplen, 0, 0, {OTA bitmap}\r
-                                   available: 0x02 if the logo following is valid,\r
-                                              0x01 for no operator logo following\r
-    s get network status    { 0x0081 }\r
-    r get network status    { 0x0082, network%, 0x14? }\r
-    s set operator logo     { 0x01a3 0x01, oplogo?, MCC+MNC[3], 0?,4?,len,\r
-                                     xlen(78),ylen(21), 0 (frames?),\r
-                                     {bitmap}*?, 0x00(padding) }\r
-                              where len, {bitmap}: see 0x0a/0x0071\r
-    r set operator logo OK  { 0x01a4 }\r
+0x0a: Network status
+    s get used network      { 0x0070 }
+    r get used network      { 0x0071, available,?,?,length,netstatus,netsel,cellIDH,
+                                      cellIDL,lacH,lacL,MCC+MNC[3],{Opstr}, 4?,
+                                      len, xlen(78), ylen(21), 0, {bitmap} }
+                              where {Opstr}: namelen, {operator name(unicode)}
+                                    len: {xlen, ylen, 0, {bitmap} + 2
+                                    {bitmap}: bitmaplen, 0, 0, {OTA bitmap}
+                                   available: 0x02 if the logo following is valid,
+                                              0x01 for no operator logo following
+    s get network status    { 0x0081 }
+    r get network status    { 0x0082, network%, 0x14? }
+    s set operator logo     { 0x01a3 0x01, oplogo?, MCC+MNC[3], 0?,4?,len,
+                                     xlen(78),ylen(21), 0 (frames?),
+                                     {bitmap}*?, 0x00(padding) }
+                              where len, {bitmap}: see 0x0a/0x0071
+    r set operator logo OK  { 0x01a4 }
     s clear operator logo   { 0x00af, x}
                             where x==0 to 4
     r clear operator logo   { 0x00bf}
-0x13: Calendar notes\r
-    s Add meeting note      { 0x0001, body like in subtype 0x001a...}\r
-    r Add meeting note      { 0x0002, location (2 bytes), status (2 bytes)}\r
-    s Add call note         { 0x0003, body like in subtype 0x001a...}\r
-    r Add call note         { 0x0004, location (2 bytes), status (2 bytes)}\r
+0x13: Calendar notes
+    s Add meeting note      { 0x0001, body like in subtype 0x001a...}
+    r Add meeting note      { 0x0002, location (2 bytes), status (2 bytes)}
+    s Add call note         { 0x0003, body like in subtype 0x001a...}
+    r Add call note         { 0x0004, location (2 bytes), status (2 bytes)}
     s Add birthday note     { 0x0005, location (2 bytes), entry type, 0x00, year of birth(2 bytes),
                                       Month, Day, 0x00, 0x00, alarm (4 bytes), alarm type, length, text (Unicode)}
-    r Add birthday note     { 0x0006, location (2 bytes), status (2 bytes)}\r
-    s Add reminder note     { 0x0007, body like in subtype 0x001a...}\r
-    r Add reminder note     { 0x0008, location (2 bytes), status (2 bytes)}\r
-    s Delete calendar note  { 0x000b, location (2 bytes) }\r
-    r Delete calendar note  { 0x000c, location (2 bytes), ?, ?, ?, ? }\r
-    s Get calendar note     { 0x0019, location (2 bytes) }\r
-    r Calendar note recvd   { 0x001a, location (2 bytes), entry type, 0x00, year (2 bytes), Month, Day, block}\r
-                            where: entry type - 0x01 - Meeting, 0x02 - Call, 0x04 - Birthday, 0x08 - Reminder\r
-                                   block: for Meeting:{hour,minute,alarm (two bytes),recurrance (two bytes),len,0x00,string(unicode)}\r
-                                          where alarm=Number of minutes before the time of the meeting\r
-                                                  that the alarm should be triggered:\r
-                                                  For meetings with "No alarm"=0xFFFF (-1).\r
-                                                  For "On time"=0x0000\r
-                                                  half an hour=0x001E, and so on.\r
-                                                Recurrance=in hours, between future occurances of this meeting.\r
-                                                  If there is no repeat, this value is 0x0000. The special value 0xffff \r
-                                                  means 1 Year!\r
-                                          for Call:{Hour,Minute,Alarm (as above),Recurrance (as above),namelen,numberlen,\r
-                                                    name(unicode),number(unicode)}\r
-                                          for Reminder:{Recurrance (as above),len,0x00,string(unicode)}\r
-                                          for Birthday:{byte1,byte2,alarm(4 bytes),yearofbirth,alarmtype,len,string(unicode)}\r
-                                                    byte1 and byte2 may vary (???). Usually are 0x00 both (but not always)\r
-                                                    In Birthday, the Year in the common part, usually contains a strange year.\r
-                                                    So, don't consider it as Year of note, neither year of BirthDay (for Year of\r
-                                                    Birthday use the value described below).\r
-                                          where alarm=32-bit integer that is the number of seconds between the desired\r
-                                                  alarm time and 11:59:58pm on the birthday.For "No Alarm", the value is\r
-                                                  0x0000FFFF (65535).\r
-                                                YearOfBirth=used instead of the one in the common part of the entry (see above)\r
-                                                  but only when reading birthday entries. For storing entries, this field does\r
-                                                  not exist.\r
-                                                AlarmType: 0x00 - Tone, 0x01 - Silent\r
-?   s???                    { 0x0021 }\r
-?   r???                    { 0x0022, 0x5A, 0x00 }\r
-?   s???                    { 0x0025 }\r
-?   r???                    { 0x0026, 0x04, 0x00 }\r
-?   s                       { 0x0029 }\r
-?   r                       { 0x002A, 0x04, 0x00 }\r
-    s Get first free pos    { 0x0031 }\r
-    r Get first free pos    { 0x0032, location (2bytes) }\r
-    s Get notes info        { 0x003a, 0xFF, 0xFE}\r
-    r Get notes info        { 0x003b, how many notes used (2 bytes), 0x01, 0x07, { two bytes with location for each note} *}\r
-?   s Get calendar note??   { 0x003E, location (2 bytes) }\r
-?   r Get calendar note??   { 0x003F, location (2bytes), ... }\r
-0x14:\r
-    s Get Picture Image     { 0x0007, location, number[2 bytes], 0x00, 0x64 }\r
-    r Get Picture Image     { 0x0008, 0x07, location, number[2 bytes], 0x07, ??[38],\r
-                                     width, height, lenH, lenL, {bitmap}, 0x00, 0x00, text len, text(coded like in SMS)...}\r
+    r Add birthday note     { 0x0006, location (2 bytes), status (2 bytes)}
+    s Add reminder note     { 0x0007, body like in subtype 0x001a...}
+    r Add reminder note     { 0x0008, location (2 bytes), status (2 bytes)}
+    s Delete calendar note  { 0x000b, location (2 bytes) }
+    r Delete calendar note  { 0x000c, location (2 bytes), ?, ?, ?, ? }
+    s Get calendar note     { 0x0019, location (2 bytes) }
+    r Calendar note recvd   { 0x001a, location (2 bytes), entry type, 0x00, year (2 bytes), Month, Day, block}
+                            where: entry type - 0x01 - Meeting, 0x02 - Call, 0x04 - Birthday, 0x08 - Reminder
+                                   block: for Meeting:{hour,minute,alarm (two bytes),recurrance (two bytes),len,0x00,string(unicode)}
+                                          where alarm=Number of minutes before the time of the meeting
+                                                  that the alarm should be triggered:
+                                                  For meetings with "No alarm"=0xFFFF (-1).
+                                                  For "On time"=0x0000
+                                                  half an hour=0x001E, and so on.
+                                                Recurrance=in hours, between future occurances of this meeting.
+                                                  If there is no repeat, this value is 0x0000. The special value 0xffff 
+                                                  means 1 Year!
+                                          for Call:{Hour,Minute,Alarm (as above),Recurrance (as above),namelen,numberlen,
+                                                    name(unicode),number(unicode)}
+                                          for Reminder:{Recurrance (as above),len,0x00,string(unicode)}
+                                          for Birthday:{byte1,byte2,alarm(4 bytes),yearofbirth,alarmtype,len,string(unicode)}
+                                                    byte1 and byte2 may vary (???). Usually are 0x00 both (but not always)
+                                                    In Birthday, the Year in the common part, usually contains a strange year.
+                                                    So, don't consider it as Year of note, neither year of BirthDay (for Year of
+                                                    Birthday use the value described below).
+                                          where alarm=32-bit integer that is the number of seconds between the desired
+                                                  alarm time and 11:59:58pm on the birthday.For "No Alarm", the value is
+                                                  0x0000FFFF (65535).
+                                                YearOfBirth=used instead of the one in the common part of the entry (see above)
+                                                  but only when reading birthday entries. For storing entries, this field does
+                                                  not exist.
+                                                AlarmType: 0x00 - Tone, 0x01 - Silent
+?   s???                    { 0x0021 }
+?   r???                    { 0x0022, 0x5A, 0x00 }
+?   s???                    { 0x0025 }
+?   r???                    { 0x0026, 0x04, 0x00 }
+?   s                       { 0x0029 }
+?   r                       { 0x002A, 0x04, 0x00 }
+    s Get first free pos    { 0x0031 }
+    r Get first free pos    { 0x0032, location (2bytes) }
+    s Get notes info        { 0x003a, 0xFF, 0xFE}
+    r Get notes info        { 0x003b, how many notes used (2 bytes), 0x01, 0x07, { two bytes with location for each note} *}
+?   s Get calendar note??   { 0x003E, location (2 bytes) }
+?   r Get calendar note??   { 0x003F, location (2bytes), ... }
+0x14:
+    s Get Picture Image     { 0x0007, location, number[2 bytes], 0x00, 0x64 }
+    r Get Picture Image     { 0x0008, 0x07, location, number[2 bytes], 0x07, ??[38],
+                                     width, height, lenH, lenL, {bitmap}, 0x00, 0x00, text len, text(coded like in SMS)...}
     r Get SMS failed        { 0x0009, 0x02 },
     s Get SMS status        { 0x0036, 0x64 }
-    r Get SMS Status        { 0x0037, 0x05/0x03, 0x01, 0x00, 0x00,\r
-                              a (2 octets), b (2 octets), c (2 octets),\r
-                              d (2 octets), e (2 octets), 0x00\r
-                              where:\r
-                              a - according to P.Kot:\r
-                                Number of locations in "fixed" memory. These are all\r
-                                Templates entries in my Nokias 6210 (NPE-3 (c) NMP V05.36\r
-                                14-11-01, NPE-3 (c) NMP V05.27 01-08-01).\r
-                                I can't remove any of Templates entries in my phone.\r
-                                Marcin Wi¥cek: Rather not ! I don't agree.\r
-                                I have 0x00, 0x0f and 10 templates and 3 SMS\r
-                                and 10 Picture Images.\r
-                              b - Number of used messages in phone memory. These\r
-                                are messages manually moved from the other folders.\r
-                                Picture messages are saved here.\r
-                              c - Number of unread messages in phone memory. Probably\r
-                                only smart messsages.\r
-                              d - Number of used messages in SIM memory. These are\r
-                                either received messages or saved into Outbox/Inbox.\r
-                                Note that you *can't* save message into this memory\r
-                                using 'Move' option. Picture messages are not here.\r
-                              e - Number of unread messages in SIM memory\r
-\r
-    s Set Picture Image     { 0x0050, 0x07, location, number[2 bytes], 0x07, ??[38], \r
-                                     width, height, lenH, lenL, {bitmap}, 0x00, 0x00, text len, text(coded like in SMS)...}\r
-                              std. size: 72x28\r
-    r Set Picture Image     { 0x0051, location, number[2 bytes], 0x07 }\r
-    s Set SMS name          { 0x0083,folder,location(2bytes),name(Unicode),0x00 , 0x00}\r
-    r Set SMS name          { 0x0084,folder,0x00, 0x00, name (Unicode),0x00,0x00}\r
-    s List Picture Images   { 0x0096, location, 0x0f, 0x07 }\r
-                              where location:\r
-                                LM tries with 0x09, 0x11, 0x19, 0x21, 0x29, 0x31, 0x39, 0x41, 0x49\r
-                                Returned value with 0x21\r
-    r List Picture Images   { 0x0097, number of pictures[2 bytes], number1[2 bytes], number2[2 bytes], ..., }\r
+    r Get SMS Status        { 0x0037, 0x05/0x03, 0x01, 0x00, 0x00,
+                              a (2 octets), b (2 octets), c (2 octets),
+                              d (2 octets), e (2 octets), 0x00
+                              where:
+                              a - according to P.Kot:
+                                Number of locations in "fixed" memory. These are all
+                                Templates entries in my Nokias 6210 (NPE-3 (c) NMP V05.36
+                                14-11-01, NPE-3 (c) NMP V05.27 01-08-01).
+                                I can't remove any of Templates entries in my phone.
+                                Marcin Wi¥cek: Rather not ! I don't agree.
+                                I have 0x00, 0x0f and 10 templates and 3 SMS
+                                and 10 Picture Images.
+                              b - Number of used messages in phone memory. These
+                                are messages manually moved from the other folders.
+                                Picture messages are saved here.
+                              c - Number of unread messages in phone memory. Probably
+                                only smart messsages.
+                              d - Number of used messages in SIM memory. These are
+                                either received messages or saved into Outbox/Inbox.
+                                Note that you *can't* save message into this memory
+                                using 'Move' option. Picture messages are not here.
+                              e - Number of unread messages in SIM memory
+
+    s Set Picture Image     { 0x0050, 0x07, location, number[2 bytes], 0x07, ??[38], 
+                                     width, height, lenH, lenL, {bitmap}, 0x00, 0x00, text len, text(coded like in SMS)...}
+                              std. size: 72x28
+    r Set Picture Image     { 0x0051, location, number[2 bytes], 0x07 }
+    s Set SMS name          { 0x0083,folder,location(2bytes),name(Unicode),0x00 , 0x00}
+    r Set SMS name          { 0x0084,folder,0x00, 0x00, name (Unicode),0x00,0x00}
+    s List Picture Images   { 0x0096, location, 0x0f, 0x07 }
+                              where location:
+                                LM tries with 0x09, 0x11, 0x19, 0x21, 0x29, 0x31, 0x39, 0x41, 0x49
+                                Returned value with 0x21
+    r List Picture Images   { 0x0097, number of pictures[2 bytes], number1[2 bytes], number2[2 bytes], ..., }
     s Write SMS to folder   { 0x0104, status, folder ID, location(2 bytes), 0x02, 0x01, SMS stuff ... }
     r Write SMS to folder   { 0x0105, folder ID, location(2 bytes), 0x00 }
     r Write SMS to folder   { 0x0106, 0x02 (write failed errorcode ?) }
-    s Get SMS from folder   { 0x0107, folderID, location(2 bytes), 0x01, 0x65, 0x01}\r
-                            where: folderID - see 0x14/0x017B\r
+    s Get SMS from folder   { 0x0107, folderID, location(2 bytes), 0x01, 0x65, 0x01}
+                            where: folderID - see 0x14/0x017B
     r Get SMS from folder   { 0x0108, status, folderID, 0x00, location, type, sender number,...}
 
                             where: status=0x01 - reveived/read
@@ -312,392 +312,392 @@ Correct format is FBUS version 2/Infrared/MBUS version 2
                             where: type=0x00 - received SMS
                                        0x01 - delivery report
                                        0x02 - stored SMS
-                                       0x07 - picture message\r
+                                       0x07 - picture message
     s Delete SMS message    { 0x010a, folderID, location(2 bytes), 0x01 }
     r Delete SMS            { 0x010b }
-    s Get folder status     { 0x016b, folderID, 0x0F, 0x01}\r
-                            where: folderID - see 0x14/0x017B\r
-    r Get folder status     { 0x016c, number of entries (2 bytes), entry1number (2 bytes), entry2number(2 bytes), ....}\r
-    s Get folder names      { 0x017A, 0x00, 0x00}\r
-    r Get folder names      { 0x017B, number of strings, folderID, name1, 0x00, folderID, name2, 0x00, name3, 0x00,...}\r
-                            where: folderID=0x08 - Inbox\r
-                                            0x10 - Outbox\r
-                                            0x18 - Archive\r
+    s Get folder status     { 0x016b, folderID, 0x0F, 0x01}
+                            where: folderID - see 0x14/0x017B
+    r Get folder status     { 0x016c, number of entries (2 bytes), entry1number (2 bytes), entry2number(2 bytes), ....}
+    s Get folder names      { 0x017A, 0x00, 0x00}
+    r Get folder names      { 0x017B, number of strings, folderID, name1, 0x00, folderID, name2, 0x00, name3, 0x00,...}
+                            where: folderID=0x08 - Inbox
+                                            0x10 - Outbox
+                                            0x18 - Archive
                                             0x20 - Templates
                                             0x29 - first "My folders"
                                             0x31 - second "My folders"
                                             0x39 - third -"-
-                                            and so on\r
-0x17:\r
-    s Get Battery info      { 0x0002 }\r
-    r Get Battery info      { 0x0003, 0x0b, batt%, 0x14?, 0x01? }\r
-0x19: Phone clock & alarm\r
-\r
-    These frames are like the same frames subtypes in 0x11 in 6110\r
-\r
-    s set date and time     { 0x0060, 1,1,7,yearh,yearl,month,mday,hour,min,0x00 }\r
-    r date and time set     { 0x0061 }\r
-    s get date and time     { 0x0062 }\r
-    r date and time recvd   { 0x0063,date_set?,time_set?,?,?,yearh,yearl,month,mday,hour,min,second }\r
-                            where: date_set & time_set==0x01 - set\r
-                                                       0x00 - not set, ?,?,yearh,yearl,month,mday,hour,min,second\r
-                                                               not available in frame\r
-    s set alarm             { 0x006b, 1,32,3,0x02(on-off),hour,min,0x00 }\r
-    r alarm set             { 0x006c }\r
-    s get alarm             { 0x006d }\r
-    r alarm received        { 0x006e,?,?,?,?,alrm(==2:on),hour,min }\r
-\r
-    These are new (?)\r
-\r
-?   s ??                    { 0x0083, id }\r
-?   r ??                    { 0x0084, 0x01, 0x40, 0x03, id, 0x00, 0x00 }\r
-?   r ??                    { 0x0084, 0x01, 0x40, 0x03, id, 0x00, 0x01 }\r
-?   r ??                    { 0x0084, 0x01, 0x40, 0x03, id, 0x01, 0x00 }\r
-                            where: id=0x27,0x2a,0x32,0x28,0x40\r
-0x1b:\r
-    s Get IMEI              { 0x0001 }\r
-    r Get IMEI              { 0x0002, {IMEI(ASCII)}, 0x00 }\r
-    s get HW&SW version     { 0x0003, 0x01, 0x32 }\r
-    r get HW&SW version     { 0x0004, "V " "firmware\n" "firmware date\n"\r
-                              "model\n" "(c) NMP." 0x00 0xff[14] }\r
-0x1f:\r
-    s ???                   { 0x0010, 0x02, 0x00, 0xff, 0xff }\r
-    r ???                   { 0x0011, length, 0x00, {block}[length] }\r
-                              where block: { unicode letter[2], 0x0000,\r
-                                0x00, 0x55, ??, ?? }\r
-    s Set ringtone          { 0x011f, 0x00, location, 0x00, name(Unicode),\r
-                              ringtone(format the same to 0x40/0x019e and 0x40/0x01a0) }\r
-                              where: location: 0x87 to 0x8b on N6210\r
-                                               0x74 to ... on N7110\r
-    s Get ringtone          { 0x0122, 0x00, location}\r
-    r Get ringtone          { 0x0123, 0x00, location, name(Unicode), 0x00,...,0x00, 0x02,0xFC,0x09(ringtone contenst)}\r
-    r Get ringtone error    { 0x0124, ...}\r
-0x39:\r
-    s get profile feature   { 0x0101, 0x01, 0x01, 0x01, number1, number2}\r
-                            where number1: from 0x00 to 0x07 (for each profile ?)\r
-                                  number2: 0x00 - 0x09, 0x0A, 0x16 - 0x19, 0x1a - 0x1f, 0x20 - 0x29, 0x2a - 0x2c, 0xff\r
-                                     where 0x09: keypad tones\r                                           0x02: incoming call alert\r                                           0x03: ringtone number\r
-                                           0x04: ringing volume\r
-                                           0x05: message alert tone\r                                           0x06: vibra\r                                           0x07: warning tones\r                                           0x08: caller groups alert for\r                                       0x09: automatic answer
-                                           0xff: name\r
-    r get profile feature   { 0x0102, 0x01, 0x02, number2, block...}\r
-                            for number2==0xff: (Profile Name)\r
-                              block: 0x01, length, name(Unicode), 0x00, 0x00\r
-                            for number2==0x00: (Keypad Tones)\r
-                              block: 0x01, 0x01, 0x01, Type, 0x01\r
-                              where: Type : 0x00 = Off\r
-                                            0x01 to 0x03 = Level1 .. Level3\r
-                            for number2==0x02: (Incoming Call Alert)\r
-                              block: 0x01, 0x01, 0x01, Type, 0x01\r
-                              where: Type : 0x00 = Ringing\r
-                                            0x01 = Ascending\r
-                                            0x02 = Ring Once\r
-                                            0x03 = Beep Once\r
-                                            0x05 = Off\r
-                            for number2==0x03: (Ringtone Number)\r
-                              block: 0x01, 0x01, 0x01, Number, 0x01\r
-                              where: Number : 0x40 to 0x62 - gives number of factory ringtone. The number of menu is\r
-                                              obtained by doing (Number - 0x3f);\r
-                              where: Number : 0x89 to 0x8d - gives number of uploaded ringtone. The number of menu is\r
-                                              obtained by doing (Number - 0x65),while the uploaded ringtone number is\r
-                                              obtained by doing (Number - 0x88).\r
-                            for number2==0x04: (Ringing volume)\r
-                              block: 0x01, 0x??, 0x??, Volume, 0x01\r
-                              where: Volume : 0 = Level1 .. to 4 = Level5\r
-                            for number2==0x05: (Message Alert Tone)\r
-                              block: 0x01, 0x01, 0x??, Type, 0x01\r
-                              where: Type : 0x00 = Off\r
-                                            0x01 = Standard\r
-                                            0x02 = Special\r
-                                            0x03 = Beep Once\r
-                                            0x04 = Ascending\r
-                            for number2==0x06: (Vibration)\r
-                              block: 0x01, 0x??, 0x??, Switch, 0x01\r
-                              where: Switch : 0 = Off, 1 = On\r
-                            for number2==0x07: (Warning Tones)\r
-                              block: 0x01, 0x??, 0x??, Switch, 0x01\r
-                              where: Switch : 0 = Off, 1 = On\r
-                            for number2==0x08: (Caller groups Alert for)\r
-                              block: 0x01, 0x??, 0x??, Callers, 0x01\r
-                              where: Callers : 0xff = All calls alert (Read below *)\r
-                                               0x01 = Family\r
-                                               0x02 = VIP\r
-                                               0x04 = Friends\r
-                                               0x08 = Colleagues\r
-                                               0x10 = Others\r
-                                     All logical OR among groups are valid, so if you select from one phone's profile\r
-                                     alert for Friends and Collegues, a 0x0c will return (because 0x04 OR 0x08 = 0x0c).\r
-                                 (*) If Callers==0xff, means "Alert for All calls". Then, in this case, you don't\r
-                                     need to read other groups selection.\r
-                            for number2==0x09: (Automatic answer)\r
-                              block: 0x01, 0x??, 0x??, Switch, 0x01\r
-                              where: Switch : 0 = Off, 1 = On\r
-                                N.B. This feature is valid for Handsfree and Headset profiles only!\r
-    s ???                   { 0x0101, 0x04, 0x01, 0x01, 0xff, 0x03 }\r
-    r ???                   { 0x0102, 0x01, 0x02, 0x03, 0x01, 0x01, 0x01, 0x85/0x087 }\r
-\r
-    s ?                     { 0x0105}\r
-    r ?                     { 0x0106, 0x01, 0x04}\r
-0x3f: WAP \r
-    s Enable WAP frames     { 0x0000}\r
-    r Enable WAP frames     { 0x0002, 0x01}\r
-\r
-    s  ??                   { 0x0003}\r
-    r  ??                   { 0x0004}\r
-\r
-    s Get WAP bookmark      { 0x0006, 0x00, location}\r
-                              where location: 0 - 14\r
-    r Get WAP bookmark      { 0x0007, 0x00, name_len, name(unicode),\r
-                              url_len, url(unicode), 0x01,0x80,0x00[7]}\r
-    r Get WAP bookmark err  { 0x0008, error }\r
-                              where error:\r
-                                0x00(?)invalid position\r
-                                0x01   user inside "Bookmarks" menu. Must leave it\r
-                                0x02   invalid/too high/empty location\r
-\r
-    s Set WAP bookmark      { 0x0009, 0xff, 0xff, name_len, name(unicode),\r
-                              url_len, url(unicode), 0x01,0x80,0x00[7] }\r
-                              Note: bookmark is added to the first free location.\r
-    r Set WAP bookmark OK   {+0x01, 0x36, 0x0a, block }\r
-                              where block:\r
-                                0x0a, location_of_just_written_bookmark(?),\r
-                                0x00, next_free_location(?)\r
-    r Set WAP bookmark err  {+0x01, 0x36, 0x0b, error }\r
-                              where error:\r
-                               0x04 - memory is full\r
-                               0x01 - we are in the bookmark menu\r
-                               0x00 - unknown reason for now ;(\r
+                                            and so on
+0x17:
+    s Get Battery info      { 0x0002 }
+    r Get Battery info      { 0x0003, 0x0b, batt%, 0x14?, 0x01? }
+0x19: Phone clock & alarm
+
+    These frames are like the same frames subtypes in 0x11 in 6110
+
+    s set date and time     { 0x0060, 1,1,7,yearh,yearl,month,mday,hour,min,0x00 }
+    r date and time set     { 0x0061 }
+    s get date and time     { 0x0062 }
+    r date and time recvd   { 0x0063,date_set?,time_set?,?,?,yearh,yearl,month,mday,hour,min,second }
+                            where: date_set & time_set==0x01 - set
+                                                       0x00 - not set, ?,?,yearh,yearl,month,mday,hour,min,second
+                                                               not available in frame
+    s set alarm             { 0x006b, 1,32,3,0x02(on-off),hour,min,0x00 }
+    r alarm set             { 0x006c }
+    s get alarm             { 0x006d }
+    r alarm received        { 0x006e,?,?,?,?,alrm(==2:on),hour,min }
+
+    These are new (?)
+
+?   s ??                    { 0x0083, id }
+?   r ??                    { 0x0084, 0x01, 0x40, 0x03, id, 0x00, 0x00 }
+?   r ??                    { 0x0084, 0x01, 0x40, 0x03, id, 0x00, 0x01 }
+?   r ??                    { 0x0084, 0x01, 0x40, 0x03, id, 0x01, 0x00 }
+                            where: id=0x27,0x2a,0x32,0x28,0x40
+0x1b:
+    s Get IMEI              { 0x0001 }
+    r Get IMEI              { 0x0002, {IMEI(ASCII)}, 0x00 }
+    s get HW&SW version     { 0x0003, 0x01, 0x32 }
+    r get HW&SW version     { 0x0004, "V " "firmware\n" "firmware date\n"
+                              "model\n" "(c) NMP." 0x00 0xff[14] }
+0x1f:
+    s ???                   { 0x0010, 0x02, 0x00, 0xff, 0xff }
+    r ???                   { 0x0011, length, 0x00, {block}[length] }
+                              where block: { unicode letter[2], 0x0000,
+                                0x00, 0x55, ??, ?? }
+    s Set ringtone          { 0x011f, 0x00, location, 0x00, name(Unicode),
+                              ringtone(format the same to 0x40/0x019e and 0x40/0x01a0) }
+                              where: location: 0x87 to 0x8b on N6210
+                                               0x74 to ... on N7110
+    s Get ringtone          { 0x0122, 0x00, location}
+    r Get ringtone          { 0x0123, 0x00, location, name(Unicode), 0x00,...,0x00, 0x02,0xFC,0x09(ringtone contenst)}
+    r Get ringtone error    { 0x0124, ...}
+0x39:
+    s get profile feature   { 0x0101, 0x01, 0x01, 0x01, number1, number2}
+                            where number1: from 0x00 to 0x07 (for each profile ?)
+                                  number2: 0x00 - 0x09, 0x0A, 0x16 - 0x19, 0x1a - 0x1f, 0x20 - 0x29, 0x2a - 0x2c, 0xff
+                                     where 0x09: keypad tones                                           0x02: incoming call alert                                           0x03: ringtone number
+                                           0x04: ringing volume
+                                           0x05: message alert tone                                           0x06: vibra                                           0x07: warning tones                                           0x08: caller groups alert for                                           0x09: automatic answer
+                                           0xff: name
+    r get profile feature   { 0x0102, 0x01, 0x02, number2, block...}
+                            for number2==0xff: (Profile Name)
+                              block: 0x01, length, name(Unicode), 0x00, 0x00
+                            for number2==0x00: (Keypad Tones)
+                              block: 0x01, 0x01, 0x01, Type, 0x01
+                              where: Type : 0x00 = Off
+                                            0x01 to 0x03 = Level1 .. Level3
+                            for number2==0x02: (Incoming Call Alert)
+                              block: 0x01, 0x01, 0x01, Type, 0x01
+                              where: Type : 0x00 = Ringing
+                                            0x01 = Ascending
+                                            0x02 = Ring Once
+                                            0x03 = Beep Once
+                                            0x05 = Off
+                            for number2==0x03: (Ringtone Number)
+                              block: 0x01, 0x01, 0x01, Number, 0x01
+                              where: Number : 0x40 to 0x62 - gives number of factory ringtone. The number of menu is
+                                              obtained by doing (Number - 0x3f);
+                              where: Number : 0x89 to 0x8d - gives number of uploaded ringtone. The number of menu is
+                                              obtained by doing (Number - 0x65),while the uploaded ringtone number is
+                                              obtained by doing (Number - 0x88).
+                            for number2==0x04: (Ringing volume)
+                              block: 0x01, 0x??, 0x??, Volume, 0x01
+                              where: Volume : 0 = Level1 .. to 4 = Level5
+                            for number2==0x05: (Message Alert Tone)
+                              block: 0x01, 0x01, 0x??, Type, 0x01
+                              where: Type : 0x00 = Off
+                                            0x01 = Standard
+                                            0x02 = Special
+                                            0x03 = Beep Once
+                                            0x04 = Ascending
+                            for number2==0x06: (Vibration)
+                              block: 0x01, 0x??, 0x??, Switch, 0x01
+                              where: Switch : 0 = Off, 1 = On
+                            for number2==0x07: (Warning Tones)
+                              block: 0x01, 0x??, 0x??, Switch, 0x01
+                              where: Switch : 0 = Off, 1 = On
+                            for number2==0x08: (Caller groups Alert for)
+                              block: 0x01, 0x??, 0x??, Callers, 0x01
+                              where: Callers : 0xff = All calls alert (Read below *)
+                                               0x01 = Family
+                                               0x02 = VIP
+                                               0x04 = Friends
+                                               0x08 = Colleagues
+                                               0x10 = Others
+                                     All logical OR among groups are valid, so if you select from one phone's profile
+                                     alert for Friends and Collegues, a 0x0c will return (because 0x04 OR 0x08 = 0x0c).
+                                 (*) If Callers==0xff, means "Alert for All calls". Then, in this case, you don't
+                                     need to read other groups selection.
+                            for number2==0x09: (Automatic answer)
+                              block: 0x01, 0x??, 0x??, Switch, 0x01
+                              where: Switch : 0 = Off, 1 = On
+                                N.B. This feature is valid for Handsfree and Headset profiles only!
+    s ???                   { 0x0101, 0x04, 0x01, 0x01, 0xff, 0x03 }
+    r ???                   { 0x0102, 0x01, 0x02, 0x03, 0x01, 0x01, 0x01, 0x85/0x087 }
+
+    s ?                     { 0x0105}
+    r ?                     { 0x0106, 0x01, 0x04}
+0x3f: WAP 
+    s Enable WAP frames     { 0x0000}
+    r Enable WAP frames     { 0x0002, 0x01}
+
+    s  ??                   { 0x0003}
+    r  ??                   { 0x0004}
+
+    s Get WAP bookmark      { 0x0006, 0x00, location}
+                              where location: 0 - 14
+    r Get WAP bookmark      { 0x0007, 0x00, name_len, name(unicode),
+                              url_len, url(unicode), 0x01,0x80,0x00[7]}
+    r Get WAP bookmark err  { 0x0008, error }
+                              where error:
+                                0x00(?)invalid position
+                                0x01   user inside "Bookmarks" menu. Must leave it
+                                0x02   invalid/too high/empty location
+
+    s Set WAP bookmark      { 0x0009, 0xff, 0xff, name_len, name(unicode),
+                              url_len, url(unicode), 0x01,0x80,0x00[7] }
+                              Note: bookmark is added to the first free location.
+    r Set WAP bookmark OK   {+0x01, 0x36, 0x0a, block }
+                              where block:
+                                0x0a, location_of_just_written_bookmark(?),
+                                0x00, next_free_location(?)
+    r Set WAP bookmark err  {+0x01, 0x36, 0x0b, error }
+                              where error:
+                               0x04 - memory is full
+                               0x01 - we are in the bookmark menu
+                               0x00 - unknown reason for now ;(
                               
-?   s Delete WAP bookmark   { 0x000c, 0x00, location }\r
-                              where: location = 0-14\r
-?   r Delete WAR bookmark OK{ 0x000d }\r
-?   r Delete WAPbookmark err{ 0x000e, 0x02 }\r
-\r
-    s ??                    { 0x000F}\r
-    r ??                    { 0x0010, 0x00}\r
-\r
-    s Get WAP settings 1    { 0x0015, location}\r
-                            where location: 0x00 - 0x05\r
-    r Get WAP settings 1 OK { 0x0016, title length, title (Unicode), URL length, URL(Unicode),con_type, ???[6 bytes],location, ???[5 bytes],security,...}\r
-                            where:\r
-                              con_type: 0x00 - temporary\r
-                                        0x01 - continuous\r
-                              location: when use "Get WAP settings 2 frame", must give it\r
-                              security: 0x00 = no, 0x01 = yes\r
-    r Get WAP settings 1 err{ 0x0017, error }\r
-                              where error:\r
-                                0x01   user inside "Settings" menu. Must leave it\r
-                                0x02   invalid/too high/empty location\r\r
-    s Get WAP settings 2    { 0x001b, location}\r
-                            where location: 0x00 - 0x1d (you get it in "Get WAP settings 1" frame)\r
-    r Get WAP settings 2 OK { 0x001c, 0x01, type, frame...}\r
-                            where type : 0x00 - SMS bearer\r
-                                           frame:\r
-                                             service_num_len, service_num (Unicode), server_num_len, server_num(Unicode)\r
-                                         0x01 - data bearer\r
-                                           frame:\r
-                                             auth, call_type, call_speed, ?, IP len, IP (Unicode), dialup len, dialup (Unicode),\r
-                                             user len, user (Unicode), password len, password (Unicode)\r
-                                             where auth: 0x00 - normal, 0x01 - secure\r
-                                                   call_type: 0x00 - analogue, 0x01 - ISDN\r
-                                                   call_speed: 0x00 - 9600, 0x01 - 14400\r
+?   s Delete WAP bookmark   { 0x000c, 0x00, location }
+                              where: location = 0-14
+?   r Delete WAR bookmark OK{ 0x000d }
+?   r Delete WAPbookmark err{ 0x000e, 0x02 }
+
+    s ??                    { 0x000F}
+    r ??                    { 0x0010, 0x00}
+
+    s Get WAP settings 1    { 0x0015, location}
+                            where location: 0x00 - 0x05
+    r Get WAP settings 1 OK { 0x0016, title length, title (Unicode), URL length, URL(Unicode),con_type, ???[6 bytes],location, ???[5 bytes],security,...}
+                            where:
+                              con_type: 0x00 - temporary
+                                        0x01 - continuous
+                              location: when use "Get WAP settings 2 frame", must give it
+                              security: 0x00 = no, 0x01 = yes
+    r Get WAP settings 1 err{ 0x0017, error }
+                              where error:
+                                0x01   user inside "Settings" menu. Must leave it
+                                0x02   invalid/too high/empty location
+    s Get WAP settings 2    { 0x001b, location}
+                            where location: 0x00 - 0x1d (you get it in "Get WAP settings 1" frame)
+    r Get WAP settings 2 OK { 0x001c, 0x01, type, frame...}
+                            where type : 0x00 - SMS bearer
+                                           frame:
+                                             service_num_len, service_num (Unicode), server_num_len, server_num(Unicode)
+                                         0x01 - data bearer
+                                           frame:
+                                             auth, call_type, call_speed, ?, IP len, IP (Unicode), dialup len, dialup (Unicode),
+                                             user len, user (Unicode), password len, password (Unicode)
+                                             where auth: 0x00 - normal, 0x01 - secure
+                                                   call_type: 0x00 - analogue, 0x01 - ISDN
+                                                   call_speed: 0x00 - 9600, 0x01 - 14400
                                         0x02 - USSD bearer
                                           frame: type, service number len/IP len,service num (Unicode)/IP (Unicode),service code len,
                                                  service code (Unicode)
                                             where type: 0x01 - service number, 0x00 - IP
-    r Get WAP settings 2 err{ 0x001d,error}\r
-                            where: error=0x05    \r
-0x40: Security commands\r
-?   s ???(N6150)            { 0x08, 0x00 }\r
-?   r ???(N6150)            { 0x08 }\r
-    s Enable extended cmds  { 0x64, cmd }\r
-                            where cmd: 0x00: off\r
-                                       0x01: on\r
-                                       0x03: reset (doesn't ask for PIN again)\r
-                                       0x04: reset (PIN is requested)\r
-                                             In 5110 makes reset without PIN\r
-                                       0x06: CONTACT SERVICE!!! Don't try it!\r
-    s Get IMEI              { 0x66 }\r
-    r Get IMEI              { 0x66, 0x01, IMEI, 0x00}\r
-    s (ACD Readings)?(N6150 { 0x68 }\r
-    r (ACD Readings)?(N6150 { 0x68, ... }\r
-    s Get Product Profile\r
-      Settings              { 0x6a}\r
-    r Get Product Profile\r
-      Settings              { 0x6a, 4bytes with Product Profile Settings }\r
-    s Set Product Profile\r
-      Settings              { 0x6b, 4bytes with Product Profile Settings }\r
-    r Set Product Profile\r
-      Settings OK ?         { 0x6b }\r
-    s Get code              { 0x6e, code }\r
-                            where code: see 0x08/0x0004 (no allowed code !)\r
-    r Get code              { 0x6e, code, allowed, allowed? (sec code (text)) }\r
-                            where code: see 0x08/0x0004\r
-                                  allowed: 0: no\r
-                                           1: yes\r
-?   s Reset Permanent\r
-?     Counters (nm->test36) { 0x74, 0x01, 0x01, 0x0e }\r
-?   r Reset Permanent\r
-?     Counters (nm->test36) { 0x74 }\r
-    s Call commands         { 0x7c, block }\r
-                            where where: command, (values)\r
-                                 command: 0x01\r
-                                     values: number(ASCII), 0x00 - makes voice call\r
-                                 command: 0x02 - answer call\r
-                                 command: 0x03 - release call\r
-    r Call commands         { 0x7c, command }\r
-    s Netmonitor            { 0x7e, field }\r
-                            where: field: 00: next\r
-                                          F0: reset\r
-                                          F1: off\r
-                                          F2: field test menus\r
-                                          F3: developer menus\r
-    s Get simlock info      { 0x8a, 0x00}\r
-    r Get simlock info      { 0x8a, 0x00, 0x01, lockstype, locksclosed, 0x00, 0x00, locksinfo(lock1,4,2,3), counter1,counter2,counter4,counter4,0x00 }\r
-                            where: lockstype:   bit1,bit2,bit3,bit4 - if set, selected lock is user lock\r
-                                   locksclosed: bit1,bit2,bit3,bit4 - if set, selected lock is closed\r
-                                   counter1 - counter4: counters for locks\r
-    s Buzzer pitch          { 0x8f, volume, hzLO, hzHI }\r
-                            if volume and hz is 0, it's off\r
-    r Buzzer pitch          { 0x8f}\r
-    s ACD Readings ?        { 0x91, parameter?(0x02,0x03,0x04,0x05,0x07) }\r
-    r ACD Readings ?        { 0x91, parameter?, value? }\r
-?   s ???(N6150)            { 0x98, 0x00 }\r
-?   r ???(N6150)            { 0x98, 0x00, 0x04 }\r
-    s Get bin ringtone      { 0x9e, location }\r
-                            where: location=0,1,etc.\r
-    r Get bin ringtone      { 0x9e, location, error, contents... }\r
-                            where location=0,1,etc.\r
-                                  error=0x0a, ringtone NOT available\r
-                                        0x00, OK\r
-    s Set bin ringtone      { 0xa0, location, 0x00, contenst... }\r
-                            where: location=0,1,etc.\r
-    r Set bin ringtone      { 0xa0, location, error }\r
-                              where location=0,1,etc.\r
-                                    error=0x0a, ringtone NOT set\r
-                                          0x00, ringtone set OK\r
-?   r Get MSid              { 0xb5, 0x01, 0x2f, msid, 0x25 }\r
-    s Get info about phone  { 0xc8, 0x01 }\r
-    r Get info about phone  { 0xc8, 0x01, 0x00, "V ", "firmware", 0x0a, "firmware date", 0x0a, "model", 0x0a, "(c) NMP.", 0x00 }\r
-    s Get MCU SW Checksum   { 0xc8, 0x02 }\r
-    r Get MCU SW Checksum   { 0xc8, 0x02, 0x00, checksum (4 bytes),0x00 }\r
-    s DPS External SW       { 0xc7, 0x03 }\r
-    r DSP External SW       { 0xc7, 0x03, 0x00, string,0x00 }\r
-    s Get HW                { 0xc8, 0x05 }\r
-    r Get HW                { 0xc8, 0x05, 0x00, HW version (4 bytes), 0x00 }\r
-    s Get "Made" Date       { 0xc8, 0x05 }\r
-    r Get "Made" Date       { 0xc8, 0x05, 0x00, date(4 bytes), 0x00 }\r
-    s Get DSP Internal SW   { 0xc8, 0x09 }\r
-    r Get DSP Internal SW   { 0xc8, 0x09, 0x00, version (1 bytes), 0x00 }\r
-    s Get PCI version       { 0xc8, 0x0b }\r
-    r Get PCI version       { 0xc8, 0x0b, 0x00, version, 0x00 }\r
-    s Get system ASIC       { 0xc8, 0x0c }\r
-    r Get system ASIC       { 0xc8, 0x0c, 0x00, string, 0x00 }\r
-    s Get COBBA             { 0xc8, 0x0d }\r
-    r Get COBBA             { 0xc8, 0x0d, 0x00, string, 0x00 }\r
-    s Get PLUSSA            { 0xc8, 0x0e }\r
-    r Get PLUSSA            { 0xc8, 0x0e, available, 0x00 }\r
-                            where available: 0x01: not available\r
-    s Get CCONT             { 0xc8, 0x0f }\r
-    r Get CCONT             { 0xc8, 0x0f, available, 0x00 }\r
-                            where available: 0x01: not available\r
-    s Get PPM version       { 0xc8, 0x10 }\r
-    r Get PPM version       { 0xc8, 0x10, 0x00, "V ", "firmware", 0x0a, "firmware date", 0x0a, "model", 0x0a, "(c) NMP.", 0x00 }\r
-    s Get PPM info          { 0xc8, 0x12 }\r
-    r Get PPM info          { 0xc8, 0x12, 0x00, PPM version ("B", "C", etc.), 0x00 }\r
-    s Set HW version        { 0xc9, 0x05, version, 0x00 }\r
-    s Get Product Code      { 0xca, 0x01 }\r
-    r Get Product Code      { 0xca, 0x01, 0x00, number, 0x00 }\r
-    s Get Order Number      { 0xca, 0x02 }\r
-    r Get Order Number      { 0xca, 0x02, 0x00, string, 0x00 }\r
-    s Get Prod.Ser.Number   { 0xca, 0x03 }\r
-    r Get Prod.Ser.Number   { 0xca, 0x03, 0x00, number, 0x00 }\r
-    s Get Basic Prod.Code   { 0xca, 0x04 }\r
-    r Get Basic Prod.Code   { 0xca, 0x04, 0x00, number, 0x00 }\r
-    s Set Product Code      { 0xcb, 0x01, product code, 0x00 }\r
-    s Set Order Number      { 0xcb, 0x02, number, 0x00 }\r
-    s Set Prod.Ser.Number   { 0xcb, 0x03, number, 0x00 }\r
-    s Get (original ?)IMEI  { 0xcc, 0x01 }\r
-    r Get (original ?)IMEI  { 0xcc, 0x01, IMEI, 0x00 }\r
-    s Get Manufacture Month { 0xcc, 0x02 }\r
-    r Get Manufacture Month { 0xcc, 0x02, 0x00, string, 0x00 }\r
-    s Get Purchare date     { 0xcc, 0x04 }\r
-    r Get Purchare date     { 0xcc, 0x04, 0x00, string, 0x00 }\r
-    s Set "Made" date       { 0xcd, 0x02, string, 0x00 }\r
-    s Make "all" phone tests{ 0xce,0x1d,0xfe,0x23,0x00,0x00}\r
-    s Make one phone test   { 0xce,0x1d,num1,num2,num3,num4}\r
-                            Where num1-num4: 0x02,0x00,0x00,0x00;\r
-                                             0x04,0x00,0x00,0x00;\r
-                                             0x08,0x00,0x00,0x00;\r
-                                             0x10,0x00,0x00,0x00;\r
-                                             0x20,0x00,0x00,0x00;\r
-                                             0x40,0x00,0x00,0x00;\r
-                                             0x80,0x00,0x00,0x00;\r
-                                             0x00,0x01,0x00,0x00;\r
-                                             0x00,0x02,0x00,0x00;\r
-                                             0x00,0x04,0x00,0x00; - "Power off"\r
-                                               No test for "Security data"\r
-                                             0x00,0x10,0x00,0x00;\r
-                                             0x00,0x20,0x00,0x00;\r
-                                             0x00,0x40,0x00,0x00;\r
-                                             0x00,0x80,0x00,0x00;\r
-                                             0x00,0x00,0x01,0x00;\r
-                                             ....\r
-                                             0x00,0x00,0x10,0x00;\r
-    s Result of phone tests { 0xcf }\r
-    r Result of phone tests { 0xcf, number of tests, results of next tests }\r
-?   s ???                   { 0xd1 }\r
-?   r ???(N5110)            { 0xd1, 0x00, 0x1d, 0x00, 0x01, 0x08, 0x00 }\r
-    s LCD Test              { 0xd3, value }\r
-                            where value: 0x03, 0x02 - 1'st test\r
-                                        0x03, 0x01 - 2'nd test\r
-                                         0x02, 0x03 - clears screen\r
-    s ACD Readings(N6150)?  { 0xd4, 0x02, 0x00, 0x02, 0x00, 0x0e, 0x01}\r
-    r ACD Readings(N6150)?  { 0xd4, 0x02, 0x00, 0x02, 0x00, 0x0e, 0x01, ?}\r
-    r Function of           { 0xff, 0x8c }\r
-      0x40 msgtype not\r
-      supported ?\r
-0x78:\r
-    s Status confirm        { 0x0201, 0x03 }\r
-    r Incoming call seq1    { 0x0102 0x0e 0x03 }\r
-    r Incoming call seq2    { 0x0102 0x7e 0x01 }\r
-0x79:\r
-    s CarKit enable         { 0x0201 0x01 0x62 0x00 }\r
-    r CarKit enabled        { 0x0201 0x02 0x06 0x00 "V " {version} "\nHFU"\r
-                                     0x00 }\r
-0x7a: settings\r
-    r Set setting           { 0x01eb, number, 0x00 }\r
-    s Set setting           { 0x01ec, number, contents }\r
-                            where for number:\r
-                              0x02 (startup text) : 0x00, text (Unicode)\r
-                              0x15 (startup logo) : 0x00, 0x00, 0x00, 0x04,\r
-                                        0xc0, 0x02, 0x00, height, 0xc0, 0x03, 0x00, width,\r
-                                       0xc0, 0x04, 0x03, 0x00, {bitmap} }\r
-                                where width, height, {bitmap}: see 0x7a/0x01ed 0x15\r
-    s Get setting           { 0x01ee, number}\r
-                            where number: 0x01 - 0x1e\r
-                              0x02: startup text\r
-                              0x15: startup logo\r
-                              0x1c: security code\r
-    r Get setting           { 0x01ed,number, 0x00, contents}\r
-                            where for number:\r
-                              0x02 (startup text) : 0x00, text (Unicode)\r
-                              0x15 (startup logo) : 0x00, 0x00, 0x00, 0x04,\r
-                                        0xc0, 0x02, 0x00, height, 0xc0, 0x03, 0x00, width,\r
-                                        0xc0, 0x04, 0x03, 0x00, {bitmap} }\r
-                                where height: 60 (0x3c) or 65\r
-                                      width:  96 (0x60)\r
-                                      {bitmap}: like other bitmaps but pixels\r
-                                                placed vertically.\r
-                              0x1c (security code): {code(ascii)}, 0x00 \r
-0x7f: Acknowledge(FBUS/IRDA){+type, seq }\r
-      Acknowledge(MBUS)...\r
-0xd0: \r
-    s Power on message seq1 {+04 }\r
-    r Power on message seq1 {+05 }\r
-0xd1:\r
-    s Get HW&SW version     { 0x0003, 0x00 }\r
-0xd2:\r
-    r Get HW&SW version     { 0x0003 "V " "firmware\n" "firmware date\n"\r
-                              "model\n" "(c) NMP." }\r
-0xf4: Power on message seq 2\r
+    r Get WAP settings 2 err{ 0x001d,error}
+                            where: error=0x05    
+0x40: Security commands
+?   s ???(N6150)            { 0x08, 0x00 }
+?   r ???(N6150)            { 0x08 }
+    s Enable extended cmds  { 0x64, cmd }
+                            where cmd: 0x00: off
+                                       0x01: on
+                                       0x03: reset (doesn't ask for PIN again)
+                                       0x04: reset (PIN is requested)
+                                             In 5110 makes reset without PIN
+                                       0x06: CONTACT SERVICE!!! Don't try it!
+    s Get IMEI              { 0x66 }
+    r Get IMEI              { 0x66, 0x01, IMEI, 0x00}
+    s (ACD Readings)?(N6150 { 0x68 }
+    r (ACD Readings)?(N6150 { 0x68, ... }
+    s Get Product Profile
+      Settings              { 0x6a}
+    r Get Product Profile
+      Settings              { 0x6a, 4bytes with Product Profile Settings }
+    s Set Product Profile
+      Settings              { 0x6b, 4bytes with Product Profile Settings }
+    r Set Product Profile
+      Settings OK ?         { 0x6b }
+    s Get code              { 0x6e, code }
+                            where code: see 0x08/0x0004 (no allowed code !)
+    r Get code              { 0x6e, code, allowed, allowed? (sec code (text)) }
+                            where code: see 0x08/0x0004
+                                  allowed: 0: no
+                                           1: yes
+?   s Reset Permanent
+?     Counters (nm->test36) { 0x74, 0x01, 0x01, 0x0e }
+?   r Reset Permanent
+?     Counters (nm->test36) { 0x74 }
+    s Call commands         { 0x7c, block }
+                            where where: command, (values)
+                                 command: 0x01
+                                     values: number(ASCII), 0x00 - makes voice call
+                                 command: 0x02 - answer call
+                                 command: 0x03 - release call
+    r Call commands         { 0x7c, command }
+    s Netmonitor            { 0x7e, field }
+                            where: field: 00: next
+                                          F0: reset
+                                          F1: off
+                                          F2: field test menus
+                                          F3: developer menus
+    s Get simlock info      { 0x8a, 0x00}
+    r Get simlock info      { 0x8a, 0x00, 0x01, lockstype, locksclosed, 0x00, 0x00, locksinfo(lock1,4,2,3), counter1,counter2,counter4,counter4,0x00 }
+                            where: lockstype:   bit1,bit2,bit3,bit4 - if set, selected lock is user lock
+                                   locksclosed: bit1,bit2,bit3,bit4 - if set, selected lock is closed
+                                   counter1 - counter4: counters for locks
+    s Buzzer pitch          { 0x8f, volume, hzLO, hzHI }
+                            if volume and hz is 0, it's off
+    r Buzzer pitch          { 0x8f}
+    s ACD Readings ?        { 0x91, parameter?(0x02,0x03,0x04,0x05,0x07) }
+    r ACD Readings ?        { 0x91, parameter?, value? }
+?   s ???(N6150)            { 0x98, 0x00 }
+?   r ???(N6150)            { 0x98, 0x00, 0x04 }
+    s Get bin ringtone      { 0x9e, location }
+                            where: location=0,1,etc.
+    r Get bin ringtone      { 0x9e, location, error, contents... }
+                            where location=0,1,etc.
+                                  error=0x0a, ringtone NOT available
+                                        0x00, OK
+    s Set bin ringtone      { 0xa0, location, 0x00, contenst... }
+                            where: location=0,1,etc.
+    r Set bin ringtone      { 0xa0, location, error }
+                              where location=0,1,etc.
+                                    error=0x0a, ringtone NOT set
+                                          0x00, ringtone set OK
+?   r Get MSid              { 0xb5, 0x01, 0x2f, msid, 0x25 }
+    s Get info about phone  { 0xc8, 0x01 }
+    r Get info about phone  { 0xc8, 0x01, 0x00, "V ", "firmware", 0x0a, "firmware date", 0x0a, "model", 0x0a, "(c) NMP.", 0x00 }
+    s Get MCU SW Checksum   { 0xc8, 0x02 }
+    r Get MCU SW Checksum   { 0xc8, 0x02, 0x00, checksum (4 bytes),0x00 }
+    s DPS External SW       { 0xc7, 0x03 }
+    r DSP External SW       { 0xc7, 0x03, 0x00, string,0x00 }
+    s Get HW                { 0xc8, 0x05 }
+    r Get HW                { 0xc8, 0x05, 0x00, HW version (4 bytes), 0x00 }
+    s Get "Made" Date       { 0xc8, 0x05 }
+    r Get "Made" Date       { 0xc8, 0x05, 0x00, date(4 bytes), 0x00 }
+    s Get DSP Internal SW   { 0xc8, 0x09 }
+    r Get DSP Internal SW   { 0xc8, 0x09, 0x00, version (1 bytes), 0x00 }
+    s Get PCI version       { 0xc8, 0x0b }
+    r Get PCI version       { 0xc8, 0x0b, 0x00, version, 0x00 }
+    s Get system ASIC       { 0xc8, 0x0c }
+    r Get system ASIC       { 0xc8, 0x0c, 0x00, string, 0x00 }
+    s Get COBBA             { 0xc8, 0x0d }
+    r Get COBBA             { 0xc8, 0x0d, 0x00, string, 0x00 }
+    s Get PLUSSA            { 0xc8, 0x0e }
+    r Get PLUSSA            { 0xc8, 0x0e, available, 0x00 }
+                            where available: 0x01: not available
+    s Get CCONT             { 0xc8, 0x0f }
+    r Get CCONT             { 0xc8, 0x0f, available, 0x00 }
+                            where available: 0x01: not available
+    s Get PPM version       { 0xc8, 0x10 }
+    r Get PPM version       { 0xc8, 0x10, 0x00, "V ", "firmware", 0x0a, "firmware date", 0x0a, "model", 0x0a, "(c) NMP.", 0x00 }
+    s Get PPM info          { 0xc8, 0x12 }
+    r Get PPM info          { 0xc8, 0x12, 0x00, PPM version ("B", "C", etc.), 0x00 }
+    s Set HW version        { 0xc9, 0x05, version, 0x00 }
+    s Get Product Code      { 0xca, 0x01 }
+    r Get Product Code      { 0xca, 0x01, 0x00, number, 0x00 }
+    s Get Order Number      { 0xca, 0x02 }
+    r Get Order Number      { 0xca, 0x02, 0x00, string, 0x00 }
+    s Get Prod.Ser.Number   { 0xca, 0x03 }
+    r Get Prod.Ser.Number   { 0xca, 0x03, 0x00, number, 0x00 }
+    s Get Basic Prod.Code   { 0xca, 0x04 }
+    r Get Basic Prod.Code   { 0xca, 0x04, 0x00, number, 0x00 }
+    s Set Product Code      { 0xcb, 0x01, product code, 0x00 }
+    s Set Order Number      { 0xcb, 0x02, number, 0x00 }
+    s Set Prod.Ser.Number   { 0xcb, 0x03, number, 0x00 }
+    s Get (original ?)IMEI  { 0xcc, 0x01 }
+    r Get (original ?)IMEI  { 0xcc, 0x01, IMEI, 0x00 }
+    s Get Manufacture Month { 0xcc, 0x02 }
+    r Get Manufacture Month { 0xcc, 0x02, 0x00, string, 0x00 }
+    s Get Purchare date     { 0xcc, 0x04 }
+    r Get Purchare date     { 0xcc, 0x04, 0x00, string, 0x00 }
+    s Set "Made" date       { 0xcd, 0x02, string, 0x00 }
+    s Make "all" phone tests{ 0xce,0x1d,0xfe,0x23,0x00,0x00}
+    s Make one phone test   { 0xce,0x1d,num1,num2,num3,num4}
+                            Where num1-num4: 0x02,0x00,0x00,0x00;
+                                             0x04,0x00,0x00,0x00;
+                                             0x08,0x00,0x00,0x00;
+                                             0x10,0x00,0x00,0x00;
+                                             0x20,0x00,0x00,0x00;
+                                             0x40,0x00,0x00,0x00;
+                                             0x80,0x00,0x00,0x00;
+                                             0x00,0x01,0x00,0x00;
+                                             0x00,0x02,0x00,0x00;
+                                             0x00,0x04,0x00,0x00; - "Power off"
+                                               No test for "Security data"
+                                             0x00,0x10,0x00,0x00;
+                                             0x00,0x20,0x00,0x00;
+                                             0x00,0x40,0x00,0x00;
+                                             0x00,0x80,0x00,0x00;
+                                             0x00,0x00,0x01,0x00;
+                                             ....
+                                             0x00,0x00,0x10,0x00;
+    s Result of phone tests { 0xcf }
+    r Result of phone tests { 0xcf, number of tests, results of next tests }
+?   s ???                   { 0xd1 }
+?   r ???(N5110)            { 0xd1, 0x00, 0x1d, 0x00, 0x01, 0x08, 0x00 }
+    s LCD Test              { 0xd3, value }
+                            where value: 0x03, 0x02 - 1'st test
+                                        0x03, 0x01 - 2'nd test
+                                         0x02, 0x03 - clears screen
+    s ACD Readings(N6150)?  { 0xd4, 0x02, 0x00, 0x02, 0x00, 0x0e, 0x01}
+    r ACD Readings(N6150)?  { 0xd4, 0x02, 0x00, 0x02, 0x00, 0x0e, 0x01, ?}
+    r Function of           { 0xff, 0x8c }
+      0x40 msgtype not
+      supported ?
+0x78:
+    s Status confirm        { 0x0201, 0x03 }
+    r Incoming call seq1    { 0x0102 0x0e 0x03 }
+    r Incoming call seq2    { 0x0102 0x7e 0x01 }
+0x79:
+    s CarKit enable         { 0x0201 0x01 0x62 0x00 }
+    r CarKit enabled        { 0x0201 0x02 0x06 0x00 "V " {version} "\nHFU"
+                                     0x00 }
+0x7a: settings
+    r Set setting           { 0x01eb, number, 0x00 }
+    s Set setting           { 0x01ec, number, contents }
+                            where for number:
+                              0x02 (startup text) : 0x00, text (Unicode)
+                              0x15 (startup logo) : 0x00, 0x00, 0x00, 0x04,
+                                        0xc0, 0x02, 0x00, height, 0xc0, 0x03, 0x00, width,
+                                       0xc0, 0x04, 0x03, 0x00, {bitmap} }
+                                where width, height, {bitmap}: see 0x7a/0x01ed 0x15
+    s Get setting           { 0x01ee, number}
+                            where number: 0x01 - 0x1e
+                              0x02: startup text
+                              0x15: startup logo
+                              0x1c: security code
+    r Get setting           { 0x01ed,number, 0x00, contents}
+                            where for number:
+                              0x02 (startup text) : 0x00, text (Unicode)
+                              0x15 (startup logo) : 0x00, 0x00, 0x00, 0x04,
+                                        0xc0, 0x02, 0x00, height, 0xc0, 0x03, 0x00, width,
+                                        0xc0, 0x04, 0x03, 0x00, {bitmap} }
+                                where height: 60 (0x3c) or 65
+                                      width:  96 (0x60)
+                                      {bitmap}: like other bitmaps but pixels
+                                                placed vertically.
+                              0x1c (security code): {code(ascii)}, 0x00 
+0x7f: Acknowledge(FBUS/IRDA){+type, seq }
+      Acknowledge(MBUS)...
+0xd0: 
+    s Power on message seq1 {+04 }
+    r Power on message seq1 {+05 }
+0xd1:
+    s Get HW&SW version     { 0x0003, 0x00 }
+0xd2:
+    r Get HW&SW version     { 0x0003 "V " "firmware\n" "firmware date\n"
+                              "model\n" "(c) NMP." }
+0xf4: Power on message seq 2
index dc1c5d8..965dc59 100644 (file)
@@ -82,15 +82,15 @@ notify us via e-mail.  Thank you.
    Port settings:
      Speed 9600 bps, Bits 8, ParityOdd, Stop Bits 1, DTR and RTS logic 0
 
-   In the MBUS bus, the phone has only one connector for transmition and\r
+   In the MBUS bus, the phone has only one connector for transmition and
    reception.
 
-   Because of this characteristics of the phone connector, every time that the\r
-   PC writes into the phone it is writing as well into its own Rx. So every\r
-   time the PC sends info into the phone it finds that same information in its\r
-   own Rx buffers, like a mirror copy. This should be discarded.\r
+   Because of this characteristics of the phone connector, every time that the
+   PC writes into the phone it is writing as well into its own Rx. So every
+   time the PC sends info into the phone it finds that same information in its
+   own Rx buffers, like a mirror copy. This should be discarded.
    
-   The communications is made like an old cb radio, only one\r
+   The communications is made like an old cb radio, only one
    talking at a time. Many transmission are made this way:
 
      <computer sends request>
@@ -107,7 +107,7 @@ notify us via e-mail.  Thank you.
    You should wait for bus to be free for 3 miliseconds before normal
    message, and for 2.5 miliseconds before acknowledge. You should wait
    for acknowledge for 200 miliseconds, then retransmit.
-\r
+
  Frame format for FBUS version 1:
 
     { FrameID, FrameLength, MsgType, {block}, SeqNo, ChkSum }
@@ -172,10 +172,10 @@ notify us via e-mail.  Thank you.
 
   Ack:
     
-    { FrameID, DestDEV, SrcDEV, 0x7f, Id_SeqNo, ChkSum }\r
-       \r
+    { FrameID, DestDEV, SrcDEV, 0x7f, Id_SeqNo, ChkSum }
+       
         where Id_SeqNo:        Is the sequence number that you are
-                               acknowleging (from\r the other part).\r
+                               acknowleging (from the other part).
 
  Frame format for Infrared:
 
index d61eb40..7724082 100644 (file)
-<html>\r
-<head>\r
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\r
-   <meta name="Author" content="Marcin Wiacek">\r
-   <title>Configuration</title>\r
-   <link REL=stylesheet HREF="../styl.css" TYPE="text/css">\r
-</head>\r
-<body>\r
-\r
-<a NAME="Top"></a>\r
-<p align="RIGHT"><a class="autoremail" href="../index.htm">Main page</a></p>\r
-<center><font color="#1F409F" size=+2 class="tytul">Configuration</font></center>\r
-\r
-<p><hr size="2" noshade width="60%" align="center" style="color: #004080">\r
-\r
-<p><font color="#1F409F" size=+2 class="dzial">How to install it from the source ?</font><br>\r
-<hr align="LEFT" size="3" width="300" color="#60c0a0" noshade>\r
-\r
-<p>If you get the sources you need to create script \r
-<i>configure</i>. You do it by typing:\r
-<PRE>tfuj:~/gnokii-0.3.3pre5$ autoconf</PRE>\r
-\r
-<P>If you get the sources from the tarball you don't need to do \r
-this - <TT>configure</TT> is already made for you. For quick install do simply:\r
-<PRE>tfuj:~/gnokii-0.3.3pre5$ ./configure\r
-tfuj:~/gnokii-0.3.3pre5$ make\r
-tfuj:~/gnokii-0.3.3pre5$ make install\r
-</PRE>\r
-\r
-<P>But <i>configure</i> has some options. Except obvious \r
-parameters as <i>--prefix</i> which specifies a path to install GNOKII, you \r
-can specify one of the following: \r
-\r
-<DL>\r
-  <dt><i>--help</i>\r
-  <dd>Shows you list of available options</dd></dl>\r
-<dl>\r
-  <DT><i>--enable-debug</i> \r
-  <DD>Turns on debugging. It's usefull especially for developers. But if you \r
-  find a bug in GNOKII, please compile the sources with debugging enabled and \r
-  send this output to the GNOKII mailing list. This is used by <i>gnokii</i> \r
-  program. </DD></DL>\r
-<DL>\r
-  <DT><i>--enable-xdebug</i> \r
-  <DD>The same as above but used by <i>xgnokii</i>. </DD></DL>\r
-<DL>\r
-  <DT><i>--enable-rlpdebug</i> \r
-  <DD>This option turns on debugging specific to the RLP stuff. Note, that it's \r
-  very important at the moment as this part of GNOKII is under the hardest \r
-  development. </DD></DL>\r
-<DL>\r
-  <DT><i>--without-x</i> \r
-  <DD>Don't include X Window system support - <i>xgnokii</i>. </DD></DL>\r
-<DL>\r
-  <DT><i>--enable-security</i> \r
-  <DD>Turns on some security functions:.... Use them with caution. </DD></DL>\r
-<DL>\r
-  <DT><i>--enable-win32</i> \r
-  <DD>Include MS Windows support. Yes, it really exists. ;-) </DD></DL>\r
-<DL>\r
-  <DT><i>--with-model=MODEL</i>, <i>--with-port=PORT</i> \r
-  <DD>Specify the model of the phone (eg. 6150) and the port it is connected to \r
-  (eg. /dev/ttyS1). These values can be overwritten with ones from the config \r
-  files.\r
-  </DD>\r
-</DL>\r
-\r
-<P>The sample usage:\r
-<PRE>tfuj:~/gnokii-0.3.3pre5$ ./configure --prefix=/usr2 --enable-debug --without-x \\r
---enable-security --with-model=6130 --with-port=/dev/ttyS1\r
-</PRE>\r
-\r
-<P>When the <i>configure</i> succeed, it shows options GNOKII \r
-will be compiled with:\r
-<PRE>    Host system:        linux-gnulibc1\r
-    Gnokii version:     0.3.3_pre5\r
-    Xgnokii version:    20000613\r
-    Phone model:        6130\r
-    Serial port:        /dev/ttyS1\r
-    X (GTK) support:    no\r
-    Debug:              yes\r
-    XDebug:             no\r
-    RLPDebug:           no\r
-    NLS:                yes\r
-    Security:           yes\r
-    Win32:               \r
-    Prefix:             /usr2\r
-</PRE>\r
-\r
-<P>Now, the only thing left to do is just ro run:\r
-<PRE>tfuj:~/gnokii-0.3.3pre5$ make\r
-tfuj:~/gnokii-0.3.3pre5$ make install\r
-</PRE>\r
-\r
-<P>Finally, you have GNOKII installed in your system. And now REAL \r
-FUN begins. :-)\r
-\r
-<p><font color="#1F409F" size=+2 class="dzial">How to install it from binaries ?</font><br>\r
-<hr align="LEFT" size="3" width="300" color="#60c0a0" noshade>\r
-\r
-<p>If you downloaded gnokii as a pre-built binary you should install\r
-it in the conventional manner for the package type in question.\r
-For example if you downloaded a .rpm file you can install it by\r
-running the following as root.\r
-\r
-<p>rpm -i gnokii-0.3.2-i386.rpm\r
-\r
-<p>If you are using a Debian based system, you can use dpackage\r
-to do the installation (FIXME - is this correct ?)\r
-\r
-<p><font color="#1F409F" size=+2 class="dzial">How to make connection with phone ?</font><br>\r
-<hr align="LEFT" size="3" width="300" color="#60c0a0" noshade>\r
-\r
-<p>There are three ways to make it:\r
-\r
-<ul>\r
-<li>connecting phone with computer using cable. All phones allow to make it\r
-(even 3210 - connector is inside). If you want to know more\r
-about creating your own cable, read <a href=../gsm/cables/cables.htm>cables faq</a>.</li>\r
-<li>using IrDa port in phone and computer. Notice, that your computer\r
-and phone must have it (only some series of Nokia phones has it - for example,\r
-6110, 6150)</li>\r
-<li>connecting to phone special device called "dongle" (it has IrDa port)\r
-and making IrDa connection between it and phone. Current gnokii cas use\r
-Tekram IRmate 210 - see patches</li>\r
-</ul>\r
-\r
-<p><font color="#1F409F" size=+2 class="dzial">How to configure gnokii ?</font><br>\r
-<hr align="LEFT" size="3" width="300" color="#60c0a0" noshade>\r
-\r
-<p>First it to use <i>--with-model</i> and <i>--with-port</i> options for\r
-configure script. But I do not recommend this. In my opinion these should be\r
-removed from configure. Second disadvantage is that you can't use it when\r
-you are installing a binary package.\r
-\r
-<p>So, will use better method :-).\r
-You should copy the <a href=../examples/gnokiirc>gnokiirc</a>\r
-file from the Docs/examples directory to your\r
-home directory and name it gnokiirc or copy it into /etc directory\r
-and name gnokiirc.\r
-\r
-<p>Using your favorite\r
-editor ensure that the settings are correct for your system,\r
-the sample file has details of the various options available. The most\r
-difficult problem could be discovering model of your phone - go into\r
-our <a href=../gsm/firmware/firmware.htm>firmware page</a>\r
-and try to use codes written in column\r
-<b>Firmware version code</b>. If your phone will display something,\r
-see model number on the third line, look on the\r
-<a href=../gsm/firmware/firmware.htm>firmware page</a>\r
-again (for it) and read phone model then.\r
-\r
-<p>Note that you will need read/write permissions on whatever\r
-serial port you specify in gnokiirc.  You can now use gnokii\r
-and xgnokii.\r
-\r
-<P>Of course, you don't have to make any config, if you will use\r
-these config options. There are default:\r
-\r
-<p>\r
-<pre>\r
-[global]\r
-port = /dev/ttyS0\r
-model = 6110\r
-connection = serial\r
-initlength = default\r
-bindir=/usr/local/sbin\r
-</pre>\r
-\r
-<p><font color="#1F409F" size=+2 class="dzial">How to configure infrared connection ?</font><br>\r
-<hr align="LEFT" size="3" width="300" color="#60c0a0" noshade>\r
-\r
-<p>\r
-<ul>\r
-\r
-<li>Go into configuration of your IrDa port (the most often it's made in\r
-BIOS, sometimes using program provided by computer's producer):\r
-\r
-<p>\r
-<ul>\r
-<li>Enable it</li>\r
-<li>Setup the COM-Port on which it should work.\r
-Here are addresses:\r
-<br>ttyS0 (COM1): 3F8, IRQ: 4\r
-<br>ttyS1 (COM2): 2F8, IRQ: 3\r
-<br>ttyS2 (COM3): 3E8, IRQ: 4\r
-<br>ttyS3 (COM4): 2E8, IRQ: 3\r
-<br>&nbsp;\r
-</li>\r
-</ul>\r
-</li>\r
-\r
-<li>Configure gnokii (see previous question)\r
-setting type of connection to\r
-infrared.</li>\r
-\r
-<li>If you are using linux, put linux-irda off (you can't use gnokii over infrared and\r
-linux-irda at the same time - it means too, if you want use\r
-linux-irda you must close all gnokii-applications what\r
-use the infrared-port in moment).\r
-</li>\r
-</ul>\r
-\r
-<p><font color="#1F409F" size=+2 class="dzial">How to configure gnokii driver for data connection ?</font><br>\r
-<hr align="LEFT" size="3" width="300" color="#60c0a0" noshade>\r
-\r
-<p>After installing and configuring gnokii you should make another group\r
-and allow mgnokiidev (it our virtual modem driver)\r
-to use it. For example (if you have installed gnokii\r
-into /usr/local):\r
-\r
-<p>\r
-<i>groupadd gnokii<br>\r
-chown root:gnokii /usr/local/sbin/mgnokiidev<br>\r
-chmod 4750 /usr/local/sbin/mgnokiidev</i>\r
-\r
-<p><b>And now connect (FIRST EXAMPLE):</b>\r
-\r
-<p>Then connect your phone to your PC and then run gnokiid:\r
-\r
-<PRE>[ first console ]\r
-tfuj:/home/pawel/gnokii# ./gnokiid/gnokiid \r
-</pre>\r
-\r
-<p>If successful, you should see a message saying that mgnokiidev has been\r
-run to create /dev/gnokii.  If you're using a 5110/6110 series phone\r
-you should hear a beep and see an "accessory connected" message on\r
-the phone.  If you're using a 3810 series phone you won't see anything\r
-on the phones LCD.\r
-\r
-<p>And now:\r
-\r
-<p>\r
-<pre>\r
-[ second console ]\r
-[- running minicom -]\r
-\r
-[ third console ]\r
-[- when connection is estabilished -]\r
-tfuj:/etc/ppp# /usr/sbin/pppd -d -detach /dev/gnokii 115200\r
-Using interface ppp0\r
-Connect: ppp0 &lt;--&gt; /dev/gnokii\r
-sent [LCP ConfReq id=0x1 <MRU 552> <ASYNCMAP 0x0> <MAGIC 0xc5c718fb> <PCOMP> <ACCOMP>]\r
-rcvd [LCP ConfReq id=0x8e <ASYNCMAP 0xa0000> <MAGIC 0x56292222> <PCOMP> <ACCOMP> &lt; 11 04 05 f4&gt; &lt; 13 0d 01 70 69 65 6b 6e 61 2d 61 73 34&gt;]\r
-sent [LCP ConfRej id=0x8e &lt; 11 04 05 f4&gt; &lt; 13 0d 01 70 69 65 6b 6e 61 2d 61 73 34&gt;]\r
-rcvd [LCP ConfNak id=0x1 <MRU 1500>]\r
-sent [LCP ConfReq id=0x2 <ASYNCMAP 0x0> <MAGIC 0xc5c718fb> <PCOMP> <ACCOMP>]\r
-rcvd [LCP ConfReq id=0x8f <ASYNCMAP 0xa0000> <MAGIC 0x56292222> <PCOMP> <ACCOMP>]\r
-sent [LCP ConfAck id=0x8f <ASYNCMAP 0xa0000> <MAGIC 0x56292222> <PCOMP> <ACCOMP>]\r
-rcvd [LCP ConfAck id=0x2 <ASYNCMAP 0x0> <MAGIC 0xc5c718fb> <PCOMP> <ACCOMP>]\r
-sent [IPCP ConfReq id=0x1 <ADDR 192.168.1.10> <COMPRESS 01 0f VJ>]\r
-sent [CCP ConfReq id=0x1 <DEFLATE 15> <DEFLATE(OLD#) 15> <BSD 15 v1>]\r
-rcvd [IPCP ConfReq id=0x16 <COMPRESS 0f VJ 00> <ADDR 157.25.75.129>]\r
-sent [IPCP ConfAck id=0x16 <COMPRESS 0f VJ 00> <ADDR 157.25.75.129>]\r
-rcvd [IPCP ConfNak id=0x1 <ADDR 157.25.94.141>]\r
-sent [IPCP ConfReq id=0x2 <ADDR 157.25.94.141> <COMPRESS 01 0f VJ>]\r
-rcvd [LCP ProtRej id=0x90 80 fd 01 01 00 0f 1a 04 78 00 18 04 78 00 15 03 2f]\r
-rcvd [IPCP ConfAck id=0x2 <ADDR 157.25.94.141> <COMPRESS 01 0f VJ>]\r
-local  IP address 157.25.94.141\r
-remote IP address 157.25.75.129\r
-Terminating on signal 2.\r
-sent [LCP TermReq id=0x3 "User request"]\r
-rcvd [LCP TermAck id=0x3]\r
-Connection terminated.\r
-Connect time 5.6 minutes.\r
-Sent 30568 bytes, received 197133 bytes.\r
-tfuj:/etc/ppp# \r
-</PRE>\r
-\r
-<p><b>SECOND EXAMPLE (I used such scripts):</b>\r
-\r
-<PRE>/home/pawel/.gnokiirc\r
----------------------\r
-global]\r
-port = /dev/ttyS1\r
-model = 6110\r
-connection = serial\r
-initlength = 1\r
-\r
-/usr/sbin/ppp-gnokii\r
---------------------\r
-#!/bin/sh\r
-LOCAL_IP=0.0.0.0       \r
-REMOTE_IP=0.0.0.0     \r
-NETMASK=255.255.255.0   \r
-DIALER_SCRIPT=/etc/ppp/ppp-gnokii\r
-exec /usr/sbin/pppd debug /dev/gnokii 115200 \\r
-$LOCAL_IP:$REMOTE_IP \\r
-connect $DIALER_SCRIPT\r
-\r
-/etc/ppp/ppp-gnokii\r
--------------------\r
-#!/bin/sh\r
-/usr/sbin/chat -v                                       \\r
-        TIMEOUT         30                              \\r
-        ABORT           '\nBUSY\r'                      \\r
-        ABORT           '\nNO ANSWER\r'                 \\r
-        ABORT           '\nRINGING\r\n\r\nRINGING\r'    \\r
-        ABORT           '\nNO CARRIER\r'                \\r
-        ''              ATDT501808080                   \\r
-        CONNECT         ''\r
-\r
-/etc/ppp/options\r
-----------------\r
--detach\r
-modem\r
-crtscts\r
-defaultroute\r
-asyncmap 0\r
-mtu 552\r
-mru 552\r
-\r
-/etc/ppp/pap-secrets\r
---------------------\r
-ppp * ppp\r
-</PRE>\r
-\r
-<P>Number 501808080 is an Internet access number for all Idea \r
-Centertel (Polish GSM operator) abonents. With these files the only thing to do \r
-is to run <i>gnokiid</i> and <i>/usr/sbin/ppp-gnokii</i>. Note that both: \r
-<i>/usr/sbin/ppp-gnokii</i> and <i>/etc/ppp/ppp-gnokii</i> must be \r
-executable files. At the moment you have to run <i>ppp-gnokii</i> as the \r
-superuser unless the simple user has a permission to write to a <I>pty</I> \r
-device. <i>gnokiid</i> must be run as the user belinging to <I>gnokii</I> \r
-group.\r
-\r
-<PRE>\r
-[ first console ]\r
-tfuj:~S /usr/sbin/gnokiid\r
-Initialising GSM\r
-Slave pty is /dev/ttyp9, calling /usr/sbin/mgnokiidev to create /dev/gnokii.\r
-\r
-[ second console ]\r
-tfuj:~# /usr/sbin/ppp-gnokii\r
-Serial connection established.\r
-Using interface ppp0\r
-Connect: ppp0 &lt;--&gt; /dev/gnokii\r
-Warning - secret file /etc/ppp/pap-secrets has world and/or group access\r
-sent [LCP ConfReq id=0x1     ]\r
-rcvd [LCP ConfReq id=0xbb     ]\r
-sent [LCP ConfAck id=0xbb     ]\r
-rcvd [LCP ConfNak id=0x1 ]\r
-sent [LCP ConfReq id=0x2    ]\r
-rcvd [LCP ConfAck id=0x2    ]\r
-Warning - secret file /etc/ppp/pap-secrets has world and/or group access\r
-sent [PAP AuthReq id=0x1 user="ppp" password="ppp"]\r
-rcvd [PAP AuthAck id=0x1 ""]\r
-Remote message: ^F\r
-sent [IPCP ConfReq id=0x1  ]\r
-sent [CCP ConfReq id=0x1   ]\r
-rcvd [IPCP ConfReq id=0x49  ]\r
-sent [IPCP ConfAck id=0x49  ]\r
-rcvd [IPCP ConfNak id=0x1 ]\r
-sent [IPCP ConfReq id=0x2  ]\r
-rcvd [IPCP ConfAck id=0x2  ]\r
-local  IP address 192.168.23.55\r
-remote IP address 192.168.9.2\r
-</PRE>\r
-\r
-<p><b>THIRD EXAMPLE:</b>\r
-\r
-<p>Use /dev/gnokii as a modem:\r
-\r
-<p><i>e.g. ppp session<br>\r
---------------- /etc/ppp/peers/demon-gnokii ---------------------<br>\r
-/dev/gnokii 115200<br>\r
-modem crtscts defaultroute<br>\r
-connect 'chat -v ABORT BUSY ABORT ERROR ABORT "NO CARRIER" "" AT OK-AT-OK ATD02083389666 CONNECT'<br>\r
-user XXXX.demon.co.uk<br>\r
-noauth<br>\r
-mtu 296<br>\r
-debug<br>\r
-----------------------------------------------------------------<br>\r
---------------- /etc/ppp/pap-secrets ---------------------------<br>\r
-XXXX.demon.co.uk       demon-gnokii    <yourpassword><br>\r
-----------------------------------------------------------------<br>\r
-</i>\r
-\r
-<p>Then "pppd call demon-gnokii" should connect\r
-<br>('tail -f /var/log/messages' to see what is happening)\r
-\r
-<p>If a call terminates you should get 'NO CARRIER' and gnokiid should\r
-continue to work, but this is early code and you may find you have to\r
-Ctrl-C and restart gnokiid (especially if the phone says the terminal\r
-connection has been lost)\r
-\r
-<p><b>AND ANOTHER EXAMPLE PPP SCRIPT FROM <a href="mailto:wikne@lynx.uio.no">Jon Wikne</a>:</b>\r
-\r
-<p>\r
-<i>\r
-#!/bin/sh<br>\r
-#<br>\r
-# Script to launch PPP over a Nokia 5110 / 6110 mobile phone<br>\r
-# 20-06-2000 -- Jon Wikne<br>\r
-#<br>\r
-### NOTE: "01234567" and "username" below must be replaced<br>\r
-### with your actual ISP's phone number and your user name.<br>\r
-#<br>\r
-### NOTE 2: If you are calling an ISDN number or a digital<br>\r
-### line you may also need ATS35=0 in the chat sequence.<br>\r
-&nbsp;<br>\r
-# Launch gnokiid....<br>\r
-echo "Launching gnokiid... "<br>\r
-/usr/local/sbin/gnokiid &<br>\r
-&nbsp;<br>\r
-# Wait for gnokiid to find the phone.<br>\r
-sleep 7<br>\r
-&nbsp;<br>\r
-# Now, down to business!<br>\r
-echo "Calling and starting pppd... "<br>\r
-pppd /dev/gnokii 115200 debug connect \<br>\r
-'chat -v ECHO ON ABORT BUSY ABORT ERROR ABORT "NO CARRIER" \<br>\r
-"" AT OK ATDT01234567 CONNECT ""' \<br>\r
-noipdefault ipcp-accept-local ipcp-accept-remote \<br>\r
-user username<br>\r
-&nbsp;<br>\r
-# Some cleaning up to do....<br>\r
-<br>\r
-echo -n "Stopping gnokiid... "<br>\r
-ps ax | awk 'BEGIN { prog="/usr/local/sbin/gnokiid"; ARGC=1 } <br>\r
-{ if (prog == $5) { print $1 ; exit 0 } }' $1<br>\r
-kill "$1"<br>\r
-echo $1\r
-</i>\r
-\r
-<p><font color="#1F409F" size=+2 class="dzial">Permission problem...</font><br>\r
-<hr align="LEFT" size="3" width="300" color="#60c0a0" noshade>\r
-\r
-<pre>\r
-> Now xgnokii want  to connecting.....  and some minutes later it's say:\r
->  Gnokii serial_open: open: Permission denied\r
-> Couldn't open FB61 device: Permission denied\r
-\r
-you should set your /dev/ttySx to:\r
-\r
-crw-rw----    1 root     dialout    4,  65 Jul  5  2000 /dev/ttyS1\r
-\r
-and add yourself to the group dialout. or make a new group gnokii \r
-and do the same thing for this group. see the gnokii doc about \r
-this, especialy if you want to use gnokiid.\r
-</pre>\r
-\r
-<p><font color="#1F409F" size=+2 class="dzial">Xgnokii files missed...</font><br>\r
-<hr align="LEFT" size="3" width="300" color="#60c0a0" noshade>\r
-\r
-<pre>\r
-> > I start to configure:\r
-> > \r
-> > elwinx:/usr/src/gnokii# ./configure  --prefix=/usr/local/\r
-> > \r
-> > checking for X... (cached) libraries /usr/X11R6/lib, headers\r
-> > /usr/X11R6/include\r
-> > checking for X11/xpm.h... (cached) no\r
-> > configure: warning: Cannot find include X11/xpm.h\r
-> > configure: warning: Disabling xgnokii.\r
-</pre>\r
-\r
-<p>For Debian GNU/Linux 2.2 potato:\r
-\r
-<p>\r
-<pre>\r
-> Do:\r
-> dpkg -S \*xpm.h\r
-> and show the result. You can't use xgnokii without libxpm.\r
-\r
-After I installed the xpm4g-dev_3.4k-5.deb xgnokii found my X\r
-\r
-My next Problem was the Program didn't find the gtk.h\r
-\r
-I installed this lib's\r
-libglib1.2-dev\r
-libgtk1.2-dev_1.2.7-1.deb\r
-\r
-and xgnokii are start up\r
-</pre>\r
-\r
-<p>For Redhat:\r
-\r
-<p>\r
-<pre>\r
-On Red Hat 6.2 (or derived?)\r
-\r
-sloth:danielm[12]% locate xpm.h\r
-/usr/X11R6/include/X11/xpm.h\r
-sloth:danielm[13]% rpm -qf /usr/X11R6/include/X11/xpm.h\r
-xpm-devel-3.4k-2\r
-\r
-On Red Hat 7 (or derived?)\r
-\r
-mouth:danielm[4]% locate xpm.h\r
-/usr/X11R6/include/X11/xpm.h\r
-mouth:danielm[5]% rpm -qf /usr/X11R6/include/X11/xpm.h\r
-XFree86-devel-4.0.1-1\r
-</pre>\r
-\r
-<p><font color="#1F409F" size=+2 class="dzial">Infrared problem</font><br>\r
-<hr align="LEFT" size="3" width="300" color="#60c0a0" noshade>\r
-\r
-<pre>\r
-> I'm having trouble getting Gnokii to work with my Nokia 6110 using the\r
-> infrared connection. It works perfectly with the cable. When I run gnokii\r
-> as non-root I get the following output:\r
-> \r
-> Added new section global\r
-> Adding key/value port//dev/ttyS3\r
-> Adding key/value model/6110\r
-> Adding key/value initlength/default\r
-> Adding key/value connection/infrared\r
-> Adding key/value bindir//usr/local/sbin/\r
-> Entering monitor mode...\r
-> Initialising GSM interface...\r
-> Starting IR mode...!\r
-> Couldn't open FB61 infrared device: Device or resource busy\r
-> Hmmm... GSM_LinkOK never went true. Quitting.\r
-> \r
-> And if I run it as root it looks like this:\r
-> \r
-> Added new section global\r
-> Adding key/value port//dev/ttyS3\r
-> Adding key/value model/6110\r
-> Adding key/value initlength/default\r
-> Adding key/value connection/infrared\r
-> Adding key/value bindir//usr/local/sbin/\r
-> Entering monitor mode...\r
-> Initialising GSM interface...\r
-> Starting IR mode...!\r
-> PC: 1c:00:0c:02:00:09:00:01:00:0d:00:00:02:01:40:00:52:06:\r
-> Timeout in IR-mode\r
-> PC: 1c:00:0c:02:00:09:00:01:00:0d:00:00:02:01:41:00:53:06:\r
-> Timeout in IR-mode\r
-> PC: 1c:00:0c:02:00:09:00:01:00:0d:00:00:02:01:42:00:50:06:\r
-> Timeout in IR-mode\r
-> PC: 1c:00:0c:02:00:09:00:01:00:0d:00:00:02:01:43:00:51:06:\r
-> Timeout in IR-mode\r
-> PC: 1c:00:0c:02:00:09:00:01:00:0d:00:00:02:01:44:00:56:06:\r
-> Timeout in IR-mode\r
-> Hmmm... GSM_LinkOK never went true. Quitting.\r
-> \r
-> It makes no difference if IR-reception is activated or not (well maybe the\r
-> numbers are different, I haven't checked)\r
-> \r
-> I have followed the Alessandro's beta-HOWTO which was posted June 22 2000\r
-> with the subject "Re: IR setup".\r
-> \r
-> In /var/log/messages I have found the following:\r
-> \r
-> Feb 18 23:34:16 bmw kernel: ircomm_tty: virtual tty driver for IrCOMM (\r
-> revision:Wed May 26 00:49:11 1999 ) \r
-> Feb 18 23:34:16 bmw kernel: ttyS00 at 0x03f8 (irq = 4) is a 16550A \r
-> Feb 18 23:34:16 bmw kernel: ttyS03 at 0x02e8 (irq = 3) is a 16550A \r
-> \r
-> I have tried both with and without the irda-module loaded (insmod\r
-> irda) but without luck.\r
-> \r
-> I'm using a Fujitsu C325 Lifebook (labtop) and my Nokia 6110 is version\r
-> 4.33. Has anyone experienced problems like these and hopefully has found a\r
-> solution, or maybe just have some ideas for what I should try next.\r
-\r
-"I also had removed the Ethernet PCcard.\r
-That thing got assigned the _interrupt_ (irq 3) that the serial interface\r
-for the IR port needs. Without it gnokii works."\r
-\r
-Now I've got contact to my Nokia 6110 using the infrared port.\r
-</pre>\r
-\r
-<p><font color="#1F409F" size=+2 class="dzial">Answering data calls problem...</font><br>\r
-<hr align="LEFT" size="3" width="300" color="#60c0a0" noshade>\r
-\r
-<pre>\r
-> It seems like it's some sort of PacBell or Verizon thing, because I\r
-> get a ring when I try to dial a voice call, but when I dial from\r
-> minicom/gnokiid I get "NO CARRIER" ("Check Operator Services" on the\r
-> phone), and dialing in from the Palm still gets no ring.\r
-\r
-First we should know how operators manage data call services,\r
-is there any international standard (it would be, to make international data\r
-calls possible). I described, how it works with my operator (Plusgsm/PL)\r
-and I'm interesting if it's a worldwide standard for these services?\r
-Did somebody tried to make a cellular-to-cellular international data transfer ?\r
-\r
-In Plusgsm there are three kinds of data calls :\r
-1. OUTGOING CALLS. Service activation is free with no additional monthly charge.\r
+<html>
+<head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+   <meta name="Author" content="Marcin Wiacek">
+   <title>Configuration</title>
+   <link REL=stylesheet HREF="../styl.css" TYPE="text/css">
+</head>
+<body>
+
+<a NAME="Top"></a>
+<p align="RIGHT"><a class="autoremail" href="../index.htm">Main page</a></p>
+<center><font color="#1F409F" size=+2 class="tytul">Configuration</font></center>
+
+<p><hr size="2" noshade width="60%" align="center" style="color: #004080">
+
+<p><font color="#1F409F" size=+2 class="dzial">How to install it from the source ?</font><br>
+<hr align="LEFT" size="3" width="300" color="#60c0a0" noshade>
+
+<p>If you get the sources you need to create script 
+<i>configure</i>. You do it by typing:
+<PRE>tfuj:~/gnokii-0.3.3pre5$ autoconf</PRE>
+
+<P>If you get the sources from the tarball you don't need to do 
+this - <TT>configure</TT> is already made for you. For quick install do simply:
+<PRE>tfuj:~/gnokii-0.3.3pre5$ ./configure
+tfuj:~/gnokii-0.3.3pre5$ make
+tfuj:~/gnokii-0.3.3pre5$ make install
+</PRE>
+
+<P>But <i>configure</i> has some options. Except obvious 
+parameters as <i>--prefix</i> which specifies a path to install GNOKII, you 
+can specify one of the following: 
+
+<DL>
+  <dt><i>--help</i>
+  <dd>Shows you list of available options</dd></dl>
+<dl>
+  <DT><i>--enable-debug</i> 
+  <DD>Turns on debugging. It's usefull especially for developers. But if you 
+  find a bug in GNOKII, please compile the sources with debugging enabled and 
+  send this output to the GNOKII mailing list. This is used by <i>gnokii</i> 
+  program. </DD></DL>
+<DL>
+  <DT><i>--enable-xdebug</i> 
+  <DD>The same as above but used by <i>xgnokii</i>. </DD></DL>
+<DL>
+  <DT><i>--enable-rlpdebug</i> 
+  <DD>This option turns on debugging specific to the RLP stuff. Note, that it's 
+  very important at the moment as this part of GNOKII is under the hardest 
+  development. </DD></DL>
+<DL>
+  <DT><i>--without-x</i> 
+  <DD>Don't include X Window system support - <i>xgnokii</i>. </DD></DL>
+<DL>
+  <DT><i>--enable-security</i> 
+  <DD>Turns on some security functions:.... Use them with caution. </DD></DL>
+<DL>
+  <DT><i>--enable-win32</i> 
+  <DD>Include MS Windows support. Yes, it really exists. ;-) </DD></DL>
+<DL>
+  <DT><i>--with-model=MODEL</i>, <i>--with-port=PORT</i> 
+  <DD>Specify the model of the phone (eg. 6150) and the port it is connected to 
+  (eg. /dev/ttyS1). These values can be overwritten with ones from the config 
+  files.
+  </DD>
+</DL>
+
+<P>The sample usage:
+<PRE>tfuj:~/gnokii-0.3.3pre5$ ./configure --prefix=/usr2 --enable-debug --without-x \
+--enable-security --with-model=6130 --with-port=/dev/ttyS1
+</PRE>
+
+<P>When the <i>configure</i> succeed, it shows options GNOKII 
+will be compiled with:
+<PRE>    Host system:        linux-gnulibc1
+    Gnokii version:     0.3.3_pre5
+    Xgnokii version:    20000613
+    Phone model:        6130
+    Serial port:        /dev/ttyS1
+    X (GTK) support:    no
+    Debug:              yes
+    XDebug:             no
+    RLPDebug:           no
+    NLS:                yes
+    Security:           yes
+    Win32:               
+    Prefix:             /usr2
+</PRE>
+
+<P>Now, the only thing left to do is just ro run:
+<PRE>tfuj:~/gnokii-0.3.3pre5$ make
+tfuj:~/gnokii-0.3.3pre5$ make install
+</PRE>
+
+<P>Finally, you have GNOKII installed in your system. And now REAL 
+FUN begins. :-)
+
+<p><font color="#1F409F" size=+2 class="dzial">How to install it from binaries ?</font><br>
+<hr align="LEFT" size="3" width="300" color="#60c0a0" noshade>
+
+<p>If you downloaded gnokii as a pre-built binary you should install
+it in the conventional manner for the package type in question.
+For example if you downloaded a .rpm file you can install it by
+running the following as root.
+
+<p>rpm -i gnokii-0.3.2-i386.rpm
+
+<p>If you are using a Debian based system, you can use dpackage
+to do the installation (FIXME - is this correct ?)
+
+<p><font color="#1F409F" size=+2 class="dzial">How to make connection with phone ?</font><br>
+<hr align="LEFT" size="3" width="300" color="#60c0a0" noshade>
+
+<p>There are three ways to make it:
+
+<ul>
+<li>connecting phone with computer using cable. All phones allow to make it
+(even 3210 - connector is inside). If you want to know more
+about creating your own cable, read <a href=../gsm/cables/cables.htm>cables faq</a>.</li>
+<li>using IrDa port in phone and computer. Notice, that your computer
+and phone must have it (only some series of Nokia phones has it - for example,
+6110, 6150)</li>
+<li>connecting to phone special device called "dongle" (it has IrDa port)
+and making IrDa connection between it and phone. Current gnokii cas use
+Tekram IRmate 210 - see patches</li>
+</ul>
+
+<p><font color="#1F409F" size=+2 class="dzial">How to configure gnokii ?</font><br>
+<hr align="LEFT" size="3" width="300" color="#60c0a0" noshade>
+
+<p>First it to use <i>--with-model</i> and <i>--with-port</i> options for
+configure script. But I do not recommend this. In my opinion these should be
+removed from configure. Second disadvantage is that you can't use it when
+you are installing a binary package.
+
+<p>So, will use better method :-).
+You should copy the <a href=../examples/gnokiirc>gnokiirc</a>
+file from the Docs/examples directory to your
+home directory and name it gnokiirc or copy it into /etc directory
+and name gnokiirc.
+
+<p>Using your favorite
+editor ensure that the settings are correct for your system,
+the sample file has details of the various options available. The most
+difficult problem could be discovering model of your phone - go into
+our <a href=../gsm/firmware/firmware.htm>firmware page</a>
+and try to use codes written in column
+<b>Firmware version code</b>. If your phone will display something,
+see model number on the third line, look on the
+<a href=../gsm/firmware/firmware.htm>firmware page</a>
+again (for it) and read phone model then.
+
+<p>Note that you will need read/write permissions on whatever
+serial port you specify in gnokiirc.  You can now use gnokii
+and xgnokii.
+
+<P>Of course, you don't have to make any config, if you will use
+these config options. There are default:
+
+<p>
+<pre>
+[global]
+port = /dev/ttyS0
+model = 6110
+connection = serial
+initlength = default
+bindir=/usr/local/sbin
+</pre>
+
+<p><font color="#1F409F" size=+2 class="dzial">How to configure infrared connection ?</font><br>
+<hr align="LEFT" size="3" width="300" color="#60c0a0" noshade>
+
+<p>
+<ul>
+
+<li>Go into configuration of your IrDa port (the most often it's made in
+BIOS, sometimes using program provided by computer's producer):
+
+<p>
+<ul>
+<li>Enable it</li>
+<li>Setup the COM-Port on which it should work.
+Here are addresses:
+<br>ttyS0 (COM1): 3F8, IRQ: 4
+<br>ttyS1 (COM2): 2F8, IRQ: 3
+<br>ttyS2 (COM3): 3E8, IRQ: 4
+<br>ttyS3 (COM4): 2E8, IRQ: 3
+<br>&nbsp;
+</li>
+</ul>
+</li>
+
+<li>Configure gnokii (see previous question)
+setting type of connection to
+infrared.</li>
+
+<li>If you are using linux, put linux-irda off (you can't use gnokii over infrared and