#define CONFIG_DRIVE_MMC
 #endif
 
-#define CONFIG_DRIVE_TYPES CONFIG_DRIVE_SATA CONFIG_DRIVE_MMC
+#ifdef CONFIG_USB_STORAGE
+#define CONFIG_DRIVE_USB "usb "
+#else
+#define CONFIG_DRIVE_USB
+#endif
+
+#define CONFIG_DRIVE_TYPES CONFIG_DRIVE_SATA CONFIG_DRIVE_MMC CONFIG_DRIVE_USB
 
 #if defined(CONFIG_SABRELITE)
 #define CONFIG_EXTRA_ENV_SETTINGS \
        "run netboot; "
 #else
 #define CONFIG_EXTRA_ENV_SETTINGS \
+       "bootdevs=" CONFIG_DRIVE_TYPES "\0" \
        "console=ttymxc1\0" \
        "clearenv=if sf probe || sf probe || sf probe 1 ; then " \
                "sf erase 0xc0000 0x2000 && " \
                "echo restored environment to factory default ; fi\0" \
-       "bootcmd=for dtype in " CONFIG_DRIVE_TYPES \
+       "bootcmd=for dtype in ${bootdevs}" \
                "; do " \
+                       "if itest.s \"xusb\" == \"x${dtype}\" ; then " \
+                               "usb start ;" \
+                       "fi; " \
                        "for disk in 0 1 ; do ${dtype} dev ${disk} ;" \
                                "for fs in fat ext2 ; do " \
                                        "${fs}load " \
                "echo ; echo serial console at 115200, 8N1 ; echo ; " \
                "echo details at http://boundarydevices.com/6q_bootscript ; " \
                "setenv stdout serial\0" \
-       "upgradeu=for dtype in " CONFIG_DRIVE_TYPES \
+       "upgradeu=for dtype in ${bootdevs}" \
                "; do " \
                "for disk in 0 1 ; do ${dtype} dev ${disk} ;" \
                     "for fs in fat ext2 ; do " \