On 23 August 2016 at 18:32, Jay Aurabind <jay.aurab...@gmail.com> wrote:
> On 23 August 2016 at 16:40, Tormod Volden <lists.tor...@gmail.com> wrote:
>> On Tue, Aug 23, 2016 at 8:31 AM, Jay Aurabind wrote:
>>> On 23 August 2016 at 02:18, Tormod Volden wrote:
>>>> I am a bit confused here, did you really want to manipulate the root
>>>> hub with pyusb, or did something go wrong here?
>>>>
>>>
>>> Absolutely not, only reason I wanted to try giving write permission to
>>> that device, which happens to be the root hub was because that's the
>>> only permission error I see in the LIBUSB debug messages, as you can
>>> see from the logs I showed. If I run pyusb as root, I do not see those
>>> permission errors.
>>
>> OK, I see.
>>
>>>
>>> I suspect that pyusb reads certain data commonly for all available
>>> devices, may to figure out whether that is really the device it needs
>>> to work on ?
>>
>> It usually shouldn't try to retrieve descriptor strings from other
>> devices than the ones targeted. The device descriptor (retrieved and
>> cached by the OS) is usually enough to filter out the right devices
>> (e.g. filtering on vid/pid). How are the devices filtered in your
>> program?
>
> Here is the code which creates the error:
>
>         all_devices = usb.core.find(find_all=True)
>
>         if not all_devices:
>             logging.debug("No device connected")
>             return []
>
>         boards = []
>
>         # iterate on all devices found
>         for board in all_devices:
>             interface_number = -1
>             try:
>                 # The product string is read over USB when accessed.
>                 # This can cause an exception to be thrown if the device
>                 # is malfunctioning.
>                 product = board.product
>
> This is how pyusb is used. The program doesn't go beyond the last line
> shown above, if run as normal user. See full source github[1].
>
>
>
>
> [1]:https://github.com/mbedmicro/pyOCD/blob/master/pyOCD/pyDAPAccess/interface/pyusb_backend.py#L88
>

I just managed to get it working. Simply added an exception for the
try block for ValueError: continue

Is this an acceptable solution generally? Is there a point in asking
pyOCD to take it ?


>>
>>>> Some devices can be released from the kernel, and then be available
>>>> for you to manipulate it through the device node (and thus via e.g
>>>> libusb and pyusb). See for instance the libusb_detach_kernel_driver()
>>>> function in libusb. However, in most cases people use libusb and pyusb
>>>> to access devices that have no kernel driver.
>>>
>>> In that case, even the root should not be able to write to those
>>> devices, since its exclusively managed by kernel. Then how come I get
>>> no errors when I run pyocd with root permissions ?
>>
>> You won't be able to claim any of its interfaces, but I suppose some
>> control transfers are still allowed.
>>
>> Tormod
>>
>> ------------------------------------------------------------------------------
>> _______________________________________________
>> pyusb-users mailing list
>> pyusb-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/pyusb-users
>
>
>
> --
>
> Thanks and Regards,
> Aurabindo J



-- 

Thanks and Regards,
Aurabindo J

------------------------------------------------------------------------------
_______________________________________________
pyusb-users mailing list
pyusb-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pyusb-users

Reply via email to