You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							33 lines
						
					
					
						
							887 B
						
					
					
				
			
		
		
	
	
							33 lines
						
					
					
						
							887 B
						
					
					
				#!/usr/bin/env python
 | 
						|
from __future__ import print_function
 | 
						|
 | 
						|
import sys
 | 
						|
import time
 | 
						|
import usb1
 | 
						|
 | 
						|
def enter_download_mode(device):
 | 
						|
  handle = device.open()
 | 
						|
  handle.claimInterface(0)
 | 
						|
 | 
						|
  try:
 | 
						|
    handle.controlWrite(usb1.TYPE_VENDOR | usb1.RECIPIENT_DEVICE, 0xd1, 0, 0, b'')
 | 
						|
  except (usb1.USBErrorIO, usb1.USBErrorPipe) as e:
 | 
						|
    print("Device download mode enabled.")
 | 
						|
    time.sleep(1)
 | 
						|
  else:
 | 
						|
    print("Device failed to enter download mode.")
 | 
						|
    sys.exit(1)
 | 
						|
 | 
						|
def find_first_panda(context=None):
 | 
						|
  context = context or usb1.USBContext()
 | 
						|
  for device in context.getDeviceList(skip_on_error=True):
 | 
						|
    if device.getVendorID() == 0xbbaa and device.getProductID()&0xFF00 == 0xdd00:
 | 
						|
      return device
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
  panda_dev = find_first_panda()
 | 
						|
  if panda_dev == None:
 | 
						|
    print("no device found")
 | 
						|
    sys.exit(0)
 | 
						|
  print("found device")
 | 
						|
  enter_download_mode(panda_dev)
 | 
						|
 |