Michal Čihař - Intel SSD firmware update on Linux

Intel SSD firmware update on Linux

For quite some time, I've suffered slow boot - it had useless 10 seconds delay while initializing SATA with SSD disk:

[    2.761669] ata1: SATA max UDMA/133 abar m2048@0xf2528000 port 0xf2528100 irq 44
[    8.118202] ata1: link is slow to respond, please be patient (ready=0)
[   12.764701] ata1: COMRESET failed (errno=-16)
[   13.084612] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)

After some googling, I came to conclusion it is bug in SSD firmware and looked for update. Release notes documented some fixes to slow boot, what seemed to be related. The only issue was that the firmware update is available only as ISO image. And guess what I have no CDROM (actually I have no clue for what I would have used it).

Fortunately the update is doable with just grub and syslinux.

First, download ISO provided by Intel and extract eltorito boot image from it using geteltorito script and copy it to /boot/. Then get yourself syslinux and copy memdisk to /boot/.

Now you just need to edit grub configuration to include following lines (you might need to adjust it according to your partition setup):

menuentry "SSD Update" {
        insmod part_msdos
        insmod ext2
        set root='(hd0,msdos1)'
        linux16 /memdisk
        initrd16 /ssd-fw.img
}

Now you can reboot and choose SSD Update from the grub menu and perform update!

After update the slowest part of boot process is me entering LUKS password, but I'm afraid this is not easily fixable :-).

PS: The difference you can see after update:

[    2.797551] ata1: SATA max UDMA/133 abar m2048@0xf2528000 port 0xf2528100 irq 44
[    3.115694] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)

Comments

wrote on July 26, 2012, 9:51 p.m.

Thank you, this was very timely and useful.

I've an Intel X25-M G2 SSD, which was causing a 10 second pause on my ThinkPad X220 on every resume from suspend, followed by some weird ATA error. A firmware update fixed it.

I've tried booting Lenovo BIOS upgrade ISO images using syslinux and memdisk before, but failed, because I didn't know the geteltorito trick. Your instructions worked perfectly (after some adjustment of paths, or course).