mirror of
https://github.com/qmk/qmk_firmware
synced 2024-11-17 17:35:30 +00:00
Merge remote-tracking branch 'origin/master' into develop
This commit is contained in:
commit
422fd8aed8
1 changed files with 22 additions and 11 deletions
|
@ -1,3 +1,4 @@
|
|||
import platform
|
||||
import shutil
|
||||
import time
|
||||
import os
|
||||
|
@ -56,6 +57,20 @@ def _check_dfu_programmer_version():
|
|||
return False
|
||||
|
||||
|
||||
def _find_usb_device(vid_hex, pid_hex):
|
||||
# WSL doesnt have access to USB - use powershell instead...?
|
||||
if 'microsoft' in platform.uname().release.lower():
|
||||
ret = cli.run(['powershell.exe', '-command', 'Get-PnpDevice -PresentOnly | Select-Object -Property InstanceId'])
|
||||
if f'USB\\VID_{vid_hex:04X}&PID_{pid_hex:04X}' in ret.stdout:
|
||||
return (vid_hex, pid_hex)
|
||||
else:
|
||||
with DelayedKeyboardInterrupt():
|
||||
# PyUSB does not like to be interrupted by Ctrl-C
|
||||
# therefore we catch the interrupt with a custom handler
|
||||
# and only process it once pyusb finished
|
||||
return usb.core.find(idVendor=vid_hex, idProduct=pid_hex)
|
||||
|
||||
|
||||
def _find_bootloader():
|
||||
# To avoid running forever in the background, only look for bootloaders for 10min
|
||||
start_time = time.time()
|
||||
|
@ -64,11 +79,7 @@ def _find_bootloader():
|
|||
for vid, pid in BOOTLOADER_VIDS_PIDS[bl]:
|
||||
vid_hex = int(f'0x{vid}', 0)
|
||||
pid_hex = int(f'0x{pid}', 0)
|
||||
with DelayedKeyboardInterrupt():
|
||||
# PyUSB does not like to be interrupted by Ctrl-C
|
||||
# therefore we catch the interrupt with a custom handler
|
||||
# and only process it once pyusb finished
|
||||
dev = usb.core.find(idVendor=vid_hex, idProduct=pid_hex)
|
||||
dev = _find_usb_device(vid_hex, pid_hex)
|
||||
if dev:
|
||||
if bl == 'atmel-dfu':
|
||||
details = _PID_TO_MCU[pid]
|
||||
|
@ -178,25 +189,25 @@ def flasher(mcu, file):
|
|||
# Add a small sleep to avoid race conditions
|
||||
time.sleep(1)
|
||||
if bl == 'atmel-dfu':
|
||||
_flash_atmel_dfu(details, file.name)
|
||||
_flash_atmel_dfu(details, file)
|
||||
elif bl == 'caterina':
|
||||
if _flash_caterina(details, file.name):
|
||||
if _flash_caterina(details, file):
|
||||
return (True, "The Caterina bootloader was found but is not writable. Check 'qmk doctor' output for advice.")
|
||||
elif bl == 'hid-bootloader':
|
||||
if mcu:
|
||||
if _flash_hid_bootloader(mcu, details, file.name):
|
||||
if _flash_hid_bootloader(mcu, details, file):
|
||||
return (True, "Please make sure 'teensy_loader_cli' or 'hid_bootloader_cli' is available on your system.")
|
||||
else:
|
||||
return (True, "Specifying the MCU with '-m' is necessary for HalfKay/HID bootloaders!")
|
||||
elif bl == 'stm32-dfu' or bl == 'apm32-dfu' or bl == 'gd32v-dfu' or bl == 'kiibohd':
|
||||
_flash_dfu_util(details, file.name)
|
||||
_flash_dfu_util(details, file)
|
||||
elif bl == 'usbasploader' or bl == 'usbtinyisp':
|
||||
if mcu:
|
||||
_flash_isp(mcu, bl, file.name)
|
||||
_flash_isp(mcu, bl, file)
|
||||
else:
|
||||
return (True, "Specifying the MCU with '-m' is necessary for ISP flashing!")
|
||||
elif bl == 'md-boot':
|
||||
_flash_mdloader(file.name)
|
||||
_flash_mdloader(file)
|
||||
else:
|
||||
return (True, "Known bootloader found but flashing not currently supported!")
|
||||
|
||||
|
|
Loading…
Reference in a new issue