PyUSB dev.set_configuration()

余生长醉 提交于 2019-12-19 09:24:44

问题


I am trying to send data to a usb stick using the python library PyUSB. The code I am using is the following:

import usb.core
import usb.util

# find our devices
#dev = usb.core.find(idVendor=0xfffe, idProduct=0x0001)
dev = usb.core.find(idVendor=0x090c, idProduct=0x1000)

# was it found?
if dev is None:
    raise ValueError('Device not found')

# set the active configuration. With no arguments, the first
# configuration will be the active one
dev.set_configuration()

# get an endpoint instance
cfg = dev.get_active_configuration()
interface_number = cfg[(0,0)].bInterface_number
alternate_setting = usb.control.get_interface(interface_number)
intf = usb.util.find_descriptor(
    cfg, bTnerfaceNumber = interface_number,
    bAlternateSettings = alternate_setting
)

ep = usb.util.find_descriptor(
    intf,
    # match the first OUT endpoint
    custom_match = \
    lambda e:
        usb.util.endpoint_direction(e.bEndpointAddress) == \
        usb.util.ENDPOINT_OUT
)

assert ep is not None

# write the data
ep.write('test')

however I seem to be getting the following error:

Traceback (most recent call last):
  File "/home/usman/Desktop/c_code/libusb_test_data/pyusb_code/send_data_rev_one.py", line 14, in <module>
    dev.set_configuration()
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 554, in set_configuration
    self._ctx.managed_set_configuration(self, configuration)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 91, in managed_set_configuration
    self.managed_open()
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 70, in managed_open
    self.handle = self.backend.open_device(self.dev)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 494, in open_device
    _check(_lib.libusb_open(dev.devid, byref(handle)))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 403, in _check
    raise USBError(_str_error[ret], ret, _libusb_errno[ret])
USBError: [Errno 13] Access denied (insufficient permissions)

can somebody walk me through this error and tell me how to fix it

thanks


回答1:


I just realized from the tags that you are using Ubuntu. In Ubuntu USB device permissions are tied to the USB device numbers. When Ubuntu ships it comes with global permissions for some standard devices (e.g. flash drives) so that non-root users can use these. However, it does not globally unlock USB devices because some USB devices could be harmful. Please see this post to understand how to modify the Ubuntu configuration (in particular /etc/udev/rules.d/40-basic-permissions.rules) in order to allow your device to be used by non-root users.



来源:https://stackoverflow.com/questions/15074394/pyusb-dev-set-configuration

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!