Removable USB drives (and E2B Helper USB drive)
Mass Storage USB media devices can be separated into two categories – Fixed or Removable.
- USB Hard drives are always of the Fixed type.
- Most USB Flash drives (but not all) are of the Removable type.
- Microsoft Windows-Certified (WindowsToGo certified) USB Flash drives are of the Fixed type.
The SCSI Inquiry Command
USB Storage Devices can be accessed by Windows using a ‘SCSI Passthrough’ API. SCSI-like commands can be sent to the USB controller and data received back.
The removable media device setting is a flag contained within the SCSI Inquiry Data response to the SCSI Inquiry command. Bit 7 of byte 1 (indexed from 0) is the Removable Media Bit (RMB). An RMB set to zero indicates that the device is not a removable media device. An RMB of one indicates that the device is a removable media device. Drivers obtain this information by using the StorageDeviceProperty request.
Windows/Linux will assume that a RMB=1 device can be disconnected at any time by the user. Any disk writes made by the OS to the media will be made immediately – no delayed buffering will be used. For a RMB=0 device (e.g. USB HDD), the OS may choose to delay writes for say 30 seconds or so. This improves performance because instead of lots of small write operations, it is quicker to use just a few large write operations.
For more information about the SCSI Inquiry command, see https://www.t10.org
RMPrepUSB will inform you of the type of USB drive you have:
Why is the Fixed\Removable type important?
There are a number of reasons why this single RMB value is important for E2B.
1. Up until Windows 10 Redstone 2 1703 (Creators update), all previous versions of Windows would only mount and assign a volume letter to the first partition of a Removable drive. This meant that Windows could not access files on any other partition of a Removable drive. If your E2B USB drive is of the ‘Fixed-disk’ type, you can have multiple partitions and store files on any partition.
2. Some software and Linux scripts, etc. specifically test for a Removable USB device. If you use a USB HDD then the software will not work. This includes Windows To Go 8.1 and early Win10 versions which would not boot from a ‘flat-file’ installation on a Removable type of USB drive (but WindowsToGo will boot from a VHD on a removable USB drive). Other examples are AVG Rescue, Avira, Geek Squad, Avast, Norton Bootable Recovery Tool, Windows Boot Genius, SmartKey Windows password Recovery ISO, and some WinPE ISOs.
3. Standard Microsoft Windows Setup ISOs (WinPE) run a ‘wpeinit.exe’ program. This program includes a function to look for all Removable drives (CD\DVD, USB CD\DVD, Removable-type USB drives, etc.) and it will look for \AutoUnattend.XML and \Unattend.XML files on these volumes. Thus versions of Windows 10 which precede 2018 will not detect the XML file on a Fixed type of USB drive. The XML file can contain settings and commands which are automatically used by Windows Setup. This useful and powerful feature is used by E2B when booting directly from a Windows Install ISO as follows:
1. E2B writes an \AutoUnattend.XML file to the E2B USB drive.
2. E2B boots to Windows Setup directly from the ISO.
3. Windows Setup loads the \AutoUnattend.XML file from any Removable Media it can find (searched in order or drive letter).
4. The XML file contains a command to load the ISO file as a virtual DVD (e.g. drive letter Y:) using ImDisk.
5. Setup searches all drive letters to find a \Sources\Install.wim file (if not, it asks you to install the ‘missing CD\DVD device driver’ because it cannot find the source files needed to copy to the target drive and assumes it cannot access the DVD!).
6. Setup extracts the Windows files from the Install.wim file and copies the files to the target drive. So if the E2B USB drive is of the Removable type, E2B has no problem booting directly from an ISO. However, if your E2B USB drive is of the ‘Fixed’ type, the XML file on the E2B USB drive will not be found by Windows Setup – the ISO file will not be loaded as a virtual DVD drive – and so you will get a ‘missing CD\DVD driver device driver’ message:
Note: E2B v1.A8 and later versions will use a different method called WIMBOOT to boot to Windows Setup. WIMBOOT does not need a removable USB drive to be present, it also does not need a ‘special’ XML file containing a RunSynchronous command to cause the ISO to be loaded as a virtual DVD. WIMBOOT requires at least 1-2GB of RAM to be present in the system, the process described above usually requires less than 1GB of RAM.
E2B WinHelper Flash drive
Note: If using E2B v1.8A+ and 2GB of RAM is present then WIMBOOT will be used which does not require a WinHelper flash drive.
One way of avoiding this is to also connect an E2B ‘WinHelper’ USB Flash drive.
This must be a Removable-type of USB Flash drive which contains a few ‘WinHelper’ files. E2B will also write the XML files to this Removable ‘WinHelper’ flash drive when you boot from a Windows Install ISO – thus the XML file will be found by Windows Setup and the ISO file will be mounted as a virtual drive.
Tip: Use a USB hard disk enclosure such as the Inateck FE2007 which has 3 USB ports, and simply connect a small Removable WinHelper flash drive to one of the 3 ports. Then you will always have the WinHelper drive connected.
If you do not want to use a WinHelper flash drive with your ‘fixed-disk’ E2B drive, you will need to convert the Windows Install ISO to a .imgPTN file.
Note E2B uses this XML file trick when booting some WinPE and other Windows-based ISOs too. Which is why the ‘list of tested Payloads‘ page may say that some ISOs can only be successfully booted from Removable USB drives (unless you convert them to .imgPTN files).
How to make a ‘WinHelper’ USB Flash Drive for Windows .ISO payload files
To fix the ‘device driver is missing’ issue, you need to make an extra USB Flash ‘Helper’ drive as follows.1. You need an additional small (any size) USB Flash drive that is of the ‘Removable‘ type – check it is of the correct type using RMPrepUSB, or make sure that it is not listed in Windows Explorer as a ‘Local Disk’. It can be any size as it only needs to hold a few files. It does not matter if your other files are already on this drive. It does not need to be re-formatted if it is already formatted as either FAT32 or NTFS.
2. Ensure this Helper USB drive does NOT contain the E2B files (i.e. it does not contain the \_ISO\e2b folder).
3. Copy the files from the E2B folder:
\_ISO\docs\USB FLASH DRIVE HELPER FILES
to the root of the USB Helper drive.
Ensure that you copy the files to the first partition of the Removable USB Flash drive (usually there is only one partition accessible in Windows anyway).
The files \WINHELPER.USB, \Autounattend.xml and \unattend.xml should now be present in the root of the WinHelper Flash drive.
Do NOT edit these files. They will be changed by E2B. The E2B_WinHelper_&DW.zip file is not needed and can be deleted.
That’s it! Now whenever you boot from the E2B USB Hard disk to install Windows Vista/7/8, be sure to also connect this USB E2B Helper drive too (it is only needed if booting some Windows-based ISOs – e.g. Windows Vista/7/8 Install ISOs and some PE-based ISOs which need to access the ‘CD’ after they boot).
USB Port 1: E2B ‘Fixed Disk’-type drive containing E2B files
USB Port 2: ‘Helper’ Removable Drive’-type Flash drive containing ‘Helper’ files.
IMPORTANT: Only one drive in the entire system must contain the E2B files – do not put all the E2B files and folders on the Helper USB drive! Also, only one drive in the whole system must contain the \WINHELPER.USB files. If possible, use USB 2.0 ports and not USB 3.0 ports, because Windows Vista and 7 does not contain USB 3.0 drivers and so Windows Setup won’t detect the USB Helper drive.
Note: If you convert the Windows ISO to a .imgPTN file, then you don’t need to use a Helper Flash drive.