# Update any crucial ssd firmware from linux/grub

> crucial-fw.pl: a Perl script that generates a GRUB menu to update the firmware of any Crucial SSD from Linux, without burning a boot CD.

- URL: https://guillaumeplayground.net/update-crucial-ssd-firmware/
- Author: Guillaume (https://guillaumeplayground.net/about/)
- Published: 2016-02-28
- Updated: 2019-05-26
- Section: Computing & hacking
- Topics: debian, firmware, ubuntu, crucial, grub, ssd
- Source: Guillaume playground

May 26, 2019: Updated version here:  
**[Github](https://github.com/guillaumef/crucial-ssd-firmware-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](https://guillaumeplayground.net/wp-content/uploads/2016/02/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](http://www.crucial.com/usa/en/support-ssd-firmware).  
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).
