Jump to content











Photo
- - - - -

Community OFA NVMe 1.5 Storport Miniport for Windows Server 2003 R2 SP2

nvme ofa storport 2003

  • Please log in to reply
327 replies to this topic

#1 schtrom

schtrom

    Newbie

  • Members
  • 20 posts
  •  
    Germany

Posted 13 July 2018 - 07:33 AM

Download-Link: https://sourceforge....ws-2003-server/

 

The following driver is a patched version of the original Community OFA NVMe 1.5 Storport
Miniport driver. You should install the latest storport hotfix KB943545 from Microsoft.
This hotfix contains driver version 5.2.3790.4173 of storport.sys. After this hotfix is
applied you can install the NVMe driver as usual. My tests have been done with a Samsung
M2 SSD Evo 960 500 GB. See the SourceForge project screenshot for performance.

Greets
Kai Schtrom


  • Dietmar likes this

#2 Dietmar

Dietmar

    Frequent Member

  • Advanced user
  • 243 posts
  •  
    Afghanistan

Posted 13 July 2018 - 09:48 AM

Hello Kai,

thank you very much for your interesting answer!

I am not a programmer, so my possibilities are very limited.

I was just happy, that I found out, that some of the new extend functions

are not implemented in new storport.sys and because of that nvme.sys can not work

on Win Server 2003, because via OFA nvme.sys the storport.sys driver is asked more questions than can answer.

Most questions from OFA nvme.sys can be answered via storport.sys from Vista SP2, I find out also.

 

Your patched nvme.sys works now on Winserver 2003? From which operating system is the picture?

Both versions, 32 bit and 64 bit and can this nvme.sys can be used for XP 32 bit?

Your idea with IDA (I have also) is nice and so I think it can work,

have a nice day

Dietmar

 

PS: How do you change nvme.sys? Via assembler code?

 

EDIT: Here is the link to file from DELL, where you still can found the wished KB943545

          for storport.sys  5.2.3790.4173

          in many different languages

 

http://www.helpjet.n...32-extract.html



#3 Dietmar

Dietmar

    Frequent Member

  • Advanced user
  • 243 posts
  •  
    Afghanistan

Posted 13 July 2018 - 12:06 PM

Hi Kai,

I tested with Winserver 2003 32 bit and XP SP3 32 bit.

I changed the storport.sys against your recommend version.

During install nvme.sys for Toshiba RD400 the blue LED flashed one time,

meaning, that the device is recogniced on XP.

But then hangs, also on Win Server 2003.

In the binaries folder, are there the checked or the free binaries?

I heard, that the free binaries may work in more places than

the checked one.

Have a nice day,

Dietmar

 

EDIT: ON SAMSUNG 960 Pro nvme your driver works :D  :D  :D  on XP SP3 32 bit

 

 

                                                              What a great work!!!

nice to hear from you

DietmarnvmeXP.jpg



#4 Dietmar

Dietmar

    Frequent Member

  • Advanced user
  • 243 posts
  •  
    Afghanistan

Posted 13 July 2018 - 02:14 PM

Hi all,

boottime for full XP SP3 from my nvme Samsung 960 pro is less than 0.5 sec:)).

Whole diskcheck (500 GB) in about 1 sec.

Easy to build with nlite an install CD for XP and stortport.sys and diskdump.sys

and the textmode driver nvme.sys, so you can install it direct to a nvme flash disk.

Here I make a sector by sector copy from a working XP with AOMEI (system copy and gpart 31 do not work),

Dietmar

 

PS: Toshiba RD 400 still hangs.



#5 Dietmar

Dietmar

    Frequent Member

  • Advanced user
  • 243 posts
  •  
    Afghanistan

Posted 13 July 2018 - 10:02 PM

About the Toshiba RD400:

nvme.sys started but I think,

with the harddisknumeration something is wrong:

 

