Discussion:
[Bitpim-devel] Model specific help needed
Roger Binns
2004-05-03 20:05:53 UTC
Permalink
If you own one of the phone models listed below and would like
to help BitPim better support your phone, then please read-on.

You will need to have time to dedicate to this. You will need
to be run the developer version of BitPim. The details to get
up and going are at http://bitpim.sourceforge.net/developer.html

You should be somewhat midly technical. In particular, you should
be able to find your way around the protocol analyser. (Turn
on protocol logging, do something, then press Ctrl-Alt-P in
the protocol log pane).

The expected method of progress is that a developer will make
some changes, you do a cvs update and check to see if they
work correctly. You may need to look in the protocol analyser
to see if the various fields are being decoded properly and are
the right size. Provide the feedback and repeat the loop.
You may need to do things like create dummy phonebook entries
and look at how they are being decoded, or add and remove
ringtones, wallpaper and calendar entries.

If noone steps forward for you model of phone, then progress
will be very slow or non-existent. Having more than one person
will be really great since that way we can better verify the code
works correctly (having a sample of only one phone isn't too
goood a test).

LG VX4500:

- Phonebook needs to be deciphered
- Calendar needs verification
- Complete list of media locations and index files (eg MMS)

LG VX4600:

- Phonebook needs to be deciphered
- Calendar needs verification
- The new media code needs checking

Audiovox CDM8900:

- The new phonebook code needs to be tested
- Information is needed about media locations and
index files

Roger
Dale Blount
2004-05-03 20:26:50 UTC
Permalink
Post by Roger Binns
If you own one of the phone models listed below and would like
to help BitPim better support your phone, then please read-on.
Oops, repost from the right address.
Admin: please delete the other post if possible.

I'll volunteer for the CDM8900. I'm guessing this needs to be more-real
time than email and that we won't want to clutter the lists with info
from individual phones, not to mention the privacy issue.... Where do we
go from here?

-Dale
Post by Roger Binns
- The new phonebook code needs to be tested
- Information is needed about media locations and
index files
Roger
Roger Binns
2004-05-04 00:26:23 UTC
Permalink
Post by Dale Blount
Admin: please delete the other post if possible.
I can't delete posts :-)
Post by Dale Blount
I'll volunteer for the CDM8900. I'm guessing this needs to be more-real
time than email and that we won't want to clutter the lists with info
from individual phones, not to mention the privacy issue.... Where do we
go from here?
Nah, posting to the list is preferred, except where real data is being
used in which case email it directly. The idea is that other people
will have insights and can act as extra eyes double checking information.
I also assume that everyone on this list is technical enough to
figure out how to filter their email and quickly discard things
they are not interested in.
Post by Dale Blount
Post by Roger Binns
- The new phonebook code needs to be tested
Just try reading your phonebook and see how it looks. I
believe all the data is correctly decoded.

After readin the group information, there are then 30 requests
sent (with dunno in the request name). Have a look in the
protocol log and see if you can figure out what they are.
I have eliminated voice dials, speed dials and the calendar.
I don't know what else the phone has 30 of.

(BTW I have been sniffing the Curitel PC-Sync application
to get all this).
Post by Dale Blount
Post by Roger Binns
- Information is needed about media locations and
index files
This would be greatly appreciated. There are various fields
in the index files and I need the size and purpose of each
one. When I last looked at random other programs people
had done, they just seemed to put in fixed numbers and hope
for the best. I think many are actually dates.

Roger
Peter Dufault
2004-05-03 20:53:40 UTC
Permalink
Post by Roger Binns
- Phonebook needs to be deciphered
- Calendar needs verification
- Complete list of media locations and index files (eg MMS)
Hello Roger -

I'm more than a little technically oriented and I just got a LG4500 and
data cable as my son dropped my good 'ol star-tac in a cup of soda last
week. A few months ago I used BitPim to set up my father-in-law's
LG4400 with great success.

Unfortunately, I'm pretty busy right now.

