Jump to content

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


Recommended Posts

Posted

@reboot12

Yes, I did this with success with the DSDT Patcher at boot time from @Mov AX, 0xDEAD .

This is a really nice tool and  with it I change DSDT a lot of times in minutes. But only for XP bit 32 I think.

asl does not work, because it patches only the static DSDT in registry and gives Bsod on reboot.

You can ask @Damnation 

he succeed with grub4dos I think, but dont know if this also works with XP bit 64

Dietmar


Posted

@reboot12

For one of my AMD boards I bought a changeable case on motherboard for the Bios chip.

The original chip I solder out and can put it in and out of this case as often as I want, like in former times.

After this, I can modd DSDT for this board while during flashing whole bios also in minutes

Dietmar

Posted

@Dietmar

Apparently acpidump.exe reads the table from RAM
AIDA64 reads from the bios
If I use asl.exe, which inserts a table into the registry, acpidump.exe reads it, which means that the overwriting probably works correctly.

Posted (edited)
17 minutes ago, reboot12 said:

@Dietmar
Have you ever tried patching the DSDT table and override e.g. using CLOVER or asl -loadtable dsdt_fix.aml it?
I tested override using asl and work on WinXP - this add table to registry.

CLOVER replace also in UEFI Shell but on Win 8.1 DSDT is back oryginal.

Regarding CLOVER, I am also trying to use it but It doesn't load any .aml I put!



 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://apple.com">
<plist version="1.0">
<dict>

    <key>ACPI</key>
    <dict>
        <key>FixHeaders</key>
        <true/>
        <key>AutoMerge</key>
        <true/>

        <key>DSDT</key>
        <dict>
            <key>Patches</key>
            <array>
                <dict>
                    <key>Comment</key>
                    <string>Rename _OSI to XOSI</string>
                    <key>Find</key>
                    <data>X09TSQ==</data>
                    <key>Replace</key>
                    <data>WE9TSQ==</data>
                </dict>
            </array>
        </dict>

        <key>SortedOrder</key>
        <array>
            <string>I2C.aml</string>
        </array>
    </dict>

    <key>Boot</key>
    <dict>
        <key>Arguments</key>
        <string></string>

        <key>DefaultVolume</key>
        <string>EFI</string>

        <key>DefaultLoader</key>
        <string></string>

        <key>Legacy</key>
        <string>LegacyBiosDefault</string>

        <key>Timeout</key>
        <integer>5</integer>
        <key>Fast</key>
        <false/>
    </dict>

    <key>Devices</key>
    <dict>
        <key>NoDefaultProperties</key>
        <false/>
    </dict>

    <key>Graphics</key>
    <dict>
        <key>Inject</key>
        <false/>
        <key>PatchVBios</key>
        <false/>
        <key>LoadVBios</key>
        <true/>
    </dict>

    <key>GUI</key>
    <dict>
        <key>Scan</key>
        <dict>
            <key>Entries</key>
            <true/>
            <key>Legacy</key>
            <string>No</string>
            <key>Tool</key>
            <true/>
        </dict>

        <key>Custom</key>
        <dict>
            <key>Legacy</key>
            <array>
                <dict>
                    <key>Title</key>
                    <string>Windows XP (NTLDR)</string>
                    <key>Type</key>
                    <string>Windows</string>
                    <key>Volume</key>
                    <string>EFI</string>
                    <key>Path</key>
                    <string>\xp.bin</string>
                    <key>Disabled</key>
                    <false/>
                </dict>
            </array>
        </dict>

        <key>Hide</key>
        <array>
            <string>Preboot</string>
            <string>Recovery</string>
            <string>UEFI Internal</string>
            <string>UEFI Shell</string>
            <string>Boot Maintenance Manager</string>
            <string>Boot from EFI</string>
            <string>Boot from File</string>
        </array>

        <key>Misc</key>
        <dict>
            <key>Debug</key>
            <true/>
            <key>Log</key>
            <true/>
            <key>LogEveryBoot</key>
            <string>\EFI\Clover\Misc\clover.log</string>
        </dict>

        <key>Theme</key>
        <string>embedded</string>

        <key>Mouse</key>
        <dict>
            <key>Enabled</key>
            <true/>
        </dict>

        <key>Language</key>
        <string>en</string>
    </dict>

