summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--message.mk2
-rw-r--r--tmk_core/avr.mk18
-rw-r--r--tmk_core/chibios.mk13
3 files changed, 23 insertions, 10 deletions
diff --git a/message.mk b/message.mk
index 79d1957397..da5f9fb9e3 100644
--- a/message.mk
+++ b/message.mk
@@ -93,3 +93,5 @@ MSG_PYTHON_MISSING = $(ERROR_COLOR)ERROR:$(NO_COLOR) Can not run \"qmk\" command
 MSG_FLASH_BOOTLOADER = $(WARN_COLOR)WARNING:$(NO_COLOR) This board's bootloader is not specified or is not supported by the \":flash\" target at this time.\n\n
 MSG_FLASH_ARCH = $(WARN_COLOR)WARNING:$(NO_COLOR) This board's architecture is not supported by the \":flash\" target at this time.\n\n
 MSG_BOOTLOADER_NOT_FOUND = $(ERROR_COLOR)ERROR:$(NO_COLOR) Bootloader not found. Trying again in 5s.\n
+BOOTLOADER_RETRY_TIME ?= 0.5
+MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY = Bootloader not found. Trying again every $(BOOTLOADER_RETRY_TIME)s
diff --git a/tmk_core/avr.mk b/tmk_core/avr.mk
index 521305f1b4..eb934ffe60 100644
--- a/tmk_core/avr.mk
+++ b/tmk_core/avr.mk
@@ -113,10 +113,16 @@ define EXEC_DFU
 	if [ "$(1)" ]; then \
 		echo "Flashing '$(1)' for EE_HANDS split keyboard support." ;\
 	fi; \
-	until $(DFU_PROGRAMMER) $(MCU) get bootloader-version; do\
-		printf "$(MSG_BOOTLOADER_NOT_FOUND)" ;\
-		sleep 5 ;\
-	done; \
+	if ! $(DFU_PROGRAMMER) $(MCU) get bootloader-version >/dev/null 2>/dev/null; then\
+		printf "$(MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY)" ;\
+		sleep $(BOOTLOADER_RETRY_TIME) ;\
+		while ! $(DFU_PROGRAMMER) $(MCU) get bootloader-version >/dev/null 2>/dev/null; do\
+			printf "." ;\
+			sleep $(BOOTLOADER_RETRY_TIME) ;\
+		done ;\
+		printf "\n" ;\
+	fi; \
+	$(DFU_PROGRAMMER) $(MCU) get bootloader-version ;\
 	if $(DFU_PROGRAMMER) --version 2>&1 | $(GREP) -q 0.7 ; then\
 		$(DFU_PROGRAMMER) $(MCU) erase --force; \
 		if [ "$(1)" ]; then \
@@ -172,7 +178,7 @@ define EXEC_AVRDUDE
 	TMP2=`mktemp`; \
 	list_devices > $$TMP1; \
 	while [ -z "$$USB" ]; do \
-		sleep 0.5; \
+		sleep $(BOOTLOADER_RETRY_TIME); \
 		printf "."; \
 		list_devices > $$TMP2; \
 		USB=`comm -13 $$TMP1 $$TMP2 | $(GREP) -o '/dev/tty.*'`; \
@@ -187,7 +193,7 @@ define EXEC_AVRDUDE
 		sleep 1; \
 	else \
 		printf "Waiting for $$USB to become writable."; \
-		while [ ! -w "$$USB" ]; do sleep 0.5; printf "."; done; echo ""; \
+		while [ ! -w "$$USB" ]; do sleep $(BOOTLOADER_RETRY_TIME); printf "."; done; echo ""; \
 	fi; \
 	if [ -z "$(1)" ]; then \
 		$(AVRDUDE_PROGRAMMER) -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex; \
diff --git a/tmk_core/chibios.mk b/tmk_core/chibios.mk
index cdf9ba6495..97299b7d32 100644
--- a/tmk_core/chibios.mk
+++ b/tmk_core/chibios.mk
@@ -341,10 +341,15 @@ ST_LINK_CLI ?= st-link_cli
 ST_FLASH ?= st-flash
 
 define EXEC_DFU_UTIL
-	until $(DFU_UTIL) -l | grep -q "Found DFU"; do\
-		printf "$(MSG_BOOTLOADER_NOT_FOUND)" ;\
-		sleep 5 ;\
-	done
+	if ! $(DFU_UTIL) -l | grep -q "Found DFU"; then \
+		printf "$(MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY)" ;\
+		sleep $(BOOTLOADER_RETRY_TIME) ;\
+		while ! $(DFU_UTIL) -l | grep -q "Found DFU"; do \
+			printf "." ;\
+			sleep $(BOOTLOADER_RETRY_TIME) ;\
+		done ;\
+		printf "\n" ;\
+	fi
 	$(DFU_UTIL) $(DFU_ARGS) -D $(BUILD_DIR)/$(TARGET).bin
 endef