microsoft / CFU

Component Firmware Update
MIT License
59 stars 27 forks source link

How to apply CFU for PCIe/NVMe SSD device - From Lenovo #41

Closed huagj closed 1 year ago

huagj commented 5 years ago

How can we apply this CFU for PCIe/NVMe SSD device? Please give us some advice or reference code for this design, we check current CFU just are for the HID device but there have no define for storage devices,

Best regards, Bruce hua from Lenovo

SKhynixAE commented 5 years ago

Question 1. I think that this CFU concept is probably not for the SSD or Disk Drives. Does this concept is intended to apply to the SSD (Disk Drive) too?

Question 2. If the CFU is applied to Disk Drives as well. Should the SSD (or Disk Drive) appear both at the Disk Drives and Human Interface Devices in Device Manager?

Best regards, SKhynix SSD AE team

eliyasy commented 5 years ago

For disk drives, Windows provides inband mechanism - through the storage stack - to update firmware with ioctls documented here is MSDN - https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/content/ntddstor/ni-ntddstor-ioctl_storage_firmware_download. This is the preferred mechanism.

CFU expects the device to appear as a HID device. Currently there is no OS support to make a PCIe device appear as a HID device. You will have to write a HID-PCI minidriver to make a PCIe device appear as a device.

huagj commented 5 years ago

As you know we need a driver that can update device FW in windows OS time through WU, Can we develop one HID-Storage driver that can receive FW image by HID protocol CMD and then mapping those CMD to storage IOCTOL FW CMD? For current CFU CMD that can mapping to according HID CMD, Can this CFU CMD map to according storage IOCTOL CMD? I think it is not enough that CFU only can support HID device, as other kinds of components need update FW more frequently,

Jim-CJ-Lin commented 2 years ago

Hi, is there an update on this issue? I'm also especially interested in this issue. thanks.

samtertzakian commented 1 year ago

You can update firmware on NVME devices without writing a driver. You just need to supply two .infs and the firmware binary image. (One is an extension .inf and the second is the .inf for the firmware image.) To learn how to do this, please see:

https://learn.microsoft.com/en-us/windows-hardware/drivers/sfu/storage-firmware-update-driver

Jim-CJ-Lin commented 1 year ago

thank you for your reply. I did complete the side projects under SFU

samtertzakian commented 1 year ago

Great to hear. Sorry for delayed response.