</dict>
</plist>
 

Edited by UsefulAGKHelper
Posted

@reboot12

For a try it may work.

The problem in this is, that the way, the Bios treated DSDT is not static.

Suddently you will get Bsod.

This makes me like crazy, until @Mov AX, 0xDEAD tells me,

that this was the exact reason why he build his DSDT patcher at boottime

Dietmar

Posted (edited)
42 minutes ago, UsefulAGKHelper said:

Regarding CLOVER, I am also trying to use it but It doesn't load any .aml I put!

CLOVER on Legacy or UEFI?
For UEFI try like this:

  • on USB FAT32 stick put clover files:
    EFI\CLOVER\ACPI\patched\DSDT.aml
    EFI\CLOVER\ACPI\origin
    EFI\CLOVER\cloverx64.efi
    EFI\CLOVER\config.plist
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
     "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    
        <key>ACPI</key>
        <dict>
            <key>DSDT</key>
            <dict>
                <key>Name</key>
                <string>DSDT.aml</string>
            </dict>
        </dict>
    
    </dict>
    </plist>
  • boot to UEFI Shell and run cloverx64.efi
  • table should be loaded
  • if you press F5 now then table should be writen to origin\DSDT-0.aml
  • but after load Windows - I tried Win 8.1 DSDT table is original - not patched ???

You might also try ACPIPatcher.efi > https://github.com/jslegendre/ACPIPatcher

For WinXP 64-bit I tested registry override with asl.exe and works - no BSOD:

acpidump -b -n DSDT -z
iasl -d dsdt.dat
edit dsdt.dsl and save as e.g. dsdt_fix.dsl
iasl dsdt_fix.dsl
asl -loadtable dsdt_fix.aml

Now table is in registry: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ACPI\Parameters

