def discover(self): ret = [] ctx = USBContext() try: for device in ctx.getDeviceList(): vid = device.getVendorID() if vid == 1240 or vid == 1155 or vid == 10842: ret.append((str(device), )) finally: ctx.exit() return ret
def __init__(self, name): super().__init__(name) self.libraries_available = KEEPKEYLIB if KEEPKEYLIB: try: self.usb_context = USBContext() self.usb_context.open() except Exception: self.libraries_available = False self.main_thread = threading.current_thread()
def __init__(self, pid): # TODO: do it right self._context = USBContext() self._handle = self._context.openByVendorIDAndProductID( Device.USB_VID, pid, skip_on_error=True) if self._handle is None: raise MemplugException( "USB device not found; check lsusb and/or the top board type") self._iface = self._handle.claimInterface(0) self._handle.setConfiguration(1) # 500ms timeouts by default self.cmd_timeout = 500 self.data_timeout = 500
def __init__(self, devstr): self._dev = None self._data_out = None self._data_in = None self._ctx = USBContext() for device in self._ctx.getDeviceList(): if devstr == str(device): self._dev = device break if self._dev is None: raise RuntimeError('Failed to find %s', devstr) self._usb_handle = self._dev.open() for iface in self._dev.iterSettings(): iface_num = iface.getNumber() if iface_num in (0, 1): if self._usb_handle.kernelDriverActive(iface_num): self._usb_handle.detachKernelDriver(iface_num) self._usb_handle.claimInterface(iface_num) if iface_num == 1: self._data_out = iface[1].getAddress() self._data_in = iface[0].getAddress() if self._data_in is None or self._data_out is None: raise RuntimeError('Failed to find bulk transfer for %s', devstr) # config = self._dev.get_active_configuration() # self.control_iface = config[(0, 0)] # self.data_iface = config[(1, 0)] # # self.control_out = \ # usb.util.find_descriptor( # self.control_iface, custom_match=lambda e: endpoint_direction(e.bEndpointAddress) == ENDPOINT_OUT) # self.control_in = \ # usb.util.find_descriptor( # self.control_iface, custom_match=lambda e: endpoint_direction(e.bEndpointAddress) == ENDPOINT_IN) # # self.data_out = \ # usb.util.find_descriptor( # self.data_iface, custom_match=lambda e: endpoint_direction(e.bEndpointAddress) == ENDPOINT_OUT) # self.data_in = \ # usb.util.find_descriptor( # self.data_iface, custom_match=lambda e: endpoint_direction(e.bEndpointAddress) == ENDPOINT_IN) self._init(115200, 8, 0, 0)
def __init__(self, name): super().__init__(name) try: from . import client import keepkeylib import keepkeylib.ckd_public from usb1 import USBContext self.client_class = client.KeepKeyClient self.ckd_public = keepkeylib.ckd_public self.types = keepkeylib.client.types self.DEVICE_IDS = (KEEPKEY_PRODUCT_KEY,) self.usb_context = USBContext() self.usb_context.open() self.libraries_available = True except ImportError: self.libraries_available = False self.logger = logs.get_logger("plugin.keepkey") self.main_thread = threading.current_thread()
def __init__(self, parent, config, name): HW_PluginBase.__init__(self, parent, config, name) try: from electroncash_plugins.keepkey import client import keepkeylib import keepkeylib.ckd_public import keepkeylib.transport_hid import keepkeylib.transport_webusb from usb1 import USBContext self.client_class = client.KeepKeyClient self.ckd_public = keepkeylib.ckd_public self.types = keepkeylib.client.types self.DEVICE_IDS = (keepkeylib.transport_hid.DEVICE_IDS + keepkeylib.transport_webusb.DEVICE_IDS) self.device_manager().register_devices(self.DEVICE_IDS) self.device_manager().register_enumerate_func(self.enumerate) self.usb_context = USBContext() self.usb_context.open() self.libraries_available = True except ImportError: self.libraries_available = False
def main(ctx): opt = ctx.opt with USBContext() as context: found = list(find_device(context, opt.vid, opt.pid)) if len(found) - 1 < opt.nth: raise Exception("No USB device found") # ux == USB Device/Configuration/Interface/Setting/Endpoint ud = found[opt.nth] uc = ud[0] ui = uc[0] us = ui[0] ue = us[0] with CyUSB(ud, CY_TYPE.MFG, index=opt.scb) as dev: #embed() ctx.dev = dev cmd = opt.args[0] if cmd == "save": do_save(ctx, *opt.args[1:]) if cmd == "load": do_load(ctx, *opt.args[1:]) if cmd == "mode": do_mode(ctx, *opt.args[1:])