0: kd> !DevNode 0x8840ccd8
DevNode 0x8840ccd8 for PDO 0x8acb5438
  Parent 0x8acbf738   Sibling 0000000000   Child 0000000000
  InstancePath is "SCSI\Disk&Ven_NVMe&Prod_TOSHIBA-RD400&Rev_4102\5&7dccca0&0&000000"
  ServiceName is "disk"
  State = DeviceNodeResourcesAssigned (0x304)
  Previous State = DeviceNodeDriversAdded (0x303)
  StateHistory[02] = DeviceNodeDriversAdded (0x303)
  StateHistory[01] = DeviceNodeInitialized (0x302)
  StateHistory[00] = DeviceNodeUninitialized (0x301)
  StateHistory[19] = Unknown State (0x0)
  StateHistory[18] = Unknown State (0x0)
  StateHistory[17] = Unknown State (0x0)
  StateHistory[16] = Unknown State (0x0)
  StateHistory[15] = Unknown State (0x0)
  StateHistory[14] = Unknown State (0x0)
  StateHistory[13] = Unknown State (0x0)
  StateHistory[12] = Unknown State (0x0)
  StateHistory[11] = Unknown State (0x0)
  StateHistory[10] = Unknown State (0x0)
  StateHistory[09] = Unknown State (0x0)
  StateHistory[08] = Unknown State (0x0)
  StateHistory[07] = Unknown State (0x0)
  StateHistory[06] = Unknown State (0x0)
  StateHistory[05] = Unknown State (0x0)
  StateHistory[04] = Unknown State (0x0)
  StateHistory[03] = Unknown State (0x0)
  Flags (0x00000130)  DNF_ENUMERATED, DNF_IDS_QUERIED,
                      DNF_NO_RESOURCE_REQUIRED
  CapabilityFlags (0x00000190)  Removable, SilentInstall,
                                RawDeviceOK

 

This means, that the Toshiba nvme disk is not correct enumerated,

here is the debug print for the Samsung 960pro, which works

 

0: kd> !DevNode 0x8ad422e8
DevNode 0x8ad422e8 for PDO 0x8ad42640
  Parent 0x8ad48c38   Sibling 0000000000   Child 0000000000
  InstancePath is "SCSI\Disk&Ven_NVMe&Prod_Samsung_SSD_960&Rev_CXP7\5&301893a9&1&000000"
  ServiceName is "disk"
  State = DeviceNodeStarted (0x308)
  Previous State = DeviceNodeEnumerateCompletion (0x30d)
  StateHistory[15] = DeviceNodeEnumerateCompletion (0x30d)
  StateHistory[14] = DeviceNodeStarted (0x308)
  StateHistory[13] = DeviceNodeEnumerateCompletion (0x30d)
  StateHistory[12] = DeviceNodeStarted (0x308)
  StateHistory[11] = DeviceNodeEnumerateCompletion (0x30d)
  StateHistory[10] = DeviceNodeStarted (0x308)
  StateHistory[09] = DeviceNodeEnumerateCompletion (0x30d)
  StateHistory[08] = DeviceNodeStarted (0x308)
  StateHistory[07] = DeviceNodeEnumerateCompletion (0x30d)
  StateHistory[06] = DeviceNodeStarted (0x308)
  StateHistory[05] = DeviceNodeStartPostWork (0x307)
  StateHistory[04] = DeviceNodeStartCompletion (0x306)
  StateHistory[03] = DeviceNodeResourcesAssigned (0x304)
  StateHistory[02] = DeviceNodeDriversAdded (0x303)
  StateHistory[01] = DeviceNodeInitialized (0x302)
  StateHistory[00] = DeviceNodeUninitialized (0x301)
  StateHistory[19] = Unknown State (0x0)
  StateHistory[18] = Unknown State (0x0)
  StateHistory[17] = Unknown State (0x0)
  StateHistory[16] = Unknown State (0x0)
  Flags (0x00000130)  DNF_ENUMERATED, DNF_IDS_QUERIED,
                      DNF_NO_RESOURCE_REQUIRED
  CapabilityFlags (0x00000190)  Removable, SilentInstall,
                                RawDeviceOK
 

 

 

Any ideas,

have a nice day

Dietmar



#6 schtrom

schtrom

    Newbie

  • Members
  • 20 posts
  •  
    Germany

Posted 14 July 2018 - 05:29 AM

 

