May 26, 2019: Updated version here:
Github
Crucial is selling many good ssds, and frequently releases new firmware.
When you have to manage many version of these ssds, it is really time consuming to keep them up-to-date.
‘crucial-fw.pl’ is a little script to generate a single grub config for any crucial ssd firmware upgrade.
It’s a perl script.
LWP::UserAgent File::Copy Archive::Extract (debian like: apt-get install libarchive-extract-perl) Archive::Zip (debian like: apt-get install libarchive-zip-perl)
‘crucial-fw.pl’ generates a file for grub (default is /etc/grub.d/45_crucial-fw).
Depending on the iso file, it will switch between two loading mode and grab the isolinux.cfg if needed.
This configuration is creating a submenu entry for grub containing one menu entry for each ssd reference specified in the configuration.
Your linux kernel must be able to mount a loopback iso file (loop and isofs modules). Any vanilla kernel is.
$ sudo ./crucial-fw.pl Target: BX100 (BX100_UPDATE_MU02_BOOTABLE.zip, BX100_UPDATE_MU02_BOOTABLE.iso) Uncompressing.. BX100_UPDATE_MU02_BOOTABLE.iso done Moving to BX100.iso done Mounting done Grub -> mode initrd done Unmounting done Target: BX200 (BX200_UPDATE_MU02_BOOTABLE.zip, BX200_UPDATE_MU02_BOOTABLE.iso) Uncompressing.. BX200_UPDATE_MU02_BOOTABLE.iso done Moving to BX200.iso done Mounting done Grub -> mode initrd done Unmounting done Target: C300 (hp-crucial-5or6-to-7-05.zip, hp-crucial-5or6-to-7-05.iso) Uncompressing.. hp-crucial-5or6-to-7-05.iso done Moving to C300.iso done Mounting done Grub -> mode linux16 done done Unmounting done Target: M4 (crucial-m4-070h-07-00.zip, crucial-m4-070h-07-00.iso) Uncompressing.. crucial-m4-070h-07-00.iso done Moving to M4.iso done Mounting done Grub -> mode linux16 done done Unmounting done Target: M500 (crucial-m500.mu05-01-S0-tcg.zip, crucial-m500.mu05-01-S0-tcg.iso) Uncompressing.. crucial-m500.mu05-01-S0-tcg.iso done Moving to M500.iso done Mounting done Grub -> mode linux16 done done Unmounting done Target: M550 (m550-sed-update-mu02-bootable.zip, m550-sed-update-mu02-bootable.iso) Uncompressing.. M550_SED_UPDATE_MU02_BOOTABLE.iso done Moving to M550.iso done Mounting done Grub -> mode initrd done Unmounting done Target: MX100 (MX100_MU02_BOOTABLE_ALL_CAP.zip, MX100_MU02_BOOTABLE_ALL_CAP.iso) Uncompressing.. MX100_MU02_BOOTABLE_ALL_CAP.iso done Moving to MX100.iso done Mounting done Grub -> mode initrd done Unmounting done Target: MX200 (MX200_MU03_BOOTABLE.zip, MX200_MU03_BOOTABLE.iso) Uncompressing.. MX200_MU03_BOOTABLE.iso done Moving to MX200.iso done Mounting done Grub -> mode initrd done Unmounting done Generated in: /etc/grub.d/45_crucial-fw ISO in: /boot/crucial-fw You need to run: 'update-grub2' and reboot to apply one FW now
The configuration file is named ‘crucial-fw.cfg’, content:
BX200 http://www.crucial.com/wcsstore/CrucialSAS/firmware/BX200/MU02/BX200_UPDATE_MU02_BOOTABLE.zip BX100 http://www.crucial.com/wcsstore/CrucialSAS/firmware/BX100/MU02/BX100_UPDATE_MU02_BOOTABLE.zip M550 http://www.crucial.com/wcsstore/CrucialSAS/firmware/M550/MU02/m550-sed-update-mu02-bootable.zip M500 http://www.crucial.com/wcsstore/CrucialSAS/firmware/M500/MU05/crucial-m500.mu05-01-S0-tcg.zip MX200 http://www.crucial.com/wcsstore/CrucialSAS/firmware/mx200/MU03/MX200_MU03_BOOTABLE.zip MX100 http://www.crucial.com/wcsstore/CrucialSAS/firmware/MX100/MU02/MX100_MU02_BOOTABLE_ALL_CAP.zip M4 http://www.crucial.com/wcsstore/CrucialSAS/firmware/m4/070H/crucial-m4-070h-07-00.zip C300 http://www.crucial.com/wcsstore/CrucialSAS/firmware/C300/0007/hp-crucial-5or6-to-7-05.zip
You can comment anything you don’t need.
If Crucial is releasing a new firmware, you will have to refresh the url.
Crucial firmware are linked here: crucial.
The files we are interested in are “Manual Boot File for Windows and Mac”.
Since these isos are using isolinux … an unfair nonsense.
Why didn’t they add “and Linux and BSD and everything x86”? or simply put “for PC and Mac” (another possible nonsense since a Mac is a classic x86 hardware platform).
This is not working
error: no such device: /boot/crucial-fw/M4.iso
error: file ‘/boot/crucial-fw/M4.iso’ not found
error: disk ‘loop’ not found
error: you need to load the kernel first
Hi guillaume,
Thanks for your post, the script run perfectly on ArchLinux and I upgrade MX200 and M4 mSata firmware successfully.
I also rewrite the script to python version and put it on GitHub with Unlicense as you provide this script in public domain.
GitHub: https://github.com/grapherd/crucial-ssd-firmware-grub
Blog post: https://blog.louie.lu/2017/01/20/於-linux-grub2-環境下升級-crucial-ssd-firmware
Again, thanks for this awesome post, it helps a lot.
Thank you Guillaume, this is excellent!
I just used it with my Ubuntu Fossa 🙂