As I don't have a dedicated USB pendrive for my ISOs, so I usually end doing it very often and had to come up with a quick and reliable way to do it.
Most of the time I do this for my Arch Linux or Arch Bang installs. So I'm using those distributions for the ISO names.
This is what I do:
dd if=/path/to/image.iso of=/dev/sd[usb-device] bs=[bytes-size] && sync
Where:
[usb-device] is the letter corresponding to the usb device reported by dmesg
. Note there is no partition number. It's the whole USB drive.
[bytes-size] depending on the distribution, usually 1024kb or 4M. Maybe you are missing this and that's why it's failing.
Example: (Warning: this will erase everything on the /dev/sde drive)
dd if=archbang-010316-x86_64.iso of=/dev/sde bs=4M && sync
I have seen there are problems with UEFI/EFI BIOS sometimes with this, so you should check the BIOS is in compatible mode (disable secure boot or windows boot) and if that fails, the answer above seems to be what I would do.
mkdir -p /mnt/{iso,usb}
mount -o loop archlinux-2016.04.01-dual.iso /mnt/iso
mount /dev/sdXn /mnt/usb
cp -a /mnt/iso/* /mnt/usb
sync
umount /mnt/iso
Where sdXn is the drive and partition. Remember UEFI need a VFAT32 partition for the initramfs. Maybe creating it with GPT