diff --git a/common/cmd_scsi.c b/common/cmd_scsi.c
index 61309f90a44837291fee6fad406892d486f7e6a8..68e46b6389749493f5f7cb70edf933e6c5846e8f 100644
--- a/common/cmd_scsi.c
+++ b/common/cmd_scsi.c
@@ -281,6 +281,7 @@ int do_scsiboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 		puts ("\n** Bad Header Checksum **\n");
 		return 1;
 	}
+	hdr->ih_hcrc = htonl(checksum);	/* restore checksum for later use */
 
 	print_image_hdr (hdr);
 	cnt = (ntohl(hdr->ih_size) + sizeof(image_header_t));
diff --git a/common/cmd_usb.c b/common/cmd_usb.c
index c6b5d140acad9cd46f0c497e69ab182504dc3e0a..0bf050b14dfc03b9c25972c682cbece522454c7b 100644
--- a/common/cmd_usb.c
+++ b/common/cmd_usb.c
@@ -309,7 +309,7 @@ int do_usbboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
 	char *boot_device = NULL;
 	char *ep;
-	int dev, part=0, rcode;
+	int dev, part=1, rcode;
 	ulong addr, cnt, checksum;
 	disk_partition_t info;
 	image_header_t *hdr;
@@ -399,6 +399,7 @@ int do_usbboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 		puts ("\n** Bad Header Checksum **\n");
 		return 1;
 	}
+	hdr->ih_hcrc = htonl(checksum);	/* restore checksum for later use */
 
 	print_image_hdr (hdr);