The Winterm Embedded System

Goal of this project was to build a truly low cost, low power system that runs linux and is at least somewhat standard x86 without too much hacking.
The wyse winterm is a good choice because it met most of these requirements (shown is the compaq variant).
This setup is really a simplest prototype design for other more elaborate projects.   See my other page for info about the winterm hardware internals and other links

No Scan Converter
The interface between the TV and the winterm VGA is comprised of just a few resistors.   No scan converters were used and winterms do not have an onboard TV out capability, just ordinary VGA.
The video driver is programmed to clock and sync at an NTSC compatible mode from poweron (via the patched bios) and in the geode kernel framebuffer driver.

Geode GX1 Video

Recently, the 2.6 kernel changed the geode framebufer from the terrible AMD durango to a completely opensource natvie diriver.  Its superior to the one in 2.4.x kernels.   But it lacked in its ability to do interlacing, doublescan, and low scanrates.  Also, after reading the cs5530 data sheet I found that the dot clock PLL is quite flexible and can drive at just about any scanrate from 10mhz to 200mhz and even a little outside of these boundries.   But it requires setting up the dot clock confiiguration register with strange cryptic values and even more strange constraints.   So I made a dot clock register calculator that included all of the lookup tables and boundry conditions.
Ive also added interlacing, double scan, pixdouble, v/h sync polarity selection as well as some default NTSC compatible startup modes
(640x200 and 640x230) to the gx1 framebuffer driver.
See the Files section below for these plus a t1010 downloadable bundle.

Ordinarily, a normal PC posts into INT10 mode 3, 80x25 text, and the patched bios is enough to startup and run linux in NTSC-compatible text mode for the duration.  But the winterm firmware is a little peculiar.  It jumps into graphics mode 640x480x8 (INT10 mode 5F), then shortly after goes into protected mode, then executes NK.BIN without ever changing back to a text mode.   Once in protected mode, going back to real mode (or emulated via vm86, or x86emu) is no trivial task, and doing it for just the purpose of setting up a vga text mode isnt very practical.  So instead, the native geode framebuffer does the work when linux starts.  In order to use X11, the framebuffer driver needed to be patched anyway, so this kills both birds with the same stone.

MPEG Acceleration

The cs5530 include a capability for YUV acceleration, enabling for fast display of video content.  As far as I can tell, nobody has ever written a driver or mplayer plugin to enable this.  One added, these platforms may be much more capable with video.

Geode Audio

The ExpressAudio driver is still in the linux kernel.  This requires ExpressROM and/or VSA (software based hardware compatibility layer hidden in SMI space which isnt very efficent or bug free).   Fortunately native audio drivers exist for the Geode platform,  for FreeBSD and linux.   See and kahlua-native-sound-2.6.17.tar.bz2

No Power?  No problem

I found that there wasn't any really good deals when it came to a basic 12v to 5v switching converter that could handle more than 1A.  There must be a demand for these or something.  Anyway I built one myself for just a few dollars with junkbox parts and a switching regulator from ON Semiconductor  (PN MC34167, came as free samples).  

Not pretty, but functional.  It handles up to 5A load and generates almost no heat after testing for more than 4 hours continuous use.
The circuit is the same as the one in the datasheet, sans the PCB, just using stiff wires.  It was faster to assemble this way and avoids the nasty etchant chemicals.

The completed circuit is small enough to be stuffed into a short section of PVC.
On the left is the 12V in, on the right is the 5V out to the winterm.  The plug in the center is the 12V to the TV.

After building this, I discovered I could have made it even cheaper by using the very common MC34063 and an external FET  (which is basically what the MC34167 is, except all in one package).  The advantage of the external FET is higher current handing.   But for a winterm, the power consumption is not even close to 5A.

Note, these images came out a little bit overexposed and contrasted.  In part because of a lousy digicam, but also because capturing a full tv raster scan required a long exposure time.  Otherwise only a fraction of the screen would appear.
winterm pics

winterm files