Your patched nvme.sys works now on Winserver 2003? From which operating system is the picture?
Both versions, 32 bit and 64 bit and can this nvme.sys can be used for XP 32 bit?

 

My test are done on Windows Server 2003 R2 SP2 x86. I think the driver should also be usable
on Windows XP x86, but I never tested this. If storport runs on XP I think it should work.

 

 

How do you change nvme.sys? Via assembler code?

 

I recompiled the original OFA source code and added the missing storport extended functions
in my own code. I used the OFA version 1.5 for this in case any bugs has been addressed in
the newer code. You can download this code with SVN.

 

A list of the storport hotfixes can be found here:
http://www.jhousecon...sp2-hotfixes-23

The link in this article is not valid any more:
http://support.microsoft.com/kb/943545

The old article can be found here:
https://web.archive....3545&kbln=en-us

I used the waybackmachine to get the real Microsoft download link from the site above:
http://support.micro...3545&kbln=en-us

 

 

In the binaries folder, are there the checked or the free binaries?

 

I only release the free binaries for performance reasons. The checked ones can be compiled
easily. Simply follow the steps in the ReadMe.txt.

 

 

Toshiba RD400

 

The following are pure speculation. It could be that the "NVM Express Revision 1.1b (NVMe)"
of the Toshiba does not cover some commands issued to the drive. In your case I would install
Windows 10 x86 and the use the original Windows 10 OFA Community driver to see if the drive
works with the original driver. If it does, there is something wrong in my patched code, if
it does not work, the OFA code cannot be used with the Toshiba or it is simply missing a needed
command. You can obtain the original binaries of the OFA driver by downloading the SVN repo:

 

https://svn.openfabr...vnrepo/nvmewin/

 

Have fun!

Kai



#7 Dietmar

Dietmar

    Frequent Member

  • Advanced user
  • 243 posts
  •  
    Afghanistan

Posted 14 July 2018 - 09:50 AM

Hi Kai,

I tested the original OFA version 1.5 driver on Win7 32 bit

and your driver also. Both do not work on nvme Toshiba RD400.

But the original OFA version 1.3 driver works on this Win7 with RD400.

This is interesting: So it is the fault of the source code

for the OFA 1.5 driver, that these problems appear,

have a nice day

Dietmar



#8 Dietmar

Dietmar

    Frequent Member

  • Advanced user
  • 243 posts
  •  
    Afghanistan

Posted 14 July 2018 - 10:05 AM

I did some more tests:

On Win 7  32 bit, the original OFA 1.5 nvme.sys works on Samsung 950 pro 500 GB.

Also the patched nvme.sys from Kai.

 

But on Windows XP SP3 32 bit, the patched nvme.sys also do not enumerate this Samsung 950 pro.

 

I think, the source code from OFA version 1.3 is the better choice, just patched,

 

have a nice day

Dietmar



#9 Dietmar

Dietmar

    Frequent Member

  • Advanced user
  • 243 posts
  •  
    Afghanistan

Posted 14 July 2018 - 11:07 AM

Intel 750 nvme works on XP SP3 also.

Here nice pic from Samsung 970pro 1TB on XP SP3samsung970pro1_TB.jpg



#10 Fernando1

Fernando1

    Newbie

  • Members
  • 14 posts
  •  
    Germany

Posted 14 July 2018 - 12:29 PM

Hello Kai,

 

congratulations for having compiled your brandnew OFA NVMe drivers v1.5.1200.0!

I just have tested the 64bit variant with my Intel Z170 chipset system running Win10 x64 v1803 on a 250 GB Samsung 970 EVO SSD and am impressed by its performance (much better than all other NVMe drivers I had tested before).

Here are the benchmark results I got with your NVMe driver:

Z170-NVMe-970EVO-OFA1512000.png

 

As owner of the Win-RAID Forum (>Link<) I am very interested to get access to a driver variant, which has been designed for Windows 10. Since your currently available driver hasn't yet been digitally signed, I have done it by using my Win-RAID CA stamp, but due to the version number of the SYS file the OS Win10 sees the driver as being unsigned, with the consequence, that it is not easy to get it properly installed.

