93C46 EEPROM Corruption on EM8810 E-MU 1820/1820m/1212/1212m PCI Card?

Looking for some advice on a failed EM8810 PCI Card. That is the PCI card for the E-MU (Creative Professional) 1820/1820m and also can be used with 1212/1212m.

In systems where it previously worked (with all the W10 driver fixes) it is no longer recognized by the driver installation. It shows up in device manager but not as the EMU E-DSP. It is now an unknown device from unknown manufacturer. Just FYI the same (multiple systems) still work fine with my EM8960 PCI card for my 1616m. So I believe the software/drivers/machines are ok.

With quite a bit of searching I came up with someone else (in Russian) with a similar problem that they fixed on their EM8810 by reflashing the 93C46 EEPROM. It seems that EEPROM corruption occurs sometimes with the EM8810 (E-MU 1820/1212) and some other Creative products (such as AWE64).

My searches reveal EM8810 EEPROM corruption here: (See post 53) [I used Google Chrome to translate to English.]
??????? ???????? ? E-MU 0404 PCI - ???????? 3

And AWE64 EEPROM corruption here:
Creative PnP EEPROM collection \
VOGONS




Does anyone have any experience fixing such a problem? I am thinking of trying to use an Amazon CH341A EEPROM programmer with a clip.

The EM8810 board has a "CSI 93C46S" which I believe is a 5V CAT93C46S (Catalyst) EEPROM.

I probed the Vcc and GND pins and they are connected to what appears to be the 5V and GND pins of the PCI card. (5V being the last pins furthest from the bracket on the 32-bit card.)



Should I hazard this repair attempt (this way)? Or should I de-solder the chip and program it off the board to be safer?

I have attached a picture of the programmer and of a EM8810 PCI board.
 

Attachments

  • EM8810.jpg
    EM8810.jpg
    282.8 KB · Views: 173
  • CH341A Programmer.png
    CH341A Programmer.png
    442 KB · Views: 229
I have made a little progess but I lack the necessary dump of a working EEPROM. The one I found on the Russian forum is for the newer PCI card revision without the Firewire. That has a different size (much larger EEPROM). So I can't use that.

I removed the EEPROM with low temperature Bismuth alloy (ChipQuik) and read it with my Arduino Nano. I double checked with two different 93C46 sketches and then I used a CH341A with AsProgrammer v2.1.0.13 for 93Cxx support.

For whatever reason the EEPROM is blank. ("FF").



After triple checking I tried programming and reading it and the EEPROM appears to work. I don't understand how it was corrupted but it appears to happen. I also read this happens to Xonar users as spoken of here: Xonar EEPROM Failure - AlsaProject



So, do any of you know how to use a program or utility to read the EEPROM (without taking the chip off the card) from a PCI card installed in a PC?

If someone knows how to do that then perhaps I can ask other forum members with EM8810/E-MU 1820/1820m/1212/1212m (with Firewire version only) to run the program or utility to dump the EEPROM.

Failing that is there any EM8810/E-MU 1820/1820m/1212/1212m (with Firewire version only) owner out there with the knowledge/ability/tools/software to dump the EEPROM from a working E-MU EM8810 PCI card?
 
Last edited:
Thank you for the link for W10 driver fix/support. That is what I used earlier to get the 1820 working under Windows 10. Unfortunately the problem is different now. I am "fairly" certain the problem is EEPROM corruption. However I am not sure how to rule out damage to the PCI buss on the card. I assume I don't have damage on one of the PCI AD lines since Windows can see the card but does not identify it correctly.

I will likely need to go the route of getting another card since while I can program the EEPROM I don't have a .bin or .hex file from a good EEPROM/card of the same model.
 
Last edited:
Interesting. Could that Linux driver be modified to write/dump the EEPROM to a file? Loop through the addresses and write out in bin or hex to a .bin or .hex file?

Do you know anyone with the EM8810 that uses that driver?

I have written AVR code in C but nothing on Linux. I wonder how hard it would be to learn how to write a little program to read that code and dump it to the screen or a file. Probably fairly easy for someone who has done Linux programming before?

It would have to be run by someone with a working card and then I could use the output to program a new 93C46.
 
I have an unused Audigy 2 ZS PCI card so I put that on the bench side by side with the EM8810 PCI card and used a diode measurement to check all pins four different ways to the supplies.

As far as I can tell all the AD pins measure exactly the same between the EM8810 and the Audigy 2 ZS PCI card.

Thus I am continuing to conclude that it is a corrupt EEPROM. So either I find someone with the data to fix my EEPROM or I need to buy another EM8810.

If I buy another EM8810 the question is whether or not I risk removing that EEPROM in an attempt to fix the first EM8810 so that I have a spare for the future. Or whether that will break that card. I assume that with ChipQuick Bismuth solder the 93C46 chip and contents should be just fine after the soldering temperature excursions?
 
The Windows Installer will not run if the PCI card is not identified as a supported E-MU product.

The PCI card is identified by the contents of the EEPROM which include things like the Vendor ID (1102 for E-MU), device and sub-system. The below is an example for the EM8960:

Device PCI\VEN_1102&DEV_0008&SUBSYS_40041102&REV_00\4&18bdcd5b&0&20F0
When the EEPROM is corrupt then the card can not be identified and the installer will not run. The installer aborts after complaining that a supported product was not found.

This would be different from code/firmware for the Xilinx Spartan FPGA or the EMU10K.



I believe the core design of the EM8810 (EMU DSP) is related to the design of the Audigy. I read that the Audigy had EEPROM corruption issues:
WARNING!!! Serious Audigy Bug | Hardware Heaven Forums
 
Last edited:
Interesting. Could that Linux driver be modified to write/dump the EEPROM to a file? Loop through the addresses and write out in bin or hex to a .bin or .hex file?

IMO there is no code in the driver for reading/writing the EEPROM via some emu10k1 I2C bus, only the constants are defined. The driver communicates with ADC via the emu10k1's I2C bus, but not with the EEPROM. It may have just a different address, or be connected to other I2C bus of the controller. Maybe the driver could be modified to scan all I2C addresses on that bus, but that would be quite involved.
 
I was able to purchase another used EM8810 PCI card and the 1820m works again.

Out of interest I swapped the CSI 93C46 EEPROM from the good card to the bad. Unfortunately the bad EM8810 PCI card is still dead.


At this point I am out of ideas to fix that card. I had hoped to repair it (even with a replacement purchased) so that I would have a spare. I can not see any signs of physical damage. Might need to just bin it although I try to avoid that.