First post, by analog_programmer
- Rank
- Oldbie
Cause of death: Broken solder joints on FBI chip pins.
These days I got one defective Guillemot Maxi Gamer 3D Voodoo 1 card in visually perfect condition. The symptoms for this videocard were black screen and frozen system at initializing of the card. Of course my first job was to check what MOJO.EXE will tell in pure DOS and I was very disappointed to see these logs:
DPMI: In DpmiHookFxMemmap, addr=e8000000, size=01000000
DPMI: Loading fxmemmap.vxd
DPMI: GetDeviceAPI, devid = 0027
DPMI: GetDeviceAPI: Devid=0027, FuncPtr0000:00000000
DPMI: GetDeviceID returns NULL!!!
DPMI: Couldn't get VXDLDR entry point
Info for Voodoo board # 0:
=====================================================
Virtual Base Address: 0x10400000
Physical Base Address: 0xe8000008
PCI Device Number: 0x11
Vendor ID: 0x121a
Device ID: 0x1
FBI Revision: 2
FBI Memory: 2 MB
FBI PowerOn Sense: 0x2
TMU PowerOn Sense: 0xdead
FBI DAC Output Color Format: 24BPP
Scan-Line Interleaved? No
TMU Revision: 57005
Number TMUs: 57005
WARNING: Board 0: Bogus number of TMUs (57005)!
------------------------------------------
sst1Init Routines: InitCode $Revision: 5 $
sst1InitMapBoard(): BoardsInSystem = 1
sst1InitMapBoard(): vAddr:0x10400000 pAddr:0xe8000008 Dev:0x11 Board:0
sst1InitRegisters(): Setting TREX-to-FBI FIFO THRESHOLD to 0x8...
sst1InitRegisters(): Setting PRELIM FT-CLK delay to 0x8...
sst1InitDacDetect(): Entered...
sst1InitDacDetectICS(): Entered...
dacWr(0x7,0xb)
dacRd(0x5,0x79)
dacRd(0x5,0x2e)
dacWr(0x7,0x1)
dacRd(0x5,0x55)
dacRd(0x5,0x49)
dacWr(0x7,0x7)
dacRd(0x5,0x71)
dacRd(0x5,0x29)
sst1InitDacDetectICS(): Exiting...
sst1InitRegisters(): Storing TREX0INIT0=0x5441
sst1InitRegisters(): Storing TREX0INIT1=0xf420
sst1InitRegisters(): Storing TREX1INIT0=0x5441
sst1InitRegisters(): Storing TREX1INIT1=0xf420
sst1InitRegisters(): Storing TREX2INIT0=0x5441
sst1InitRegisters(): Storing TREX2INIT1=0xf420
sst1InitSetGrxClk(): Entered...
dacWr(0x7,0xe)
dacRd(0x5,0x0)
dacWr(0x4,0xa)
dacWr(0x5,0x7b)
dacWr(0x5,0x6c)
dacWr(0x4,0xe)
dacWr(0x5,0x0)
sst1InitRegisters(): Setting up FAST DRAM Configuration
ERROR: b_sum=0x060 r_sum=0x030
sst1InitFillDeviceInfo(): Retry #1 for chip GetInfo()...
ERROR: b_sum=0x060 r_sum=0x030
sst1InitFillDeviceInfo(): Retry #2 for chip GetInfo()...
ERROR: b_sum=0x060 r_sum=0x030
sst1InitFillDeviceInfo(): Retry #3 for chip GetInfo()...
ERROR: b_sum=0x060 r_sum=0x030
sst1InitFillDeviceInfo(): Retry #4 for chip GetInfo()...
ERROR: b_sum=0x060 r_sum=0x030
sst1InitRegisters(): ERROR filling DeviceInfo...
I've checked all pins of both TMU and FBI chips for broken solder joints, but they seemed to be OK and because of these lines
"FBI PowerOn Sense: 0x2
TMU PowerOn Sense: 0xdead
TMU Revision: 57005
Number TMUs: 57005
WARNING: Board 0: Bogus number of TMUs (57005)!"
I focused entirely on the potential problem in TMU.
Since I didn't know exactly what to do to further diagnose the problem, I just put the card in the ultrasonic bath (even though it was perfectly clean) - this way I've already "revived" two "dead" videocards due to accumulated dirt/corrosion on contacts and elements and meanwhile I've started searching the internet for information related to "TMU PowerOn Sense: 0xdead", "Board 0: Bogus number of TMUs (57005)!" and "b_sum=0x060 r_sum=0x030" errors.
I've read all related to those errors threads in this forum as well (they are only for Voodoo 2 cards) and again - only hypotheses with nothing concrete as information. For the "0xdead" error I found guesses and suggestions for multiple possible causes (including a problem with the frame buffer chip, although the MOJO logs don't suggest this), but all of them were for Voodoo 2 cards. In one thread I came across a comment with the exact same errors (again on a Voodoo 2 card) and it wasn't easy to find it, because the user had posted pictures like this instead of text logs. And again - no answer for the "0xdead" problem.
Unfortunately ultrasonic bath did not help this Voodoo 1 card to "magically" work again, but it did help for the bad solder joints on pins of the FBI and TMU chips to show up better 😀 And after last desperate "acoustic test" to the pins of the both FBI and TMU chips I've got it! There were eleven detached from the solder pads pins on the FBI chip (56 to 66). Bingo! These loose pins are visually traceable to FBI RAM chips and that's why I've got "ERROR: b_sum=0x060 r_sum=0x030" related to EDO RAM. I've turned on my soldering iron and it was pretty easy repair job.
After the reflow of the detached FBI pins the card is now in fully working condition.
DPMI: In DpmiHookFxMemmap, addr=e8000000, size=01000000
DPMI: Loading fxmemmap.vxd
DPMI: GetDeviceAPI, devid = 0027
DPMI: GetDeviceAPI: Devid=0027, FuncPtr0000:00000000
DPMI: GetDeviceID returns NULL!!!
DPMI: Couldn't get VXDLDR entry point
Info for Voodoo board # 0:
=====================================================
Virtual Base Address: 0x10400000
Physical Base Address: 0xe8000008
PCI Device Number: 0x11
Vendor ID: 0x121a
Device ID: 0x1
FBI Revision: 2
FBI Memory: 2 MB
FBI PowerOn Sense: 0x2
TMU PowerOn Sense: 0x11
FBI DAC Output Color Format: 24BPP
Scan-Line Interleaved? No
TMU Revision: 1
Number TMUs: 1
TMU 0 RAM: 2 MB
DpmiUnmapMemory
DPMI: DpmiUnhookFxmemmap OK
-----------------------------
sst1Init Routines: InitCode $Revision: 5 $
sst1InitMapBoard(): BoardsInSystem = 1
sst1InitMapBoard(): vAddr:0x10400000 pAddr:0xe8000008 Dev:0x11 Board:0
sst1InitRegisters(): Setting TREX-to-FBI FIFO THRESHOLD to 0x8...
sst1InitRegisters(): Setting PRELIM FT-CLK delay to 0x8...
sst1InitDacDetect(): Entered...
sst1InitDacDetectICS(): Entered...
dacWr(0x7,0xb)
dacRd(0x5,0x79)
dacRd(0x5,0x2e)
dacWr(0x7,0x1)
dacRd(0x5,0x55)
dacRd(0x5,0x49)
dacWr(0x7,0x7)
dacRd(0x5,0x71)
dacRd(0x5,0x29)
sst1InitDacDetectICS(): Exiting...
sst1InitRegisters(): Storing TREX0INIT0=0x5441
sst1InitRegisters(): Storing TREX0INIT1=0xf420
sst1InitRegisters(): Storing TREX1INIT0=0x5441
sst1InitRegisters(): Storing TREX1INIT1=0xf420
sst1InitRegisters(): Storing TREX2INIT0=0x5441
sst1InitRegisters(): Storing TREX2INIT1=0xf420
sst1InitSetGrxClk(): Entered...
dacWr(0x7,0xe)
dacRd(0x5,0x0)
dacWr(0x4,0xa)
dacWr(0x5,0x7b)
dacWr(0x5,0x6c)
dacWr(0x4,0xe)
dacWr(0x5,0x0)
sst1InitRegisters(): Setting up FAST DRAM Configuration
sst1DeviceInfo: Board ID: Obsidian GE
sst1DeviceInfo: FbiConfig:0x2, TmuConfig:0x11
sst1DeviceInfo: FBI Revision:2, TMU Revison:1, Num TMUs:1
sst1DeviceInfo: FBI Memory:2, TMU[0] Memory:2
sst1DeviceInfo: Dac Type: ICS ICS5342
sst1DeviceInfo: SliDetect:0
sst1InitRegisters(): LFB Writes go through memory FIFO...
sst1InitRegisters(): TEXTURE Writes go through memory FIFO...
sst1InitRegisters(): exiting with status 1...
sst1InitShutdown(): Shutting down SST-1 #0...
sst1InitSetGrxClk(): Entered...
dacWr(0x7,0xe)
dacRd(0x5,0x0)
dacWr(0x4,0xa)
dacWr(0x5,0x41)
dacWr(0x5,0x62)
dacWr(0x4,0xe)
dacWr(0x5,0x0)
sst1InitShutdown(): Returning with status 1...
Still there is a problem with overheating of TMU and FBI chips at 50 MHz (maybe due to different power feed design with this board - the PCB is different from the referent design), but clocked at 45 MHz (this is written on the card: "45 million pixels/sec") it works perfectly fine without any cooling and even managed to beat my other Voodo 1 Diamond Monster 3D (running at 50 MHz) in 3DMark99 with the drivers for Diamond Monster 😀 Of course I'll glue some 28mm heatsinks to FBU and TMU chips to work normally at 50 MHz.
P.S. MOJO doesn't always give proper guidance through its logs on first reading. In this case it seems more likely the problem to be with TMU or RAM chips, but actually the problem was with FBI chip.
P.P.S. Does anyone know what the unpopulated J6 and J7 connector's spots were intended for?
from СМ630 to Ryzen gen. 3
engineer's five pennies: this world goes south since everything's run by financiers and economists
this isn't voice chat, yet some people, overusing online communications, "talk" and "hear voices"