Generic SCSI & RAID Devices Driver Download



  1. Scsi Controller Driver
  2. Scsi Disk Device
RAID

Generic SCSI lets a virtual machine run any SCSI device that is supported by the guest operating system in the virtual machine. Generic SCSI gives the guest operating system direct access to SCSI devices connected to the host, such as scanners and tape drives. Generic SCSI on a Windows Host Operating System. For practical purposes a 'SCSI device' in Linux is any device that uses the Linux SCSI subsystem and this often includes SATA disks. From about Linux kernel 2.6.24, there is an alternate SCSI pass-through driver called 'bsg' (block SCSI generic driver).

-->

Updating firmware for NVMe storage drives has relied on hardware vendors to create firmware update applications which utilize specific firmware update IOCTLs introduced in Windows 10. These applications are typically distributed outside of the Windows Update (WU) pipeline. End users need to determine which storage disks are in their device, obtain the correct storage drive firmware utility from a manufacturer's website, and manually download and install the updates.

Additionally, devices running Windows 10 in S mode, are in an enhanced security configuration which only allows users to run Microsoft-verified applications, therefore vendor utilities may fail to update drive firmware. This manual process results in low adoption of firmware updates, increases support costs and customer satisfaction issues for hardware manufacturers.

Note

Windows 10 in S mode works exclusively with apps from the Microsoft Store within Windows and accessories that are compatible with Windows 10 in S mode. A one-way switch out of S mode is available. Learn more at windows.com/SmodeFAQ.

Updating device firmware using Windows Update (WU) service using a driver-based solution is available to hardware vendors and requires them to either add firmware update logic and payload to an existing function driver or provide a separate firmware update driver and package. This results in duplicative work across hardware partners and increases the overall servicing costs of storage drives. For more information about universal drivers, see Getting Started with Universal Windows drivers.

Utilizing the Windows 10, version 2004 (OS build 19041.488 or higher) it is possible to update NVMe drive firmware using a Microsoft-supplied driver and a hardware vendor supplied firmware update package. This solution can be distributed via Windows Update to targeted drives and devices using Computer Hardware IDs (CHIDs).

Warning

Firmware updates are a potentially risky maintenance operation and should only be distributed after thorough testing of the new firmware image. It is possible that new firmware on unsupported hardware could negatively affect reliability and stability, or even cause data loss.

Drive compatibility

To use Windows 10 to update drive firmware, you must have supported drives. To ensure common device behavior, Windows 10 specifies optional Hardware Lab Kit (HLK) requirements for NVMe devices. These requirements outline which commands a NVMe storage drive must support to be firmware-updatable using the new Windows Update based solution.

Contact your solution vendor for information about whether your hardware supports Windows updating the drive firmware.

Windows device COMPAT requirements for NVMe: Device.Storage.ControllerDrive.NVMe - sections 5.7 and 5.8

Device.Storage.ControllerDrive.NVMe.BasicFunction

The device must have at least one upgradeable firmware slot.

5.7 Firmware Commit

  • Activation of a firmware image should be done without requiring a power cycle of the device.

  • The activation process is expected to be achieved via a host-initiated reset, as described in section 8.1 of spec version 1.2a.

  • Windows will utilize commit actions 001b or 010b when issuing a firmware commit command.

  • Expected completion values for successful activation without a power cycle are 00h (generic success), 10h, or 11h.

  • If 0Bh is returned as completion status, Windows will inform the user to perform a power cycle of the device. This is highly discouraged, as it prevents updating of firmware at OS runtime and causes significant workload disruption.

5.8 Firmware Image Download

  • The device must not fail I/O during the download phase and shall continue serving I/O.

For additional details, see the Windows device COMPAT requirements for NVMe: Device.Storage.ControllerDrive.NVMe - sections 5.7 and 5.8.

Note

The above link requires a valid account on the Microsoft Collaborate portal.

SCSI identifiers for NVMe storage disk drives

Starting with Windows 10, version 2004 (OS build 19041.488 or higher), two new identifiers are available for NVMe storage disk drives using drivers which support the STOR_RICH_DEVICE_DESCRIPTION structure:

SCSIt*v(8)p(40)

Where:

  • t* is a device type code of variable length.
  • v(8) is an 8-character vendor identifier.
  • p(40) is a 40-character product identifier

SCSIt*v(8)p(40)r(8)

Where:

  • t* is a device type code of variable length.
  • v(8) is an 8-character vendor identifier.
  • p(40) is a 40-character product identifier
  • r(8) is an 8-character revision level value.

