You can use dd .

sudo umount /dev/sd<?><?>

where <?><?> is a letter followed by a number, look it up by running lsblk .

It will look something like

sdb 8:16 1 14.9G 0 disk ├─sdb1 8:17 1 1.6G 0 part /media/username/usb volume name └─sdb2 8:18 1 2.4M 0 part

I would dismount sdb1.

Then, next (this is a destructive command and wipes the entire USB drive with the contents of the iso, so be careful):

sudo dd bs=4M if=path/to/input.iso of=/dev/sd<?> conv=fdatasync status=progress

where input.iso is the input file, and /dev/sd<?> is the USB device you're writing to (run lsblk to see all drives to find out what <?> is for your USB).

This method is fast and has never failed me.

EDIT: for those on a Mac ending up here, use lowercase for bs=4m :

sudo dd if=inputfile.img of=/dev/disk<?> bs=4m && sync

EDIT: If USB drive does not boot (this happened to me), it is because the target is a particular partition on the drive instead of the drive. So the target needs to be /dev/sdc and not dev/sdc <?> For me it was /dev/sdb .

Reference: https://superuser.com/a/407327 and https://askubuntu.com/a/579615/669976