Jump to content

Updated drivers for Windows XP SP3 and Windows 2003 SP2 (x32/x64) for modern hardware


Recommended Posts


Posted

@reboot12

Now I have all installed on the exact same board AIMB-786, same Bios V5 as you.

I use as cooler the nice Dynatron DB128015BU-E. First I thought board is dead, but it awakes after CLEAR CMOS few times.

And I have exact the same symptoms:

Not any of my i219 drivers sénds or gets a single package, no Ping no DHCP.

I go back to the basics: I compare the Bios of the Asus z390 WS Pro with the same i219-LM Dev_15BB with the AIMB-786 board.

In the Intel GbE region there are differences, 44 Byte different.

But because I dont want to hack the Bios just now, (may be not easy, when length of definition for Dev_15BB are different(!!!) )

I compare the setup routine for the i219. And I notice, that there are already differences very early, even before the first network activity begins.

I want to trace and compare all relevant early registers on both boards via Windbg.

In the MMIO status is the bit 0x40000000, that is set early but never changed on any of the for the i219 working boards.

On the AIMB this bit is never set.

But this bit is only the result of a lot as BIOS/NVM setup, ME/firmware state, PHY/ULP/SMBus state etc.. and never asked for this bit on the working boards?!

So I try to bring the AIMB-786 into the same register state as the ASUS WS Z390 Pro, step by step.

The MMIO status may show the result

Dietmar

 

 

 

 

 

 

Posted (edited)

@Dietmar

WOW, you quickly organized AIMB and checked what and how :)

Meanwhile, I'm messing around with the i219 card settings under Win7 using pciutils and I noticed an interesting thing. Default i219 has Enabled Mem+ and BusMaster+ and ping work OK but if I Disable BusMaster then ping stop working. After set back to Enabled ping back work OK:
 

C:\Program Files\pciutils>lspci -s 00:1f.6 -vv | find "Control"
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+

C:\Program Files\pciutils>ping 192.168.1.1

Badanie 192.168.1.1 z 32 bajtami danych:
Odpowiedź z 192.168.1.1: bajtów=32 czas=1ms TTL=255
Odpowiedź z 192.168.1.1: bajtów=32 czas<1 ms TTL=255
Odpowiedź z 192.168.1.1: bajtów=32 czas<1 ms TTL=255
Odpowiedź z 192.168.1.1: bajtów=32 czas<1 ms TTL=255

Statystyka badania ping dla 192.168.1.1:
    Pakiety: Wysłane = 4, Odebrane = 4, Utracone = 0
             (0% straty),
Szacunkowy czas błądzenia pakietów w millisekundach:
    Minimum = 0 ms, Maksimum = 1 ms, Czas średni = 0 ms

C:\Program Files\pciutils>setpci -s 00:1f.6 04.b
06

C:\Program Files\pciutils>setpci -s 00:1f.6 04.b=02

C:\Program Files\pciutils>lspci -s 00:1f.6 -vv | find "Control"
        Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+

C:\Program Files\pciutils>ping 192.168.1.1

Badanie 192.168.1.1 z 32 bajtami danych:
Upłynął limit czasu żądania.
Upłynął limit czasu żądania.
Odpowiedź z 192.168.1.90: Host docelowy jest nieosiągalny.
Odpowiedź z 192.168.1.90: Host docelowy jest nieosiągalny.

Statystyka badania ping dla 192.168.1.1:
    Pakiety: Wysłane = 4, Odebrane = 2, Utracone = 2
             (50% straty),

C:\Program Files\pciutils>setpci -s 00:1f.6 04.b=06

C:\Program Files\pciutils>ping 192.168.1.1

Badanie 192.168.1.1 z 32 bajtami danych:
Odpowiedź z 192.168.1.1: bajtów=32 czas=1ms TTL=255
Odpowiedź z 192.168.1.1: bajtów=32 czas<1 ms TTL=255
Odpowiedź z 192.168.1.1: bajtów=32 czas<1 ms TTL=255
Odpowiedź z 192.168.1.1: bajtów=32 czas<1 ms TTL=255

Statystyka badania ping dla 192.168.1.1:
    Pakiety: Wysłane = 4, Odebrane = 4, Utracone = 0
             (0% straty),
Szacunkowy czas błądzenia pakietów w millisekundach:
    Minimum = 0 ms, Maksimum = 1 ms, Czas średni = 0 ms

