On 7/12/10 9:00 AM, Chris Wolf wrote:
> Wander,
>
> Earlier, I mentioned that the openusb backend did not work for me on
> MacOS, but I'm pretty sure I found the problem. There seems to be a
> typo in backend/openusb.py on line #155, where it configures the return
> type for the function "openusb_init" - this line refers to the function
> as "openusb" rather then "openusb_init":
>
> $ diff -u openusb.py.orig openusb.py
> --- openusb.py.orig 2010-07-12 08:51:37.000000000 -0400
> +++ openusb.py 2010-07-12 08:51:49.000000000 -0400
> @@ -152,7 +152,7 @@
> def _setup_prototypes(lib):
> # int32_t openusb_init(uint32_t flags , openusb_handle_t *handle);
> lib.openusb_init.argtypes = [c_uint32, POINTER(_openusb_handle)]
> - lib.openusb.restype = c_int32
> + lib.openusb_init.restype = c_int32
>
> # void openusb_fini(openusb_handle_t handle );
> lib.openusb_fini.argtypes = [_openusb_handle]
>
>
> After making this fix, my test code was able to successfully use the
> openusb backend to iterate over all my USB devices.
>
> The download code archive this occurs in is named, "pyusb-1.0.0-a0.zip".
>
Well, actually, I forgot to override the backend in find(), so it used
libusb10, sorry. (I still think this patch is legitimate)
There are still problems with the openusb backend:
>>> devices = usb.core.find(find_all=True, backend=usbbe)
2010-07-12 09:10:58,295 DEBUG:usb.backend.openusb:_OpenUSB.enumerate_devices()
Exception exceptions.AttributeError: "'_BusIterator' object has no attribute
'buslist'" in <bound method _BusIterator.__del__ of
<usb.backend.openusb._BusIterator object at 0x12649f0>> ignored
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File
"/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/usb/core.py",
line 824, in find
return [d for d in device_iter(k, v)]
File
"/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/usb/core.py",
line 794, in device_iter
for dev in backend.enumerate_devices():
File
"/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/usb/backend/openusb.py",
line 420, in enumerate_devices
for bus in _BusIterator():
File
"/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/usb/backend/openusb.py",
line 390, in __init__
self.buslist = POINTER(openusb_busid_t)()
NameError: global name 'openusb_busid' is not defined
So I again patched as:
$ diff -u openusb.py.orig
/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/usb/backend/openusb.py
--- openusb.py.orig 2010-07-12 08:51:37.000000000 -0400
+++
/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/usb/backend/openusb.py
2010-07-12 09:10:42.000000000 -0400
@@ -387,7 +387,7 @@
class _BusIterator(object):
def __init__(self):
- self.buslist = POINTER(openusb_busid)()
+ self.buslist = POINTER(openusb_busid_t)()
num_busids = c_uint32()
_check(_lib.openusb_get_busid_list(_ctx.handle,
byref(self.buslist),
But now I'm getting this error:
>>> import usb.backend.openusb
>>> usbbe = usb.backend.openusb.get_backend()
dlerror: dlopen(/usr/local/lib/openusb_backend/darwin.so, 1): Symbol not found:
_usbi_devices
Referenced from: /usr/local/lib/openusb_backend/darwin.so
Expected in: flat namespace
fail to load /usr/local/lib/openusb_backend/darwin.so
2010-07-12 09:28:04,603 ERROR:usb.backend.openusb:Error loading OpenUSB backend
Traceback (most recent call last):
File
"/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/usb/backend/openusb.py",
line 590, in get_backend
_ctx = _Context()
File
"/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/usb/backend/openusb.py",
line 384, in __init__
_check(_lib.openusb_init(0, byref(self.handle)))
File
"/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/usb/backend/openusb.py",
line 376, in _check
if retval.value != 0:
AttributeError: 'int' object has no attribute 'value'
Again, I'm happy to just use libusb10
Thanks,
Chris Wolf
------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
pyusb-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pyusb-users