Goal is updating a NVMe SSD firmware on a Mac without optical drive via USB stick that should contain a minimal Linux, flasher and payload.
The instructions (PDF) for a firmware update utility say to use Unetbootin on MacOS to write an iso-file to a FAT32 formatted (erased) USB stick.
That works. No errors shown.
What then doesn't work is booting a MacBook Pro 2015 from that stick.
The external USB-drive never shows up in the boot menu.
What I tried:
- erasing the sticks a few times with DiskUtility
- partitioning the sticks to either MBR or GPT
- 3 different sticks
- different laptops (Mac & Windows)
- writing the iso file with
dddirectly to the stick (and in another round using Balena etcher and universal usb installer)
- different versions of DiskUtility (Sierra and Mojave)
- Windows on-board tools on a PC for re-formatting the sticks
- gparted and fdisk mkfs.vfat on a Linux machine
- using a different iso (not matching the target device) from the vendor site (works without any issues according to instructions, but can't update my device…)
- writing to customer support (answer: "iso looks good, should work, please try again")
- booting a fresh virtual machine on a Mac host with just the needed iso attached. Frustratingly, that indeed boots as intended, but can't update the device either. Neither a Windows PC, nor a Linux laptop can boot the sticks I prepared.
- searching net and especially Ask Different for solutions
The sticks just aren't recognised on any Mac laptop as 'bootable' once the procedure outlined in the manual is finished. All Laptops can boot from external drives (Thunderbolt & USB) and the boot manager updates without interaction once I plug those in.
Possible reasons :
– assuming that DiskUtility from 10.12 and 10.14 can't properly format the sticks?
– is latest version of Unetbootin acting up?
– is the iso for my device incomplete/damaged?
The last item here may be the culprit:
The firmware iso for a Samsung 970 EVO is just so much smaller than for a EVOplus:
- NVMe SSD-970 EVO Plus Firmware ISO 2B2QEXM7 | 28 MB (works, unneeded)
- NVMe SSD-970 EVO Firmware ISO 2B2QEXE7 | 17.4 MB (doesn't work, needed)
The EVO-iso is mountable directly in macOS and just contains
bzImage initrd isolinux > boot.cat isolinux.bin isolinux.cfg ldlinux.c32
The EVO-plus-iso is not mountable but when written to stick with Unetbootin it shows an EFI folder and GRUB files, etc… Since this one does boot and scans the computer for eligible devices, I am a bit stuck here.
None of these similar questions on AskDifferent offered a working solution:
Copy Crucial SSD Firmware Update ISO to Bootable USB
Is it possible to make a bootable USB stick for a Macbook Pro to do firmware update?
How to install a bootable ISO onto a single partition of a usb stick?
How to create USB Ubuntu boot disk in OS X so that it boots on *non-Apple* computer?
How to make and use an USB stick with GParted that will boot on a Mac?
How to create a Mac bootable gparted or Parted Magic thumb drive?
Since playing with around with DiskUtilities options it seems to be the case that it is a bit buggy. Switching around between various partitions and filetypes related to FAT/FAT32 results in DiskUtility not recognising its own products, with different options greyed out at different times. Looks to me as if some flag or structural anomaly that DiskUtility introduces keeps this from working, like I might have to really wipe down the stick. Alas, neither wipefs nor gparted did that successfully and I do not know what to look for here.
First find USB key disk number from
diskutil list. This method will destroy everything on the disk you copy to so take care. Mine was
/dev/disk3and looked like this:
Make sure no volumes are mounted, then use
ddto copy the unmounted ISO file to your device (do not append a partition number, so do not use something like
This worked for me with the NVMe SSD-970 EVO Firmware ISO 2B2QEXE7 from here.
diskutil listnow looks like this:
and in Disk Utility like this:
Reboot holding ⌥ and pick the yellow boot option on USB key called "Windows". It should load the firmware utility fine (it did for me on 2015 MBP).
Afterwards, as mentioned in Arch Wiki the ISO signature needs deleting.
As wipefs doesn't exist in macOS, this can be achieved by using gdisk to write a new gpt partition table. Simply reformatting in Disk Utility didn't work to recover use of the USB resulting in lots of "Operation not permitted" errors.