Craig's PCI Programs

Craig's PCI Diagnostic software: what is this software, anyhow?

In brief, this is a suite of tools for hardware developers, engineers, programmers, system builders and the insatiably curious, that allows exploration of your PCI/AGP/PCI Express/CardBus/CompactPCI/PCI-X/PCI HotPlug/etc. hardware at the lowest level. Full source code is of course included, and is 100% freeware.

Some possible uses for these tools include the following:

- Fully Automating hardware recognition during Operating System installation via the -I option.
- Discovering what an "unknown device" is (both by manufacturer and model), so you can obtain drivers and support. A regularly updated database of over 19,000 entries lists virtually every known PCI device and manufacturer on the planet, even those that no longer exist.
- Examining your exact hardware configuration for curiosity or troubleshooting purposes (e.g. Latency, IRQ routing, AGP speed, resource conflicts and many more common problems can all be solved with these tools)
- Assisting with driver development and hardware design - examine your hardware 'live' as the OS/Driver sees it within Windows, and as the BIOS configures it within DOS via the -D option
- Exploring the source code for assistance with developing your own PCI code or hardware drivers
- Keeping up with modern hardware - with full PCI Express and multiple root-bus support via the -R option, PCI32 outperforms older tools tenfold.
- Auditing systems for hardware change: reports can be saved/printed/emailed/etc for reference and auditing purposes
- And much much more! Download and try it today!

PCI.ZIP Version 1.1   16/03/2005- DOS,Win3.x,Win9x,ME,OS/2 version The current release version of PCI now features classic PCI Specification Version 3.0 support, including all 140 device class/subclass/programming interface codes, PCI Express support, much improved power management  reporting, as well as  many bug fixes and code cleanups.

PCI32.ZIP Version 1.4   12/10/2005 - Windows NT,2K,XP,2K3,Vista etc. version

Note: PCI32 does NOT work with any 64-bit version of Windows e.g. AMD64, EM64T, Itanium, etc. A new version (to be called PCI64, duh!) is planned, but no ETA is available yet as I don't have a 64 bit capable PC, Compiler, DDK kit or any of the other  tools required to develop 64-bit code.

PCI32 is the premier software for classic PCI,. AGP, Cardbus and PCI Express troubleshooting and unknown device recognition. PCI32 fully supports the following standards:

Classic PCI v3.0, AGP v3.0 (AGP 8X), Advanced Power Management (APM) v1.2, Cardbus, PCI Express, IRQ Routing Specification, MSI's, PCI-X, Mini-PCI, CompactPCI, PCI hot-plug.

PCIDEVS.TXT (Updated all the time) - PCI device database update for above programs

To download PCIDEVS.TXT, right-click on it, and select save target as...

See this page for info on how to contribute updates to pcidevs.txt, and info on using it in your own software.