That said, I'm more than happy to spend up to 1/2 hour in the morning
and also up to 1/2 hour at the end of the day setting up bitfling
experiments, reporting back results, doing well-defined tests,
answering questions, etc. I've already installed the developer version
and I'm cvs'ing each day (I'm in GMT+5).

My usual working systems are OS X, FreeBSD, and reluctantly Win-XP, and
all are on-line. I can boot up and work with Linux, but that will
eat-up my Bitpim time budget.

Given those restrictions, feel free to ask for any LG4500 help.

I'll help out more when I can -

Peter

Peter Dufault
HD Associates, Inc.
Roger Binns
2004-05-04 00:09:58 UTC
Permalink
Post by Peter Dufault
My usual working systems are OS X, FreeBSD, and reluctantly Win-XP, and
all are on-line. I can boot up and work with Linux, but that will
eat-up my Bitpim time budget.
You can use whichever ones you want for the work.
Post by Peter Dufault
Given those restrictions, feel free to ask for any LG4500 help.
What is needed is correctly decoding the phonebook. The simplest
thing to do is to tell BitPim to get your phonebook, and then
look in the analyser to see what the first entry returned is.
On your phone, change that entry so that every field is filled
in to its maximum length. I usually do things like e1e1e1e1e1e...
for first email address, 11111... for first phone number, memomemo
for memo etc.

(You will probably want to have create a new entry with the original
phonebook entry details).

Then with the now updated first entry, read the phonebook again
and look in the protocol analyser.

The fields are defined in p_lgvx4500.p. You may need to change
sizes and other stuff. You can rebuild the Python code by
running 'python protogen.py p_lgvx4500.p p_lgvx4500.py'

Then check your work.

Email your updated p_lgvx4500.p file, as well as the relevant
packet from the protocol dump to this list.

Roger
Peter Dufault
2004-05-04 13:27:32 UTC
Permalink
What is needed is correctly decoding the phonebook...
Well, I didn't get far today. Using the version cvs'd as of this
9:00AM EST I got an unexpected exception.

OS: Mac OS X 10.3.3
Platform: 667 MHz PowerPC G4 Powerbook
Python S/W, etc: versions as specified on "how to install the developer
version" on the website from last weekend.
Phone: LG VX4500 S/W T45VZV01 PRL 50154 ERI 50018
Cable: Verizon Mobile Office cable for the VX4500

===== Exception dialog:

9:05:36.632 Exception: An unexpected exception has occurred.
Please see the help for details on what to do.

Traceback (most recent call last):
File "/Users/dufault/work/bitpim/gui.py", line 703, in OnDataGetPhone
dlg.UpdateWithProfile(self.phoneprofile)
File "/Users/dufault/work/bitpim/guiwidgets.py", line 264, in
UpdateWithProfile
if self._dowesupport(source, self.actions[0][1], self.types[i][1])
and \
AttributeError: Profile instance has no attribute 'SyncQuery'

Variables by last 8 frames, innermost last

Frame ? in bp.py at line 58
profile = <function profile at 0x61470>
__file__ = 'bp.py'
__name__ = '__main__'
__doc__ = 'Main entry point to Bitpim\n\nIt invokes BitPim in
gui or c

Frame run in /Users/dufault/work/bitpim/gui.py at line 349
args = (['bp.py'],)
m = <gui.MainApp instance; proxy of C++ wxPyApp instance
at _32b

Frame MainLoop in
/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/
site-packages/wxPython/wx.py at line 1968
self = <gui.MainApp instance; proxy of C++ wxPyApp instance
at _32b

Frame MainLoop in
/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/
site-packages/wxPython/wx.py at line 89
_kwargs = {}
self = <gui.MainApp instance; proxy of C++ wxPyApp instance
at _32b
_args = ()

Frame OnDataGetPhone in /Users/dufault/work/bitpim/gui.py at line 703
self = <gui.MainWindow instance; proxy of C++ wxFrame
instance at _
dlg = <guiwidgets.GetPhoneDialog instance; proxy of C++
wxDialog i
_ = <wxPython.events.wxCommandEventPtr instance; proxy
of C++ wx

Frame UpdateWithProfile in /Users/dufault/work/bitpim/guiwidgets.py at
line 264
profile = <com_lgvx4400.Profile instance at 0x5bf7468>
count = 0
i = 1
self = <guiwidgets.GetPhoneDialog instance; proxy of C++
wxDialog i
source = 'phonebook'
cs = 0
type = 'OVERWRITE'

===== Both "Log" and "Protocol Log":
Same as exception dialog.

All I did was start it up with "pythonw bp.py" (I hope that's correct,
"python bp.py" doesn't bring the program to the front and "pythonw
bp.py" worked yesterday), changed the phone to vx4500 from vx4400 (Why
doesn't that seem to stick?) and did "Data...Get Phone Data". I get
the error immediately, I don't get the bullet list selector to select
what to get. This worked yesterday.

I have the versions of the support software specified on how to install
the developer version on the website.

The file system view works fine.

I do have a keyboard and mouse on the laptop today, I didn't yesterday.
I can't think of any other differences.

Yesterday I was able to get and send phone book entries, and set up
about ten contact entries that I had from the VX4400, though I didn't
get the wallpaper in right. I'm not 100% when I CVS'd that version,
maybe over the weekend.

Peter

Peter Dufault
HD Associates, Inc.
Roger Binns
2004-05-04 17:07:12 UTC
Permalink
Post by Peter Dufault
AttributeError: Profile instance has no attribute 'SyncQuery'
I broke that and have just committed a fix. It was due to some
code cleanup, but the VX4400 code is old and didn't do some
stuff as it should have been.

Roger
Peter Dufault
2004-05-04 17:46:32 UTC
Permalink
Post by Roger Binns
I broke that and have just committed a fix. It was due to some
code cleanup, but the VX4400 code is old and didn't do some
stuff as it should have been.
I found the definition for that function that was removed on the 30'th,
so I had temporarily put it back in to the vx4400 code since I don't
know python and couldn't figure out the right fix. I'll get your fix
in a little while.

Let me know that I'm doing the right thing here:

I've zeroed out my phone book, loaded an entry as much as possible, and
got a trace (further on) off the protocol log.

(N123 is name 1, e123 email address one, e223 email address 2, etc).

Now I should go through p_lgvx4400.p, p_lgvx4500.p, and p_lg.p and see
that things match. I sort of see where things are. But where, for
example, is the length of a phone number?

13:30:07.904 LG-VX4500: Read entry 0 - N123456789012345678901
13:30:07.905 LG-VX4500: lg phonebook request Data - 10 bytes
<#! p_lg.pbnextentryrequest !#>
00000000 ff 12 0e 01 00 00 00 00 00 00 ..........

13:30:07.906 LG-VX4500: lg phonebook response Data - 563 bytes
<#! p_lg.pbnextentryresponse !#>
00000000 ff 12 0e d0 00 00 00 00 00 00 09 00 00 00 00 00
................
00000010 4e 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35
N123456789012345
00000020 36 37 38 39 30 31 00 01 00 65 31 32 33 34 35 36
678901...e123456
00000030 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32
7890123456789012
00000040 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38
3456789012345678
00000050 39 30 31 32 33 34 35 36 37 00 65 32 32 33 34 35
901234567.e22345
00000060 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31
6789012345678901
00000070 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37
2345678901234567
00000080 38 39 30 31 32 33 34 35 36 37 00 65 33 32 33 34
8901234567.e3234
00000090 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30
5678901234567890
000000a0 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36
1234567890123456
000000b0 37 38 39 30 31 32 33 34 35 36 37 00 77 77 77 2e
78901234567.www.
000000c0 75 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35
u123456789012345
000000d0 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31
6789012345678901
000000e0 32 33 34 35 36 37 38 39 30 31 32 33 00 00 00 00
234567890123....
000000f0 4d 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35
M123456789012345
00000100 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31
6789012345678901
00000110 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37
2345678901234567
00000120 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33
8901234567890123
00000130 00 00 00 01 02 03 04 31 31 32 33 34 35 36 37 38
.......112345678
00000140 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34
9012345678901234
00000150 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30
5678901234567890
00000160 31 32 33 34 35 36 37 00 32 31 32 33 34 35 36 37
1234567.21234567
00000170 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33
8901234567890123
00000180 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39
4567890123456789
00000190 30 31 32 33 34 35 36 37 00 33 31 32 33 34 35 36
01234567.3123456
000001a0 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32
7890123456789012
000001b0 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38
3456789012345678
000001c0 39 30 31 32 33 34 35 36 37 00 34 31 32 33 34 35
901234567.412345
000001d0 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31
6789012345678901
000001e0 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37
2345678901234567
000001f0 38 39 30 31 32 33 34 35 36 37 00 35 31 32 33 34
8901234567.51234
00000200 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30
5678901234567890
00000210 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36
1234567890123456
00000220 37 38 39 30 31 32 33 34 35 36 37 00 00 00 00 00
78901234567.....
00000230 00 0f 00 ...

Peter Dufault
HD Associates, Inc.
Roger Binns
2004-05-04 17:57:25 UTC
Permalink
Post by Peter Dufault
I found the definition for that function that was removed on the 30'th,
It was put into a parent class. It is just that the VX4400 code wasn't
inheriting from the parent class like it should have been.

BTW there is a cvs checkins mailing list that sends the diffs of every
every cvs commit. That is very useful for tracking what changes
have been happening.
Yes, you were very much on the right track.
Post by Peter Dufault
13:30:07.906 LG-VX4500: lg phonebook response Data - 563 bytes
<#! p_lg.pbnextentryresponse !#>
The one we actually need is pbreadentryresponse. The LG phonebook
has a "cursor" pointing at an entry. pbinitrequest is used to
make it point to the beginning of the phonebook. pbreadentryrequest
is used to read the entry currently being pointed at and
pbnextentryrequest is used to move the cursor to the next entry.

pbnextentryresponse tends to have what looks like an entry, but
is mainly just junk. BitPim doesn't look at the fields in the
response.

Also, please attach the protocol dumps as a seperate file in
your email as your email client wraps the lines! (Or turn
off the wrapping).

Roger
Peter Dufault
2004-05-04 18:27:53 UTC
Permalink
Post by Roger Binns
Also, please attach the protocol dumps as a seperate file in
your email as your email client wraps the lines! (Or turn
off the wrapping).
I'm embarrassed to say I never realized that. The way things looked to
me I thought it was just sending long lines unless I inserted a
carriage return and also set "Format=flowed" in the mail header for the
receiving client to clean things up. I just did "view raw source" on
the message I sent and saw what I sent out. Ouch. Of course
everything normally looks fine to me.

Since I can't find anyway to turn it off (OS X mail client) I'll attach
the protocol for now. I don't think I'll switch back to elm.
Roger Binns
2004-05-04 20:32:00 UTC
Permalink
Post by Peter Dufault
Since I can't find anyway to turn it off (OS X mail client) I'll attach
the protocol for now. I don't think I'll switch back to elm.
All the elm users switched to mutt :-)

Looking at the packet, they seem to have tweaked something for
no appearent reason. The field named entrysize is the size
of the entry for VX4400 and VX6000. For this phone it has a
value of 0x0222 which isn't correct no matter how you slice
this.

For the 4400/6000 the field named unknown20c is beyond the end
of the entrysize. On the 4400 it is always a sequence of 5 nulls.
For the 6000 it is a 5 nulls followed by a two byte number.
The 4500 seems to be doing the same as the 6000. If you can
figure out what those last two bytes are I would be very
interested.

I have just done a commit you can test for writing. When
writing the data back out, it sets the entrysize to 0x202
(same as vx4400/6000) instead of the 0x222 we get on
4500 reads.

Roger
Peter Dufault
2004-05-04 20:51:34 UTC
Permalink
Post by Roger Binns
All the elm users switched to mutt :-)
You're right, I forgot:

