FAQ

"No backend available" エラーを修正するにはどうすればいいですか?

通常、この問題には次の4つの原因が考えられます:

  1. あなたが libusb ライブラリをインストールしていない場合。

  2. あなたが libusb ライブラリを標準の共有ライブラリパス置いてない場合。

  3. あなたの libusb のバージョンがとても古い場合。

  4. あなたの PyUSB バージョンがとても古い場合。

何が問題なのかをデバッグするには、あなたの環境で以下のスクリプトを実行します:

import os
os.environ['PYUSB_DEBUG'] = 'debug'
import usb.core
usb.core.find()

これにより、デバッグメッセージがコンソールに出力されます。 それでも何が起こっているのか分からないときは、当該のデバッグ出力を掲載して、メーリングリストに助けを求めてください。

Windowsにlibusbをインストールするにはどうすればいいですか?

libusb または libusb-win32 をWindowsにインストールするには、 zadig を使用してください。

Zadigはlibusb-1.0.dllをインストールしないため、libusb 1.0バックエンドを使用するには、Pythonインストールの適切な場所にlibusb-1.0.dllを配置する必要があることに注意してください。

指定のバックエンドの使用を強制するにはどうすればいいですか?

libusb1 バックエンド使用例:

>>> import usb.core
>>> from usb.backend import libusb1
>>> be = libusb1.get_backend()
>>> dev = usb.core.find(backend=be)

libusb ライブラリ・パスをバックエンドに渡すにはどうすればよいですか?

tutorialSpecify libraries by hand (邦訳:ライブラリを手動で指定する) を参照。

選択した構成(configuration)の、すでに構成(configured)されているデバイスで set_configuration() を 呼び出す/呼び出さない 方法は?

通常、 set_configuration() はデバイスの初期化中に呼び出されます。 libusb documentationlibusb_set_configuration() は次のように述べています:

あなたが、選択した構成(configuration)で既に構成(configure)されているデバイスでこの関数を呼び出すと、この関数は軽量のデバイスリセット(lightweight device reset)として機能します。すなわち、当座(current)の構成(configuration)を使用してSET_CONFIGURATIONリクエストを発行し、ほとんどのUSB関連デバイスの状態をリセットします(altsettingをゼロにリセットし、エンドポイントをクリアし停止、resetをトグル)。

したがって、その後 write() を呼び出すと、タイムアウトエラーが発生します。

この動作に対する解決策の一つは、 configuration selection and handling (構成(configuration)の選択と処理)で説明されているように、現在アクティブな構成を検討することです。 "必要な構成(configuration)が既にアクティブである場合、構成(configuration)を選択する必要はありません"

try:
    cfg = dev.get_active_configuration()
except usb.core.USBError:
    cfg = None
if cfg is None or cfg.bConfigurationValue != cfg_desired:
    dev.set_configuration(cfg_desired)