A few vendors have been testing the NVMe firmware update code, and so far so good; soon we should have three more storage vendors moving firmware to stable. A couple of vendors also wanted to use the
hdparm binary to update SATA hardware that’s not using the NVMe specification. A quick recap of the difference:
- NVMe: Faster, more expensive controller, one cut-out in the M.2 PCB header
- SATA: Slower, less expensive to implement, standard SATA or PATA connector, or two cut-outs in the M.2 PCB header
I’ve just merged a plugin developed with the donation of hardware and support of Star Labs. Any ATA-compatible drive (even DVD drives) supporting
ATA_OP_DOWNLOAD_MICROCODE should be updatable using this new plugin, but you need to verify the
0xe) before attempting an update to prevent data loss. Rather than calling into
hdparm and screenscraping the output, we actually set up the
sg_io_hdr_t structure and CDB buffer in the fwupd plugin to ensure it always works reliably without any additional dependencies. We only use two ATA commands and we can share a lot of the infrastructure with other plugins. For nearly all protocols, on nearly all devices, updating firmware is really a very similar affair.
There should soon be firmware on the LVFS that updates the StarDrive in the Star Lite laptop. I opened up the Star Lite today to swap the M.2 SSD to one with an old version and was amazed to find that it’s 80% battery inside; it reminded me of the inside of an iPad. Really impressive engineering considering the performance.
If any vendor is interested in deploying updates on the LVFS using the new
ata plugin please let me know. Comments welcome.