hda:~% ls -latrd .mu* .elm*
|
drwx------ 2 dufault dufault 512 Jul 10 2001 .elm
drwxr-xr-x 2 dufault dufault 512 Aug 27 2001 .mutt
-rw-r--r-- 1 dufault dufault 150 Apr 15 2002 .muttrc
hda:~%

I guess I had switched to mutt before the OS X laptop became what I
hauled around instead of the thinkpad with FreeBSD.

Is it possible to cvs the developer stuff read-only if one wants to
check something out without waiting five hours?

Peter

Peter Dufault
HD Associates, Inc.
Roger Binns
2004-05-04 22:22:46 UTC
Permalink
Post by Peter Dufault
Is it possible to cvs the developer stuff read-only if one wants to
check something out without waiting five hours?
Nope. You can however feed the stuff on the bitpim-cvs-checkins list
into patch.

Roger
Peter Dufault
2004-05-05 13:20:00 UTC
Permalink
Post by Roger Binns
For the 4400/6000 the field named unknown20c is beyond the end
of the entrysize. On the 4400 it is always a sequence of 5 nulls.
For the 6000 it is a 5 nulls followed by a two byte number.
The 4500 seems to be doing the same as the 6000. If you can
figure out what those last two bytes are I would be very
interested.
Maybe this is just numerology, but:

