Jump to content

I am looking for a PCIe card for WinXP debugging


Recommended Posts


Good news for You. I just launched debug on a freshly installed WinXP Pro SP3 32-bit VL and Windbg works.

Works WinXP Pro 64-bit SP2 VL and WinXP Pro 32-bit (SP2, SP3) VL


It seems that the most important thing is that the card had addressing using PMIO (Port-Mapped I/O) to set in MS-DOS and at kdcom.dll the same address.

Also frequency crystal oscillator it matters - the baudrate depends on it.

My ExpressCard and PCIe card only has PMIO. I have not tested a card that has both PMIO and MMIO - @Dietmar has one

The number of PCI bridges probably does not matter because my ExpressCard does not have a PCI bridge and the PCIe card has a PCI bridge and both work with Windbg (modded kdcom.dll for I/O address)

Edited by Gelip
Link to comment
Share on other sites

I restored WinXP SP3 from the image and did not work with Windbg but when I installed a fresh version WinXP SP3 Windbg works

I have never liked WinXP SP3 - many things work in a different way than in SP2 version.

My proven and tested systems are WinXP SP2 32-bit and WinXP SP2 64-bit

SP3 is s..t

Edited by Gelip
Link to comment
Share on other sites


Before I get nuts, I go back to my Asrock z370 Fatalty gaming K6 board.

Oh..what a nice board😍. At once normal Windbg works through its internal COM1 port.

Tomorrow I try your methode on this board with one after the other of all my PCIe serial slot cards. By the way, I just ordered your Card PCIe Sunix SER5427A also



Edited by Dietmar
Link to comment
Share on other sites

19 hours ago, Dietmar said:

For me is still unclear, what you make other than me before.

I mainly test with WinXP SP2 64-bit and you are testing with WinXP SP3 32-bit

Othervise your cards have two COM ports each, so you might have made a mistake configuring one port while you had the null-modem cable plugged into the other port.

All my RS232 cards only have one COM port.

Edited by Gelip
Link to comment
Share on other sites


You don't need to run any DOS for debugging to work !!!

All you need to do is set the appropriate baudrate in boot.ini and in WinDbg and modifying the I/O address of the card in the kdcom.dll file - that's all 🙂

MS-DOS was only needed for baudrate diagnosis - checking if Putty displays correct characters or bushes on the other PC

Of course, we do not forget to calculate the checksum after editing the kdcom.dll file, otherwise there will be an error:


Link to comment
Share on other sites


Now I have the same PCIe card as you.

lspci -s ... shows as input port D000 and also(?) D020.

But Windbg does not work with 03F8 => D000 on kdcom.dll

on the Asrock z370 k6 board


PS: Modded kdcom.dll with 03F8 => D020 also not works.




Edited by Dietmar
Link to comment
Share on other sites


I tested WinXP SP3 32-bit again and it works fine with the SER5427A card:

  • if there is an integrated COM port on the motherboard, turn it off
  • in MS-DOS 6.22 run the program SUNDOS.EXE and check base address and the port number on which the serial port is being installed - for me it is 4000 at COM1
  • set the base address (ABCD is little endian CDAB) in the kdcom.dll file in the offset responsible for the port number shown in sundos.exe if COM1 then offset C50, if COM2 then offset C47, if COM3 then offset C3E, if COM4 then offset C35
  • rebuild checksum edited kdcom.dll e.g. with CFF Explorer
  • on debugged PC set in boot.ini debug to baudrate 14400 on port number shown in sundos.exe
  • on PC with WinDbg running set baudrate 115200
Edited by Gelip
Link to comment
Share on other sites


Very strange 🤔

Maybe because your WinXP SP3 has custom ACPI, USB, SATA drivers or modified ntldr, ntdetect.com etc. files ???

Try on a fresh installation of WinXP Pro SP3 32-bit VL and also on WinXP SP2 64-bit VL

Edited by Gelip
Link to comment
Share on other sites


Is there communication with the second PC in MS-DOS if:

  • boot MS-DOS and run sundos.exe
  • set baudrate speed to 4800:
    mode com1:48,n,8,1,n
  • on second PC, run Putty with a baudrate of 38400
  • on first PC execute the command:
    ctty com1

Do you have MS-DOS in Putty now? do e.g. dir or some other command


Link to comment
Share on other sites

I make the ultimative test, for what is going on with Serial Debug on XP SP3

and the Asrock z370 gaming k6 board.

This test works only with the Lindy card, not with the Sun card! The Sun card shows in Device Manager an extra Pci-to-Pci bridge, that makes Windbg impossible, boot debug and also normal debug.

I switch COM port (on board) off via Bios.

I install the ntldr_dbg from Sources @infuscomus instead of normal ntldr.

And now I can see:

On the Lindy card, Windbg starts the at 3 places for 03F8 => D010 modded boot debugger DB (ntldr_dbg) at once, but then crashes after first XP process load (ends with mup.sys). Also kdcom.dll is modded from 03F8 => D010.

When the progress bar can be seen (second boot process of XP)

there is no longer any output from Windbg (via ntldr_dbg).

And now comes the ultimative test: I use the normal onboard COM1 port, enabled via Bios.

And I use the normal (unmodded) ntldr_dbg and the unmodded kdcom.dll.

And voila: First starts the Boot debugger Windbg BD and then continues with the kdcom.dll file Windbg. Waooh, this means, that the connection to the Serial Port on the PCIe card Lindy is only lost at the beginning of the second part of booting XP SP3


Microsoft (R) Windows Debugger Version 6.12.0002.633 X86
Copyright (c) Microsoft Corporation. All rights reserved.

