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

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

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

Reply via email to