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 TransferMode
(e.g. 0x3
, 0x7
or 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.
Richard,
Can’t stress how happy I am with your work. For the first time my Dell XPS feels on Linux like a first-class citizen because of your work.
Thanks!
Did Samsung sign up on LVFS? looking forward to getting my linux-only workstation SSD’s firmware updated – both NVME 960Pro and SATA 860Evo SSDs
I can’t say! :)