By the way: Very soon I will publish the results of my NVMe benchmark comparison tests within >this< thread.

 

Greetings from Germany

Dieter



#11 Dietmar

Dietmar

    Frequent Member

  • Advanced user
  • 243 posts
  •  
    Afghanistan

Posted 14 July 2018 - 09:37 PM

Hi all,

I remembered the method from S4 :rolleyes: ,

and now I have also the Samsung 950 pro

in XP,

have a nice day

Dietmar



#12 dencorso

dencorso

    Frequent Member

  • Advanced user
  • 142 posts
  •  
    Brazil

Posted 14 July 2018 - 10:08 PM

Great! I'm following your progresses with much interest.

I remembered the method from S4 :rolleyes: ,

and now I have also the Samsung 950 pro in XP

But... what's the method from S4?
Another question: do you really need to use diskdump.sys v. 5.2.3790.4173 or do diskdump.sys v. 5.1.2600.5512 also work OK with storport.sys v. 5.2.3790.4173? If you didn't test it, now that you have various working setups, please do test it.
A nice day for you, too!



#13 Dietmar

Dietmar

    Frequent Member

  • Advanced user
  • 243 posts
  •  
    Afghanistan

Posted 14 July 2018 - 10:56 PM

Hi dencorso,

so much fun you can only have with XP:

The silly nvme 950pro does not like to boot with XP,

because it has an own Bios which fake it as IDE harddisk. I will test this on a compi without

any knowledge of nvme in Bios tomorrow.

The method from S4 is crazy but good:

During the start process, XP cannot recognice,

when you change the underlying harddisk,

as long as it is absolut identic to the one during boot.

First I thought, I kill my nvme disk, because with Winhex

I write 00 everywhere on it. Aomei tells me then, that my "ssd"

is frozen. But when I copy the valid mbr from other nvme,

all was ok again.

Well, when you are able to change very quick the bootdevice after first step,

voila it is the other :D.

Some parts are rescued here from old 911CD forum also,

and I think the method from S4 is written as tutorial here.

In a minute I test, whether new dumpdisk.sys is needed or not,

I write here,

have a nice evening

Dietmar

 

Edit: Hi dencorso, no need to change the "old" diskdump.sys  5.1.2600.5512

against the new  5.2.3790.4173 one. No difference, as I can see during boot,

Dietmar



#14 dencorso

dencorso

    Frequent Member

  • Advanced user
  • 142 posts
  •  
    Brazil

Posted 15 July 2018 - 03:20 AM

Oh, I see! The "method from S4" is another name for the "Kansas City Shuffle"! OK!


Hi, dencorso: no need to change the "old" diskdump.sys  5.1.2600.5512

against the new  5.2.3790.4173 one. No difference, as I can see during boot,

Dietmar

 

 

That's great news! So, just adding storport.sys v. 5.2.3790.4173 and Kai's nvme.sys is enough! Good!

 

However I agree that if Kai finds time to also patch version 1.3, maybe it can be even more universal as a driver.



#15 Dietmar

Dietmar

    Frequent Member

  • Advanced user
  • 243 posts
  •  
    Afghanistan

Posted 15 July 2018 - 09:18 AM

Hi,

here comes TXTSETUP.OEM  for the nvme.sys Textmodedriver

Use makecab.exe for the storport.sys file

and Nlite 1.4.93 . With the build *.iso and the install methode from

https://www.overcloc...0-A-motherboard

whole install of XP on a nvme disk lasts less than 5 min,

have a nice day

Dietmar

 

[Disks]
disk0 = "nvme Installation Disk", \nvme.inf, \

[Defaults]
SCSI = nvme

[SCSI]
nvme = "nvme Installation Disk", nvme

[Files.SCSI.nvme]
inf    = disk0, nvme.inf
driver    = disk0, nvme.sys, nvme


[HardwareIds.SCSI.nvme]
id = "PCI\CC_010802","nvme"


[Config.nvme]
value = "", Tag, REG_DWORD, 1
 



#16 Wonko the Sane

