Before I start wailing "I need help! I need help!", kudos to everyone
involved in PyUSB. I'm not a hardware guy, I know nothing about USB
protocols and yet I was able to convert someone else's C program and
convert it into Python using PyUSB. The old tool only worked with
libusb-0.1 (it fails to work with libusb-1.0 and the libusb-0.1 compat
lib), my new shiny Python script works with all combinations of libusb
on both 32 and 64 bit Linux machines. I don't know anyting about
OpenUSB so I've not even attempted to test that.

I deliberately used PyUSB 1.0 as it was pure python, and thus easier
to deploy. According to the readme it is still alpha (1?), and (from
the readme) "``reset`` method hangs under Windows (libusb 1.0
backend)".

I'm hitting something, I'm not sure what it is though when trying to
use reset :-)

I've been converting http://code.google.com/p/dava33display/ and
everything works fine under Linux :-) If you want more detail on the
device there is some reverse engineering notes (not my me) at
http://kieranlevin.com/index.php?option=com_content&view=article&id=54:reverseengdisplay&catid=35:projects&Itemid=54

Under Windows I've had 2 issues:

1) I found that under Linux I (sometimes) needed to call
detach_kernel_driver(), under Windows this consistently fails.
Removing this call is my workaround (and it works fine, I might try
catching AttributeError instead as a work around). This seems like a
bug in PyUSB but I'm not sure as I do not know what I'm doing :-(
Traceback at end of mail in case this is remotely helpful. I'm not
clear if it is reasonable for PyUSB to hide this error and to just
carry on or not.

2) reset() problem (slightly different to known issue in readme for
libusb-1.0, I guess as I'm using libusb-01). The symptom I see is that
the TFT display appears to power off, I get no errors and no hangs.
When I try to re-run my script to send a new image I get time outs (it
isn't like the device isn't there as it opens fine.. but that may be
an artifact about the way libusb drivers work under Windows). Trace
back @eom for the 2nd run when the display is "off". Removing reset()
is the workaround here too and it works fine, I can re-run my script
under Windows and the display updates with the new image. When I ran a
debugger over the reset, the first time I got no problem (until this
point reset consistently "failed" for me), subsequent runs all "fail"
(even if I wait a few secs for each method call) and cause power off
at core.py:565 self._ctx.backend.reset_device(self._ctx.handle). Once
the TFT powers off I need to reboot the machine (kinda painful, any
ideas on how to re-start it or is this device specific?).


I installed the Windows libusb driver from libusb-win32-bin-1.2.4.0,
PyUSB is SVN rev 90.

I installed the driver using inf-wizard (I used the install now button
generated at the end of the wizard, rather than manually clicking the
newly created .INF file). Interestingly the device shows up twice in
inf-wizard, it shows up as "ASeries Device (Interface 1)" and "ASeries
Device (Interface 1)", I ended up installing both (just one didn't
seem to work). It didn't prompt me to reboot but rebooting appeared to
fix some problems I had writinf to the device.

I'm looking for any kind of help I can get! :-) I'm really not
familiar with libusb (it took some trial and error to get the drivers
installed, I couldn't find a good Windows readme).

Is there any value in trying the older PyUSB (with pre-builts, I'm not
setup with a compiler)? I know from my Linux experience I'll need to
recode my script to use the older API. Right now what I have works for
me but if I can help progress PyUSB 1.0 I'd like to help, I just have
no idea what I'm doing.

Slightly off topic, the PyUSB wiki appears to be down/empty (no errors
blank screen), http://pyusb.wiki.sourceforge.net/


Thanks for PyUSB and thanks in advance for any assistance

Chris

Trace back #1 - missing detach:


E:\asusdisplay>E:\apps\PortablePython1.0\python.exe
E:\asusdisplay\asusdisplay.py E:\asusdisplay\testimg.bmp
reading E:\asusdisplay\testimg.bmp
Traceback (most recent call last):
  File "E:\asusdisplay\asusdisplay.py", line 328, in <module>
    sys.exit(main())
  File "E:\asusdisplay\asusdisplay.py", line 320, in main
    display.displayinit()
  File "E:\asusdisplay\asusdisplay.py", line 197, in displayinit
    dev.detach_kernel_driver(1)
  File "E:\apps\PortablePython1.0\lib\site-packages\usb\core.py", line
695, in detach_kernel_driver
    self._ctx.backend.detach_kernel_driver(self._ctx.handle, interface)
  File "e:\apps\PortablePython1.0\lib\site-packages\usb\_debug.py",
line 52, in do_trace
    return f(*args, **named_args)
  File "e:\apps\PortablePython1.0\lib\site-packages\usb\backend\libusb01.py",
line 526, in detach_kernel_driver
    _check(_lib.usb_detach_kernel_driver_np(dev_handle, intf))
  File "e:\apps\PortablePython1.0\lib\ctypes\__init__.py", line 325,
in __getattr__
    func = self.__getitem__(name)
  File "e:\apps\PortablePython1.0\lib\ctypes\__init__.py", line 330,
in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: function 'usb_detach_kernel_driver_np' not found


Trace back #2 - device "missing" after reset powers off device


E:\asusdisplay>E:\apps\PortablePython1.0\python.exe
E:\asusdisplay\debug_asusdisplay.py E:\asusdisplay\testimg.bmp
reading E:\asusdisplay\testimg.bmp
Traceback (most recent call last):
  File "E:\asusdisplay\debug_asusdisplay.py", line 330, in <module>
    sys.exit(main())
  File "E:\asusdisplay\debug_asusdisplay.py", line 322, in main
    display.displayinit()
  File "E:\asusdisplay\debug_asusdisplay.py", line 207, in displayinit
    self.write(0x02, data)
  File "E:\asusdisplay\debug_asusdisplay.py", line 295, in write
    self.dev.write(ep, block, interface=None, timeout=1000)
  File "E:\apps\PortablePython1.0\lib\site-packages\usb\core.py", line
602, in write
    self.__get_timeout(timeout)
  File "e:\apps\PortablePython1.0\lib\site-packages\usb\_debug.py",
line 52, in do_trace
    return f(*args, **named_args)
  File "e:\apps\PortablePython1.0\lib\site-packages\usb\backend\libusb01.py",
line 454, in bulk_write
    data, timeout)
  File "e:\apps\PortablePython1.0\lib\site-packages\usb\backend\libusb01.py",
line 536, in __write
    timeout
  File "e:\apps\PortablePython1.0\lib\site-packages\usb\backend\libusb01.py",
line 364, in _check
    raise USBError(errmsg)
usb.core.USBError: libusb0-dll:err [_usb_reap_async] timeout error

------------------------------------------------------------------------------
BlackBerry&reg; DevCon Americas, Oct. 18-20, San Francisco, CA
The must-attend event for mobile developers. Connect with experts. 
Get tools for creating Super Apps. See the latest technologies.
Sessions, hands-on labs, demos & much more. Register early & save!
http://p.sf.net/sfu/rim-blackberry-1
_______________________________________________
pyusb-users mailing list
pyusb-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pyusb-users

Reply via email to