AMD Geode/Troubleshooting

This page contains my troubleshooting notes for getting the video working with the Geode.

Problem description
The eBay page listed the issue as "I was able to boot Windows 98SE from a Compact Flash card and everything worked fine. It currently refuses to output a video signal that any of my monitors can recognise" which sounds like it could be anything.

It's a little difficult to tell what's wrong with an x86 computer without video output, so I just checked what I could.

Power supply
Connecting the board's 5V rail to my Gophert NPS-1601 power supply caused it to draw up to 1A of current then beep.

There were no short circuits or smoke. I'm assuming the beeping is from the board POSTing.

Looking at the voltage drop with an oscilloscope, there was jitter from current consumption but no huge drops that would cause a brownout.

Video output
Video output caused both my monitors to display a 'Input not supported' message twice during boot:


 * The first was quick just after boot and lasted a second or so, followed by a second of nothing
 * The second message lasts until you reset the board or pull power

This is different to a 'No input' message, so some signal must be generated that the monitor can recognize but still give a failure for.

RAM
In case some memory error was causing the machine to hang during video initialization I swapped the stick with a test one.

No difference at all, so I don't think anything's really wrong with the RAM.

Removing the RAM altogether caused long beeps, presumably by the BIOS.

The original RAM that came with the machine is a Transcend 512M DDR333 stick, and the test one is Kingston 256M DDR333 stick.

Serial output
I connected both a makeshift and proper null modem cable to the serial port on the device. There was no output on it, but my oscilloscope showed the transmit line being held low.

This doesn't mean necessarily mean anything, most BIOSes on consumer hardware (old and modern) don't output on the serial port. This is horrible on many levels ranging from accessibility to troubleshooting or just configuring things if you don't have a monitor.

Clock battery
I removed the clock battery and checked it with my multimeter. It was around 200mV, much lower than the 3V it should provide.

I figured this may have caused some kind of under-voltage data corruption, but booting without the battery doesn't do anything.

The battery is a Rayovac BR1632 (see Rayovac 6099 OEM Reference Guide for more details) coin battery. This is a size smaller than the standard 2032 battery you'd see in a computer so I haven't replaced it yet.

Visual inspection doesn't show any battery leakage on the battery, and I can't really check under the battery holder without de-soldering it. I'm going to assume there wasn't any damage from a leakage event.

Keyboard
I plugged in a standard PS/2 keyboard (a black Acer KB-2971 covered in grime). The system would allow toggling caps lock and num lock as well as make some beeps when pressing keys.

This confirms that the system is active and not physically dead.

Ethernet
I connected the machine to my computer using an Ethernet cable to see if some kind of network boot was being attempted.

No packets arrived at my machine, so it's definitely not trying to boot over the network.

BIOS
I removed the BIOS chip to see how this would affect things.

The system didn't respond to any keypresses and made no noise.

This confirms that the BIOS is responsible for all the behaviour seen so far.

VGA signals
Probing the VGA signal showed the following:


 * Vertical sync was a 60Hz square wave lasting for 40 microseconds
 * Horizontal sync was a 75.02KHz square wave lasting for 1.45 microseconds
 * Red green and blue were all flat signals around 200mV

This seems like the machine is outputting no graphics signal.

I didn't see any visible damage on the board's VGA section so this seems like a software issue.

USB powering
I measured powering over USB using my Color TFT USB Tester and it confirmed earlier measurements. The current hangs around 1A and peaks around 1.5A.

Measuring the DAC
The AMD Geode LX Processors Data Book explains that after video has been rendered it's output through an 8-bit DAC.

The following signals are used by the DAC:


 * DVREF - A 1.235V voltage reference
 * DRSET - A 1.21K current setting resistor
 * DAVdd - Four 3.3V analog power connections
 * DAVss - Four 0.0V analog ground connections
 * RED, GREEN, BLUE - Analog DAC output
 * DOTREF - 48MHz input clock

After looking at the OLPC XO-1 Schematics and AMD Geode LX EPIC RDK Schematics which both use LX processors and the PCM-9375 board itself I figured out the following:


 * The OLPC XO-1 uses a resistor voltage divider to generate DVREF
 * The AMD EPIC RDK and PCM-9375 use a LM4041AIM3-1.2 to generate DVREF
 * The OLPC XO-1 sends the DAC signals to the connector directly
 * The AMD EPIC RDK and PCM-9375 put inductors and ESD protection in front of the signals
 * The PCM-9375 has some capacitors in front of the signals
 * The OLPC XO-1 and AMD EPIC RDK connect the DOTREF to the CS5536 chip
 * I presume the PCM-9375 does that too

Most of the signals above are physically exposed balls under the Geode chip. Probing them shows:


 * DVREF hangs around 1.22V
 * DAVdd hangs around 3.3V
 * DOTREF is a 48MHz sine wave (possibly scope artifacts)

Everything looks fine here.

Booting FreeDOS
I ran QEMU with my CompactFlash card passed through as the hard drive.

Installing FreeDOS was fairly easy.

I added 'CTTY CON' to the autoexec and the command shell talked over serial.

Unfortunately all the DOS programs that use video graphics don't work.

Booting Linux
I ran QEMU with my CompactFlash card passed through as the hard drive again.

I installed Alpine Linux and configured it to use the serial port for communication.

I recompiled Linux enabled the Geode LX video driver and set Alpine to use that.

Somehow VGA worked and displayed a login prompt, but degraded over time until it was unreadable.

Probing the signals showed very weak square waves on the DAC analog outputs.

Probing desoldered analog signals
I figured the analog outputs were being pulled low somehow.

I desoldered the inductors and capacitors so the analog signals weren't loading any current.

Probing the signals showed no difference.

I attempted to solder things back together but it ended with ripped pads. I had a webcam acting as a microscope that didn't magnify well and blocked my motion, and too large of a soldering iron tip that I couldn't position properly. I also lacked a lot of experience and didn't know what to do.

In short I managed to:


 * Lose three capacitors
 * Desolder two inductors
 * Rip a set of pads for an inductor
 * Rip a pad on one of the analog output capacitors
 * Burn a lot of plastic

Not a great move on my part.

Probing desoldered signals again
After a long hiatus I took a look at the signals again. At this point I don't see any signals at all, even after attempting to patch drivers to output test signals. Still my monitor detects Linux. Interestingly my USB to VGA setup detects both BIOS and Linux. Maybe the 'Input not supported' is related to HSYNC/VSYNC polarity?

I believe the capacitors I desoldered were connected between analog ground and the red/green/blue signals. I'd imagine they're very low values around 10pF or something.

Soldering the inductors back seems like the next step so I can hopefully try to reproduce the Alpine Linux login prompt.

I did probe the area with a multimeter. I think the middle ESD diode has failed. Could that be pulling things low?

Rebuilding solder fialure
I managed to spend a lot of time and effort rebuilding the stuff I messed up to the point it works again. I actually couldn't find the ceramic capacitors I ordered so I skipped them.

Alpine Linux does give a nice login prompt again.

Looking at the ESD diodes again shows they have correct values, so it was likely just me measuring an incomplete circuit.

Future ideas
Here's some things I'll try:


 * EeePC signals comparison
 * Check if this is a BIOS issue
 * Look at all the capacitors on the board
 * Try putting the DAC in test mode
 * Is DRSET connected properly?