Wonko the Sane

    The Finder

  • Advanced user
  • 16066 posts
  • Location:The Outside of the Asylum (gate is closed)
  •  
    Italy

Posted 15 July 2018 - 09:34 AM

Just in case, the "Kansas City Shuffle" thread can be (partially) retrieved from here:

https://web.archive....showtopic=21242

 

and cdob posted here on reboot pro a nice Winbuilder thingy:

http://reboot.pro/to...br-boot-device/

that embeds the copy-sgs.exe by karyonix (later/better version of the cs.exe by S4e

 

I am adding the most useful related files (that were on the 911CD thread)  here, if needed.

 

:duff:

Wonko

Attached Files



#17 Dietmar

Dietmar

    Frequent Member

  • Advanced user
  • 243 posts
  •  
    Afghanistan

Posted 15 July 2018 - 10:19 AM

Hi all,

for some strange reasons the new storport.sys driver

disappeares after txt setup switching to gui setup which gives BSOD 0x07B brrr..

So you have to copy it by hand to folder Windows\system32\drivers .

But then installation complets,

in less than one minute,

I think it is first compi in world :P ,

where XP is installed on nvme disk,

have a nice day

Dietmar



#18 Wonko the Sane

Wonko the Sane

    The Finder

  • Advanced user
  • 16066 posts
  • Location:The Outside of the Asylum (gate is closed)
  •  
    Italy

Posted 15 July 2018 - 11:39 AM

Hi all,

for some strange reasons the new storport.sys driver

disappeares after txt setup switching to gui setup which gives BSOD 0x07B brrr..

 

Maybe it is connected to this:

https://support.micr...-windows-xp-and

i.e. the hardware ID is conflicting with an existing in the CD/iso driver? :unsure:

 

 

:duff:

Wonko



#19 Dietmar

Dietmar

    Frequent Member

  • Advanced user
  • 243 posts
  •  
    Afghanistan

Posted 15 July 2018 - 11:54 AM

Hi Jaclaz,

nice to see you :) !

Yes, the link from you makes everything clear:

"This replacement allows Windows to use the updated OEM driver during text-mode setup, but you must copy the same updated OEM driver to the System32\Drivers folder of the final Windows installation before the installation continues into graphics-mode setup."

 

What a crazy behavior, but you can copy this driver by hand during install,

 

have a nice day

Dietmar



#20 Dietmar

Dietmar

    Frequent Member

  • Advanced user
  • 243 posts
  •  
    Afghanistan

Posted 15 July 2018 - 02:26 PM

Hi all,

 

I just install via USB 3.1 XP SP3 on my coffeelake Asus z370 Apex i8700-k motherboard

on nvme Samsung 960pro 1TB,

hitting F5 (no Acpi).

After copy of storport.sys.

It is now ready,

fast :ph34r: :D :ph34r:, no yellow questionsmark in device manager, gtx 980

and together with win 10, 64 bit on mbr with Samsung 970pro 1TB ,

 

have a nice day

Dietmar

 

PS: like dream..



#21 Dietmar

Dietmar

    Frequent Member

  • Advanced user
  • 243 posts
  •  
    Afghanistan

Posted 16 July 2018 - 08:51 AM

Hi all,

I make some more tests during install XP SP3 on nvme disk.

 

On newer motherboards >= Skylake Processors,

Acpi from XP does not work correct. Why? May be somebody knows..

 

When you hit F5 during install, you can chose, what kind of processor you wish.

I make a test with standard pc (one processor) and MPS Multiprocessor PC.

Interesting: From 3500 MByte/s it moves back to 1000 MByte/s on single processor.

I remember, that you can chose Hal.dll in boot.ini,

have a nice day

Dietmar

 

PS: Original XP partitions are not aligned, means 63 sectors instead 2048 sectors

before partition. But from Win10 or Win7 you can format your nvme disk before XP install.

XP also starts from aligned partition with 2048 sectors before.

Now I compare Fat32 against ntfs. On Fat32, much less writes are doing on nvme disk.

Trim is not a problem. In about 2 weeks you can trim your nvme disk with the manufacture tool,

I just did it from Win10 Magician for Samsung disks.