The SCSIt*v(8)p(40)r(80 identifier provides a full product name (aligned with the NVME 1.4 spec) and allows creation of a software component (SWC) node for firmware updates for NVME drives matching this name (up to 40 characters and 8 character firmware revision).

For more information, see Identifiers for SCSI Devices and STOR_RICH_DEVICE_DESCRIPTION

Storage Firmware Update (SFU) solution details

In the following diagram, Windows 10 provides both the function driver (stornvme.sys) and firmware update driver (storfwupdate.dll). To utilize the Microsoft supplied driver to update NVMe drive firmware, two separate driver submissions are required.

Package 1 - Create identity for drive firmware update

Typically, this package contains the following:

  • Extension INF to create software device node to act as the independently targeted hardware for the firmware update package

  • Driver catalog

Submit your extension INF package as a separate driver submission.

Generic SCSI & RAID Devices Driver Download

Many device types, however, do not allow a single physical device to enumerate more than one device node. In this case, use an extension INF that specifies the AddComponent directive to create a device node that can be targeted by Windows Update and install the firmware update driver on it. The following snippet from an INF file shows how you can do this:

In the INF sample above, ComponentIDs = StorageIHVabcd-firmware-update indicates that the child device will have a hardware ID of SWCStorageIHVabcd-firmware-update. When installed, this INF creates the following device hierarchy:

A sample extension INF to create a new identity for drive firmware updates is provided below. Since the SCSIDiskNVMe____StorageIHVabcd hardware may not be unique across hardware manufacturers, the extension INF must utilize CHID targeting for distribution.

Package 2 - Drive firmware update package

Typically, this package contains the following:

  • Universal driver INF of class firmware

  • Firmware update payload binary

  • Driver catalog

Submit your firmware package as a separate driver submission.

The drive firmware update package INF targets the new node SWCStorageIHVabcd-firmwareupdate and invokes the Windows 10 storage firmware update driver. For a software-enumerated component device to function, its parent must be started. In order to use StorFwUpdate drive, developers should use the Include/Needs INF directives in the DDInstall section for each possible [DDInstall.*] section to the corresponding [StorFwUpdate.*] sections as shown below, regardless of whether the INF specifies any directives for that section or not:

For more information, see Using a Component INF file. A sample NVMe drive firmware update INF file is provided below. Since the SWCStorageIHVabcd-firmwareupdate software identity may not be unique across hardware manufacturers, the INF must utilize CHID targeting for Windows Update distribution.

The StorFwUpdate component does not perform any validation (signature verification or decryption) of the firmware binary payload. If this level of feature is required then hardware partners can write their own storage firmware update driver.

Storage drive firmware update example

Since both INFs require CHIDs for Windows Update distribution, hardware partners can validate the solution locally using PNPUTIL.EXE as shown below.

Requirements

  • Windows 10, Version 2004 (OS build 19041.488 or higher)

  • Device with NVMe storage drive using inbox stornvme.sys driver

  • NVMe drive firmware binary

  • Properly authored INF files

View current NVMe disk firmware version

To view the current NVMe disk firmware version:

  1. Open a Powershell window as an administrator.

  2. Type Get-PhysicalDisk | Get-StorageFirmwareInformation to view the current NVMe disk firmware version.

Note the current ActiveSlotNumber and FirmwareVersionInSlot values.

For more information, see Get-StorageFirmwareInformation.

Install the extension INF to create new software hardware identity

  1. Move to the directory on your system that contains the driver extension package INF file. For example, type cd .signed-DiskExtnPackage.

  2. Verify that the extension INF file contains the information for the drives you are updating. See Disk extension INF file in this topic for an example extension INF.

  3. Install the extension INF with the Microsoft PnP utility. For example, in an administrator command prompt, type pnputil /add-driver .OEMDiskExtnPackage.inf /install. As the new software node is created as a child of a boot critical device, a reboot is required to take effect.

View the new software component (SWC) node

To view the new SWC node and hardware ID:

  1. From the Windows 10 Start menu, open Control Panel, then open Device Manager.

  2. In Device Manager, select Disk drives, then expand the node and select the disk drive you have updated.

  3. Once you have selected the drive you have updated, in the Device ManagerView menu, select Devices by connection.

  4. Click on the selected drive node, then click to expand. You will see a child Generic software component under the drive node.

  5. Right-click on the Generic software component and click Properties.

  6. In the Properties dialog window, select the Details tab, then select Hardware Ids from the Property drop down list view the Hardware ID for the Generic software component on the drive node.

  7. The SWC* Hardware Id should match the one specified in the Extension INF.

View and install the NVMe disk firmware update

  1. Open a Powershell window as an administrator.

  2. Move to the directory on your system that contains the NVMe disk firmware update INF file. For example, type cd .signed-ihv-firmware.

  3. Verify that the disk firmware update INF contains the information for the drives you are updating. See the Disk Firmware INF file in this topic for an example disk firmware update INF.

  4. Install the disk firmware update INF with the Microsoft PnP utility. For example, in an administrator command prompt, type pnputil /add-driver .StorFwUpdateIHV.inf /install.

  5. Open a Powershell window as an administrator.

  6. Type Get-PhysicalDisk | Get-StorageFirmwareInformation to view the updated NVMe disk firmware information.

View the updated NVMe disk firmware information in the ActiveSlotNumber and FirmwareVersionInSlot values.

For more information, see Get-StorageFirmwareInformation.

Scsi Controller Driver

SCSI

Deploy the extension INF and firmware packages through Windows Update

First, validate the package deployment via Windows Update using the Publishing for test distribution guidance.

Next, deploy the package through Windows Update using appropriate CHIDs.

For information about deployment, see Windows 10 Driver Publishing Workflow (DOCX download).

Disk extension INF sample

The following is an example extension INF file:

Disk firmware INF sample

The following is an example disk firmware INF file:

Scsi Disk Device

Additional resources