PDA

View Full Version : some useful stuff concerning communication portable<->pc



||Joe
15-01-2002, 12:47 AM
Frame format for MBUS version 1:

Request from Computer/Answer from Phone:

{ DestDEV, SrcDEV, FrameLength, MsgType, {block}, id, ChkSum }

where DestDEV, SrcDEV: 0x00: phone
0xf8: PC (wakeup msg)
0xe4: PC (normal msg)
FrameLength: length of data frame. Maximal 0x78. Longer
frames are divided into smaller.
MsgType: see List
{block}: main frame
id: request identity number 1..n, incremented after
the request is accepted
ChkSum: XOR on frame's all numbers

Ack from Phone:

{ DestDEV, 0x00, FrameLength, MsgType, {block} , id, ChkSum }

where DestDEV: taken from original request packet
FrameLength: 0x7f, when DestDEV = 0xe4
0x7e, when DestDEV = 0xf8
MsgType: see List. Present only, when DestDEV = 0xf8
{block}: main frame. Present only, when DestDEV = 0xf8
id: request identity number 1..?, corresponding
to the original request packet id
the request is accepted
ChkSum: XOR on frame's all numbers

Update: description above according to the
http://www.gadgets.demon.co.uk/nokia21xx/protocol.html.

Pavel Machek <[email protected]> wrote:
0x7e is actually registration acknowledge. Both have nothing to do
with DestDEV, except that special device needs to be used for
registration.

Ack from Computer:

{ 0x00, SrcDEV, 0x7f, id, ChkSum }

where SrcDEV: taken from response packet
id: request identity number 1..?, corresponding
to the response packet id
the request is accepted
ChkSum: XOR on frame's all numbers

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
reception.

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
talking at a time. Many transmission are made this way:

<computer sends request>
<phone sends ack>
<phone sends response>
<computer sends ack>

Some frames are sent from phone without asking for them

You have to implement collision protocol. IE. you should listen for
what you are transmitting, and if it does not come back, you have
collision.

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.

Frame format for FBUS version 1:

{ FrameID, FrameLength, MsgType, {block}, SeqNo, ChkSum }

where FrameID: 0x01 Command frame from computer to Nokia
0x02 ??? - Data call frame from computer to Nokia - ???
0x03 Data call frame from Nokia to computer
0x04 Command frame from Nokia to computer
FrameLength: {block} + 2
MsgType: see List
SeqNum: Sequence number of command in case where direction is
from ME to computer, the sequence number is
counting from 0x30 to 0x37 and resetting back to 0x30.
When direction is from computer to ME,
sequence number counts from 0x08 to 0x0f and resets back to 0x08.
It may not be required to be this way.
Sequence numbers are used in acknowledging commands.
ChkSum1: CRC = 0;
for (i = 0; i < (2 + CMD_LEN); i++)
CRC ^= frame[i];

Frame format for FBUS version 2/Direct IRDA:

{ FrameID, DestDEV, SrcDEV, MsgType, 0x00, FrameLength, {block}, FramesToGo,
SeqNo, PaddingByte?, ChkSum1, ChkSum2 }

where FrameID: 0x1c: IR / FBUS
0x1e: Serial / FBUS
DestDev, SrcDev: 0x00: mobile phone
0x0c: TE (FBUS) [eg. PC]
MsgType: see List
FrameLength: {block} + 2 (+ 1 if PaddingByte exists)
FramesToGo: 0x01 means the last frame
SeqNo: [0xXY]
X: 4: first block
0: continuing block
Y: sequence number
PaddingByte: 0x00 if FrameLength would be an odd number
anyways it doesn't exists
ChkSum1: XOR on frame's odd numbers
ChkSum2?: XOR on frame's even numbers

Frame format for MBUS version 2:

{ FrameID, DestDEV, SrcDEV, MsgType, FrameLengthLO, FrameLengthHI, {block},
SeqNo, ChkSum }