#22 Fernando1

Fernando1

    Newbie

  • Members
  • 14 posts
  •  
    Germany

Posted 16 July 2018 - 09:28 AM

ACPI from XP does not work correct. Why? May be somebody knows.

You will get more ACPI setting options, if you hit F7 when prompted to hit F6. 



#23 Wonko the Sane

Wonko the Sane

    The Finder

  • Advanced user
  • 16066 posts
  • Location:The Outside of the Asylum (gate is closed)
  •  
    Italy

Posted 16 July 2018 - 11:22 AM

PS: Original XP partitions are not aligned, means 63 sectors instead 2048 sectors

before partition. But from Win10 or Win7 you can format your nvme disk before XP install.

XP also starts from aligned partition with 2048 sectors before.

Now I compare Fat32 against ntfs. On Fat32, much less writes are doing on nvme disk.

Trim is not a problem. In about 2 weeks you can trim your nvme disk with the manufacture tool,

I just did it from Win10 Magician for Samsung disks.

As a side note, there should be no problem with creating the (aligned) partition (only creating the entry in the MBR, without formatting it) in grub4dos manually or using the partnew command, then the XP setup should find an existing (not formatted) aligned partition and you can format it normally from the setup.

 

:duff:

Wonko



#24 Dietmar

Dietmar

    Frequent Member

  • Advanced user
  • 243 posts
  •  
    Afghanistan

Posted 16 July 2018 - 07:31 PM

Fat32 XPSP3 auf Samsung 960pro 500 Gb,

not bad:))

 

-----------------------------------------------------------------------
CrystalDiskMark 5.1.2 © 2007-2016 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

   Sequential Read (Q= 32,T= 1) :  3513.523 MB/s
  Sequential Write (Q= 32,T= 1) :  2038.635 MB/s
  Random Read 4KiB (Q= 32,T= 1) :   540.234 MB/s [131893.1 IOPS]
 Random Write 4KiB (Q= 32,T= 1) :   267.359 MB/s [ 65273.2 IOPS]
         Sequential Read (T= 1) :  2908.008 MB/s
        Sequential Write (T= 1) :  2035.737 MB/s
   Random Read 4KiB (Q= 1,T= 1) :    56.380 MB/s [ 13764.6 IOPS]
  Random Write 4KiB (Q= 1,T= 1) :   237.746 MB/s [ 58043.5 IOPS]

  Test : 1024 MiB [C: 58.2% (17.1/29.3 GiB)] (x5)  [Interval=5 sec]
  Date : 2018/07/16 21:24:28
    OS : Windows XP Professional SP3 [5.1 Build 2600] (x86)



#25 Dietmar

Dietmar

    Frequent Member

  • Advanced user
  • 243 posts
  •  
    Afghanistan

Posted 16 July 2018 - 10:02 PM

And here all the same, just NTFS nvme instead of Fat32.

NTFS is faster, but also writes much more to disk.

Have a nice evening

Dietmar

 

NTFS Samsung960pro500GB
-----------------------------------------------------------------------
CrystalDiskMark 5.1.2 © 2007-2016 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

   Sequential Read (Q= 32,T= 1) :  3475.414 MB/s
  Sequential Write (Q= 32,T= 1) :  2073.956 MB/s
  Random Read 4KiB (Q= 32,T= 1) :   945.480 MB/s [230830.1 IOPS]
 Random Write 4KiB (Q= 32,T= 1) :   933.886 MB/s [227999.5 IOPS]
         Sequential Read (T= 1) :  2843.380 MB/s
        Sequential Write (T= 1) :  2021.353 MB/s
   Random Read 4KiB (Q= 1,T= 1) :    59.257 MB/s [ 14467.0 IOPS]
  Random Write 4KiB (Q= 1,T= 1) :   235.984 MB/s [ 57613.3 IOPS]

  Test : 1024 MiB [C: 19.6% (12.0/61.4 GiB)] (x5)  [Interval=5 sec]
  Date : 2018/07/16 23:56:54
    OS : Windows XP Professional SP3 [5.1 Build 2600] (x86)
 






0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users