As much more people use libusb instead of OpenUSB (probably because
OpenUSB is an younger library), I postponed it in favor of making the
libusb backend stable. I hope getting libusb reasonably stable and
start the heavy development of OpenUSB.

2010/7/12 Chris Wolf <cw10...@gmail.com>:
>
>
> 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
> pyusb-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/pyusb-users
>



-- 
Best Regards,
Wander Lairson Costa

------------------------------------------------------------------------------
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
pyusb-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pyusb-users

Reply via email to