最近私のAndroid携帯電話をマシュマロに更新しました。残念なことに私のために、それは私のPythonコードを壊した。PyUSBでset_configurationを使用すると接続がリセットされます
PyUSBを使用すると、デバイスをアクセサリモードにすることができます。残念ながら、set_configuration()
を使用すると接続がリセットされ、デバイスがアクセサリモードを終了してMTPモードに再び入るため、デバイスの読み書きはできなくなります。
dev = list(usb.core.find(find_all=True))[0]
dev.ctrl_transfer(0xc0,51,data_or_wLength=2)
dev.ctrl_transfer(0x40,52,wIndex=0,data_or_wLength='SAMSUNG')
dev.ctrl_transfer(0x40,52,wIndex=1,data_or_wLength='SAMSUNG_Android')
dev.ctrl_transfer(0x40,52,wIndex=2,data_or_wLength='16DIGITSERIALNUM')
dev.ctrl_transfer(0x40,52,wIndex=3,data_or_wLength='AOA')
dev.ctrl_transfer(0x40,52,wIndex=4,data_or_wLength='Whatever')
dev.ctrl_transfer(0x40,52,wIndex=5,data_or_wLength='4')
dev.ctrl_transfer(0x40,53)
time.sleep(5)
dev = list(usb.core.find(find_all=True))[0]
dev.set_configuration() ## Aaaaaand we're back to MTP...
これを回避する方法はありません。この問題への言及はありません。私がやっている解決策は、Cを学び、PyUSB
モジュールが責任を負うと仮定して、libusb
を直接使用することです。