2010/7/9 Wander Lairson <wander.lair...@gmail.com>:
> 2010/7/9 Diego Jacobi <jacobidi...@gmail.com>:
>> Well. I made some progress but couldnt solve the claiming error yet..
>> This is the current "dmesg" output when i press any key in my test
>> scenario multiple times.
>>
>> ...
>> usb 3-2: New USB device found, idVendor=0451, idProduct=3410
>> usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
>> usb 3-2: Product: USB2Serial +4GPIO
>> usb 3-2: Manufacturer: UTICOM Diego
>> usb 3-2: SerialNumber: TUSB3410 ):� v`�
>> ti_usb_3410_5052_1 ttyUSB0: TI USB 3410 1 port adapter converter now
>> disconnected from ttyUSB0
>
> I guess the problem comes from this  event, when the device is
> disconnected. I am not an USB
> kernel driver expert, but I guess kernel frees the device resources
> (including claiming) when
> this happens. You can tell PyUSB to do everything again but calling
> usb.util.dispose_resources.
>

That appears after dettaching the default driver.

I now tried with both
            dispose_resources(self.dev)
            claim_interface(self.dev, self.interface)
and none helped.

One more tip..
I noted this log since i am comunicating with endporint 1 IN and OUT
to transfer data for the UART port.



>> ti_usb_3410_5052 3-2:2.0: device disconnected
>> usb 3-2: usbfs: process 12624 (python) did not claim interface 0 before use
>> usb 3-2: usbfs: process 12624 (python) did not claim interface 0 before use
>> usb 3-2: usbfs: process 12624 (python) did not claim interface 0 before use
>> usb 3-2: usbfs: process 12624 (python) did not claim interface 0 before use
>> usb 3-2: usbfs: process 12632 (python) did not claim interface 0 before use
>>
>>
>>
>> The error were produced by mistake of my in the firmware code, and now
>> the requests are working perfectly.
>>
>> Because this device TUSB3410 is horrible badly documented, some parts
>> of the "how this fucking register works!?!? " i had to figure out by
>> trial and error.
>> It seems like for every new coming OUT transmision i have to cancel or
>> clear the status bits for any previus IN transfer and vicebersa. I
>> write it here so it gets indexed in google.
>>
>>
>>
>> any way, the claiming is still an issue, but i am wondering if this
>> have anything to do with the way that i set the test scenario with
>>
>> while raw_input(...):
>>
>>
>> raw_input stops the code and waits for input, so .... my guess, is
>> that if pyusb is not threaded or separate process, the it wouldnt be
>> able to respond to libusb callbacks. Does this sounds reasonable?
>
> Yes, it does. I have been thinking about that, but only for a 1.1 version.
>

Looking forward then..
Also, if you can facilitate an interface with usbmon to precisely
generate a log file for the data transmitted, starting and stoping the
logging with function calls, it will be great for debugging.

>>
>> Thanks.
>> Diego
>>
>>
>>
>>
>> 2010/7/9 Diego Jacobi <jacobidi...@gmail.com>:
>>> If i am not mistaken... interface claiming is an OS thing, not a
>>> firmware-possible problem.
>>>
>>> How can i know for sure that the interface is "claimed", and if
>>> possible, force a "reclaim".
>>>
>>> Also, when i press the key for second time, there is a big pause going
>>> (like 3 secs), which shouldnt, because the timeout is set to 100.
>>> And also, it seems that it doesnt fails inmediately, it loses the
>>> claim after a few requests.
>>> check this logs. LOG lines are all ok.
>>>
>>>
>>>
>>>
>>>
>>> linux-7z8v:/home/diego/Desktop/TUSB3410/UTICOM/superterminal #
>>> ./capafisica_usb.py
>>> Presione una tecla
>>> LOG(capafisica): OPEN usb device  0
>>> LOG(capafisica): SET Config GPIO  [0]
>>> LOG(capafisica): SET GPIO(0x 3, 0xffff) 0
>>> LOG(capafisica): PINGing device  15
>>> LOG(capafisica): SET GPIO(0xff, 0x c) 0
>>> LOG(capafisica): GET GPIO  3311
>>> array('B', [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])
>>> LOG(capafisica): SET GPIO(0xff, 0x c) 0
>>> LOG(capafisica): GET GPIO  3311
>>> array('B', [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])
>>> LOG(capafisica): SET GPIO(0xff, 0x c) 0
>>> LOG(capafisica): GET GPIO  3215
>>> array('B', [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])
>>> LOG(capafisica): SET GPIO(0xff, 0x c) 0
>>> LOG(capafisica): GET GPIO  3215
>>> array('B', [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])
>>> Presione una tecla
>>> <-------------------------------------------------------------------------------------------
>>> HERE THERE IS A BIG DEADTIME
>>> LOG(capafisica): OPEN usb device  0
>>> LOG(capafisica): SET Config GPIO  [0]
>>> LOG(capafisica): SET GPIO(0x 3, 0xffff) 0
>>> LOG(capafisica): PINGing device  15
>>> LOG(capafisica): SET GPIO(0xff, 0x c) 0
>>> LOG(capafisica): GET GPIO  3247
>>> _check ERROR:  -1 Input/output error
>>> ----> ERROR(capafisica): EXCEPTION trying to send data with
>>> (timeout,error)  <class 'usb.core.USBError'>
>>> ====> DEBUG(capafisica): ----------------- USBError('Input/output error',)
>>>  File "./capafisica_usb.py", line 203, in try_send
>>> ....
>>>
>>>
>>>
>>>
>>> 2010/7/9 Wander Lairson <wander.lair...@gmail.com>:
>>>> 2010/7/9 Diego Jacobi <jacobidi...@gmail.com>:
>>>>> Hi.
>>>>>
>>>>> As you may know, i am working in a device using an TUSB3410 with my
>>>>> own firmware.
>>>>>
>>>>> Most is working.
>>>>> I plug the device it logs in linux correctly and i am able to detach
>>>>> the driver and make usb requests with pyusb.
>>>>>
>>>>> The problem comes when it has deadtime between calls then i get the
>>>>> next message in dmesg:
>>>>>
>>>>> usb 3-2: usbfs: process 7564 (python) did not claim interface 0 before use
>>>>>
>>>>> I can not find any method for claiming interface in pyusb. Is there one?
>>>>
>>>> PyUSB 1.0 manages interface claiming automatically, but it can only do
>>>> so if all stuff is done through PyUSB. It interface is released
>>>> outside
>>>> PyUSB, it cannot figure it out. Also, this might be a bug in PyUSB.
>>>>
>>>>>
>>>>> Some more details:
>>>>>
>>>>> I made a class to handle the requests (capafisica) and a test scenario:
>>>>>
>>>>> if __name__ == '__main__':
>>>>>    fisica = capafisica()
>>>>>    fisica.logging = fisica.LOGGING_DEBUG
>>>>>    while raw_input("Presione una tecla")>0:
>>>>>        fisica.try_start()
>>>>>        fisica.test()
>>>>>        fisica.set_gpio(0xFF,mask=0x0C)
>>>>>        fisica.get_gpio()
>>>>>        fisica.try_send("Hello World!")
>>>>>        print fisica.try_recv()
>>>>>
>>>>>
>>>>> When i press a key it launches the set of functions and all works
>>>>> correctly. IF i press a key again, then most of them fails, i may say,
>>>>> randomly. AND this error message in dmesg appears.
>>>>>
>>>>> However if i edit the test scenario to:
>>>>>
>>>>> if __name__ == '__main__':
>>>>>    fisica = capafisica()
>>>>>    fisica.logging = fisica.LOGGING_DEBUG
>>>>>    while raw_input("Presione una tecla")>0:
>>>>>        fisica.try_start()
>>>>>        fisica.test()
>>>>>        fisica.set_gpio(0xFF,mask=0x0C)
>>>>>        fisica.get_gpio()
>>>>>        fisica.try_send("Hello World!")
>>>>>        print fisica.try_recv()
>>>>>        fisica.try_start()
>>>>>        fisica.test()
>>>>>        fisica.set_gpio(0xFF,mask=0x0C)
>>>>>        fisica.get_gpio()
>>>>>        fisica.try_send("Hello World!")
>>>>>        print fisica.try_recv()
>>>>>        fisica.try_start()
>>>>>        fisica.test()
>>>>>        fisica.set_gpio(0xFF,mask=0x0C)
>>>>>        fisica.get_gpio()
>>>>>        fisica.try_send("Hello World!")
>>>>>        print fisica.try_recv()
>>>>>        fisica.try_start()
>>>>>        fisica.test()
>>>>>        fisica.set_gpio(0xFF,mask=0x0C)
>>>>>        fisica.get_gpio()
>>>>>        fisica.try_send("Hello World!")
>>>>>        print fisica.try_recv()
>>>>>
>>>>>
>>>>> Then all the calls works.
>>>>> In that way i discard that can be a problem in my firmware. Well, i do
>>>>> not discard it completely, but i need to know how to "claim the
>>>>> interface"
>>>>>
>>>>>
>>>>>
>>>>> Thanks
>>>>> Diego
>>>>>
>>>>> ------------------------------------------------------------------------------
>>>>> 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
>>>>
>>>
>>
>> ------------------------------------------------------------------------------
>> 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
>

------------------------------------------------------------------------------
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