You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
(53) |
Apr
(48) |
May
(14) |
Jun
(3) |
Jul
(21) |
Aug
(11) |
Sep
(77) |
Oct
(67) |
Nov
(28) |
Dec
(163) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(112) |
Feb
(143) |
Mar
(114) |
Apr
(138) |
May
(173) |
Jun
(119) |
Jul
(119) |
Aug
(117) |
Sep
(187) |
Oct
(170) |
Nov
(254) |
Dec
(193) |
2005 |
Jan
(336) |
Feb
(284) |
Mar
(189) |
Apr
(100) |
May
(89) |
Jun
(52) |
Jul
(85) |
Aug
(138) |
Sep
(181) |
Oct
(137) |
Nov
(104) |
Dec
(98) |
2006 |
Jan
(76) |
Feb
(106) |
Mar
(224) |
Apr
(270) |
May
(103) |
Jun
(144) |
Jul
(77) |
Aug
(38) |
Sep
(37) |
Oct
(20) |
Nov
(14) |
Dec
(73) |
2007 |
Jan
(130) |
Feb
(68) |
Mar
(78) |
Apr
(60) |
May
(45) |
Jun
(63) |
Jul
(84) |
Aug
(45) |
Sep
(40) |
Oct
(12) |
Nov
(71) |
Dec
(56) |
2008 |
Jan
(44) |
Feb
(20) |
Mar
(25) |
Apr
(17) |
May
(33) |
Jun
(60) |
Jul
(97) |
Aug
(38) |
Sep
(10) |
Oct
(20) |
Nov
(13) |
Dec
(19) |
2009 |
Jan
(7) |
Feb
(5) |
Mar
(23) |
Apr
(10) |
May
(6) |
Jun
(5) |
Jul
(17) |
Aug
(7) |
Sep
(14) |
Oct
(27) |
Nov
(13) |
Dec
(12) |
2010 |
Jan
(37) |
Feb
(9) |
Mar
(13) |
Apr
(12) |
May
(8) |
Jun
(3) |
Jul
(1) |
Aug
(9) |
Sep
(3) |
Oct
(1) |
Nov
(1) |
Dec
(4) |
2011 |
Jan
(1) |
Feb
|
Mar
(1) |
Apr
(4) |
May
|
Jun
(2) |
Jul
(8) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
(5) |
Jun
|
Jul
|
Aug
|
Sep
(5) |
Oct
|
Nov
(3) |
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
|
2017 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
(2) |
Oct
|
Nov
|
Dec
|
From: Steven P. <n9...@n9...> - 2003-12-10 07:01:05
|
If I remove the AppleUSBCDCDriver.kext, I get the following: usb_set_debug: Setting debugging level to 255 (on) usb_os_find_busses: Found 026 usb_os_find_busses: Found 027 usb_os_find_busses: Found 059 usb_os_find_busses: Found 091 usb_os_find_devices: Found 001 on 026 usb_os_find_devices: Found 002 on 026 usb_os_open: 05ac:8203 USB error: usb_os_open: Another process already has exclusive access to the device. usb_os_open: 05ac:8005 USB error: usb_os_open: Another process already has exclusive access to the device. usb_os_find_devices: Found 001 on 027 usb_os_open: 05ac:8005 USB error: usb_os_open: Another process already has exclusive access to the device. usb_os_find_devices: Found 001 on 059 usb_os_find_devices: Found 002 on 059 usb_os_open: 1004:6000 usb_os_open: device opened usb_control_msg: 128 6 512 0 0xbffff5c8 8 1000 usb_control_msg: 128 6 512 0 0x510440 90 1000 skipped 4 class/vendor specific interface descriptors usb_os_close: 1004:6000 usb_os_open: 05ac:8005 USB error: usb_os_open: Another process already has exclusive access to the device. usb_os_find_devices: Found 001 on 091 usb_os_open: 05ac:8006 USB error: usb_os_open: Another process already has exclusive access to the device. 4 busses, 6 devices 026 usb_os_open: 05ac:8005 USB error: usb_os_open: Another process already has exclusive access to the device. usb_open(<C usb_device instance at _02848800_p_usb_device>)=None Traceback (most recent call last): File "usb.py", line 300, in ? for device in bus.devices(): File "usb.py", line 43, in devices yield USBDevice(dev) File "usb.py", line 56, in __init__ raise USBException() __main__.USBException: usb_os_open: Another process already has exclusive access to the device. So, while it no longer gets the "device in use" error when trying to open the phone, it's not quite getting anywhere useful either. That's my last shot for the night... At least AppleUSBCDCDriver.kext is in the Darwin open source project so I can hopefully check it out and see what is going on. -. ----. -.-- - -.-- Steve Palm - n9...@n9... -. ----. -.-- - -.-- |
From: Roger B. <ro...@ro...> - 2003-12-10 06:01:44
|
For reference this is what we are looking for. 1004/6000 010 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 We should see a modem driver on interface 0 and 1, and be free to use interface 2 ourselves. > | | | +-o IOUSBInterface@0 <class IOUSBInterface, > registered, matched, active, busy 0, retain count 6> > | | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, > !registered, !matched, active, busy 0, retain count 4> > | | | +-o Data Interface@1 <class IOUSBInterface, > registered, matched, active, busy 0, retain count 6> > | | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, > !registered, !matched, active, busy 0, retain count 4> > | | | +-o IOUSBInterface@2 <class IOUSBInterface, > registered, matched, active, busy 0, retain count 5> > | | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, So it is doing something with interface 2 ('matched' & 'active' whatever they mean). > | | | +-o IOUSBInterface@2 <class IOUSBInterface, > registered, matched, active, busy 0, retain count 5> > | | | | | { > | | | | | "bcdDevice" = 0 > | | | | | "idProduct" = 24576 > | | | | | "IOCFPlugInTypes" = > {"2d9786c6-9ef3-11d4-ad51-000a27052861"="IOUSBFamily.kext/Contents/ > PlugIns/IOUSBLib.bundle"} > | | | | | "iInterface" = 0 > | | | | | "bInterfaceSubClass" = 255 > | | | | | "IOUserClientClass" = "IOUSBInterfaceUserClient" > | | | | | "bInterfaceProtocol" = 0 > | | | | | "bConfigurationValue" = 1 > | | | | | "bInterfaceNumber" = 2 > | | | | | "idVendor" = 4100 > | | | | | "bInterfaceClass" = 255 > | | | | | "locationID" = 990904320 > | | | | | "bNumEndpoints" = 2 > | | | | | "bAlternateSetting" = 0 > | | | | | } > | | | | | > | | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, > !registered, !matched, active, busy 0, retain count 4> > | | | | { > | | | | "IOProbeScore" = 9000 > | | | | "IOClass" = "IOUSBUserClientInit" > | | | | "IOProviderMergeProperties" = > {"IOCFPlugInTypes"={"2d9786c6-9ef3-11d4-ad51 > -000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle$ > | | | | "IOProviderClass" = "IOUSBInterface" > | | | | "CFBundleIdentifier" = > "com.apple.iokit.IOUSBUserClient" > | | | | "IOMatchCategory" = "IOUSBUserClientInit" And that is what it decided to do with it. The first section is just standard information about the device (ie all operatings system output that). The second bit looks to be the driver it attached but it doesn't look like it gave you a device name. Roger |
From: Roger B. <ro...@ro...> - 2003-12-10 05:54:01
|
>> usb_set_debug: Setting debugging level to 255 (on) >> usb_os_find_busses: Found 003 >> usb_os_find_busses: Found 003 >> usb_os_find_busses: Found 003 >> usb_os_find_busses: Found 002 >> usb_os_find_devices: Found 001 on 003 >> usb_os_find_devices: Found 002 on 003 >> usb_os_find_devices: Found 001 on 003 >> usb_os_find_devices: Found 001 on 003 That is all normal. >> usb_os_open: 05ac:8005 >> USB error: could not open device That isn't. My complete output on Linux is at the bottom. However looking at the code, I only need to open the device to get vendor and product strings (not the same as the integer ids) and to actually open the bulk interfaces later on. I will look into making that change in the code, although it won't do any good for you anyway. > usb_os_open: 1004:6000 > USB error: usb_os_open: Another process already has exclusive access to > the device. That is your phone. The libusb api has you claiming the interfaces seperately from the device as a whole. On Linux you can't claim an interface if there is a device driver attached, but the acm driver only attaches to interface 0 & 1 (interrupt and data for the modem) and leaves the diagnostics interface (2) seperate. I don't know how you get around it. Some places you should look at are projects on SourceForge for scanners and digital cameras. They usually use libusb on Linux, Windows and Mac. Here is my complete output: rb.com rogerb /space/bitpim/native/usb > python usb.py usb_set_debug: Setting debugging level to 255 (on) usb_os_init: Found USB VFS at /proc/bus/usb usb_find_busses: Skipping non bus directory devices usb_find_busses: Skipping non bus directory drivers usb_find_busses: Found 002 usb_find_busses: Found 001 usb_find_devices_on_bus: Found 001 on 001 usb_find_devices_on_bus: Found 002 on 001 usb_find_devices_on_bus: Found 003 on 001 usb_find_devices_on_bus: Found 010 on 001 skipped 4 class/vendor specific interface descriptors usb_find_devices_on_bus: Found 001 on 002 0 busses, 0 devices 001 0/0 001 class USB_CLASS_HUB subclass 0 protocol 0 interface number 0 class USB_CLASS_HUB subclass 0 protocol 0 endpointaddress 0x1 TYPE_INTERRUPT 451/2046 002 class USB_CLASS_HUB subclass 0 protocol 0 interface number 0 class USB_CLASS_HUB subclass 0 protocol 0 endpointaddress 0x1 TYPE_INTERRUPT 4b8/5 003 class USB_CLASS_PER_INTERFACE subclass 0 protocol 0 interface number 0 class USB_CLASS_PRINTER subclass 1 protocol 2 endpointaddress 0x1 TYPE_BULK OUT endpointaddress 0x2 TYPE_BULK IN 1004/6000 010 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 002 0/0 001 class USB_CLASS_HUB subclass 0 protocol 0 interface number 0 class USB_CLASS_HUB subclass 0 protocol 0 endpointaddress 0x1 TYPE_INTERRUPT Roger |
From: Steven P. <n9...@n9...> - 2003-12-10 04:39:43
|
| | +-o usb@1A <class IOPCIDevice, registered, matched, active, busy 0, retain count 13> | | | +-o AppleUSBOHCI <class AppleUSBOHCI, registered, matched, active, busy 0, retain count 12> | | | +-o OHCI Root Hub Simulation@1A <class IOUSBRootHubDevice, registered, matched, active, busy 0, retain count 11> | | | | +-o AppleUSBHub <class AppleUSBHub, !registered, !matched, active, busy 0, retain count 4> | | | | +-o IOUSBInterface@0 <class IOUSBInterface, !registered, !matched, active, busy 0, retain count 5> | | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, !registered, !matched, active, busy 0, retain count 4> | | | +-o IOUSBDevice@1a100000 <class IOUSBDevice, registered, matched, active, busy 0, retain count 11> | | | +-o CSRUSBBluetoothHCIController <class CSRUSBBluetoothHCIController, registered, matched, active, busy 0, retain count 15> | | | | +-o IOBluetoothHCIUserClient <class IOBluetoothHCIUserClient, !registered, !matched, active, busy 0, retain count 5> | | | | +-o IOBluetoothHCIUserClient <class IOBluetoothHCIUserClient, !registered, !matched, active, busy 0, retain count 5> | | | +-o IOUSBInterface@0 <class IOUSBInterface, registered, matched, active, busy 0, retain count 5> | | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, !registered, !matched, active, busy 0, retain count 4> | | | +-o IOUSBInterface@1 <class IOUSBInterface, registered, matched, active, busy 0, retain count 5> | | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, !registered, !matched, active, busy 0, retain count 4> | | | +-o IOUSBInterface@2 <class IOUSBInterface, registered, matched, active, busy 0, retain count 5> | | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, !registered, !matched, active, busy 0, retain count 4> | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, !registered, !matched, active, busy 0, retain count 4> | | +-o usb@1B <class IOPCIDevice, registered, matched, active, busy 0, retain count 10> | | | +-o AppleUSBOHCI <class AppleUSBOHCI, registered, matched, active, busy 0, retain count 7> | | | +-o OHCI Root Hub Simulation@1B <class IOUSBRootHubDevice, registered, matched, active, busy 0, retain count 9> | | | +-o AppleUSBHub <class AppleUSBHub, !registered, !matched, active, busy 0, retain count 4> | | | +-o IOUSBInterface@0 <class IOUSBInterface, !registered, !matched, active, busy 0, retain count 5> | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, !registered, !matched, active, busy 0, retain count 4> | | +-o usb@1B,1 <class IOPCIDevice, registered, matched, active, busy 0, retain count 10> | | | +-o AppleUSBOHCI <class AppleUSBOHCI, registered, matched, active, busy 0, retain count 8> | | | +-o OHCI Root Hub Simulation@1B,1 <class IOUSBRootHubDevice, registered, matched, active, busy 0, retain count 11> | | | | +-o AppleUSBHub <class AppleUSBHub, !registered, !matched, active, busy 0, retain count 4> | | | | +-o IOUSBInterface@0 <class IOUSBInterface, !registered, !matched, active, busy 0, retain count 5> | | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, !registered, !matched, active, busy 0, retain count 4> | | | +-o Qualcomm CDMA Technologies MSM@3b100000 <class IOUSBDevice, registered, matched, active, busy 0, retain count 11> | | | +-o AppleUSBCDCDriver <class AppleUSBCDCDriver, !registered, !matched, active, busy 0, retain count 5> | | | | +-o IOModemSerialStreamSync <class IOModemSerialStreamSync, registered, matched, active, busy 0, retain count 5> | | | | +-o IOSerialBSDClient <class IOSerialBSDClient, registered, matched, active, busy 0, retain count 4> | | | +-o IOUSBInterface@0 <class IOUSBInterface, registered, matched, active, busy 0, retain count 6> | | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, !registered, !matched, active, busy 0, retain count 4> | | | +-o Data Interface@1 <class IOUSBInterface, registered, matched, active, busy 0, retain count 6> | | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, !registered, !matched, active, busy 0, retain count 4> | | | +-o IOUSBInterface@2 <class IOUSBInterface, registered, matched, active, busy 0, retain count 5> | | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, !registered, !matched, active, busy 0, retain count 4> | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, !registered, !matched, active, busy 0, retain count 4> | | +-o usb@1B,2 <class IOPCIDevice, registered, matched, active, busy 0, retain count 11> | | +-o IOService <class IOService, !registered, !matched, active, busy 0, retain count 4> | | +-o AppleUSBEHCI <class AppleUSBEHCI, registered, matched, active, busy 0, retain count 7> | | +-o EHCI Root Hub Simulation@1B,2 <class IOUSBRootHubDevice, registered, matched, active, busy 0, retain count 9> | | +-o AppleUSBHub <class AppleUSBHub, !registered, !matched, active, busy 0, retain count 4> | | +-o IOUSBInterface@0 <class IOUSBInterface, !registered, !matched, active, busy 0, retain count 5> | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, !registered, !matched, active, busy 0, retain count 4> Here is a more detailed dump of the Qualcomm device: | | | +-o Qualcomm CDMA Technologies MSM@3b100000 <class IOUSBDevice, registered, matched, active, busy 0, retain count 11> | | | | { | | | | "PortNum" = 1 | | | | "Device Speed" = 1 | | | | "iSerialNumber" = 0 | | | | "bNumConfigurations" = 1 | | | | "IOUserClientClass" = "IOUSBDeviceUserClient" | | | | "bDeviceClass" = 2 | | | | "USB Product Name" = "Qualcomm CDMA Technologies MSM" | | | | "iManufacturer" = 1 | | | | "USB Vendor Name" = "LG CDMA USB Modem" | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/ PlugIns/IOUSBLib.bundle"} | | | | "bcdDevice" = 0 | | | | "bDeviceSubClass" = 0 | | | | "iProduct" = 2 | | | | "sessionID" = 22224608038952 | | | | "bMaxPacketSize0" = 16 | | | | "locationID" = 990904320 | | | | "Bus Power Available" = 250 | | | | "idProduct" = 24576 | | | | "USB Address" = 2 | | | | "bDeviceProtocol" = 0 | | | | "idVendor" = 4100 | | | | } | | | | | | | +-o AppleUSBCDCDriver <class AppleUSBCDCDriver, !registered, !matched, active, busy 0, retain count 5> | | | | | { | | | | | "IOMatchCategory" = "IODefaultMatchCategory" | | | | | "bDeviceProtocol" = 0 | | | | | "IOClass" = "AppleUSBCDCDriver" | | | | | "bDeviceClass" = 2 | | | | | "bDeviceSubClass" = 0 | | | | | "IOProviderClass" = "IOUSBDevice" | | | | | "CFBundleIdentifier" = "com.apple.driver.AppleUSBCDCDriver" | | | | | "IOProbeScore" = 60000 | | | | | } | | | | | | | | | +-o IOModemSerialStreamSync <class IOModemSerialStreamSync, registered, matched, active, busy 0, retain count 5> | | | | | { | | | | | "IOTTYBaseName" = "usbmodem" | | | | | "IOTTYSuffix" = "3B1" | | | | | "Product Name" = "Qualcomm CDMA Technologies MSM" | | | | | } | | | | | | | | | +-o IOSerialBSDClient <class IOSerialBSDClient, registered, matched, active, busy 0, retain count 4> | | | | { | | | | "IOTTYSuffix" = "3B1" | | | | "IOClass" = "IOSerialBSDClient" | | | | "IOTTYBaseName" = "usbmodem" | | | | "IOSerialBSDClientType" = "IOModemSerialStream" | | | | "IOProbeScore" = 1000 | | | | "IOResourceMatch" = "IOBSD" | | | | "IOMatchCategory" = "IODefaultMatchCategory" | | | | "IOTTYDevice" = "usbmodem3B1" | | | | "IOCalloutDevice" = "/dev/cu.usbmodem3B1" | | | | "CFBundleIdentifier" = "com.apple.iokit.IOSerialFamily" | | | | "IODialinDevice" = "/dev/tty.usbmodem3B1" | | | | "IOProviderClass" = "IOSerialStreamSync" | | | | } | | | | | | | +-o IOUSBInterface@0 <class IOUSBInterface, registered, matched, active, busy 0, retain count 6> | | | | | { | | | | | "bcdDevice" = 0 | | | | | "idProduct" = 24576 | | | | | "IOCFPlugInTypes" = {"2d9786c6-9ef3-11d4-ad51-000a27052861"="IOUSBFamily.kext/Contents/ PlugIns/IOUSBLib.bundle"} | | | | | "iInterface" = 0 | | | | | "bInterfaceSubClass" = 2 | | | | | "IOUserClientClass" = "IOUSBInterfaceUserClient" | | | | | "bInterfaceProtocol" = 1 | | | | | "bConfigurationValue" = 1 | | | | | "bInterfaceNumber" = 0 | | | | | "idVendor" = 4100 | | | | | "bInterfaceClass" = 2 | | | | | "locationID" = 990904320 | | | | | "bNumEndpoints" = 1 | | | | | "bAlternateSetting" = 0 | | | | | } | | | | | | | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, !registered, !matched, active, busy 0, retain count 4> | | | | { | | | | "IOProbeScore" = 9000 | | | | "IOClass" = "IOUSBUserClientInit" | | | | "IOProviderMergeProperties" = {"IOCFPlugInTypes"={"2d9786c6-9ef3-11d4-ad51 -000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle$ | | | | "IOProviderClass" = "IOUSBInterface" | | | | "CFBundleIdentifier" = "com.apple.iokit.IOUSBUserClient" | | | | "IOMatchCategory" = "IOUSBUserClientInit" | | | | } | | | | | | | +-o Data Interface@1 <class IOUSBInterface, registered, matched, active, busy 0, retain count 6> | | | | | { | | | | | "bcdDevice" = 0 | | | | | "idProduct" = 24576 | | | | | "IOCFPlugInTypes" = {"2d9786c6-9ef3-11d4-ad51-000a27052861"="IOUSBFamily.kext/Contents/ PlugIns/IOUSBLib.bundle"} | | | | | "iInterface" = 4 | | | | | "bInterfaceSubClass" = 0 | | | | | "IOUserClientClass" = "IOUSBInterfaceUserClient" | | | | | "bInterfaceProtocol" = 0 | | | | | "bConfigurationValue" = 1 | | | | | "bInterfaceNumber" = 1 | | | | | "idVendor" = 4100 | | | | | "bInterfaceClass" = 10 | | | | | "locationID" = 990904320 | | | | | "bNumEndpoints" = 2 | | | | | "bAlternateSetting" = 0 | | | | | } | | | | | | | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, !registered, !matched, active, busy 0, retain count 4> | | | | { | | | | "IOProbeScore" = 9000 | | | | "IOClass" = "IOUSBUserClientInit" | | | | "IOProviderMergeProperties" = {"IOCFPlugInTypes"={"2d9786c6-9ef3-11d4-ad51 -000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle$ | | | | "IOProviderClass" = "IOUSBInterface" | | | | "CFBundleIdentifier" = "com.apple.iokit.IOUSBUserClient" | | | | "IOMatchCategory" = "IOUSBUserClientInit" | | | | } | | | | | | | +-o IOUSBInterface@2 <class IOUSBInterface, registered, matched, active, busy 0, retain count 5> | | | | | { | | | | | "bcdDevice" = 0 | | | | | "idProduct" = 24576 | | | | | "IOCFPlugInTypes" = {"2d9786c6-9ef3-11d4-ad51-000a27052861"="IOUSBFamily.kext/Contents/ PlugIns/IOUSBLib.bundle"} | | | | | "iInterface" = 0 | | | | | "bInterfaceSubClass" = 255 | | | | | "IOUserClientClass" = "IOUSBInterfaceUserClient" | | | | | "bInterfaceProtocol" = 0 | | | | | "bConfigurationValue" = 1 | | | | | "bInterfaceNumber" = 2 | | | | | "idVendor" = 4100 | | | | | "bInterfaceClass" = 255 | | | | | "locationID" = 990904320 | | | | | "bNumEndpoints" = 2 | | | | | "bAlternateSetting" = 0 | | | | | } | | | | | | | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, !registered, !matched, active, busy 0, retain count 4> | | | | { | | | | "IOProbeScore" = 9000 | | | | "IOClass" = "IOUSBUserClientInit" | | | | "IOProviderMergeProperties" = {"IOCFPlugInTypes"={"2d9786c6-9ef3-11d4-ad51 -000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle$ | | | | "IOProviderClass" = "IOUSBInterface" | | | | "CFBundleIdentifier" = "com.apple.iokit.IOUSBUserClient" | | | | "IOMatchCategory" = "IOUSBUserClientInit" | | | | } | | | | | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, !registered, !matched, active, busy 0, retain count 4> | | | { | | | "IOProbeScore" = 9000 | | | "IOClass" = "IOUSBUserClientInit" | | | "IOProviderMergeProperties" = {"IOCFPlugInTypes"={"9dc7b780-9ec0-11d4-a54f -000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}$ | | | "IOProviderClass" = "IOUSBDevice" | | | "CFBundleIdentifier" = "com.apple.iokit.IOUSBUserClient" | | | "IOMatchCategory" = "IOUSBUserClientInit" | | | } -. ----. -.-- - -.-- Steve Palm - n9...@n9... -. ----. -.-- - -.-- |
From: Steven P. <n9...@n9...> - 2003-12-10 04:07:33
|
On Dec 9, 2003, at 9:41 PM, Steven Palm wrote: > I compiled and installed version 1.7 of libusb. I then installed/ran > SWIG to generate the hooks for python, and then tried to run your > usbscan.py script. I just compiled the CVS tree version of libusb, and the output differs slightly: From v1.7: > usb_set_debug: Setting debugging level to 255 (on) > usb_os_find_busses: Found 003 > usb_os_find_busses: Found 003 > usb_os_find_busses: Found 003 > usb_os_find_busses: Found 002 > usb_os_find_devices: Found 001 on 003 > usb_os_find_devices: Found 002 on 003 > usb_os_find_devices: Found 001 on 003 > usb_os_find_devices: Found 001 on 003 > usb_os_open: 05ac:8005 > USB error: could not open device > usb_os_open: 05ac:8005 > USB error: could not open device > usb_os_open: 1004:6000 > USB error: could not open device > usb_os_open: 05ac:8006 > USB error: could not open device > usb_os_find_devices: Found 001 on 003 > usb_os_find_devices: Found 002 on 003 > usb_os_find_devices: Found 001 on 003 > usb_os_find_devices: Found 001 on 003 > usb_os_open: 05ac:8005 > USB error: could not open device > usb_os_open: 05ac:8005 > USB error: could not open device > usb_os_open: 1004:6000 > USB error: could not open device > usb_os_open: 05ac:8006 > USB error: could not open device > usb_os_find_devices: Found 001 on 003 > usb_os_find_devices: Found 002 on 003 > usb_os_find_devices: Found 001 on 003 > usb_os_find_devices: Found 001 on 003 > usb_os_open: 05ac:8005 > USB error: could not open device > usb_os_open: 05ac:8005 > USB error: could not open device > usb_os_open: 1004:6000 > USB error: could not open device > usb_os_open: 05ac:8006 > USB error: could not open device > usb_os_find_devices: Found 002 on 002 > usb_os_find_devices: Found 001 on 002 > usb_os_open: 05ac:8005 > USB error: could not open device > usb_os_open: 05ac:8203 > USB error: could not open device > usb_os_open: 05ac:8006 > USB error: could not open device > usb_open(<C usb_device instance at _02848800_p_usb_device>)=None > Traceback (most recent call last): > File "usbscan.py", line 70, in ? > res=usbscan() > File "usbscan.py", line 28, in usbscan > for device in bus.devices(): > File "/Users/n9yty/my_cvs/bitpim/bitpim/native/usb/usb.py", line 43, > in devices > yield USBDevice(dev) > File "/Users/n9yty/my_cvs/bitpim/bitpim/native/usb/usb.py", line 56, > in __init__ > raise USBException() > native.usb.usb.USBException: could not open device From CVS: usb_set_debug: Setting debugging level to 255 (on) usb_os_find_busses: Found 026 usb_os_find_busses: Found 027 usb_os_find_busses: Found 059 usb_os_find_busses: Found 091 usb_os_find_devices: Found 001 on 026 usb_os_find_devices: Found 002 on 026 usb_os_open: 05ac:8203 USB error: usb_os_open: Another process already has exclusive access to the device. usb_os_open: 05ac:8005 USB error: usb_os_open: Another process already has exclusive access to the device. usb_os_find_devices: Found 001 on 027 usb_os_open: 05ac:8005 USB error: usb_os_open: Another process already has exclusive access to the device. usb_os_find_devices: Found 001 on 059 usb_os_find_devices: Found 002 on 059 usb_os_open: 1004:6000 USB error: usb_os_open: Another process already has exclusive access to the device. usb_os_open: 05ac:8005 USB error: usb_os_open: Another process already has exclusive access to the device. usb_os_find_devices: Found 001 on 091 usb_os_open: 05ac:8006 USB error: usb_os_open: Another process already has exclusive access to the device. usb_os_open: 05ac:8005 USB error: usb_os_open: Another process already has exclusive access to the device. usb_open(<C usb_device instance at _02841a00_p_usb_device>)=None Traceback (most recent call last): File "usbscan.py", line 70, in ? res=usbscan() File "usbscan.py", line 28, in usbscan for device in bus.devices(): File "/Users/n9yty/my_cvs/bitpim/bitpim/native/usb/usb.py", line 43, in devices yield USBDevice(dev) File "/Users/n9yty/my_cvs/bitpim/bitpim/native/usb/usb.py", line 56, in __init__ raise USBException() native.usb.usb.USBException: usb_os_open: Another process already has exclusive access to the device. -. ----. -.-- - -.-- Steve Palm - n9...@n9... -. ----. -.-- - -.-- |
From: Steven P. <n9...@n9...> - 2003-12-10 03:45:56
|
On Dec 9, 2003, at 9:22 PM, Roger Binns wrote: > Steven Palm wrote: >> 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: > > 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. > The exceptions you are seeing: > >> 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. > What you need to do is build the Python module. See my other note on this, crossed in the e-mail. ;-) > 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 - n9...@n9... -. ----. -.-- - -.-- |
From: Steven P. <n9...@n9...> - 2003-12-10 03:41:46
|
I know this is probably too early on to be messing with, but I thought, what the heck.... I compiled and installed version 1.7 of libusb. I then installed/ran SWIG to generate the hooks for python, and then tried to run your usbscan.py script. First, the build steps for the libusb wrapper: PYTHONVER=python2.3 INCLUDEDIR=/System/Library/Frameworks/Python.framework/Versions/2.3/ include/$PYTHONVER swig -python -I/usr/local/include libusb.i gcc -Wall -O2 -bundle -undefined suppress -flat_namespace -I $INCLUDEDIR -I /usr/local/include -o _libusb.so libusb_wrap.c -L/usr/local/lib -lusb -framework Python SWIG builds out of the box on MacOS X 10.3. When I run usbscan.py, I get: usb_set_debug: Setting debugging level to 255 (on) usb_os_find_busses: Found 003 usb_os_find_busses: Found 003 usb_os_find_busses: Found 003 usb_os_find_busses: Found 002 usb_os_find_devices: Found 001 on 003 usb_os_find_devices: Found 002 on 003 usb_os_find_devices: Found 001 on 003 usb_os_find_devices: Found 001 on 003 usb_os_open: 05ac:8005 USB error: could not open device usb_os_open: 05ac:8005 USB error: could not open device usb_os_open: 1004:6000 USB error: could not open device usb_os_open: 05ac:8006 USB error: could not open device usb_os_find_devices: Found 001 on 003 usb_os_find_devices: Found 002 on 003 usb_os_find_devices: Found 001 on 003 usb_os_find_devices: Found 001 on 003 usb_os_open: 05ac:8005 USB error: could not open device usb_os_open: 05ac:8005 USB error: could not open device usb_os_open: 1004:6000 USB error: could not open device usb_os_open: 05ac:8006 USB error: could not open device usb_os_find_devices: Found 001 on 003 usb_os_find_devices: Found 002 on 003 usb_os_find_devices: Found 001 on 003 usb_os_find_devices: Found 001 on 003 usb_os_open: 05ac:8005 USB error: could not open device usb_os_open: 05ac:8005 USB error: could not open device usb_os_open: 1004:6000 USB error: could not open device usb_os_open: 05ac:8006 USB error: could not open device usb_os_find_devices: Found 002 on 002 usb_os_find_devices: Found 001 on 002 usb_os_open: 05ac:8005 USB error: could not open device usb_os_open: 05ac:8203 USB error: could not open device usb_os_open: 05ac:8006 USB error: could not open device usb_open(<C usb_device instance at _02848800_p_usb_device>)=None Traceback (most recent call last): File "usbscan.py", line 70, in ? res=usbscan() File "usbscan.py", line 28, in usbscan for device in bus.devices(): File "/Users/n9yty/my_cvs/bitpim/bitpim/native/usb/usb.py", line 43, in devices yield USBDevice(dev) File "/Users/n9yty/my_cvs/bitpim/bitpim/native/usb/usb.py", line 56, in __init__ raise USBException() native.usb.usb.USBException: could not open device I don't know if this helps at all, but this is the system view of the USB bus: USB: USB Bus: Vendor Name: Apple Computer, Inc. Product ID: 32773 ($8005) Speed: Up to 12 Mb/sec Bus Power (mA): 500 Bluetooth HCI: Speed: Up to 12 Mb/sec Product ID: 33283 ($8203) Bus Power (mA): 500 Vendor ID: 1452 USB Bus: Vendor Name: Apple Computer, Inc. Speed: Up to 12 Mb/sec Product ID: 32773 ($8005) Bus Power (mA): 500 USB Bus: Vendor Name: Apple Computer, Inc. Product ID: 32773 ($8005) Speed: Up to 12 Mb/sec Bus Power (mA): 500 Qualcomm CDMA Technologies MSM: Vendor Name: LG CDMA USB Modem Speed: Up to 12 Mb/sec Product ID: 24576 ($6000) Bus Power (mA): 500 USB High-Speed Bus: Vendor Name: Apple Computer, Inc. Speed: Up to 480 Mb/sec Product ID: 32774 ($8006) Bus Power (mA): 500 Again, if this is too early to be messing with, tell me to go away for now. ;-) -. ----. -.-- - -.-- Steve Palm - n9...@n9... -. ----. -.-- - -.-- |
From: Steven P. <n9...@n9...> - 2003-12-10 03:34:24
|
On Dec 9, 2003, at 9:04 PM, Roger Binns wrote: > I assume that Modules.zip just contains the .py files. I also > assume this directory structure isn't writable when deployed. > On Linux and Windows the .py files are compiled to .pyo files > (optimised). This means that all the doc strings are stripped > out which makes them considerably smaller. Somewhat. It stores the .pyc files, not only for the bitpim stuff, but any associated items. Here is a list that has been put into it here: Archive: Modules.zip testing: Carbon/__init__.pyc OK testing: Carbon/AE.pyc OK testing: Carbon/Appearance.pyc OK testing: Carbon/AppleEvents.pyc OK testing: Carbon/CarbonEvents.pyc OK testing: Carbon/ControlAccessor.pyc OK testing: Carbon/Controls.pyc OK testing: Carbon/Ctl.pyc OK testing: Carbon/Dialogs.pyc OK testing: Carbon/Dlg.pyc OK testing: Carbon/Dragconst.pyc OK testing: Carbon/Events.pyc OK testing: Carbon/Evt.pyc OK testing: Carbon/File.pyc OK testing: Carbon/Files.pyc OK testing: Carbon/Folder.pyc OK testing: Carbon/Folders.pyc OK testing: Carbon/Menu.pyc OK testing: Carbon/Qd.pyc OK testing: Carbon/QuickDraw.pyc OK testing: Carbon/Res.pyc OK testing: Carbon/TextEdit.pyc OK testing: Carbon/Win.pyc OK testing: Carbon/Windows.pyc OK testing: DSV/__init__.pyc OK testing: DSV/DSV.pyc OK testing: EasyDialogs.pyc OK testing: FCNTL.pyc OK testing: Finder/__init__.pyc OK testing: Finder/Containers_and_folders.pyc OK testing: Finder/Enumerations.pyc OK testing: Finder/Files.pyc OK testing: Finder/Finder_Basics.pyc OK testing: Finder/Finder_items.pyc OK testing: Finder/Legacy_suite.pyc OK testing: Finder/Standard_Suite.pyc OK testing: Finder/Type_Definitions.pyc OK testing: Finder/Window_classes.pyc OK testing: MacOS.pyc OK testing: Nav.pyc OK testing: Queue.pyc OK testing: StdSuites/__init__.pyc OK testing: StdSuites/AppleScript_Suite.pyc OK testing: StdSuites/Macintosh_Connectivity_Clas.pyc OK testing: StdSuites/QuickDraw_Graphics_Suite.pyc OK testing: StdSuites/QuickDraw_Graphics_Suppleme.pyc OK testing: StdSuites/Required_Suite.pyc OK testing: StdSuites/Standard_Suite.pyc OK testing: StdSuites/Table_Suite.pyc OK testing: StdSuites/Text_Suite.pyc OK testing: StdSuites/Type_Names_Suite.pyc OK testing: StringIO.pyc OK testing: TERMIOS.pyc OK testing: UserDict.pyc OK testing: _AE.pyc OK testing: _Ctl.pyc OK testing: _Dlg.pyc OK testing: _Evt.pyc OK testing: _File.pyc OK testing: _Folder.pyc OK testing: _Menu.pyc OK testing: _Qd.pyc OK testing: _Res.pyc OK testing: _Win.pyc OK testing: __future__.pyc OK testing: __main__.pyc OK testing: _builtinSuites/__init__.pyc OK testing: _builtinSuites/builtin_Suite.pyc OK testing: _hotshot.pyc OK testing: _locale.pyc OK testing: _random.pyc OK testing: _socket.pyc OK testing: _ssl.pyc OK testing: _weakref.pyc OK testing: aepack.pyc OK testing: aetools.pyc OK testing: aetypes.pyc OK testing: analyser.pyc OK testing: applesingle.pyc OK testing: array.pyc OK testing: atexit.pyc OK testing: bdb.pyc OK testing: binascii.pyc OK testing: bpaudio.pyc OK testing: brewcompressedimage.pyc OK testing: cStringIO.pyc OK testing: calendar.pyc OK testing: calendarcontrol.pyc OK testing: cmd.pyc OK testing: comdiagnose.pyc OK testing: common.pyc OK testing: commport.pyc OK testing: comscan.pyc OK testing: copy.pyc OK testing: copy_reg.pyc OK testing: datetime.pyc OK testing: difflib.pyc OK testing: dis.pyc OK testing: doctest.pyc OK testing: dummy_thread.pyc OK testing: fcntl.pyc OK testing: fixedscrolledpanel.pyc OK testing: fnmatch.pyc OK testing: getopt.pyc OK testing: glob.pyc OK testing: gui.pyc OK testing: guihelper.pyc OK testing: guiwidgets.pyc OK testing: helpids.pyc OK testing: hexeditor.pyc OK testing: hotshot/__init__.pyc OK testing: hotshot/log.pyc OK testing: hotshot/stats.pyc OK testing: ic.pyc OK testing: icglue.pyc OK testing: importexport.pyc OK testing: inspect.pyc OK testing: linecache.pyc OK testing: locale.pyc OK testing: macfs.pyc OK testing: macostools.pyc OK testing: macpath.pyc OK testing: macresource.pyc OK testing: math.pyc OK testing: native/__init__.pyc OK testing: native/usb/__init__.pyc OK testing: native/usb/_libusb.pyc OK testing: native/usb/libusb.pyc OK testing: native/usb/usb.pyc OK testing: ntpath.pyc OK testing: opcode.pyc OK testing: operator.pyc OK testing: os.pyc OK testing: os2emxpath.pyc OK testing: p_brew.pyc OK testing: p_lg.pyc OK testing: p_lgtm520.pyc OK testing: p_lgvx4400.pyc OK testing: p_lgvx6000.pyc OK testing: p_sanyo.pyc OK testing: parser.pyc OK testing: pdb.pyc OK testing: phonebook.pyc OK testing: phonebookentryeditor.pyc OK testing: popen2.pyc OK testing: posixpath.pyc OK testing: pprint.pyc OK testing: profile.pyc OK testing: prototypes.pyc OK testing: pstats.pyc OK testing: pubsub.pyc OK testing: pwd.pyc OK testing: py_compile.pyc OK testing: random.pyc OK testing: re.pyc OK testing: repr.pyc OK testing: select.pyc OK testing: serial/__init__.pyc OK testing: serial/serialjava.pyc OK testing: serial/serialposix.pyc OK testing: serial/serialutil.pyc OK testing: serial/serialwin32.pyc OK testing: sha.pyc OK testing: socket.pyc OK testing: sre.pyc OK testing: sre_compile.pyc OK testing: sre_constants.pyc OK testing: sre_parse.pyc OK testing: stat.pyc OK testing: string.pyc OK testing: strop.pyc OK testing: struct.pyc OK testing: symbol.pyc OK testing: tempfile.pyc OK testing: termios.pyc OK testing: threading.pyc OK testing: time.pyc OK testing: token.pyc OK testing: tokenize.pyc OK testing: traceback.pyc OK testing: types.pyc OK testing: unittest.pyc OK testing: usbscan.pyc OK testing: version.pyc OK testing: wallpaper.pyc OK testing: warnings.pyc OK testing: weakref.pyc OK testing: webbrowser.pyc OK testing: wx/__init__.pyc OK testing: wx/grid.pyc OK testing: wx/html.pyc OK testing: wxPython/__init__.pyc OK testing: wxPython/__version__.pyc OK testing: wxPython/calendar.pyc OK testing: wxPython/calendarc.pyc OK testing: wxPython/clip_dnd.pyc OK testing: wxPython/cmndlgs.pyc OK testing: wxPython/controls.pyc OK testing: wxPython/controls2.pyc OK testing: wxPython/events.pyc OK testing: wxPython/filesys.pyc OK testing: wxPython/fonts.pyc OK testing: wxPython/frames.pyc OK testing: wxPython/gdi.pyc OK testing: wxPython/gizmos.pyc OK testing: wxPython/gizmosc.pyc OK testing: wxPython/grid.pyc OK testing: wxPython/gridc.pyc OK testing: wxPython/help.pyc OK testing: wxPython/helpc.pyc OK testing: wxPython/html.pyc OK testing: wxPython/htmlc.pyc OK testing: wxPython/htmlhelp.pyc OK testing: wxPython/image.pyc OK testing: wxPython/lib/__init__.pyc OK testing: wxPython/lib/colourdb.pyc OK testing: wxPython/lib/grids.pyc OK testing: wxPython/lib/intctrl.pyc OK testing: wxPython/lib/maskededit.pyc OK testing: wxPython/lib/mixins/__init__.pyc OK testing: wxPython/lib/mixins/listctrl.pyc OK testing: wxPython/lib/pubsub.pyc OK testing: wxPython/lib/rcsizer.pyc OK testing: wxPython/mdi.pyc OK testing: wxPython/misc.pyc OK testing: wxPython/misc2.pyc OK testing: wxPython/printfw.pyc OK testing: wxPython/sizers.pyc OK testing: wxPython/stattool.pyc OK testing: wxPython/streams.pyc OK testing: wxPython/tools/__init__.pyc OK testing: wxPython/tools/dbg.pyc OK testing: wxPython/utils.pyc OK testing: wxPython/windows.pyc OK testing: wxPython/windows2.pyc OK testing: wxPython/windows3.pyc OK testing: wxPython/wx.pyc OK testing: wxPython/wxc.pyc OK testing: xyaptu.pyc OK testing: zipfile.pyc OK testing: zlib.pyc OK >> 14M dist > > What size does the final distributable work out as. IIRC you > make a dimg (disk image) which is a compressed loopback filesystem. 14,233,205 bytes. Yes, a disk image is one option for distribution. Either that or a "Stuffit" file. Manyh of the items in this bundle are already compressed, but when making a compressed disk image for distribution it cuts it down to 5.8MB (6,113,771 bytes) > BTW I assume that sys.platform returns 'darwin'. Yes, sorry 'bout that. > Also how do you encode the version numbers of BitPim itself. One thing very different here from your Windows or Linux examples... This is not an installer, this is a self-contained do-everything application. The user would download this as either a disk image or stuffit archive, and the resulting item can simply be drag-n-dropped anywhere in the filesystem and run. It is entirely self-contained, relying on no other system python parts/etc. Therefore, it's no trouble to have ten different versions on the machine as long as the application bundle has a different name or is in a different directory. Very nice. > I have integrated the code into makedist.py. Thanks for your > continuing contributions on this. THANK YOU. You have done a great work in bitpim, I'm just glad to do a feeble little part. It makes me feel good to give even a little bit of time back to the project. -. ----. -.-- - -.-- Steve Palm - n9...@n9... -. ----. -.-- - -.-- |
From: Roger B. <ro...@ro...> - 2003-12-10 03:22:39
|
Steven Palm wrote: > 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: 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 exceptions you are seeing: > 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 |
From: Roger B. <ro...@ro...> - 2003-12-10 03:03:58
|
> The sha module is being imported by one of the com_*.py modules. Since > they are dynamically loaded at runtime, the bundle procedure cannot > find the dependancy. It is only looking at import statements for the > main script and anything imported below that via import statements. Ok. I could also add a redundant import sha in another module. > -rw-r--r-- 1 n9yty admin 1093458 9 Dec 07:53 Modules.zip > -rw-r--r-- 1 n9yty admin 521 15 Nov 06:16 bp.py > -rw-r--r-- 1 n9yty admin 15059 8 Dec 09:07 com_brew.py > -rw-r--r-- 1 n9yty admin 4390 15 Nov 06:16 com_lg.py > -rw-r--r-- 1 n9yty admin 4791 6 Dec 20:52 com_lgtm520.py > -rw-r--r-- 1 n9yty admin 30153 7 Dec 00:12 com_lgvx4400.py I assume that Modules.zip just contains the .py files. I also assume this directory structure isn't writable when deployed. On Linux and Windows the .py files are compiled to .pyo files (optimised). This means that all the doc strings are stripped out which makes them considerably smaller. > 14M dist What size does the final distributable work out as. IIRC you make a dimg (disk image) which is a compressed loopback filesystem. > So here, again, are the needed statements to make it work (output goes > in 'dist') BTW I assume that sys.platform returns 'darwin'. Also how do you encode the version numbers of BitPim itself. On Windows the installer has a unique id associated with BitPim and uninstalls an existing version first before putting a new one on. The version number is in the installer, and part of the setup.exe filename. The default install location is c:\Program Files\bitpim On Linux, the files end up in /usr/lib/bitpim-version. There is wrapper script as /usr/bin/bitpim that execs the main binary out of /usr/lib/bitpim-version. In both cases you could have multiple versions installed, and they would work, but noone does that in practise (and you would have to put a little effort in to convince the installers you really want to do that). I have integrated the code into makedist.py. Thanks for your continuing contributions on this. Roger |
From: Roger B. <ro...@ro...> - 2003-12-10 02:42:37
|
> Mac Output: > > cb1: GetSelection() = -1 > cb1: GetValue() = '' > cb2: GetSelection() = -1 > cb2: GetValue() = '' > cb3: GetSelection() = -1 > Segmentation fault Thanks for that. I have now passed it on to the wxPython maintainers and it is now their problem (tm) :-) I have also corrected BitPim so it should work fine and you won't get the coredump. Roger |
From: Steven P. <n9...@n9...> - 2003-12-09 19:51:48
|
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 - n9...@n9... -. ----. -.-- - -.-- |
From: Steven P. <n9...@n9...> - 2003-12-09 14:04:32
|
On Dec 9, 2003, at 1:23 AM, Roger Binns wrote: >> I'd be curious to see what that does on a Windows or Linux install. >> I > > I have added a file as experiments/combobox.py that goes through all > the possible variations. There is also a copy attached. > > This is the Windows output: > > cb1: GetSelection() = -1 > cb1: GetValue() = '' > cb2: GetSelection() = -1 > cb2: GetValue() = '' > cb3: GetSelection() = -1 > cb3: GetValue() = '' > cb4: GetSelection() = -1 > cb4: GetValue() = '' > cb5: GetSelection() = 2 > cb5: GetValue() = '3' > cb6: GetSelection() = -1 > cb6: GetValue() = '' > cb7: GetSelection() = -1 > cb7: GetValue() = '' > cb8: GetSelection() = 2 > cb8: GetValue() = '3' > > This is the Linux output: > > cb1: GetSelection() = -1 > cb1: GetValue() = '' > cb2: GetSelection() = -1 > cb2: GetValue() = '' > cb3: GetSelection() = -1 > cb3: GetValue() = '' > cb4: GetSelection() = -1 > cb4: GetValue() = '' > cb5: GetSelection() = -1 > cb5: GetValue() = '3' > cb6: GetSelection() = -1 > cb6: GetValue() = '' > cb7: GetSelection() = -1 > cb7: GetValue() = '' > cb8: GetSelection() = -1 > cb8: GetValue() = '3' Mac Output: cb1: GetSelection() = -1 cb1: GetValue() = '' cb2: GetSelection() = -1 cb2: GetValue() = '' cb3: GetSelection() = -1 Segmentation fault -. ----. -.-- - -.-- Steve Palm - n9...@n9... -. ----. -.-- - -.-- |
From: Steven P. <n9...@n9...> - 2003-12-09 14:01:58
|
On Dec 9, 2003, at 1:02 AM, Roger Binns wrote: >> myapp.includePackages.append("sha") > > What does that do? It should automatically pick up the usage > of the sha module. The sha module is being imported by one of the com_*.py modules. Since they are dynamically loaded at runtime, the bundle procedure cannot find the dependancy. It is only looking at import statements for the main script and anything imported below that via import statements. >> for file in glob.glob(os.path.join(packageroot, 'com_*.py')): >> myapp.resources.append(file) > > Why do those end up as resources? Wouldn't they be part > of includePackages? When I did that, they ended up inside a "Modules.zip" file, and they could not be found when needed. I will play around with this a little bit more, but at least it works "as is" and can be used for now with tweaks later. >> myapp.libs.append("/usr/local/lib/libwx_mac-2.4.0.dylib") >> myapp.libs.append("/usr/local/lib/libwx_mac-2.4.0.rsrc") >> myapp.libs.append("/usr/local/lib/libwx_mac_gl-2.4.0.dylib") > > Is there anyway to automate finding those libraries? From the bundlebuilder.py notes: # bundlebuilder does not yet have the capability to detect what shared libraries # are needed by your app - so in this case I am adding the wxPython libs manually > Also how do you direct where output goes. For Linux and Windows, > your cwd needs to be the top of the bitpim tree and you run > makedist.py. The output goes to a directory named dist. I > would prefer to do the same thing for the Mac. Ahhh... It goes to a directory called 'build' by default. Easily changed. > You will be assimilated :-) I would also appreciate a directory > listing of the results. [uibook:~...bitpim/dist] n9yty% ls -R -l total 0 drwxr-xr-x 3 n9yty admin 102 9 Dec 07:53 BitPim.app ./BitPim.app: total 0 drwxr-xr-x 7 n9yty admin 238 9 Dec 07:53 Contents ./BitPim.app/Contents: total 16 drwxr-xr-x 6 n9yty admin 204 9 Dec 07:53 Frameworks -rw-r--r-- 1 n9yty admin 595 9 Dec 07:53 Info.plist drwxr-xr-x 4 n9yty admin 136 9 Dec 07:53 MacOS -rw-r--r-- 1 n9yty admin 8 9 Dec 07:53 PkgInfo drwxr-xr-x 16 n9yty admin 544 9 Dec 07:53 Resources ./BitPim.app/Contents/Frameworks: total 11488 drwxr-xr-x 3 n9yty admin 102 9 Dec 07:53 Python.framework -rwxr-xr-x 1 n9yty admin 5776396 9 Dec 07:53 libwx_mac-2.4.0.dylib -rw-r--r-- 1 n9yty admin 2903 5 Nov 00:19 libwx_mac-2.4.0.rsrc -rw-r--r-- 1 n9yty admin 94820 5 Nov 00:19 libwx_mac_gl-2.4.0.dylib ./BitPim.app/Contents/Frameworks/Python.framework: total 0 drwxr-xr-x 3 n9yty admin 102 9 Dec 07:53 Versions ./BitPim.app/Contents/Frameworks/Python.framework/Versions: total 0 drwxr-xr-x 4 n9yty admin 136 9 Dec 07:53 2.3 ./BitPim.app/Contents/Frameworks/Python.framework/Versions/2.3: total 2128 -rwxr-xr-x 1 n9yty admin 1088276 9 Dec 07:53 Python drwxr-xr-x 5 n9yty admin 170 9 Dec 07:53 Resources ./BitPim.app/Contents/Frameworks/Python.framework/Versions/2.3/ Resources: total 16 drwxr-xr-x 3 n9yty admin 102 9 Dec 07:53 English.lproj -rw-r--r-- 1 n9yty admin 774 13 Sep 03:05 Info.plist -rw-r--r-- 1 n9yty admin 453 27 Sep 04:39 version.plist ./BitPim.app/Contents/Frameworks/Python.framework/Versions/2.3/ Resources/English.lproj: total 8 -rw-r--r-- 1 n9yty admin 350 13 Sep 03:05 InfoPlist.strings ./BitPim.app/Contents/MacOS: total 56 -rwxr-xr-x 1 n9yty admin 730 9 Dec 07:53 BitPim -rwxr-xr-x 1 n9yty admin 22100 9 Dec 07:53 python ./BitPim.app/Contents/Resources: total 2408 drwxr-xr-x 37 n9yty admin 1258 9 Dec 07:53 ExtensionModules -rw-r--r-- 1 n9yty admin 1093458 9 Dec 07:53 Modules.zip -rw-r--r-- 1 n9yty admin 521 15 Nov 06:16 bp.py -rw-r--r-- 1 n9yty admin 15059 8 Dec 09:07 com_brew.py -rw-r--r-- 1 n9yty admin 4390 15 Nov 06:16 com_lg.py -rw-r--r-- 1 n9yty admin 4791 6 Dec 20:52 com_lgtm520.py -rw-r--r-- 1 n9yty admin 30153 7 Dec 00:12 com_lgvx4400.py -rw-r--r-- 1 n9yty admin 1794 6 Dec 20:53 com_lgvx6000.py -rw-r--r-- 1 n9yty admin 3738 15 Nov 06:16 com_phone.py -rw-r--r-- 1 n9yty admin 5934 15 Nov 06:16 com_sanyo.py -rw-r--r-- 1 n9yty admin 25724 6 Dec 23:17 com_sanyo4900.py drwxr-xr-x 13 n9yty admin 442 9 Dec 07:53 resources -rw-r--r-- 1 n9yty admin 227 9 Dec 07:53 site.pyc -rwxr-xr-x 1 n9yty admin 18260 9 Dec 07:53 zlib.so ./BitPim.app/Contents/Resources/ExtensionModules: total 2304 -rwxr-xr-x 1 n9yty admin 14748 9 Dec 07:53 MacOS.so -rwxr-xr-x 1 n9yty admin 23984 9 Dec 07:53 Nav.so -rwxr-xr-x 1 n9yty admin 30136 9 Dec 07:53 _AE.so -rwxr-xr-x 1 n9yty admin 106664 9 Dec 07:53 _Ctl.so -rwxr-xr-x 1 n9yty admin 35012 9 Dec 07:53 _Dlg.so -rwxr-xr-x 1 n9yty admin 14808 9 Dec 07:53 _Evt.so -rwxr-xr-x 1 n9yty admin 50372 9 Dec 07:53 _File.so -rwxr-xr-x 1 n9yty admin 13664 9 Dec 07:53 _Folder.so -rwxr-xr-x 1 n9yty admin 61288 9 Dec 07:53 _Menu.so -rwxr-xr-x 1 n9yty admin 113276 9 Dec 07:53 _Qd.so -rwxr-xr-x 1 n9yty admin 35304 9 Dec 07:53 _Res.so -rwxr-xr-x 1 n9yty admin 61852 9 Dec 07:53 _Win.so -rwxr-xr-x 1 n9yty admin 27740 9 Dec 07:53 _hotshot.so -rwxr-xr-x 1 n9yty admin 18848 9 Dec 07:53 _locale.so -rwxr-xr-x 1 n9yty admin 13896 9 Dec 07:53 _random.so -rwxr-xr-x 1 n9yty admin 45872 9 Dec 07:53 _socket.so -rwxr-xr-x 1 n9yty admin 19280 9 Dec 07:53 _ssl.so -rwxr-xr-x 1 n9yty admin 8820 9 Dec 07:53 _weakref.so -rwxr-xr-x 1 n9yty admin 32744 9 Dec 07:53 array.so -rwxr-xr-x 1 n9yty admin 17812 9 Dec 07:53 binascii.so -rwxr-xr-x 1 n9yty admin 14620 9 Dec 07:53 cStringIO.so -rwxr-xr-x 1 n9yty admin 58668 9 Dec 07:53 datetime.so -rwxr-xr-x 1 n9yty admin 13488 9 Dec 07:53 fcntl.so -rwxr-xr-x 1 n9yty admin 14120 9 Dec 07:53 icglue.so -rwxr-xr-x 1 n9yty admin 14236 9 Dec 07:53 math.so -rwxr-xr-x 1 n9yty admin 20228 9 Dec 07:53 operator.so -rwxr-xr-x 1 n9yty admin 109228 9 Dec 07:53 parser.so -rwxr-xr-x 1 n9yty admin 9196 9 Dec 07:53 pwd.so -rwxr-xr-x 1 n9yty admin 14276 9 Dec 07:53 select.so -rwxr-xr-x 1 n9yty admin 13188 9 Dec 07:53 sha.so -rwxr-xr-x 1 n9yty admin 26756 9 Dec 07:53 strop.so -rwxr-xr-x 1 n9yty admin 23172 9 Dec 07:53 struct.so -rwxr-xr-x 1 n9yty admin 15104 9 Dec 07:53 termios.so -rwxr-xr-x 1 n9yty admin 18900 9 Dec 07:53 time.so drwxr-xr-x 8 n9yty admin 272 9 Dec 07:53 wxPython ./BitPim.app/Contents/Resources/ExtensionModules/wxPython: total 8048 -rwxr-xr-x 1 n9yty admin 101444 9 Dec 07:53 calendarc.so -rwxr-xr-x 1 n9yty admin 473156 9 Dec 07:53 gizmosc.so -rwxr-xr-x 1 n9yty admin 407344 9 Dec 07:53 gridc.so -rwxr-xr-x 1 n9yty admin 74348 9 Dec 07:53 helpc.so -rwxr-xr-x 1 n9yty admin 283980 9 Dec 07:53 htmlc.so -rwxr-xr-x 1 n9yty admin 2768264 9 Dec 07:53 wxc.so ./BitPim.app/Contents/Resources/resources: total 1528 -rw-r--r-- 1 n9yty admin 418855 5 Dec 05:13 bitpim.htb -rw-r--r-- 1 n9yty admin 274091 9 Mar 2003 group.png -rw-r--r-- 1 n9yty admin 456 4 Nov 03:46 mozilla.pdc -rw-r--r-- 1 n9yty admin 241 4 Nov 03:46 palm.pdc -rw-r--r-- 1 n9yty admin 3640 7 Dec 00:23 pblayout.xy -rw-r--r-- 1 n9yty admin 1044 13 Nov 23:16 private.png -rw-r--r-- 1 n9yty admin 831 15 Aug 13:46 ringer.png -rw-r--r-- 1 n9yty admin 48958 8 Sep 21:32 splashscreen.jpg -rw-r--r-- 1 n9yty admin 2913 8 Dec 09:07 styles.xy -rw-r--r-- 1 n9yty admin 1773 5 Mar 2003 unknown.png -rw-r--r-- 1 n9yty admin 4507 13 Nov 23:16 wallpaper.png [uibook:~...bitpim/bitpim] n9yty% du -h dist 4.0K dist/BitPim.app/Contents/Frameworks/Python.framework/Versions/2.3/ Resources/English.lproj 12K dist/BitPim.app/Contents/Frameworks/Python.framework/Versions/2.3/ Resources 1.1M dist/BitPim.app/Contents/Frameworks/Python.framework/Versions/2.3 1.1M dist/BitPim.app/Contents/Frameworks/Python.framework/Versions 1.1M dist/BitPim.app/Contents/Frameworks/Python.framework 6.7M dist/BitPim.app/Contents/Frameworks 28K dist/BitPim.app/Contents/MacOS 3.9M dist/BitPim.app/Contents/Resources/ExtensionModules/wxPython 5.1M dist/BitPim.app/Contents/Resources/ExtensionModules 764K dist/BitPim.app/Contents/Resources/resources 7.0M dist/BitPim.app/Contents/Resources 14M dist/BitPim.app/Contents 14M dist/BitPim.app 14M dist When I mentioned 16.6MB before, I was including some extra files which I later realized and removed. > I very much like your last statement. BTW does it include the Python > interpretter as well? Below is what it looks like on Windows and > Linux. Yes, it does. It shouldn't depend on any Python version/installation on the host machine. So here, again, are the needed statements to make it work (output goes in 'dist') (FWIW: packageroot can be set to '.' for current dir and will work fine) import bundlebuilder, os, glob packageroot = "/Users/n9yty/my_cvs/bitpim/bitpim" myapp = bundlebuilder.AppBuilder(verbosity=1) myapp.mainprogram = os.path.join(packageroot, "bp.py") myapp.standalone = 1 myapp.name = "BitPim" myapp.strip = 1 myapp.builddir = "dist" myapp.includePackages.append("sha") exts=[ '*.xy', '*.png', '*.ttf', '*.wav', '*.jpg', '*.css', '*.htb', '*.pdc' ] for wildcard in exts: for file in glob.glob(os.path.join(packageroot, 'resources', wildcard)): myapp.files.append( (file, os.path.join("Contents", "Resources", 'resources', os.path.basename(file))) ) for file in glob.glob(os.path.join(packageroot, 'com_*.py')): myapp.resources.append(file) myapp.libs.append("/usr/local/lib/libwx_mac-2.4.0.dylib") myapp.libs.append("/usr/local/lib/libwx_mac-2.4.0.rsrc") myapp.libs.append("/usr/local/lib/libwx_mac_gl-2.4.0.dylib") myapp.setup() myapp.build() The only remaining issue is to test this on a Jaguar (MacOS X 10.2) system. I have a few left at work that have not been upgraded, I'll give it a go and let you know what I find. -. ----. -.-- - -.-- Steve Palm - n9...@n9... -. ----. -.-- - -.-- |
From: Roger B. <ro...@ro...> - 2003-12-09 07:23:43
|
> I'd be curious to see what that does on a Windows or Linux install. I I have added a file as experiments/combobox.py that goes through all the possible variations. There is also a copy attached. This is the Windows output: cb1: GetSelection() = -1 cb1: GetValue() = '' cb2: GetSelection() = -1 cb2: GetValue() = '' cb3: GetSelection() = -1 cb3: GetValue() = '' cb4: GetSelection() = -1 cb4: GetValue() = '' cb5: GetSelection() = 2 cb5: GetValue() = '3' cb6: GetSelection() = -1 cb6: GetValue() = '' cb7: GetSelection() = -1 cb7: GetValue() = '' cb8: GetSelection() = 2 cb8: GetValue() = '3' This is the Linux output: cb1: GetSelection() = -1 cb1: GetValue() = '' cb2: GetSelection() = -1 cb2: GetValue() = '' cb3: GetSelection() = -1 cb3: GetValue() = '' cb4: GetSelection() = -1 cb4: GetValue() = '' cb5: GetSelection() = -1 cb5: GetValue() = '3' cb6: GetSelection() = -1 cb6: GetValue() = '' cb7: GetSelection() = -1 cb7: GetValue() = '' cb8: GetSelection() = -1 cb8: GetValue() = '3' Roger |
From: Roger B. <ro...@ro...> - 2003-12-09 07:02:22
|
>> resourcedirectory=os.path.abspath(os.path.join(sys.path[0]), >> 'resources')) I have committed that change into BitPim 0.7 (HEAD) as well as the 0.6 branch. I did confirm it also works on Windows and Linux. > I made the changes outlined above in guihelper.py and bpaudio.py, the > only places I found them. bpaudio was duplicating guihelper so I redirected the call. It wouldn't have actually made any difference in the real world as bpaudio depends on a Windows binary from Qualcomm (who won't make it available on other platforms or as source). > Also, here is the macbuild.py script I used (stealing enough from > distbuild.py to make it work): I like to integrate it into makedist.py as that already deals with the platform issues. > myapp.includePackages.append("sha") What does that do? It should automatically pick up the usage of the sha module. > for file in glob.glob(os.path.join(packageroot, 'com_*.py')): > myapp.resources.append(file) Why do those end up as resources? Wouldn't they be part of includePackages? > myapp.libs.append("/usr/local/lib/libwx_mac-2.4.0.dylib") > myapp.libs.append("/usr/local/lib/libwx_mac-2.4.0.rsrc") > myapp.libs.append("/usr/local/lib/libwx_mac_gl-2.4.0.dylib") Is there anyway to automate finding those libraries? Also how do you direct where output goes. For Linux and Windows, your cwd needs to be the top of the bitpim tree and you run makedist.py. The output goes to a directory named dist. I would prefer to do the same thing for the Mac. > There is, undoubtedly, a cleaner way, and this could likely be > integrated into distbuild.py. I'd be quite happy to put in something nasty, and then work on cleaning it up. > I'm sure that > makes perfect sense to someone used to tuples. :^) You will be assimilated :-) I would also appreciate a directory listing of the results. > The downside is that since this bundles the libwx_mac_* and wxPython > shared libraries as well as the bitpim stuff, it weights in at just > over 16MB. But it *IS* a drag-n-drop install application. I very much like your last statement. BTW does it include the Python interpretter as well? Below is what it looks like on Windows and Linux. Windows: Note that Windows also includes a seperate binary for audio format conversion which is 1.3MB. 5,343,710 bitpim-0.7-test1-setup.exe 09/09/2003 03:18 PM 437 bitpim.css 12/08/2003 10:16 PM 908,469 bitpim.exe 08/20/2003 01:26 PM 655 bitpim.exe.manifest 10/01/2003 12:40 PM 61,440 calendarc.pyd 10/02/2003 08:03 PM 45,116 datetime.pyd 10/01/2003 12:40 PM 286,720 gizmosc.pyd 10/01/2003 12:40 PM 299,008 gridc.pyd 10/01/2003 12:40 PM 36,864 helpc.pyd 10/01/2003 12:40 PM 196,608 htmlc.pyd 10/02/2003 08:03 PM 45,114 parser.pyd 10/02/2003 08:02 PM 974,908 python23.dll 09/02/2003 11:01 AM 86,084 PyWinTypes23.dll 12/08/2003 10:16 PM <DIR> resources 10/02/2003 08:04 PM 20,538 select.pyd 09/02/2003 11:01 AM 61,497 win32api.pyd 09/02/2003 11:01 AM 28,731 win32event.pyd 09/02/2003 11:01 AM 73,786 win32file.pyd 10/01/2003 12:40 PM 2,240,512 wxc.pyd 10/01/2003 10:43 AM 3,239,936 wxmsw24h.dll 10/02/2003 08:04 PM 61,496 zlib.pyd 12/08/2003 09:03 PM 137,934 _libusb.dll 10/02/2003 08:02 PM 49,211 _socket.pyd 10/02/2003 08:03 PM 57,400 _sre.pyd 10/02/2003 08:03 PM 495,616 _ssl.pyd 10/02/2003 08:04 PM 36,864 _winreg.pyd The actual .py source files are compiled to .pyo, stuck in a zip and placed in bitpim.exe which invokes the interpretter. Expanded, the main directory adds up to 9.4MB with resources adding another 2MB. Linux: 5,066,014 bitpim-0.7_test1-0.i386.rpm -r-xr-xr-x 1 root root 57186 Feb 24 2003 binascii.so -rw-r--r-- 1 root root 432 Dec 8 22:35 bitpim.css -rwxr-xr-x 1 root root 4790871 Dec 8 22:35 bp -r-xr-xr-x 1 root root 57901 Feb 24 2003 cStringIO.so -r-xr-xr-x 1 root root 48588 Feb 24 2003 fcntlmodule.so -rwxr-xr-x 1 root root 21468 Feb 24 2003 _hotshot.so -rwxr-xr-x 1 root root 6038316 Dec 8 22:36 libwx_gtkd-2.4.so -r-xr-xr-x 1 root root 58568 Feb 24 2003 _localemodule.so -r-xr-xr-x 1 root root 51701 Feb 24 2003 mathmodule.so -rwxr-xr-x 1 root root 872408 Dec 8 20:39 native.usb._libusb.so -r-xr-xr-x 1 root root 55633 Feb 24 2003 operator.so -r-xr-xr-x 1 root root 95610 Feb 24 2003 parsermodule.so -rwxr-xr-x 1 root root 39664 Feb 24 2003 pcre.so -r-xr-xr-x 1 root root 40272 Feb 24 2003 pwdmodule.so -r-xr-xr-x 1 root root 64366 Feb 24 2003 readline.so drwxr-xr-x 2 root root 4096 Dec 8 22:42 resources -r-xr-xr-x 1 root root 51305 Feb 24 2003 selectmodule.so -r-xr-xr-x 1 root root 48847 Feb 24 2003 shamodule.so -r-xr-xr-x 1 root root 156636 Feb 24 2003 _socketmodule.so -rwxr-xr-x 1 root root 22344 Feb 24 2003 strop.so -r-xr-xr-x 1 root root 68162 Feb 24 2003 structmodule.so -r-xr-xr-x 1 root root 52464 Feb 24 2003 termios.so -r-xr-xr-x 1 root root 54559 Feb 24 2003 timemodule.so -r-xr-xr-x 1 root root 40105 Feb 24 2003 _weakref.so -rwxr-xr-x 1 root root 49484 Dec 8 22:36 wxPython.calendarc.so -rwxr-xr-x 1 root root 396488 Dec 8 22:36 wxPython.gizmosc.so -rwxr-xr-x 1 root root 308272 Dec 8 22:36 wxPython.gridc.so -rwxr-xr-x 1 root root 25468 Dec 8 22:36 wxPython.helpc.so -rwxr-xr-x 1 root root 198808 Dec 8 22:36 wxPython.htmlc.so -rwxr-xr-x 1 root root 2367852 Dec 8 22:36 wxPython.wxc.so -r-xr-xr-x 1 root root 57454 Feb 24 2003 zlibmodule.so The is what gets installed. Total size including the resources subdirectory is 16.4MB. The 'bp' executable contains the Python interpretter with the .py files compiled to .pyo and stuck on the end. Roger |
From: Roger B. <ro...@ro...> - 2003-12-09 06:00:11
|
Summary: The VX4400 phone itself has an issue with its USB interface that causes timeouts. This happens with any straight USB cable on any platform. The only drivers that work around this issue are produced by LG Electronics (LGE) which are only available for Windows, and only as part of Verizon's Mobile Office Kit. I WILL BE COMPLETELY IGNORING ALL SUPPORT ISSUES, HELP REQUESTS ETC FROM ANYONE USING A STRAIGHT USB CABLE THAT IS NOT USING THE LGE DRIVER. Detail: The phone itself will often stall when reading data from its USB interface. This is an issue with the phone itself. This issue is not present in the VX6000. After some investigation, I have found what I believe the method LGE uses to get around the problem in their own drivers. Unfortunately that method can only be done inside drivers. Even on Linux, it appears to require kernel drivers. The actual method is that the LGE drivers send a read USB request to the phone and leave it outstanding before sending a write. They then get the write confirmation back, followed by the response to the read request containing the data. It would appear that pre-emptive reads before writes prevent the read timeouts. I have not been able to cause the same sequence of USB requests from user space code. It appears that only kernel drivers can send the necessary requests in the necessary order. Roger |
From: Steven P. <n9...@n9...> - 2003-12-09 04:32:31
|
Okay, I've managed to get a Macintosh bundle built that runs on a system other than my own (although only tested on two Panther (10.3) systems). Changes required (thanks to Kevin Ollivier for this one!): > Looking at the bitpim source, my guess is that this line is causing > the problem: > > resourcedirectory=os.path.abspath(os.path.join(os.path.dirname(sys.argv > [0]), 'resources')) > > Using sys.argv like this can cause problems on OS X, which sends some > extra args in when launched from the Finder. I'd suggest trying it > with the following: > > resourcedirectory=os.path.abspath(os.path.join(sys.path[0]), > 'resources')) > > That is how I determine the root directory of my program, which runs > on Windows, Linux and Mac. I made the changes outlined above in guihelper.py and bpaudio.py, the only places I found them. Also, here is the macbuild.py script I used (stealing enough from distbuild.py to make it work): import bundlebuilder, os, glob packageroot = "/Users/n9yty/my_cvs/bitpim/bitpim" myapp = bundlebuilder.AppBuilder(verbosity=1) myapp.mainprogram = os.path.join(packageroot, "bp.py") myapp.standalone = 1 myapp.name = "bitpim" myapp.strip = 1 myapp.includePackages.append("sha") exts=[ '*.xy', '*.png', '*.ttf', '*.wav', '*.jpg', '*.css', '*.htb', '*.pdc' ] for wildcard in exts: for file in glob.glob(os.path.join(packageroot, 'resources', wildcard)): myapp.files.append( (file, os.path.join("Contents", "Resources", 'resources', os.path.basename(file))) ) for file in glob.glob(os.path.join(packageroot, 'com_*.py')): myapp.resources.append(file) myapp.libs.append("/usr/local/lib/libwx_mac-2.4.0.dylib") myapp.libs.append("/usr/local/lib/libwx_mac-2.4.0.rsrc") myapp.libs.append("/usr/local/lib/libwx_mac_gl-2.4.0.dylib") myapp.setup() myapp.build() There is, undoubtedly, a cleaner way, and this could likely be integrated into distbuild.py. The odd line in there (for me) is the myapp.files.append() bit which takes a tuple specifying the file to add, and the path inside the MacOS X bundle to put it. I'm sure that makes perfect sense to someone used to tuples. :^) The downside is that since this bundles the libwx_mac_* and wxPython shared libraries as well as the bitpim stuff, it weights in at just over 16MB. But it *IS* a drag-n-drop install application. -. ----. -.-- - -.-- Steve Palm - n9...@n9... -. ----. -.-- - -.-- |
From: Roger B. <ro...@ro...> - 2003-12-08 19:46:21
|
> I'll try this packet with my phone and see what I get. I see you sent > this command twice and it returned different results each time. What > were you doing each time, what mode where you in? It was once to the VX4400 and once to the VX6000. Roger |
From: Stephen W. <sa...@us...> - 2003-12-08 19:34:20
|
On Mon, 2003-12-08 at 05:36, Roger Binns wrote: > I have added a firmwarerequest and an offlinerequest > method to com_brew. You can also reboot the phone from > offline request. Turns out Stephen already knew about these > from the Sanyo which requires them. These seem to have been around a while. I got these from the PROTOCOL document in qcplink (http://qcplink.sourceforge.net/). The protocol is for the Qualcomm QCP-2760. There are a few differences. The firmware request returned 53 bytes for the QCP-2760, for my Sanyo it returns 117 bytes. The offlinerequest command (called begin/end update in qcplink) didn't work as described for qcplink (Packet=0x29, 1 or 2, checksum, 7e). I had to add an extra zero byte after the 1/2 for the Sanyo. Also, as far as I can tell, the 0x29,2 sequence did not reboot the qcp-2760, but it does for the sanyo. > > Stephen, you should > also take a look at examples/mystery.txt and see what > you think they are about. The qcplink PROTOCOL guesses this to be "Get Phone Programming Status". It can be used to check if the phone is ready for updates after putting the phone into update mode with 0x29/1. I havn't seemed to need it with the Scp-4900. Here is what qcplink says about it: >0x0C - Get ?Phone programming Status? >-- > >The get ?Phone programming Status? request appears to be used both to >monitor the phone for change and to determine when the phone is ready >to accept updates after its been told to begin updates (See 0x29 >command). > >The request/response packet layouts are: > > Byte 0 Byte 3 > +-----+-----+-----+-----+ > Request: | 0C | 14 | 3A | 7E | (Checkword = 0x3A14) > +-----+-----+-----+-----+ > > Byte 0 Byte 7 > +-----+-----+-----+-----+-----+-----+-----+-----+ > Response: | 0C | 43 | 43 | 43 | lsb- Phone ESN -msb | > +-----+-----+-----+-----+-----+-----+-----+-----+ > 0x08: |flg0 | > +-----+-----+-----+-----+-----+-----+-----+-----+ > 0x10: | |flg1 | > +-----+-----+-----+-----+-----+-----+-----+-----+ > 0x18: | |flg2 | | > +-----+-----+-----+-----+-----+-----+-----+-----+ > 0x20: |flg3 | | > +-----+-----+-----+-----+-----+-----+-----+-----+ > 0x28: | | > +-----+-----+-----+-----+-----+-----+-----+-----+ > 0x30: | | > +-----+-----+-----+-----+-----+-----+-----+-----+ > 0x38: | Checkword | 7E | > +-----+-----+-----+ > >I see the ESN in the response. and I see three other fields change >(flg0-2). While I see data in the other locations I don't know what >the use is so it's not shown here... I believe the values in the >other fields can be safely ignored if all we want is simple phone book >maintenance behavior. > >Once the phone has been instructed to prepare to accept updates this >command is issued repeatedly until the status changes to >"go-ahead-with-your-updates". This transition appears to be indicated >by flg1=0x05, flg3=0x00 transitioning to flg1=0x00, flg3=0x02. These >flags both appear to change at the same time. So while I don't know >which indicates what, I do know that when the transition occurs I'm >clear to start sending 0x27 Set Attribute commands. I'll try this packet with my phone and see what I get. I see you sent this command twice and it returned different results each time. What were you doing each time, what mode where you in? Steve |
From: Donour S. <do...@uc...> - 2003-12-08 16:18:12
|
As my laptop was stolen over the weekend, I'll have to get back to you guys on this... thanks donour On Fri, 2003-12-05 at 23:22, Roger Binns wrote: > > I have a an LG G4050, which doesn't seem to work with bitpim. I was > > hoping it would be close enough to the 4400, but that doesn't seem to be > > the case. > > As far as I can tell, that is a GSM phone. It will have absolutely > nothing in common with the 4400 (other than the digit 4). The good > news is that almost all GSM phones use exactly the same protocol. > The bad news is you or someone else with a GSM phone will need > to develop the phone code for BitPim. > > > As it stands, trying to get or send data causes the phone to power off > > (obviously not the desired behavior). I'm using the IR port and it's not > > clear from the documentation whether one can actually use the IR for > > modify the state of the phone (although i have been able to dial out > > with it). > > Can you turn on the protocol log and lets see how far it gets. > > Roger > > > ------------------------------------------------------- > This SF.net email is sponsored by: SF.net Giveback Program. > Does SourceForge.net help you be more productive? Does it > help you create better code? SHARE THE LOVE, and help us help > YOU! Click Here: http://sourceforge.net/donate/ > _______________________________________________ > Bitpim-devel mailing list > Bit...@li... > https://lists.sourceforge.net/lists/listinfo/bitpim-devel |
From: Steven P. <n9...@n9...> - 2003-12-08 15:44:32
|
On Dec 8, 2003, at 5:32 AM, Roger Binns wrote: > I was trying to figure out the minimal number of changes to make it > work (ie finding exactly what was tickling the bug). Okay, I'll focus on that as a goal. > the entries. Maybe it was the sort flag that was causing the crashes? That has made no change here. > Comboboxes obviously work on the Mac so it is some minor detail we > do that the demos etc don't do. Can you please insert a check line? print "Selected = ", self.phonebox.GetSelection() I'd be curious to see what that does on a Windows or Linux install. I have a hunch that calling the GetValue() method for an undefined selection is not causing a coredump on Linux/Windows, but instead returns an empty string. Then, when you call SetValue(), everything is fine. I inserted the statement right above here: print "pb=",self.phonebox.GetValue() if self.phonebox.GetValue()=="": self.phonebox.SetValue("LG-VX4400") To test this theory, I inserted the line: self.phonebox.SetValue("LG-VX4400") right after the line where the box is created: self.phonebox=wxComboBox(self, -1, 'LG-VX4400', style=wxCB_DROPDOWN|wxCB_READONLY,choices=keys) And now it no longer crashes. To narrow it down, it would be helpful to know if Linux and/or Windows are properly setting the selection when the combobox is being initialized. If they are, then this is where the Mac is deviating. If they are not, then the error on the Mac would seem to be when the GetValue() method is called when the combobox selection is not valid. Make sense? -. ----. -.-- - -.-- Steve Palm - n9...@n9... -. ----. -.-- - -.-- |
From: Roger B. <ro...@ro...> - 2003-12-08 11:32:25
|
> If that were guaranteed to work, anyway, what is the point of this > statement later on? It would be redundant as you point out. > This was the whole point of my suggest changes... I was trying to figure out the minimal number of changes to make it work (ie finding exactly what was tickling the bug). I have just comitted another change which may also have contributed. Even though the CB_SORT flag was present, the choices were not being sorted on Linux. I have now removed that flag and pre-sorted the entries. Maybe it was the sort flag that was causing the crashes? > I think this is clearly a bug in the wxMac implementation, because the > default selected item *SHOULD* be properly set with the code you are > using. However, reality is that it is not being set. Yup. However there are various little bugs on all the platforms that BitPim already works around. Once we are sure what the actual cause is and have reported it, whatever code works around it will be fine. Comboboxes obviously work on the Mac so it is some minor detail we do that the demos etc don't do. Roger |
From: Roger B. <ro...@ro...> - 2003-12-08 10:43:02
|
I have added a firmwarerequest and an offlinerequest method to com_brew. You can also reboot the phone from offline request. Turns out Stephen already knew about these from the Sanyo which requires them. Stephen, you should also take a look at examples/mystery.txt and see what you think they are about. I have also hooked in raw USB device access. The library is mature on Linux and works really well with the VX6000. The library is also mature to my knowledge on Mac. But with the VX4400, you will never guess what happens. Yes, thats right. Those damn timeouts. I have spent several hours trying to figure out exactly what is going on. Unfortunately the usb sniffer tool I have doesn't work with the (busted) FutureDial driver and only with the (ok) LGE driver. However I think I have finally stumbled onto what the LGE driver does. It looks like that when you send a write request, it seperately sends a read request first. Then it does the write, gets back confirmation, and then gets the read results. ie when I do this at a hight level: send("command") it actually does: - sends read request - sends write request ("command") - receives confirmation of write - receives read response I would assume that the phone receiving the read request before the command means that it sets up some buffers etc and they are ready to fill when it gets the write request and wants to fill in its response to a write. (You can multiple outstanding packets each with seperate timeouts sort of like SCSI. It also explains the silly error I was getting from the LGE drivers that I was able to work around). It is going to be really hard to do this same behaviour (they got to do it inside a device driver). I have to do it from user space using a blocking library and some sort of thread coordination. Well, if anyone does manage to get someone from FutureDial who cares I can tell them exactly how to fix their driver. LG also should take some heat for somewhat substandard behaviour of the hardware in the phone itself. Roger |
From: Steven P. <n9...@n9...> - 2003-12-07 14:45:26
|
On Dec 7, 2003, at 5:34 AM, Roger Binns wrote: > Ok, the root cause would appear to be that the combobox is > readonly, and the default value supplied is not in the list > of choices. Try this as the line instead (uses LG-VX4400 as > the value). > > self.phonebox=wxComboBox(self, -1, "LG-VX4400", > style=wxCB_DROPDOWN|wxCB_READONLY|wxCB_SORT, > choices=self.phonemodels.keys()) > > I have committed it as that. ...and I still get a segfault. If that were guaranteed to work, anyway, what is the point of this statement later on? print "pb=",self.phonebox.GetValue() if self.phonebox.GetValue()=="": self.phonebox.SetValue("LG-VX4400") Basically, aren't you saying... If no choice was made, set it to the LG-VX4400. But if you are initializing that with the default choice, why is this necessary? If i put in something like: print "Selected Item: ",self.phonebox.GetSelection() right before the print "pb=" line, it still returns a -1 which shows that nothing has been selected, and therefore the call the self.phonebox.GetValue() causes the segfault becuase there is no default selected item to get a value from. This was the whole point of my suggest changes... When it arrives at this point, much like you were checking and setting a value if one did not exist, I was checking for and setting the selected item if one did not exist. I simply chose the first one in the list, but if you'd rather code in the index for the LG-VX4400 that is fine. I think this is clearly a bug in the wxMac implementation, because the default selected item *SHOULD* be properly set with the code you are using. However, reality is that it is not being set. Sorry for rambling. I guess either a mac-specific workaround can be put in the code here, or else someone will have to submit a bug to the wxMac group and wait it out. -. ----. -.-- - -.-- Steve Palm - n9...@n9... -. ----. -.-- - -.-- |