Discussion:
[Bitpim-devel] LG VX6000 phone error "Get Phone Data...."
Steven Palm
2003-12-09 19:51:42 UTC
Permalink
Hey, my USB cable finally arrived, so now I can do some real world
testing. Here is what I saw on my first attempt to load data from the
phone:

An unexpected exception has occurred.
Please see the help for details on what to do.

Traceback (most recent call last):
File "/Users/n9yty/my_cvs/bitpim/bitpim/gui.py", line 147, in run
res=call()
File "/Users/n9yty/my_cvs/bitpim/bitpim/gui.py", line 88, in __call__
return apply(self.method, self.args+args, d)
File "/Users/n9yty/my_cvs/bitpim/bitpim/gui.py", line 999, in getdata
results=self.getfundamentals()
File "/Users/n9yty/my_cvs/bitpim/bitpim/gui.py", line 993, in
getfundamentals
self.commphone.getfundamentals(results)
File
"/Users/n9yty/my_cvs/bitpim/bitpim/build/bitpim.app/Contents/Resources/
com_lgvx4400.py", line 67, in getfundamentals

results['uniqueserial']=sha.new(self.getfilecontents("nvm/
$SYS.ESN")).hexdigest()
File
"/Users/n9yty/my_cvs/bitpim/bitpim/build/bitpim.app/Contents/Resources/
com_brew.py", line 192, in getfilecontents
res=self.sendbrewcommand(req, p_brew.readfileresponse)
File
"/Users/n9yty/my_cvs/bitpim/bitpim/build/bitpim.app/Contents/Resources/
com_brew.py", line 307, in sendbrewcommand
raise BrewCommandException(err)
BrewCommandException: Brew Error 0x0d

Variables by last 6 frames, innermost last

Frame __call__ in /Users/n9yty/my_cvs/bitpim/bitpim/gui.py at line 88
self = <gui.Request instance at 0x6149c10>
args = ()
d = {}
kwargs = {}

Frame getdata in /Users/n9yty/my_cvs/bitpim/bitpim/gui.py at line 999
self = <WorkerThread(BitPim helper, started daemon)>
req = <guiwidgets.GetPhoneDialog instance; proxy of C++
wxDialog i

Frame getfundamentals in /Users/n9yty/my_cvs/bitpim/bitpim/gui.py at
line 993
self = <WorkerThread(BitPim helper, started daemon)>
results = {}

Frame getfundamentals in
/Users/n9yty/my_cvs/bitpim/bitpim/build/bitpim.app/Contents/Resources/
com_lgvx4400.py at line 67
self = <com_lgvx6000.Phone instance at 0x6149c38>
results = {}

Frame getfilecontents in
/Users/n9yty/my_cvs/bitpim/bitpim/build/bitpim.app/Contents/Resources/
com_brew.py at line 192
self = <com_lgvx6000.Phone instance at 0x6149c38>
req = <p_brew.readfilerequest object at 0x60dd2d0>
data = <cStringIO.StringO object at 0x60dd600>
file = 'nvm/$SYS.ESN'
desc = 'Reading nvm/$SYS.ESN'

Frame sendbrewcommand in
/Users/n9yty/my_cvs/bitpim/bitpim/build/bitpim.app/Contents/Resources/
com_brew.py at line 307
responseclass = <class 'p_brew.readfileresponse'>
origdata = 'Y\x04\rnvm/$SYS.ESN1\xe2~'
d = 0
err = 13
buffer = <prototypes.buffer instance at 0x6149be8>
request = <p_brew.readfilerequest object at 0x60dd2d0>
callsetmode = True
firsttwo = 'Y\x04'
data = 'Y\x04\rnvm/$SYS.ESN'
self = <com_lgvx6000.Phone instance at 0x6149c38>


The associated protocol dump:


13:47:45.572 LG-VX6000: brew request Data - 17 bytes
<#! p_brew.readfilerequest !#>
00000000 59 04 00 0d 6e 76 6d 2f 24 53 59 53 2e 45 53 4e
Y...nvm/$SYS.ESN
00000010 00 .


13:47:45.573 LG-VX6000: brew response Data - 15 bytes
<#! p_brew.readfileresponse !#>
00000000 59 04 0d 6e 76 6d 2f 24 53 59 53 2e 45 53 4e
Y..nvm/$SYS.ESN


13:47:45.661 Exception: An unexpected exception has occurred.
Please see the help for details on what to do.

Traceback (most recent call last):
File "/Users/n9yty/my_cvs/bitpim/bitpim/gui.py", line 147, in run
res=call()
File "/Users/n9yty/my_cvs/bitpim/bitpim/gui.py", line 88, in __call__
return apply(self.method, self.args+args, d)
File "/Users/n9yty/my_cvs/bitpim/bitpim/gui.py", line 999, in getdata
results=self.getfundamentals()
File "/Users/n9yty/my_cvs/bitpim/bitpim/gui.py", line 993, in
getfundamentals
self.commphone.getfundamentals(results)
File
"/Users/n9yty/my_cvs/bitpim/bitpim/build/bitpim.app/Contents/Resources/
com_lgvx4400.py", line 67, in getfundamentals

results['uniqueserial']=sha.new(self.getfilecontents("nvm/
$SYS.ESN")).hexdigest()
File
"/Users/n9yty/my_cvs/bitpim/bitpim/build/bitpim.app/Contents/Resources/
com_brew.py", line 192, in getfilecontents
res=self.sendbrewcommand(req, p_brew.readfileresponse)
File
"/Users/n9yty/my_cvs/bitpim/bitpim/build/bitpim.app/Contents/Resources/
com_brew.py", line 307, in sendbrewcommand
raise BrewCommandException(err)
BrewCommandException: Brew Error 0x0d

Variables by last 6 frames, innermost last

Frame __call__ in /Users/n9yty/my_cvs/bitpim/bitpim/gui.py at line 88
self = <gui.Request instance at 0x61497b0>
args = ()
d = {}
kwargs = {}

Frame getdata in /Users/n9yty/my_cvs/bitpim/bitpim/gui.py at line 999
self = <WorkerThread(BitPim helper, started daemon)>
req = <guiwidgets.GetPhoneDialog instance; proxy of C++
wxDialog i

Frame getfundamentals in /Users/n9yty/my_cvs/bitpim/bitpim/gui.py at
line 993
self = <WorkerThread(BitPim helper, started daemon)>
results = {}

Frame getfundamentals in
/Users/n9yty/my_cvs/bitpim/bitpim/build/bitpim.app/Contents/Resources/
com_lgvx4400.py at line 67
self = <com_lgvx6000.Phone instance at 0x6149c38>
results = {}

Frame getfilecontents in
/Users/n9yty/my_cvs/bitpim/bitpim/build/bitpim.app/Contents/Resources/
com_brew.py at line 192
self = <com_lgvx6000.Phone instance at 0x6149c38>
req = <p_brew.readfilerequest object at 0x60dd510>
data = <cStringIO.StringO object at 0x60dd960>
file = 'nvm/$SYS.ESN'
desc = 'Reading nvm/$SYS.ESN'

Frame sendbrewcommand in
/Users/n9yty/my_cvs/bitpim/bitpim/build/bitpim.app/Contents/Resources/
com_brew.py at line 307
responseclass = <class 'p_brew.readfileresponse'>
origdata = 'Y\x04\rnvm/$SYS.ESN1\xe2~'
d = 0
err = 13
buffer = <prototypes.buffer instance at 0x614cb70>
request = <p_brew.readfilerequest object at 0x60dd510>
callsetmode = True
firsttwo = 'Y\x04'
data = 'Y\x04\rnvm/$SYS.ESN'
self = <com_lgvx6000.Phone instance at 0x6149c38>


And this dump from an attempt to view the filesystem:

An unexpected exception has occurred.
Please see the help for details on what to do.

Traceback (most recent call last):
File "/Users/n9yty/my_cvs/bitpim/bitpim/gui.py", line 147, in run
res=call()
File "/Users/n9yty/my_cvs/bitpim/bitpim/gui.py", line 88, in __call__
return apply(self.method, self.args+args, d)
File "/Users/n9yty/my_cvs/bitpim/bitpim/gui.py", line 1062, in
dirlisting
return self.commphone.getfilesystem(path, recurse)
File
"/Users/n9yty/my_cvs/bitpim/bitpim/build/bitpim.app/Contents/Resources/
com_brew.py", line 125, in getfilesystem
res=self.sendbrewcommand(req,p_brew.listfileresponse)
File
"/Users/n9yty/my_cvs/bitpim/bitpim/build/bitpim.app/Contents/Resources/
com_brew.py", line 307, in sendbrewcommand
raise BrewCommandException(err)
BrewCommandException: Brew Error 0x02

Variables by last 6 frames, innermost last

Frame __bootstrap in
/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/
threading.py at line 436
self = <WorkerThread(BitPim helper, started daemon)>

Frame run in /Users/n9yty/my_cvs/bitpim/bitpim/gui.py at line 140
e = <com_brew.BrewCommandException instance at 0x616a6c0>
res = None
self = <WorkerThread(BitPim helper, started daemon)>
item = (<gui.Request instance at 0x614cbc0>, <gui.Callback
instance
call = <gui.Request instance at 0x614cbc0>
ex = <com_brew.BrewCommandException instance at 0x616a6c0>
resultcb = <gui.Callback instance at 0x614cc10>
first = 0

Frame __call__ in /Users/n9yty/my_cvs/bitpim/bitpim/gui.py at line 88
self = <gui.Request instance at 0x614cbc0>
args = ()
d = {}
kwargs = {}

Frame dirlisting in /Users/n9yty/my_cvs/bitpim/bitpim/gui.py at line
1062
path = ''
self = <WorkerThread(BitPim helper, started daemon)>
recurse = 0

Frame getfilesystem in
/Users/n9yty/my_cvs/bitpim/bitpim/build/bitpim.app/Contents/Resources/
com_brew.py at line 140
i = 0
self = <com_lgvx6000.Phone instance at 0x6149c38>
req = <p_brew.listfilerequest object at 0x60ddab0>
recurse = 0
results = {}
dir = ''

Frame sendbrewcommand in
/Users/n9yty/my_cvs/bitpim/bitpim/build/bitpim.app/Contents/Resources/
com_brew.py at line 307
responseclass = <class 'p_brew.listfileresponse'>
origdata = 'Y\x0b\x02/\x08(~'
d = 0
err = 2
buffer = <prototypes.buffer instance at 0x6149e18>
request = <p_brew.listfilerequest object at 0x60ddab0>
callsetmode = True
firsttwo = 'Y\x0b'
data = 'Y\x0b\x02/'
self = <com_lgvx6000.Phone instance at 0x6149c38>

-. ----. -.-- - -.--
Steve Palm - ***@n9yty.com
-. ----. -.-- - -.--
Roger Binns
2003-12-10 03:22:49 UTC
Permalink
Post by Steven Palm
Hey, my USB cable finally arrived, so now I can do some real world
testing. Here is what I saw on my first attempt to load data from the
What cable is it? Is it a USB to serial convertor or a straight
through connection. What does the System Profiler/Devices and Volumes
tab say?
Post by Steven Palm
BrewCommandException: Brew Error 0x0d
BrewCommandException: Brew Error 0x02
They are exactly what I get if I talk to the modem interface on the VX6000.
Basically the phone has 3 interfaces when being spoken to directly via
USB. The first two together form a standard USB modem interface. (Linux
auto-binds a driver named ACM to it. Windows ignores it unless you supply
a driver). The 3rd interface is the one that you have to talk the diagnostics
protocols on. It is marked as a having a vendor specific protocol and
no operating system automatically binds drivers to it.

The good news is that I got libusb working, and that way BitPim can
talk quite happily to the phone. I have no issues at all the 6000 on
Linux using libusb. (The 4400 on the other hand - grrr).

What you need to do is build the Python module. Look in the native/usb
directory. You will need Swig installed. You also need libusb header
and library installed. I can't tell from the libusb page if Macs already
have the library installed or if you have to download it. I would
imagine that the build process is astonishingly similar to the Linux one
(in build.sh).

You can then test it by running usb.py in that directory. The first
bit of output should list your phone. Vendor id is 1004, product id
is 6000.

1004/6000 010 <--- the 10 will be different for every user
class USB_CLASS_COMM subclass 0 protocol 0
interface number 0
class USB_CLASS_COMM subclass 2 protocol 1
endpointaddress 0x1
TYPE_INTERRUPT

interface number 1
class USB_CLASS_DATA subclass 0 protocol 0
endpointaddress 0xa
TYPE_BULK IN
endpointaddress 0xb
TYPE_BULK OUT

interface number 2
class USB_CLASS_VENDOR_SPEC subclass 255 protocol 0
endpointaddress 0x3
TYPE_BULK IN
endpointaddress 0x6
TYPE_BULK OUT

It then sends the memory config request to the phone. Your output should
look like this:

opening device
getting configvalue
value is 1 now about to set config
config set
claiming 2
device opened, about to write
wrote, about to read
Starting read request
Ending readrequest read request
read 10 bytes
'Y\x0c\x000\x8cb\x00*=~'

Once that works, run the top level bitpim. The device should be detected
and automatically used.

Roger
Steven Palm
2003-12-10 03:45:50 UTC
Permalink
Post by Roger Binns
Post by Steven Palm
Hey, my USB cable finally arrived, so now I can do some real world
testing. Here is what I saw on my first attempt to load data from the
What cable is it? Is it a USB to serial convertor or a straight
through connection. What does the System Profiler/Devices and Volumes
tab say?
The charging USB cable from 1xexpress.com / www.rpiwireless.com.

It is USB straight through.
Post by Roger Binns
Post by Steven Palm
BrewCommandException: Brew Error 0x0d
BrewCommandException: Brew Error 0x02
They are exactly what I get if I talk to the modem interface on the VX6000.
Well, I was specifying the /dev/cu.usbserialXXX device, so I'm sure
this is what I was doing.
Post by Roger Binns
What you need to do is build the Python module.
See my other note on this, crossed in the e-mail. ;-)
Post by Roger Binns
Once that works, run the top level bitpim. The device should be detected
and automatically used.
Okay, I'll keep an eye on this. Obviously something is a touch
different between linux and the Mac here, but I can poke around and see
what I find.

-. ----. -.-- - -.--
Steve Palm - ***@n9yty.com
-. ----. -.-- - -.--

Loading...