3

PythonライブラリPyUSBを使用してUSBスティックにデータを送信しようとしています。私が使用しているコードは次のとおりです。

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

ただし、次のエラーが発生しているようです。

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)

誰かが私にこのエラーを説明し、それを修正する方法を教えてもらえますか

ありがとう

4

2 に答える 2

4

タグから、あなたがUbuntuを使用していることに気づきました。Ubuntu USB デバイスのアクセス許可は、USB デバイス番号に関連付けられています。Ubuntu の出荷時には、一部の標準デバイス (フラッシュ ドライブなど) に対するグローバル アクセス許可が付属しているため、root 以外のユーザーがこれらを使用できます。ただし、一部の USB デバイスは有害である可能性があるため、USB デバイスをグローバルにロック解除することはできません。root 以外のユーザーがデバイスを使用できるようにするには、この投稿を参照して、Ubuntu 構成 (特に /etc/udev/rules.d/40-basic-permissions.rules) を変更する方法を理解してください。

于 2013-02-26T02:21:43.253 に答える