unknown20c is at position 9 in the block, and if you add that position
with the value (0x222 = 546 decimal) you wind up with 555, which is the
position of the sequence of 5 nulls.

Those final two bytes have the value 0x231 (561), which happens to be
its position in the block.

Maybe this is used internally as some method of skipping over things or
checking integrity.

Peter Dufault
HD Associates, Inc.
Peter Dufault
2004-05-05 13:27:07 UTC
Permalink
Post by Roger Binns
I have just done a commit you can test for writing. When
writing the data back out, it sets the entrysize to 0x202
(same as vx4400/6000) instead of the 0x222 we get on
4500 reads.
I tried this, it seems to work OK, but when you read the data back it
is changed back to 0x222. I think I'd leave it at 0x222 until (or if)
we figure out what it is.

Peter

Peter Dufault
HD Associates, Inc.
Roger Binns
2004-05-05 23:57:27 UTC
Permalink
Post by Peter Dufault
Post by Roger Binns
I have just done a commit you can test for writing. When
writing the data back out, it sets the entrysize to 0x202
(same as vx4400/6000) instead of the 0x222 we get on
4500 reads.
I tried this, it seems to work OK, but when you read the data back it
is changed back to 0x222. I think I'd leave it at 0x222 until (or if)
we figure out what it is.
The reading and writing are unrelated for those pieces. The phones
do silly things and this sort of thing is normal (it is usually
unfinished bits of code, or two different people working on related
areas).