C:\Program Files\pciutils>

 

Edited by reboot12
Posted

@reboot12

This is very nice information.

It means, that you can enable and disable DMA on the AIMB-786 as you wish.

And even it comes from a crazy starting point, this is possibe.

AIMB-786 + i219-LM unter XP has now only one problem from now:
TX-Consume
The i219 chip gets and receives perfekt, but does not "eat" any TX-Descriptor.

Already today big advantage!

RX is solved. TX-Submit is solved. Only TX-Consume not

Dietmar

Posted (edited)

@Dietmar

I compare PCI Configuration Space i219 in Win7 and WinXP and is different:
PCI-space-diff.png

Also in Win7 DisINTx+ (Enabled) but in WinXP DisINTx- (Disabled)
 

Win7

C:\Program Files\pciutils>lspci -s 00:1f.6 -vv | find "Control"
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
        

WinXP

C:\Program Files\pciutils>lspci -s 00:1f.6 -vv | find "Control"
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-

I try in WinXP set same bytes as in Win7 and if change 05.b from 00 to 04 then probably i219 receive 5 packets:
rec-packets.png

I found what is DisINTx

https://bugzilla.kernel.org/show_bug.cgi?id=71691

https://patchwork.ozlabs.org/patch/328062/

Edited by reboot12
Posted (edited)

I try set config space in MS-DOS:
 

setpci -s 00:1f.6 05.b=04
setpci -s 00:1f.6 3c.b=00
setpci -s 00:1f.6 cd.b=21
setpci -s 00:1f.6 d2.b=81
setpci -s 00:1f.6 d6.b=e0
setpci -s 00:1f.6 d7.b=fe
setpci -s 00:1f.6 dc.b=a0
setpci -s 00:1f.6 dd.b=40

then boot WinXP without restart using GRUB4DOS:
 

grub
find --set-root /ntldr
chainloader /ntldr
boot

but PC reboot :huh:

I'm looking for a way to set PCI configspace before starting WinXP because on working OS not possible configure this.

Edited by reboot12
Posted

@Dietmar

I tried Enable DisINTx+ while card is disbaled in Device Manager

setpci -s 00:1f.6 05.b=04

but after Enable card in Device Manager DisINTx is switch back to Disabled (DisINTx-)

Maybe you need fix driver do enable DisINTx ???

Posted (edited)

@reboot12

PCI Command 0406 is stable integrated.

i219W25_DIAG: PCI_CMD[init] slot=2031622 before=0006 after=0406 (want=0406 MEM+ BusMaster+ DisINTx+)

RX works.

Now I build a new driver, which produces a lot of traffic TX from itself

Dietmar

Edited by Dietmar
Posted (edited)

@Dietmar

In PDF i219 https://cdrdv2-public.intel.com/612523/ethernet-connection-i219-datasheet.pdf page 173 I found this info about PCI config space:

Quote

10.3.1.2 PCI Init Control Word (Word 0x0A)


This word contains initialization values that:
• Set defaults for some internal registers
• Enable/disable specific features
• Determines which PCI configuration space values are loaded from the NVM

Edited by reboot12
Posted (edited)

@Dietmar

I'm trying to understand what these settings are in PCI config space. I compared the results of the lspci -s 00:1f.6 -vvv commands in Win7 and WinXP:
pci-about.png

offset 05 > DisINTx
offset 3c > probably IRQ routing
offset cd > PME
offset d2 > MSI
offset d6, d7 > Address
offset dc, dd > Data

Summmary:

In Win7 is enabled DisINTx+, PME-Enable+ and MSI: Enable+ and IRQ routing 0 ?

I don't know what is Address and Data - in WinXP this values is 0 ? :dubbio:

In Win7 IRQ is 0xFFFFFFFD (-3)
IRQ-3-W7.png

Your i219P0 driver still use IRQ 16

Edited by reboot12
Posted

DisINTx should be disabled in XP I think since XP isn't using MSI?

The disintx (Disable Interrupt) bit, located in the PCI Command Register (offset 0x04, bit 10), is used to mask legacy INTx interrupts for PCI/PCIe devices. When set to 1, this bit prevents the device from asserting interrupt lines, which is crucial for managing IRQ sharing and configuring MSI/MSI-X.

Posted (edited)

@Dietmar

