diff --git a/initrd/bin/gui-init b/initrd/bin/gui-init
index 2b28fc21..757dfc9a 100755
--- a/initrd/bin/gui-init
+++ b/initrd/bin/gui-init
@@ -128,9 +128,6 @@ clean_boot_check()
     "Clean Boot Detected - Perform OEM Factory Reset?" "$CONFIG_WARNING_BG_COLOR"
 }
 
-# enable USB to load modules for external kb
-enable_usb
-
 if detect_boot_device ; then
   # /boot device with installed OS found
   clean_boot_check
diff --git a/initrd/init b/initrd/init
index 3bac630b..509024bf 100755
--- a/initrd/init
+++ b/initrd/init
@@ -64,6 +64,11 @@ if [ ! -z "$CONFIG_BOOT_RECOVERY_SERIAL" ]; then
 		> "$CONFIG_BOOT_RECOVERY_SERIAL" 2>&1 &
 fi
 
+# load USB modules for boards using a USB keyboard
+if [ "$CONFIG_USB_KEYBOARD" = "y" ]; then
+	enable_usb
+fi
+
 # If the user has been holding down r, enter a recovery shell
 # otherwise immediately start the configured boot script.
 # We don't print a prompt, since this is a near instant timeout.