WinUSB is a tool that can be used to create a bootable USB Windows installer from an ISO or a DVD, either using a GUI or from the command line.
The application looks pretty much abandoned, with the latest release dating back to 2013 however, GitHub user slacka forked it, fixed most of its bugs, and updated it to support both wxWidgets 2 and 3.
A few months ago I tried using the original WinUSB to create a bootable Windows 10 pendrive, but it failed. I'm not sure if that's because of the changes in Windows 10, in Ubuntu (which I used to create the USB) or both, but using slacka's WinUSB fork worked, although I did encounter a small issue (see below).
I tested slacka's WinUSB fork to create a bootable Windows 10 USB on Ubuntu 16.04, and while using the GUI, I got an error (already reported) near the end of the process. However, I was still able to use the resulted bootable USB to install Windows 10:
The error doesn't occur when creating a Windows USB stick using WinUSB from the command line.
I should add that I only tested the WinUSB fork with Windows 10 on Ubuntu 16.04, but it should work with Windows 7 and Windows 8 / 8.1 (and older Ubuntu versions) as well. Also, I performed the Windows 10 installation in VirtualBox, and not on real hardware.
If you want to test the bootable Windows USB you've created using WinUSB, before installing it on real hardware, you can use VirtualBox. To be able to boot from USB in VirtualBox, see THIS AskUbuntu answer (make sure your username is added to the "vboxusers" and "disk" groups, or it won't work - you'll find the commands to do this in the AskUbuntu link above, under "EDIT").
Install WinUSB fork in Ubuntu or Linux Mint
I uploaded slacka's WinUSB fork to the main WebUpd8 PPA, to make it easier to install in Ubuntu (16.04, 15.10, 15.04 and 14.04) or Linux Mint (17.x or 18) and derivatives. To add the PPA and install WinUSB, use the following commands:
If you don't want to add the PPA, you can grab the deb from HERE.
sudo add-apt-repository ppa:nilarimogard/webupd8 sudo apt update sudo apt install winusb
Arch Linux users can install slacka's WinUSB fork via AUR.
For other Linux distributions, download it from GitHub.
The original WinUSB is also available in a PPA (provides packages up to Ubuntu 14.10 only!).
Create a bootable Windows 10 USB install stick using WinUSB
A. Create a bootable Windows USB install stick using the WinUSB GUI
Simply launch WinUSB from the menu / Dash, select the Windows 10 (again, it probably also works with Windows 7 and 8 / 8.1) ISO or DVD,, then select the USB drive under "Target device" and click "Install".
Remember that you may encounter a ""Installation failed! Exit code 256" error (see THIS) while using the GUI (however, in my test, the bootable Windows 10 USB worked despite of that).
B. Create a bootable Windows USB install stick from the command line using WinUSB
If you want to create a bootable Windows USB from the command line, you must first determine what the USB physical drive is. You can easily find this out from the WinUSB GUI (you'll find it under "Target device" - in my case it's "/dev/sdc"). You can also find the device using GNOME Disks, or from the command line, using "lsblk" and so on.
Important: make sure you use the correct USB device because it will be formatted!
Once you know the device and the path to the ISO, to create a bootable Windows USB stick from the command line, use:
Here's an example:
sudo winusb --format </path/to/windows.iso> <device>
sudo winusb --format /home/andrei/Downloads/win10.iso /dev/sdc
Update: if you get an error like this: "Error: Partition(s) on /dev/sdb are being used" when WinUSB tries to format the USB stick, you must unmount the partitions. Firstly, to get a list of partitions, run the following command ("mount" also works):
This should list all the partitions mounted on your system. If you got here, you should already know the USB device drive, e.g. /dev/sdc, so you need to look for the partitions (it could also only be one) on this drive, like /dev/sdc1, /dev/sdc2, etc. Then, unmount them like this (example):
sudo umount /dev/sdc1 sudo umount /dev/sdc2 (etc)