From 23ffc87236873fbc98f783420eba6e64f4b522a5 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 17 Dec 2019 18:32:28 +0800 Subject: [PATCH] legacy/bootloader: soft reset after firmware upload originally submitted by @kedoubitcoin --- legacy/bootloader/usb.c | 14 ++++++++++++-- legacy/firmware/usb.c | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/legacy/bootloader/usb.c b/legacy/bootloader/usb.c index 508d54491..f53136509 100644 --- a/legacy/bootloader/usb.c +++ b/legacy/bootloader/usb.c @@ -19,6 +19,7 @@ #include #include +#include #include @@ -415,9 +416,18 @@ static void rx_callback(usbd_device *dev, uint8_t ep) { flash_state = STATE_END; if (hash_check_ok) { - show_unplug("New firmware", "successfully installed."); send_msg_success(dev); - shutdown(); + __disable_irq(); + // wait 3 seconds + char line[] = "will be restarted in _ s."; + for (int i = 3; i > 0; i--) { + line[21] = '0' + i; + layoutDialog(&bmp_icon_ok, NULL, NULL, NULL, "New firmware", + "successfully installed.", NULL, "Your Trezor", line, + NULL); + delay(30000 * 1000); + } + scb_reset_system(); } else { layoutDialog(&bmp_icon_warning, NULL, NULL, NULL, "Firmware installation", "aborted.", NULL, "You need to repeat", "the procedure with", diff --git a/legacy/firmware/usb.c b/legacy/firmware/usb.c index a2f497a15..8eb254440 100644 --- a/legacy/firmware/usb.c +++ b/legacy/firmware/usb.c @@ -432,7 +432,7 @@ void usbPoll(void) { void usbReconnect(void) { if (usbd_dev != NULL) { usbd_disconnect(usbd_dev, 1); - delay(1000); + delay(120000); usbd_disconnect(usbd_dev, 0); } }