I use:

  • asl.exe 64-bit 6.3.9600.16384 from WinDDK 8.1
  • iasl-win-20180105.zip - this is latest version working on WinXP (I don't know why these tools are only in the 32-bit version, but they work OK on WinXP 64-bit)
Edited by reboot12
Posted

Yessssssssssssaaaaaaaaaaaaaahhhh:cheerleader::cheerleader::cheerleader:

after about next 500h of work and about 1000 not working drivers, I get the driver for the Wlan 9560 on the gemini chipset with j4105 cpu to run.

It is a pure polling driver, based on OpenBSD 79. The step for to bring the firmware to alive=1 I managed only with Ubuntu.

Crazy, 10 different rings for TX and RX and management data.

Again I was one step away from to give up

Dietmar

xpj4105.jpg

Posted
6 minutes ago, Dietmar said:

I get the driver for the Wlan 9560 on the gemini chipset with j4105 cpu to run.

WOW, please give me source code or compile for me WinXP 64-bit driver to test.

Posted

@reboot12

I need to make some more tests. Until now only 2 RX packages, because I force one ring for this.

But because it is a pure POLLING driver and DHCP works already, I think already today I send to you

Dietmar

Posted

@reboot12

I found this link

https://codebrowser.dev/linux/linux/drivers/net/wireless/intel/iwlwifi/mei/main.c.html

What it means is very easy. ME kills the 9560 on the gemini chip platform, so for our j4105.

And on the Asrock j4105-ITX I cant disable ME, the name in Bios for ME there is TXE but when I disable it, the Wlan 9560 is gone.

I can see ME at work: The 2 RX packages I read above are data for arp and DHCP.

After this, crazy ME brings the firmware to write 3b, so the RX ring is blocked.

I also found in the original OpenBSD 79 Source Code, which I modd for POLLING for the 9560,

has an own C-block, how to handle this ME.

So, fun is not over but I have to build this all with the help of ChatGPT, like translation from OpenBSD C-Code to XPC-Code.

Then, XP is "allowed" under ME.

I also tried a dirty hack, just to jump over this 3b code. But then the 9560 driver does not install any longer

Dietmar

1. iwm_nic_lock()
   MAC_ACCESS_REQ setzen
   auf MAC_ACCESS_EN warten
   GOING_TO_SLEEP beachten

2. iwm_apm_init()
   HAP_WAKE_L1A setzen
   INIT_DONE setzen
   MAC_CLOCK_READY warten
   DMA clock / L1_ACT_DIS setzen

3. iwm_prepare_card_hw()
   HW_IF_CONFIG PREPARE / NIC_READY / ME_OWN / WAKE_ME prüfen

4. iwm_nic_rx_mq_init()
   RFH_RXF_DMA_CFG
   RFH_GEN_CFG DMA_SNOOP
   RFH_RXF_RXQ_ACTIVE
   WIDX_TRG

5. iwm_power_update_device()
   POWER_TABLE_CMD

6. iwm_power_mac_update_mode()
   MAC_PM_POWER_TABLE

7. iwm_ltr_config()
   LTR_CONFIG

 

Posted

@reboot12

Here is first try of translating the Source Code for ME from OpenBSD 79 to XP

Dietmar

1. Früher poll184_14-Startpfad bleibt erhalten
   -> kein poll184_19-Code-10-APM-Ersatz

2. OpenBSD-POLLING-WIDX-Logik:
   nach jedem Poll:
   widx = (closed == 0 ? Wifi_MAX_RX - 1 : closed - 1) & ~7
   RFH_Q0_FRBDCB_WIDX_TRG wird auch bei count == 0 geschrieben

3. OpenBSD-artiger late nic_lock:
   MAC_ACCESS_REQ setzen
   auf MAC_ACCESS_EN warten
   GOING_TO_SLEEP prüfen

4. OpenBSD-artiger late ME/Wake/Ownership-Touch:
   HAP_WAKE
   WAKE_ME
   WAKE_ME_PCIE_OWNER_EN
   PCI_OWN_SET
   OS_ALIVE
   INIT_DONE
   RFKILL_WAKE_L1A_EN
   L1A_NO_L0S_RX
   HPET 0xffff0000
   Link Power Management disabled

5. 0x3b wird nicht gefälscht
   closed bleibt echt
   nur RFH/MAC/ME wird wie OpenBSD nachgetriggert

 

Posted (edited)

@Dietmar
Yeeeeeeeeeeeaaaaaaaaa :cheerleader::cheerleader::cheerleader:
I built from scratch a bootvid.dll driver (hardcoded version) for WinXP 64-bit that can display a BSOD on the screen if OS boot in UEFI mode :)

It only needs to hardcode the current graphics card memory address and the native resolution of the monitor:
1024x768-xp-BSOD-UEFI.png inverse.png BLUE.png

I also built a version that automatically finds the address of the graphics card but cannot read the current resolution and uses hardcoded resolution and displays the BSOD only well in hardcoded resolution. On any other resolution BSOD it is corrupt:
poszatkowane.png

But of course possible compile bootvid.dll auto-scan memory addres and use hardcoded any custom resolution e.g. popular 1920x1080 :P
1920x1080.png bootvid-from-scratch.png

Edited by reboot12
Posted (edited)

@Dietmar
Yeaaaaaaaaa - I make new versions bootvid.dll for BSOD - auto find graphics card and no clear screen:

  • top left
    top-left.png
  • centered
    centered.png

Now, when testing drivers under WinXP UEFI, I see a BSOD on the screen :P
1024x768.png
This is very helpful if I cannot debug in WinDbg via COM or LAN port e.g. on my Dell Wyse 3040 little PC.
@Dietmar Problably BSOD be same as in WinPE 3.1 when you tried patched before.

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...