Update any crucial ssd firmware from linux/grub

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.tar.gz

‘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).

Posted in debian, firmware, ubuntu Tagged with: , , ,
2 comments on “Update any crucial ssd firmware from linux/grub
  1. Igor says:

    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

  2. Louie Lu says:

    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.

2 Pings/Trackbacks for "Update any crucial ssd firmware from linux/grub"
  1. […] 於 2016/2/28 發表的 Update any crucial ssd firmware from linux/grub 找到一份以 perl 寫成的 script,其作法非常簡潔。以 root 權限執行 script […]

  2. […] 於 2016/2/28 發表的 Update any crucial ssd firmware from linux/grub 找到一份以 perl 寫成的 script,其作法非常簡潔。以 root 權限執行 script […]

Leave a Reply

Your email address will not be published. Required fields are marked *

*