The PCI device database now boasts over 19,500 records - to my knowledge the most exhaustive and accurate list available anywhere on the Internet (Yes, even bigger and more accurate than Linux's list, at last count).
NEW! PCIVBS.VBS  (right-click the link, 'save-as' to your hard drive, and double-click to run)

A quick and crude PCI device-list display for windows OS's. could be very handy for Windows Script Authors. Does NOT require admin rights to work!!

This utility is tested and works on both 32-bit and 64-bit Windows!!

A quick and dirty Visual Basic script to read Windows WMI data and dump the PCI devices in a list. note: this script does not use pcidevs.txt, but rather uses whatever names Windows Device Manager lists.

This will run on any Windows PC with WSH installed (200, XP, 2003, Vista etc have Windows Scripting Host installed by default; WSH is a free add-on for win9x)

How do you 'run' PCI32?

PCI32 is a console mode program. That means, it works a little like an old DOS program in that it doesn't use Windows GUI dialog boxes - it just writes text to the screen, then exits (It is a fully fledged 32-bit program, however). you need to open the "Command Prompt" (Start -> All Programs -> Accessories) and run PCI32 from there.

There are more detailed notes in the README.RTF that comes in the ZIPfile.

Donations via Paypal now accepted!

PCI, PCI32 and the database pcidevs.txt have always been, and always will be, 100% free, uncrippled, fully functional freeware. I do not request payment no matter how often you use them - even for commercial use.

However, development of these tools does not come cheaply to me. I have now been working on the PCI collection for over 11 years, and have poured hundreds if not thousands of man-hours into it. I receive a continuous stream of thankyou notes from well-wishers letting me know how much the appreciate my software, and occasionally someone asks if they could contribute in a more tangible way, which is touching.

It is therefore with some hesitation, that I have decided to put my Paypal details here on the site. If you should feel the desire to send me a sum of money as a form of appreciation for this software, please feel free to do so! I leave the sum entirely up to you and your conscience. Donations are entirely your choice, and are definitely NOT required, nor will they represent a purchase of any kind or act as an incentive to me to do any thing for you; the donation function exists solely for you to send me something in appreciation for my work. Enough Said.

NB: Donations are not tax deductible

What's new in PCI32 Version 1.4?

- Fixed a bug with VPD dumps in �Z (debug) mode
- Fixed a bug with �R reporting wrong item count if an empty bus was encountered
- Fixed some typos and indent formatting errors
- Fixed big bug with Wrong SubSystem info reported in certain cases
- Fixed �R option to report CardBus busses, even if unpopulated
- Added support for new Hi Definition Audio class code
- Re-write of workoutbusses routine. Now supports multiple root-bus systems, which was broken in v1.3
- Now supports up to 512 actual devices (was 200 devices previously)

PCI users, please note the following Important information

Official development of PCI is now finished.

What does this mean? It means that in future, all development work will take place only on PCI32 (and, soon, PCI64). No new development work or major additional features will be done on 16-bit PCI. I will, however, continue to release updated versions of PCI from time to time, whenever a bug fix or relevant new feature appear in PCI32.

This decision has been made because there is little to add to 16-bit PCI which is relevant on current systems or relevant under the DOS/WIN9x environment.

Over time, this will mean that PCI32 will gain features that PCI will not. I have come to the conclusion that extending support for a group of OS's that have not been current for at least 5 years, is long enough. I acknowledge that win9x is still current in some areas (especially windows pre-install environments), so of course PCI will continue to be available; there's just not much point in adding, say, PCI Express extended configuration register support to a version where those registers are inaccessible and irrelevant!

Does this mean PCI stops working? Of course not. PCI will continue to function forever -- it will still work tomorrow or next century, just as well as it does today. PCI will continue to accept updated PCIDEVS.TXT files, so it will not go "out of date" or loose any basic functionality. Please understand that "no new development" does NOT mean the existing software stops working! 

OS/2 users: See this web site for a port of PCI to native OS/2. (look for pci11vk.arj or newer version number). The port isn't written by me, but is based on my code. The port was done by Veit Kannegieser, and by all accounts is very good, as it contains several customisations and enhancements specific to OS/2, which make reporting more accurate and comprehensive under this OS.

Veit has spent a lot of time making his port focus on the specific quirks of OS/2 e.g. IRQ sharing issues, so I highly recommend his version to all OS/2 and eComStation users.

BartPE users: You can find a plug-in for BartPE that makes PCI32 a GUI program that runs under BartPE here:

Once again, this one's not written by me, but it works really well. A big 'thanks and kudos' to the programmer, Willi Furter, from me :-)

Other recommended PCI related software

SIV by Ray Hinchliffe. 'System Information Viewer' is a general Windows utility for dumping lots of useful Windows and hardware info - CPU info, PCI info, USB info, Machine Info, Hardware Sensors, Operating System Information and more. SIV is designed for Windows XP/2K/NT4/.NET, but also gives a subset of info under the Windows 9x series of OS's.

NEW: Please note that Ray how has his own website, where new versions of SIV will be published from now on. Please update your bookmarks, etc.

SANDRA by SiSoftware. SANDRA is an extensive, professional PC info/diagnostic/benchmarking program, developed by C. Adrian Silasi, and is often used by professional hardware reviewers such as Toms Hardware Guide, HardOCP, Anandtech and many others. Sandra uses my pcidevs.txt file (not directly, but in a compiled format, as part of a larger general information database) for PCI device recognition. Sandra runs under Win98 and later, including NT/2K/XP.

AltiPCI by William H Avery. AltiPCI is a GUI based PCI Diagnostic utility. It aims to report the same 'basic' info as my PCI program, but in an easy-to-understand GUI format. Works with NT4/2K/XP only. AltiPCI uses my pcidevs.txt file for it's PCI device detection. Click here for a screenshot.

Unknown Devices by Catfish. This program helps you find what those unknown devices in Device Manager really are. Program supports Win95, Win98, Win98se, WinMe, Win2k, WinXP, and 2003 Server. It also attempts to support future OS's. Sorry no WinNT support (there isn't even a Device Manager!). Unknown devices uses my pcidevs.txt file for it's PCI& AGP device names.

If you have difficulty understanding what PCI does, and just need a program that tells you what all those unrecognised items are in your Windows device Manager so you can go download the drivers, then Unknown Devices is the program you need!