The important think to check is that the writing is actually succeeding
and data is appropriately updated. I would recommend reading an
entry, changing every field in BitPim, writing back out, then reading
back in again. Verify every field reads correctly with what was
written out. Especially check the serials.

If that is all ok, then we are fine.

Roger
Peter Dufault
2004-05-06 00:12:38 UTC
Permalink
Post by Roger Binns
The important think to check is that the writing is actually succeeding
and data is appropriately updated. I would recommend reading an
entry, changing every field in BitPim, writing back out, then reading
back in again. Verify every field reads correctly with what was
written out. Especially check the serials.
OK, I'll try that.

"It would be nice" (yeah, I know) if there were protocol logs from the
different phones archived. I hope there are, but I tried searching for
"4400 protocol logs" on the developer archives so that I could compare
4500 logs to 4400 logs without success.

Peter

Peter Dufault
HD Associates, Inc.
Roger Binns
2004-05-06 00:36:58 UTC
Permalink
Post by Peter Dufault
"It would be nice" (yeah, I know) if there were protocol logs from the
different phones archived. I hope there are, but I tried searching for
"4400 protocol logs" on the developer archives so that I could compare
4500 logs to 4400 logs without success.
You will find them in the examples directory.

There is also a test data generator. Make a directory named tests
and then run:

python experiments\gentestdata.py tests

It will fill the directory with wallpapers, ringtones, calendar and
a csv file for the phonebook.

Roger
Peter Dufault
2004-05-06 00:46:26 UTC
Permalink
Post by Roger Binns
You will find them in the examples directory.
There is also a test data generator. Make a directory named tests
python experiments\gentestdata.py tests
It will fill the directory with wallpapers, ringtones, calendar and
a csv file for the phonebook.
Excellent, thanks. This needs an entry in the "Getting Started"
section entitled "decoding phone protocols" or something, since that's
where many beginners may begin. If it was already documented and
obvious then I missed it.

Maybe I can add docs soon -

Peter

Peter Dufault
HD Associates, Inc.
Roger Binns
2004-05-06 01:33:23 UTC
Permalink
Post by Peter Dufault
Excellent, thanks. This needs an entry in the "Getting Started"
section entitled "decoding phone protocols" or something, since that's
where many beginners may begin. If it was already documented and
obvious then I missed it.
Maybe I can add docs soon -
If you want to write some docs, they will be welcomed. There is
a seperate document web/phonespec.html that also needs fleshing
out. I don't want the two merged - phonespec.html should just
be a specification and no more.

A seperate document talking about the analyser, using portmon
and snoopy, the various tools in experiments etc would be what
you are talking about.

Roger

Peter Dufault
2004-05-04 19:23:43 UTC
Permalink
Post by Roger Binns
BTW there is a cvs checkins mailing list that sends the diffs of every
every cvs commit. That is very useful for tracking what changes
have been happening.
I'm going to subscribe to that now. But did you already commit those
fixes for the vx4400 inheritance?

I just did a "cvs update" and I don't see any changes from what I got
at 9:00 AM.

Peter

Peter Dufault
HD Associates, Inc.
Roger Binns
2004-05-04 19:46:29 UTC
Permalink
Post by Peter Dufault
I'm going to subscribe to that now. But did you already commit those
fixes for the vx4400 inheritance?
Yes.
Post by Peter Dufault
I just did a "cvs update" and I don't see any changes from what I got
at 9:00 AM.
The anonymous CVS servers are synced with the developer ones every
five hours.

Roger
Loading...