Hi,

Still seem to be having issues. Here is what happens when I try the reset:

Code:

    def __dev_setup_v1x(self):
            # See http://pyusb.sourceforge.net/docs/1.0/tutorial.html
for reference
            self.dev.reset()           
            self.dev.set_configuration(1) # could also provide no config
number
            self.dev.set_interface_altsetting(interface = 0,
alternate_setting = 0)

and then call:

            print("Going to reset device in pnext")
            self.__dev_setup_v1x()
            print("Reset device in pnext")
            pdata = self.dev.read(RZ_USB_PACKET_EP, 1, 0, 100)
            print "Got data:", pdata
            #TODO error handling

In the stdout, none of these print statements occur, because earlier in
the program, the segfault seems to be occurring.

Errors show up in dmesg (my program is zbdump):

[136285.914272] zbdump[23955]: segfault at 0 ip 00007f7a81ac3adf sp
00007ffff582a1c0 error 4 in libusb-0.1.so.4.4.4[7f7a81abf000+6000]
[136330.293333] zbdump[23966]: segfault at 0 ip 00007f99d49c0adf sp
00007fffdddc6500 error 4 in libusb-0.1.so.4.4.4[7f99d49bc000+6000]
** then i unplug and replug it back in **
[136336.153684] usb 3-2: USB disconnect, device number 20
[136338.438720] usb 3-2: new full-speed USB device number 21 using xhci_hcd
[136344.899891] zbdump[23984]: segfault at 0 ip 00007f9326bd3adf sp
00007fffc47d8b90 error 4 in libusb-0.1.so.4.4.4[7f9326bcf000+6000]

I also tried moving the reset() call out of the __dev_setup_v1x because
that seems to be causing the issue (a reset before full initialization,
perhaps?). In this case, we get further, but the previous error still
occurs:

Code:
            print("Going to reset device in pnext")
            self.dev.reset()
            self.__dev_setup_v1x()
            print("Reset device in pnext")
            pdata = self.dev.read(RZ_USB_PACKET_EP, 1, 0, 100)
            print "Got data:", pdata

Output:
zbdump: listening on '3:21', link-type DLT_IEEE802_15_4, capture size
127 bytes
Going to reset device in pnext
Reset device in pnext
Traceback (most recent call last):
  File "/usr/local/bin/zbdump", line 100, in <module>
    packet = kb.pnext()
  File "/usr/local/lib/python2.7/dist-packages/killerbee/__init__.py",
line 270, in pnext
    return self.driver.pnext(timeout)
  File
"/usr/local/lib/python2.7/dist-packages/killerbee/dev_rzusbstick.py",
line 430, in pnext
    pdata = self.dev.read(RZ_USB_PACKET_EP, 1, 0, 100)

So, am I doing the reset() and then setup again wrong, or is the reset()
not solving the base issue?

Thanks,
Ryan

On 01/03/2013 08:52 AM, Wander Lairson Costa wrote:
> 2012/12/30 Ryan Speers <rmspe...@gmail.com>:
>> Hi,
>>
>> Thanks again for the help with this...
>>
>> I tried the suggestion, using the below code snippits:
>>
>>     import usb.core
>>     import usb.util
>>     import usb.backend.libusb01
>>     backend = usb.backend.libusb01.get_backend()
>>
>>     devs = usb.core.find(backend=backend, find_all=True,
>> custom_match=findFromList(vendor, product))
>>
>> It appears to be a similar/same issue in terms of symptoms. Again, the
>> issue seems to be the SECOND read/write operation after I plug a new
>> device in -- the first one works.
>>
>> ~/killerbee/killerbee$ sudo zbid
>> Warning: You are using pyUSB 1.x, support is in alpha.
>> Dev     Product String  Serial Number
>> 3:4     KILLERB001      A50400A01C25
>> Found 1 devices.
>>
>> ~/killerbee/killerbee$ sudo zbdump -f 11 -w test.pcap -i 3:4
>> Warning: You are using pyUSB 1.x, support is in alpha.
>> Warning: You are using pyUSB 1.x, support is in alpha.
>> zbdump: listening on '3:4', link-type DLT_IEEE802_15_4, capture size 127 
>> bytes
>> Traceback (most recent call last):
>>   File "/usr/local/bin/zbdump", line 100, in <module>
>>     packet = kb.pnext()
>>   File "/usr/local/lib/python2.7/dist-packages/killerbee/__init__.py",
>> line 270, in pnext
>>     return self.driver.pnext(timeout)
>>   File "/usr/local/lib/python2.7/dist-packages/killerbee/dev_rzusbstick.py",
>> line 443, in pnext
>>     pdata = self.dev.read(RZ_USB_PACKET_EP, 1, 0, 100)
>>   File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 654, in 
>> read
>>     self.__get_timeout(timeout)
>>   File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb01.py",
>> line 483, in bulk_read
>>     timeout)
>>   File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb01.py",
>> line 568, in __read
>>     timeout
>>   File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb01.py",
>> line 384, in _check
>>     raise USBError(errmsg, ret)
>> usb.core.USBError: [Errno None] Connection timed out
>>
>> This timeout error happens on the second USB related call within the
>> zbdump program. Removing and reinserting the device fixes the issue.
>> The same symptom occurs when I import libusb10 and use that
>> explicitly. Do you have other ideas for what this could be? Is a
>> resource not getting properly released?
>>
> What about doing a 'reset' call and setting up the device again?
>


------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnmore_123012
_______________________________________________
pyusb-users mailing list
pyusb-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pyusb-users

Reply via email to