where FrameID: 0x1f: Serial / M2BUS
DestDev, SrcDev: 0x00: mobile phone
0x1d: TE (M2BUS)
0x10: TE (M2BUS) (Service Software ?)
0x04: Carkit?
0x48: DLR3 cable?
0xF8: unknown target?
0xFF: global target?
MsgType: see List
FrameLength: {block}
SeqNo: sequence number
ChkSum: XOR on frame's all numbers

Please note that M2BUS has only one checksum: XOR on frame[FrameID..SeqNo]

Ack:

{ FrameID, DestDEV, SrcDEV, 0x7f, Id_SeqNo, ChkSum }

where Id_SeqNo: Is the sequence number that you are
acknowleging (from the other part).

Frame format for Infrared:

{ FrameID, DestDEV, SrcDEV, MsgType, FrameLengthLo, FrameLengthHi, {block}}

where FrameID: 0x14
DestDev, SrcDev: 0x00: mobile phone
0x0c: TE [eg. PC]
MsgType: see List
FrameLength: {block}

Frames list format:

hex: Short description
x msg desc { ... }
0xXX -> one byte
0xXXYY -> two bytes (== 0xXX, 0xYY)

where hex: message type
x: s=send (eg. to mobile), r=receive
{ ... }: data after 0x00, 0x01 header
{+... }: raw data (without header)

-------------------------------------------------------------------------------

Misc (about MBUS version 2):

0x4E commands:
(sent from a 5160i TDMA / 6160i TDMA / 6185 CDMA or 7110 GSM
phone to the uC in the DLR-3 cable)
DLR-3 req:
1F 48 00 4E 00 02 01 XX SQ CS
frame sent from the phone to the DLR-3 cable
(after 15kOhm resistor detected betw. XMIC (3) and DGND (9).)
DSR,DCD,CTS flow control data is coded into the 2nd databyte
XX: bit.0=/CTS
bit.1=/DCD
bit.2=CMD/DATA
bit.3=DSR
bit.4-7=0

0x78 / 0x79 commands:
(used by handsfree carkit) Works also on GSM phones (5110 / 6110 / etc)
These commands are used by the Nokia Carkits to switch the phone audio path to
XMiC and XEAR , turn the phone on/off according to the car ignition, and
control the PA loudspeaker amplifier in the carkit and the car radio mute
output which silences the car radio during a call
mute status tone:
1F 04 00 78 00 04 01 02 0E 00 SQ CS
status indication = disable carkit audio amplifier (no audio / no tone)
mute status tone:
1F 04 00 78 00 04 01 02 0E 03 SQ CS
status indication = enable carkit audio amplifier (audio / tone present)
mute status call:
1F 04 00 78 00 04 01 02 07 00 SQ CS
status indication = disable radio mute output (no call)
mute status call:
1F 04 00 78 00 04 01 02 07 01 SQ CS
status indication = enable radio mute output (call active)
enable ???:
1F 04 00 78 00 04 01 02 08 01 SQ CS
status indication = enable ??? sent to HFU-2 on power on
byte 9 (07,08,0E) seems to be a pointer to a memory location,
byte 10 is the data at this memeory location.
response from HFU:
1F 00 04 78 00 03 02 01 03 SQ CS
response message from HFU-2 (use unknown)
go HF and IGN on:
1F 00 04 79 00 05 02 01 01 63 00 SQ CS
enables carkit mode + turns phone on + req. mute status
go HF and IGN off:
1F 00 04 79 00 05 02 01 01 61 00 SQ CS
enables carkit mode + powers phone off (1 min delay) + req. mute status
ext. HS Offhk:
1F 00 04 79 00 05 02 01 01 23 00 SQ CS
enables carkit mode + external handset lifted (OFF-Hook)
ext. HS Onhk:
1F 00 04 79 00 05 02 01 01 63 00 SQ CS
enables carkit mode + external handset put back (ON-Hook)
Ignition and Hook are coded into one byte
bit.0 = 0:on power on 1:when in operation
bit.1 = IGNITION STATUS
bit.2 = x can be 1 or 0
bit.3 = 0
bit.4 = 0
bit.5 = 1
bit.6 = Hook (inverted)
bit.7 = 0
HFU-2 version:
1F 00 04 79 00 12 02 01 02 06 00 56 20 30 36 2E 30 30 0A 48 46 55 32 00 SQ CS
for HFU-2:
1F 04 00 DA 00 02 00 02 SQ CS
function unknown - sent from Nokia phone to HFU-2mute output (call active )