Yeeeeeeeeeeeeeeeeeeeeeeeaaaaaaaaaaaaaaaaaaaaaaaaaaa !!!! - WOOOOOORKS - :cheerleader::cheerleader::D:w00t: :whistle::thumbup
 

Tested i219P0 but also work i219DRIVERXPSP3moreDevicesInf:
more-Dev.png my-router.png

On 3/1/2026 at 3:53 PM, Dietmar said:

It is all about this crazy ME. It stops a not autorisized driver.

But the most crazy thing is, that after this hard week for looking how to overcome ME,

this my build driver works on all my compis with different i219

Yes, you were right that it causes ME but ME Enable/Disable settings is hidden in BIOS. I need Disable like this:

  • format USB in FAT32 then unpack archive ME_disable.zip to stick
  • go to BIOS and set UEFI and Legacy option in Advanced > CSM Configuration > Boot option filter then press F4 to Save and Exit Setup
    UEFI-and-Legacy-for-boot-to-UEFI-Shell.p
  • while PC reboot, press Del, go to Save & Exit and boot select USB stick - UEFI: name your stick
    boot-from-USB-stick.png
  • enter to USB stick - mine is fs2: then run sceefi64.efi /o /s settings.txt to save all available BIOS options to file settings.txt
  • display the beginning of the file type settings.txt -b and check offset number for Setup Item Hidden - mine is 1330
    // Script File Name : settings.txt
    // Created on 04/16/24 at 07:16:1    
    // Copyright (c)2018 American Megatrends, Inc.
    // AMISCE Utility. Ver 5.03.1115
    
    HIICrc32= 76071511
    
    Setup Question	= System Language
    Token	=07	// Do NOT change this line
    Offset	=00
    Width	=02
    Options	=*[00]en-US
    
    Setup Question	= Setup Item Hidden
    Token	=08	// Do NOT change this line
    Offset	=1330
    Width	=01
    BIOS Default =[01]Enabled 
    Options	=*[01]Enabled	// Move "*" to the desired Option
             [00]Disabled
  • do it asw.efi 0x1330 0x0 to Disable Setup Item Hidden option then reboot PC e.g. using reset command
  • after reboot go to BIOS using Del and now you have all available options in BIOS :)
  • go to menu Advanced > PCH-FW Configuration > ME State and Disable it then press F4 to Save & Exit - PC maybe not reboot so force power off presssing and hold for some seconds Power button on case
    ME-Enabled.png ME-Disabled.png

@Dietmar

It turns out that sometimes the AMISCE application may not find the HII database in NVRAM - then you can obtain data this way:

  • using UEFITool open bios.bin, search System Language string in Text tab select Unicode
  • double click searched data: Unicode text "System Language" found in PE32 image section at offset ...
  • right click on PE image section then select Extract body... and save to file setup.bin
  • now using IFRExtractor-RS 1.5.1 extract settings from setup.bin to txt file:
    ifrextractor setup.bin
  • tool extract data to file setup.bin.0.0.en-US.ifr.txt
  • open file in WordPad then search string Setup Item Hidden and read VarOffset: 0x data - mine is 1330
    OneOf Prompt: "Setup Item Hidden", Help: "Hidden Setup Item.", QuestionFlags: 0x10, QuestionId: 0x8, VarStoreId: 0x1, VarOffset: 0x1330, Flags: 0x10, Size: 8, Min: 0x0, Max: 0x1, Step: 0x0

     

Edited by reboot12
Posted

@reboot12 @Dietmar

Wow!
I'm so pleased to see this.

I've been in some very long troubleshooting exercises on MSFN in the past myself, but never one as long as this one!
I take my hat off to both of you for sticking with it and never giving up.
Congratulations to you both.
Cheers, Dave.
:)

Posted (edited)

@Dietmar

Please compile also 64-bit version driver for WinXP 64-bit :)

Win7 and Win10 work OK if ME is Enabled but for WinXP ME need be Disabled

Browsers do not work properly, but probably because I need to use modified hal.dll and intelppm.sys files. Same problem is in WinXP 64-bit:
https://www.betaarchive.com/forum/viewtopic.php?p=477539#p477539

Yeaaa, after replace files from @Dietmar (ArrowLake.zip\FilesforArrowLakeXPSp3) browser works OK :cheerleader:

Now I wrote from AIMB over i219 card from WinXP SP2 32-bit :thumbup
browsers.png i219-Win-XP-SP2.png

Edited by reboot12

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...