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