diff --git a/legacy/bootloader/usb.c b/legacy/bootloader/usb.c index 9a8d2d251..837ed87b5 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 4aab3b0af..e0ec5b6a8 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); } }