Opened \\.\com1
Waiting to reconnect...
BD: Boot Debugger Initialized
BD: osloader.exe base address 00400000
Connected to Windows Boot Debugger 2600 x86 compatible target at (Sun Feb  6 20:07:42.109 2022 (UTC + 1:00)), ptr64 FALSE
Kernel Debugger connection established.
Symbol search path is: C:\symbols;C:\symbolss;C:\symbolsss
Executable search path is: C:\Symbols
Module List address is NULL - debugger not initialized properly.
WARNING: .reload failed, module list may be incomplete
KdDebuggerData.KernBase < SystemRangeStart
Windows Boot Debugger Kernel Version 2600 UP Checked x86 compatible
Machine Name:
Primary image base = 0x00000000 Loaded module list = 0x00000000
System Uptime: not available
BD: \WINDOWS\system32\ntoskrnl.exe base address 804DC000
BD: \WINDOWS\system32\hal.dll base address 80705000
BD: \WINDOWS\system32\KDCOM.DLL base address 80726000
BD: \WINDOWS\system32\BOOTVID.dll base address 80010000
BD: \WINDOWS\system32\DRIVERS\ACPI.sys base address 80364000
BD: \WINDOWS\system32\DRIVERS\WMILIB.SYS base address 80004000
BD: \WINDOWS\system32\DRIVERS\pci.sys base address 80062000
BD: \WINDOWS\system32\DRIVERS\isapnp.sys base address 80006000
BD: \WINDOWS\System32\Drivers\MountMgr.sys base address 80013000
BD: \WINDOWS\system32\DRIVERS\ftdisk.sys base address 80394000
BD: \WINDOWS\System32\drivers\dmload.sys base address 8001E000
BD: \WINDOWS\System32\drivers\dmio.sys base address 803B3000
BD: \WINDOWS\System32\Drivers\PartMgr.sys base address 803D9000
BD: \WINDOWS\System32\Drivers\VolSnap.sys base address 803DE000
BD: \WINDOWS\system32\DRIVERS\storahci.sys base address 803EC000
BD: \WINDOWS\system32\DRIVERS\storpor8.sys base address 80728000
BD: \WINDOWS\system32\DRIVERS\storport.sys base address 8072D000
BD: \WINDOWS\system32\DRIVERS\ntoskrn8.sys base address 80776000
BD: \WINDOWS\system32\DRIVERS\disk.sys base address 80799000
BD: \WINDOWS\system32\DRIVERS\CLASSPNP.SYS base address 807A2000
BD: \WINDOWS\system32\DRIVERS\fltMgr.sys base address 807AF000
BD: \WINDOWS\system32\DRIVERS\sr.sys base address 807CF000
BD: \WINDOWS\System32\Drivers\KSecDD.sys base address 807E1000
BD: \WINDOWS\System32\Drivers\Ntfs.sys base address 80A02000
BD: \WINDOWS\System32\Drivers\NDIS.sys base address 80A8F000
BD: \WINDOWS\System32\Drivers\Mup.sys base address 80ABC000
Shutdown occurred at (Sun Feb  6 20:07:53.890 2022 (UTC + 1:00))...unloading all symbol tables.
Waiting to reconnect...
Connected to Windows XP 2600 x86 compatible target at (Sun Feb  6 20:07:54.593 2022 (UTC + 1:00)), ptr64 FALSE
Kernel Debugger connection established.
Symbol search path is: C:\symbols;C:\symbolss;C:\symbolsss;E:\binaries.x86fre\Symbols;https://msdl.microsoft.com/download/symbols;srv*
Executable search path is: C:\Symbols
Windows XP Kernel Version 2600 MP (1 procs) Free x86 compatible
Built by: 2600.xpsp.080413-2111
Machine Name:
Kernel base = 0x804dc000 PsLoadedModuleList = 0x805684c0
System Uptime: not available
Break instruction exception - code 80000003 (first chance)
*                                                                             *
*   You are seeing this message because you pressed either                    *
*       CTRL+C (if you run kd.exe) or,                                        *
*       CTRL+BREAK (if you run WinDBG),                                       *
*   on your debugger machine's keyboard.                                      *
*                                                                             *
*                   THIS IS NOT A BUG OR A SYSTEM CRASH                       *
*                                                                             *
* If you did not intend to break into the debugger, press the "g" key, then   *
* press the "Enter" key now.  This message might immediately reappear.  If it *
* does, press "g" and "Enter" again.                                          *
*                                                                             *
804e7a42 cc              int     3
0: kd> lm
start    end        module name
7c910000 7c9c6000   ntdll      (pdb symbols)          c:\symbols\ntdll.pdb\1751003260CA42598C0FB326585000ED2\ntdll.pdb
804dc000 80705000   nt         (pdb symbols)          c:\symbols\ntkrnlmp.pdb\FB6BF595C0344379B369466C1ED25FCB2\ntkrnlmp.pdb
80705000 80725d00   hal        (deferred)             




Link to comment
Share on other sites


If the card works in DOS then it must also in WinDbg. You're making a mistake somewhere.

I tested my card on two computers:

  • desktop in PCIe x1 slot
  • laptop+EXP GDC adapter ExpressCard-to-PCIe

It works fine in both.

Edited by Gelip
Link to comment
Share on other sites


I have one more way with SER5427A:

  • use original kdcom.dll (not modded)
  • on debugged WinXP in boot.ini set baud 2400 COM1
  • in WinDbg set 19200
  • boot MS-DOS and run sundos.exe (D000 & COM1) - no restart PC, run GRUB4DOS (grub.exe) and boot WinXP
Edited by Gelip
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...