Sunday, August 28, 2005

Asus P4C800 & Windows INF File Tricks - Part I

Finally I am back again here to write some thing. Today I am going to talk about my motherboard Asus P4C800 which is just over one year old now. This board uses Intel 875P chipset. The i875P chipset comes with an integrated audio which is ADI's AD1985 Codec (AC'97 solution) aka SoundMAX. Asus also integrated 3Com's Gigabit Ethernet controller 3c940 aka 3c2000 on to this mother board.

Why I am telling you all this? Well it is about drivers for these devices. The CD which comes with the mother board contains pretty old drives and Asus is know for its good software support failed to release any driver updates properly for this board. What you find here are pretty old drivers.

You can call me crazy but I always like to update drivers from time to time. Now search is on for new version of these drivers. I can look at ADI's web site for SoundMAX drivers & 3Com's website for 3c940 drivers. But the situation is that ADI doesn't release any drivers, they say you need to get them from you motherboard manufacturer. 3Com website gives some drivers. Although the release date is in 2005 the actual drivers are same as what Asus has put up, which are actually released in 2003. The web search for these drivers doesn't give any new driver references either. For 3c940 you will get references to same old driver and for SoundMAX you never get a proper driver reference.

Where to go from here? Let us look at SoundMAX driver first. Note that AD985 solution is coming from the chipset i875P, so motherboards with this chipset should has same drivers. I remembered like Asus, Intel also has good software support, so my task is to find out what motherboards Intel made based on i875P. It turned out that they have only one board D875PBZ.

Looking at the support software for this board you will see that audio driver was updated on April 2005. I took my chances and downloaded the driver. Obviously straight forward installation doesn't go through as this stuff is intended for D875PBZ. My next task is to extract the installation files from this single executable so that we can tinker with those files to get it installed for P4C800. Again I took a chance right clicked on the file and said open with Winzip. Winzip opens the file and bingo I see all the installation files. Then I unzipped these setup files in to a directory.

Windows gets all the information how to install a driver from a INF file (file with .inf extension). This file typically contains all the information required for the driver to get it installed. Now we know that this driver is for AD1985 but most of the time the PCI device Vendor ID and Device ID will change from board to board. We need to find this information because based on these numbers only whole of INF is file written.

First thing is to find INF file in Intel drivers and INF file in old Asus drivers. You can easily spot them as XP drivers are kept in subfolder SMAXWDM\W2K_XP. You will see a couple of INF files for various chipsets. Since i875P is based on ICH5, smwdmCH5.inf is the file to look at in both the drivers. We need to get the PCI Vendor ID, Device ID and Subsystem ID from the Asus INF file and put it in the Intel driver INF file under the section [AnalogDevices]. Good thing is that you will it is clearly visible in Asus INF file

%*WDM_AC97AUD.DeviceDesc%=WDM_ASUS, pci\ven_8086&dev_24D5&subsys_80F31043

Since it is clearly demarcated with WDM_ASUS as the profile name for this device you can safely copy all the sections which has WDM_ASUS name in their title (a section name is enclosed in [ ]), particularly WDM_ASUS.NT for XP & 2000. Once you copied all the sections, carefully check those copied sections whether all other sections they are referring to does exists in Intel INF file or not. You should spot couple of such miss matches. But they are present with difference name in the Intel INF file so it is not tough to update them. Once you have done this fire up the setup.exe for the driver and the installation should go through smoothly if you have not messed up INF file updating. Rebooting the system gives your SoundMAX new driver and every thing should be fine.

We will see how to get new drivers for 3C940/3C2000 next time.

Note: There is no problem with the old driver it works perfectly fine. The only reason I update drivers is that typically new drivers have couple bugs fixed and some times new features they carry. Only risk is that they may have new bugs! I do not advice any one to update drivers in this way unless you are crazy like me :-)