http://marcin-wiacek.fkn.pl/english/zips/mygnokii.tar.gz
[gnokii.git] / Docs / developers / protocol / n3110.txt
diff --git a/Docs/developers/protocol/n3110.txt b/Docs/developers/protocol/n3110.txt
new file mode 100644 (file)
index 0000000..10c3326
--- /dev/null
@@ -0,0 +1,233 @@
+
+Last update 01.03.2001
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Assembled by
+       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 Nokia 3110 and derivatives (3810,8110,8110i):
+Correct format is FBUS version 1/MBUS version 1 (?)
+(see nokia.txt for protocol details):
+
+ List:
+
+0x02:
+    r RLP ?                 {....}
+0x0a:
+    s Make call             {+type of call, type of number?, numlen, number, uk1, uk2, uk3 }
+                            where type of call: see 0x0b
+                            Note: If destination number is "1" - "9",
+                                  call for number in corresponding memory location is made.
+0x0b:
+    r Incoming call         {+type of call, 0x00, namelen, name }
+                            where type of call:
+                                    0x01 Data 
+                                    0x02 ?? 
+                                    0x03 ?? 
+                                    0x04 ?? 
+                                    0x05 Voice 
+0x0c:
+    s Answer incoming call  {}
+0x0d:
+    r Incoming call answered{}
+      from ME
+0x0e:
+    r Call established      {+type of call, 0x00, 0x00 }
+                            where type of call: see 0x0b
+0x0f:
+    s Call hang up          {}
+0x10:
+    r Call hanged up from ME{}
+      seq1
+0x11:
+   r CallClosed-by other end{+unknown, reason}
+                            where:
+                              unknown reason
+                              0x65    0x10   Hanged up by other end 
+                                      0x1c   virheellinen numero 
+                              0x65    0x1f   Number is not in use 
+                              0x65    0x4f   Check operator services 
+                              0x65    0xa6   No destination number (sms sending) 
+                              0x65    0xe4   --''-- 
+                              0x6f    0x6f  
+                              0x7d    0x7d  
+                              0x7f    0x7f  
+                              0x83    0x83 
+0x12:
+    r Call hanged up from ME{}
+      seq2
+0x13:
+    r Power ON seq          {}
+0x15:
+    s Initialization        {}
+0x16:
+    r Initialization OK     {+simstate }
+                            where simstate:
+                                    0x01 No SIM present, or waiting for PIN 
+                                    0x02 SIM present and ready. 
+0x17:
+    r Initialization err    {+error }
+0x20:
+    s Send DTMF             {+length,string}
+0x21:
+    r Send DTMF OK          {}
+0x22:
+    r Send DTMF err         {+error }
+                            where error:
+                                    0x70: invalid location
+0x23:
+    s Send SMS Header       {+first octet, PID, DCS, validity(7 bytes), UDL, SMSClen, SMSC, receiverlen, receiver}
+0x24:
+    s Save SMS Header       {+memtype,status(2bytes),PID, DCS, validity(7 bytes), UDL, SMSClen, SMSC, receiverlen, receiver, receivertype }
+                            where: memtype:
+                                     2=SIM
+                                     3=ME 
+                                   status: see 0x2c
+0x25:
+    s Get SMS message       {+memtype, location }
+                            where: memtype - see 0x30
+                            Note: In successful request, phone sends one "SMS Header" and one or more "SMS Data" packets.
+                                  In failure, phone sends "Get SMS message err" packet
+0x26:
+    s Delete SMS message    {+memtype, location }
+                            where: memtype - see 0x30
+0x27:
+    r SMS Data              {+seq,block}
+                            where: seq: starts from 0x01 and is increased by 1 after each block transmitted. 
+                                   block: Block of User Data (max 55 chars)
+    s Send/Save SMS Data    {+seq,block}
+0x28:
+    r SMS sent OK           {+reference?}
+0x29:
+    r SMS sent error        {+error1, error2}
+0x2a:
+    r SMS saved OK          {+memtype}
+                            where: memtype - memory, where SMS was saved
+0x2b:
+    r SMS saving err        {+error}
+0x2c:
+    r SMS Header            {+memtype, location, status(2 bytes), PID, DCS, date (7 bytes), UDL, senderlen, sender, SMSClen, SMSC, sendertype}
+                            where:
+                              memtype, PID, DCS, date, UDL, sender, SMSC, sendertype - see 0x30
+                              status: 0701: Saved, not sent
+                                      0501: Sent
+                                      0304: Received, unread
+                                      0204: Unread
+                                      0104: Received, read 
+0x2d:
+    r Get SMS message err   {+error}
+0x2e:
+    r Delere SMS message OK {}
+0x2f:
+    r Delete SMS message err{+error}
+0x30:
+    r SMS message received  {+memtype, location, unknown, PID, DCS, date(7 bytes), UDL, senderlen, sender, SMSClen, SMSC, sendertype}
+                            where: memtype:
+                                     0x01 Phone Selected 
+                                     0x02 SIM 
+                                     0x03 ME 
+                                   location: Memory location (1...) 
+                                   unknown: most of time 0x04 
+                                   PID: Protocol Identifier 
+                                   DCS: Data Coding Scheme 
+                                   date: sending date in BCD
+                                   UDL: User Data Length 
+                                   sender: sender number
+                                   SMSC: SMSC number
+                                   sendertype: type of sender number:
+                                                0x31 International without leading '+' ??? 
+                                                0x91 International 
+0x32:
+    r Delivery report receiv{+unknown,delivery time(7 bytes),report time(7 bytes),0x00,MR,
+                             destinationlen,destination,SMSClen,SMSC,destinationtype}
+0x3c:
+    s Set SMSC              {+bitmask,format,unknown1,validity,reply,reports,unusedlen,unused,SMSClen,SMSC}
+                            where:
+                              bitmask: info, what we change
+                                7 ?? 
+                                6 reports
+                                5 reply
+                                4 SMSC number
+                                3 unused
+                                2 validity
+                                1 unknown
+                                0 format
+                              format:
+                                0x00 Text 
+                                0x22 Fax 
+                                0x24 Voice 
+                                0x25 ERMES 
+                                0x26 Paging 
+                                0x2d E-mail 
+                                0x31 X.400 
+                              validity:
+                                 0 to 143    (validity + 1) * 5 minutes (i.e. 5 minutes intervals up to 12 hours) 
+                                 144 to 167  12 hours + ((validity - 143) * 30 minutes) 
+                                 168 to 196  (validity - 166) * 1 day 
+                                 197 to 255  (validity - 192) * 1 week 
+0x3d:
+    r Set SMSC OK           {}
+0x3e:
+    r Set SMSC err          {}
+0x3f:
+    s Get SMSC              {}
+0x40:
+    r Get SMSC              {+memory,AllSMSphone,unreadSMSphone,AllSMSSIM,unreadSMSSIM,
+                             format,unknown1,validity,reply,reports,unusedlen,unused,SMSClen,SMSC}
+                            where: format,unknown1,validity,reply,reports,unusedlen,unused,SMSClen,SMSC - see 0x3c
+                                   memory: selected memory
+                                   AllSMSphone: number of all SMS in phone
+                                   unreadSMSphone: number of unread SMS in phone
+                                   AllSMSSIM: number of all SMS on SIM
+                                   unreadSMSSIM: number of unread SMS on SIM
+0x42:
+    s Set mem location      {+memtype, location, namelen, name, numlen, number }
+                            where memtype: see 0x43
+0x43:
+    s Get mem location      {+memtype, location }
+                            where: memtype:
+                                     0x01 Phone Selected
+                                     0x02 SIM
+                                     0x03 ME
+                                     0x04 Own numbers (at SIM) 
+0x44:
+    r Set mem location OK   {}
+0x45:
+    r Set mem location err  {+error }
+0x46:
+    r Get mem location OK   {+namelen, name, numlen, number }
+0x47:
+    r Get mem location err  {+error }
+0x48:
+    r PIN entered           {}
+0x49:
+    r Power OFF seq         {}
+0x4a:
+    s Status request        {}
+0x4b:
+    r Status request        {+status, network, battery }
+                            where status:
+                                    0x01 Idle 
+                                    0x02 Network interworking 
+                                    0x03 Call open 
+                                    0x04 No Network Access (Waiting for PIN or
+                                         Unaccessable Operator selected) 
+                                  network and battery - signal level
+0x4c:
+    s Get phone info        {}
+0x4d:
+    r Get phone info        {+IMEI, 0x00, Code, 0x00, HW, 0x00 }
+                            where IMEI: IMEI Code 
+                                  CODE: Same as Code in phones back side 
+                                  HW: hardware version