Writing a driver to spoof PCI Subsystem Data of an Audigy card

Stealth1024

Platinum Member
Aug 9, 2000
2,266
0
0
I traded an old NIC for a non-working Audigy to play with.

Upon further investigation I found this: http://www.sbyers.com/images/pcibus.jpg

According to: Anomaly in the Audigy PCI Subsystem ID register, this card is returning an invalid PCI subsystem ID due to a corrupt EEPROM and the highlighted bytes of my screen shot should read 0051 instead of 0040 -- thus windows and the creative software has no idea what drivers to install and ultimately fails.

I like to get my hands dirty in assembly and C (CE major to thank there..), so would it be possible to write a driver that spoofs this data from the perspective of windows so it was correct?

All input welcome...
 

Stealth1024

Platinum Member
Aug 9, 2000
2,266
0
0
From Creative:

Our investigations found that when the EEPROM was erased, the Reset Signal going to the Audigy chip was about 1.5V. This 1.5V is considered to be undefined as it's neither high nor low. The signals going to and coming from the EEPROM were seen as corrupted. It was further observed that if the network card were inserted in a slot from 3 to 6, after a sequence of power ups and downs, some of the power and control pins in the PCI bus would build up certain residual voltages, which would prevent the Audigy chip from entering into a normal biasing status during power up. The operation of the Audigy card would therefore be affected. These residual voltages disappeared if the network card was moved to slot 1 or 2.


I tried several different arrangements... I shall try again! !@#$...
 

Peter

Elite Member
Oct 15, 1999
9,640
1
0
Most PCI chips have an alternate way of writing the subsystem ID (for mainboard integrated applications where no setup EEPROM is used, and the system BIOS sets the chips up instead). Dig around in the PCI register space for whether there is a "write enable" bit to flip.

The other plan would be to hack the driver's .INF file, teaching it to install the same stuff for a 0040 as for a 0051.

Spoofing access to PCI registers is not really possible, short of setting up an SMI trap from inside system BIOS (noone else can do that). Best you could do is intercept the operating system's PCI access API, and filter the values.

The real fix however is to rewrite the proper contents into that EEPROM. Aren't Creative offering any help in this? No? Buy elsewhere next time ...
 

Stealth1024

Platinum Member
Aug 9, 2000
2,266
0
0
Originally posted by: Peter
Most PCI chips have an alternate way of writing the subsystem ID (for mainboard integrated applications where no setup EEPROM is used, and the system BIOS sets the chips up instead). Dig around in the PCI register space for whether there is a "write enable" bit to flip. The other plan would be to hack the driver's .INF file, teaching it to install the same stuff for a 0040 as for a 0051. Spoofing access to PCI registers is not really possible, short of setting up an SMI trap from inside system BIOS (noone else can do that). Best you could do is intercept the operating system's PCI access API, and filter the values. The real fix however is to rewrite the proper contents into that EEPROM. Aren't Creative offering any help in this? No? Buy elsewhere next time ...

Interesting. As mentioned I didn't pay for it, If I had the money or wanted one I would get a Lynx2 or the Echo Indigo for my notebook.

Anyway, I have tried writing the new value to the EEPROM using a utility I found, however this has not proven successful.

Rewriting the INF file would appear to be the easiest, however the creative drivers come in exe form and the setup.exe actually scans for hardware, I would need to get ahold of the actual drivers that I could point the windows installer toward.

I read about an engineer from the UK who ran across this problem soldering out the EEPROM and rewriting it. lol.
 

Peter

Elite Member
Oct 15, 1999
9,640
1
0
If you're designing mainboards or add-in cards in your day job, a misprogrammed configuration EEPROM is neither an unusual occurrence 0:) nor is it a big problem.
 

Menelaos

Senior member
Oct 10, 1999
251
0
0
When looking for a way to extract dolby digital info from my SB live! player, I came across a site that mentioned that by reprogramming the eeprom they could fool the drivers into beleaving it was a different SB live version. To reprogram the eeprom they used another (network?)card. Do a search for digital output and SB live on google. I'll try to dig it up too, but it has been a while.

Greetz,

Menel.
 

Stealth1024

Platinum Member
Aug 9, 2000
2,266
0
0
Originally posted by: Menelaos
When looking for a way to extract dolby digital info from my SB live! player, I came across a site that mentioned that by reprogramming the eeprom they could fool the drivers into beleaving it was a different SB live version. To reprogram the eeprom they used another (network?)card. Do a search for digital output and SB live on google. I'll try to dig it up too, but it has been a while. Greetz, Menel.

Hey this utility looks just like what I need. I'll have to take a gander at google later, but if you hapen to come up with the link that would be great.