Upgrade the firmware of Crucial MX500 SSD
I was looking to upgrade the firmware of a MX500 SDD from M3CR043 to M3CR046
Crucial only provide update software for Windows. If you are using another system like Linux or macOS, you will have to create a bootable media from the ISO file provided by Crucrial (M3CR046_ISO.iso for this specific firmware version which can be downloaded from https://www.crucial.com/support/ssd-support/mx500-support (the ISO is inside the zip file))
I did not tried to burn the ISO to a CD (who still have CD-ROM in 2024 ? Not me.) may be it would have work directly. I took the option to create a bootable USB flash drive. It SHOULD be simple and easy. It was not (at least for me..)
I first created an USB key with belena etcher (it’s easy to use, work great and is multi plateform) but when I started my computer on the key, I got a “grub >” prompt
I then followed crucial documentation on how to create a bootable usb flash drive line by line, including using the Windows software they recommend to create the usb key. Guess what, it was not booting better.
I lost a bit of time to try many things I’ll not detail here but like another USB key, EFI vs MBR boot, some adjustment in the content of the USB key, etc…
So I decided to manualy load the linux os that is on the USB key with grub commands. This sounds a bit scary as if the software is not run correctly it’s unsure what can happen to the disk but:
- I was ok to lose data on this disk as it was part of a RAID 5 system and I have backup
- I deeply looked the content of the USB key (if you are curious, decompress corepure64.gz) and was confident of what I was going to do
- I made boot test without any disk connected
So inside the key, the boot/isolinux/isolinux.cfg has the following content
DEFAULT tc
PROMPT 0
TIMEOUT 0
LABEL tc
KERNEL /boot/vmlinuz64
INITRD /boot/corepure64.gz
APPEND libata.allow_tpm=1 quiet base loglevel=3 waitusb=10 superuser mse-iso rssd-fw-update rssd-fwdir=/opt/firmware
If you never used grub, it difficult to understand, but if you are a bit familiar with grub you see that the last 3 lines give us the information to give to grub. What we miss is the identifier of the USB key to boot on.
If you run ls
in grub you will see an output like
grub> ls
(hd0)
If you SSD is connected (which is needed at some point if you want to update the firmware) you will see more then 1 entry when doing the ls
command. To know which “hd” is the right to boot on run ls (hd0)/
on each entry you see, so that may also be ls (hd1)/
, ls (hd1,1)/
, ls (hd0,msdos1)/,
etc. Most likely if you see an entry like (hdX,…) (entry with a “,”) this is likely not the good entry. The output of the right entry should look like this
grub> ls (hd0)/
boot/ efi/
I highly recommend to first try to boot without any disk inside your computer. This way you will only see the USB key when running ls
and you will be sure to run ls (hd...)/
on the USB key. When your SDD will be in the computer (hd0) which was likely your USB key before may now be your SDD and the USB key may be (hd1) or something else. But by running ls (hd...)
on all entry and by comparing the result with the result when only the USB key was connected, you are sure to identify easily the right (hd…).
To boot, enter the following line. Replace hd0 by the right hdx for you. Of course do not type “grub >”
grub> linux (hd0)/boot/vmlinuz64 root=ram1 libata.allow_tpm=1 base loglevel=3 waitusb=10 superuser mse-iso rssd-fw-update rssd-fwdir=/opt/firmware
grub> initrd (hd0)/boot/corepure64.gz
grub> boot
If it doesn’t boot correctly, you may try to change root=ram1 by another ram number like root=ram0, root=ram2, etc..
Recent Comments