0xD0 commands:
init:
1F 00 1D D0 00 01 04 SQ CS
sent by the Service Software or HFU-2 on startup
init resp:
1F 1D 00 D0 00 01 05 SQ CS
response from phone to above frame

||Joe
15-01-2002, 12:53 AM
and finally an important part, hope it's useful...
> please: post logs before and after FAID calculation...!! <

----------------------------------------------------------------------------------------------------------

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


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)}
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?, 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 { 0x0108, 0x00, 0x01,
code,0x00, 0x00, z, xH, xL, yH, yL, 0x00, 0x00, 0x00, no.of blocks, { block } * }
where if code==0x0f && xH==0x34 - phonebook location not found
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
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 }
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, body like in subtype 0x001a...}
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 }
where location: 0x21 (always ?)
r Get Picture Image { 0x0008, 0x07, location, number[2 bytes], 0x07, ??[38],
width, height, lenH, lenL, {bitmap}}
where location: 0x21 (always ?)
s Set Picture Image { 0x0050, 0x07, location, number[2 bytes], 0x07, ??[38],
width, height, lenH, lenL, {bitmap}}
std. size: 72x28
where location: 0x21 (always ?)
r Set Picture Image { 0x0051, location, number[2 bytes], 0x07 }
where location: 0x21 (always ?)

s List Picture Images { 0x0096, FolderID, 0x0f, 0x07 }
where: FolderID - see 0x14/0x017B
r List Picture Images { 0x0097, number of pictures[2 bytes], number1[2 bytes], number2[2 bytes], ..., }

s Get SMS from folder { 0x0107, folderID, 0x00, location, 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
0x03 - received/unread
0x05 - stored/sent
0x07 - stored/not sent

where: folderID - see 0x14/0x017B

where: type=0x00 - received SMS
0x01 - delivery report
0x02 - stored SMS
0x07 - picture message
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
0x17:
s Get Battery info { 0x0002 }
r Get Battery info { 0x0003, 0x0b, batt%, 0x14?, 0x01? }
0x19: Date & time
? s Get date time ? { 0x0062 }
? r Get date time ? { 0x0063, 0x01, 0x01, 0x01, 0x07, 0x07,0xD1(year==2001) 0x05(month?) 0x02(day?) 0x00,0x1D,0x0D(hour:minute:second?)

? s Get alarm ? { 0x006D }
? r Get alarm ? { 0x006E 0x01, 0x01, 0x20, 0x03, 0x01, 0x0B, 0x14 }

? 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)}
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
r get profile feature ? { 0x0102, 0x01, number1, number2, block...}
for number2==0xff: block: 0x01, 0x01, length, name(Unicode), 0x00, 0x00

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 { 0x0000}
r { 0x0001, 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
0x02 no more bookmark stored
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 err {+0x01, 0x36, 0x0b, error }
where error:
0x04 - memory is full
0x01 - we are in the bookmark menu
0x00 - unknown reason for now ;(
? r Set WAP bookmark OK {+0x01, 0x36, 0x00, block }
where block:
0x0a, location_of_just_written_bookmark(?),
0x00, next_free_location(?)

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 { 0x0015, location}
where location: 0x00 - 0x05
r Get WAP settings OK { 0x0016, location }
r Get WAP settings err { 0x0017, error }
s ??? { 0x001b, location}
where location: 0x00 - 0x1d
r ??? { 0x001c,...}
r ??? 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:
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
0x15: startup logo
0x1c: security code
r Get setting { 0x01ed,number, 0x00, contents}
where for number:
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

wplagges
16-05-2003, 07:34 PM
How can I detect a call in progress in Nokia 3390?

The provided frames for this (FBUSv2) seems doesn't work on this phone.

Thanks for your help.

Wladimir Plaggés
[email protected]

yoshi_da_dj
19-05-2003, 01:37 PM
Where it has 8) it means 8 then )

Joe i think you should edit that post and check the disable smilies option