SGI 1600SW and VGA conversion

HEY! You might be able to do it with a "normal" adapter!

I know *nothing* about this tool, just came across it, and thought I'd spread the word... It looks like it should be possible to set up your 1600x1024 resolution with this. http://tech.mattmillman.com/lcd/rovatools/

SEE ALSO:

SGI 1600SW

You may have heard of it...

The SGI 1600SW was an award-winning LCD display costing over $2000 when it was new... I drooled over it for quite some time before finding one on ebay for $50 (+$15 for a special video-card) a few years back.

So what made it special?

One of the largest and highest-resolution LCD displays available at the time, a sleek and elegant design, and... I dunno what else, really. It's nothing special by today's standards.

Another thing that makes it special is its non-standard interface, more on that later.

But, it's by-far the best display *I own.* Besides, I spent enough time drooling over it all those years ago, I had to make use of it.

So, what's this nonstandard video interface?

Well, by today's standards, it's basically the same as FPD-Link (often mistakenly called "LVDS"), used in most laptops for quite some time. By the standards of the era, it promised to be the up-and-coming (and open!) standard for digital video. It's called "openLDI", and again, is basically identical to FPD-Link, but designed for the long-distance between a desktop-computer and its display. DVI overtook it as the de-facto standard, and ultimately the 1600SW was pretty much the only display which used this "standard." (NOTE: the 1600SW DOES NOT FULLY/DIRECTLY IMPLEMENT openLDI... this'll be explained later).

There was a multi-hundred-dollar converter for this purpose, called the MultiLink, and even a couple custom video cards. For years, dedicated folks worked on methods to get this display working on normal computers via DVI and/or VGA, some even sold them as products.

What else makes it complicated?

Well, basically, besides the nonstandard physical/electrical interface, the display *only* works at its native resolution, a nonstandard one, at that. At the time, that meant no BIOS/POST screens, no DOS, no Linux consoles... No Windows Installer...

No, we're talking 1600x1024, the only display in existence with this resolution.

Even the video-cards, from well-known companies, handled it oddly, the one I got didn't even do scaling, so the POST screen fit in a tiny box in the upper-left-corner of the screen. The odd thing, thinking about it now, is that this could've easily been handled by using a Mobile video-chipset. since, as I said, it's basically identical to an oversized laptop display in a housing with a really long cable.

That-said, I've yet to see a desktop video-card with a mobile GPU. and even if I had, it wouldn't've solved the issue of using this display on *multiple* computers, or on my laptop.

Today's Solution:

I don't check, regularly, but it seems the forum-posts begging for ways to run this display on a normal computer have dwindled... The last one I read said, simply, something like "you can buy DVI/VGA-to-LVDS converters on eBay for cheap."

Yep. Something that people spent *countless hours* developing workarounds for may have basically been reduced to "buy one from China for $50".

It may take some hacking... See my utterly-roundabout method, below.

LVDS/FPD-Link/openLDI:

First a bit of nit-picking, with a twist at the end: "LVDS" is not the right term, though everyone seems to use it, even me... "LVDS" refers to the "Low Voltage Differential" electrical-interface, NOT the protocol. LVDS is used elsewhere, including SCSI. So, no, the DVI/VGA-to-LVDS converters available on ebay are not devices which allow for interfacing from VGA to hard-disks. They convert VGA to an interface compatible with a large percentage of LCD display panels...

Originally, the majority of LCD displays with LVDS interfaces came from laptops; people wanted to turn their old laptop displays into desktop displays. For over a decade it was considered "impossible" by most forum-goers, and now it can be done for $6.

The standard interface/protocol used is called FPD-Link (Flat-Panel Display Link). (NOTE: FPD-LinkII and FPD-LinkIII are NOT the same, and are not described here). FPD-Link defines both the use of LVDS as well as the timing/"protocol". For the most-part, this is used to interface *directly* to the LCD-panel, itself... Even at the high-end, most LCD panels usually DO NOT handle things like scaling, etc. For the most-part they work at only one resolution, the "native resolution," defined by the number of physical pixels on the screen. In order to handle other resolutions, *another device* is responsible for scaling the input image, and outputting it in the LCD's native resolution. On a laptop, this is done by the GPU and/or the system's BIOS. On a desktop-monitor, this is handled by a dedicated circuit built into the monitor's housing. On the outside it looks like the LCD is VGA or DVI and can handle a huge range of different resolutions (640x480, 1024x768, even 720x400 used during "text mode"), but in reality, the LCD itself is being fed signals at its native resolution.

OpenLDI, mentioned earlier, basically takes FPD-Link "outside the box." Electrically and protocol-wise it's dang-near identical to FPD-Link. The main exceptions, it seems, are that it accounts for things like long-distance signal-transmission, hot-plugging, connectors and pinouts, the implementation of an EDID so the computer can identify the screen's capabilities, and non-native resolutions. It doesn't specify that *scaling* should occur, just that the display should show *something* at non-native resolutions (e.g. showing 640x480 in the upper-left-quadrant on a 1280x960 LCD. In fact, it states that it's acceptable to have that image repeated in the remaining space on the screen). (Oddly, the SGI 1600SW, being one of the few displays based on openLDI, doesn't meet many of the openLDI specifications; the important one, here, being that it basically only works at its native resolution. In this regard, this display is quite similar to a laptop-display with a really long cable).

BRIEF NOTE: Dual vs. Single Pixel/Channel LVDS:

In order to handle *really large* displays (basically anything bigger than 1024x768), they came up with a method to keep up the refresh-rate without running into signal-degradation... send *two* pixels during each pixel-clock, on two separate but nearly-identical channels. (NOTE: Usually only the *first* channel sends the Hsync/Vsync/Data-Enable signals! See "Pinout Fun.")

The 1600SW is a dual-pixel display.

DVI/VGA-to-FPDLink Converters:

As touched-on earlier, basically any desktop LCD monitor/TV has a dedicated circuit for converting its input signals (DVI/VGA) to a format the LCD itself can accept (usually, now, FPD-Link) and at its native resolution/timing. (In fact, many Plasma displays also use FPD-Link internally,, despite the necessity to convert to yet another signal-format before reaching the driving-circuitry).

For the most-part, even though FPD-Link LCDs have been used in desktop monitors for some time, it seems the vast-majority of desktop monitors have had *custom* circuits for the actual conversion of VGA/DVI to FPD-Link. Even different monitors from the same manufacturer would have different designs for this circuitry, different processors... And, for the most part, these custom circuits would only work with the specific LCD panel (resolution/timing) it was designed for.

At some point it seems some manufacturers got smart and started using boards which were much more flexible; it's entirely *plausible* to take a converter from an old/cracked 1680x1050 LCD monitor and connect it to an old 1280x1024 LCD found in a broken laptop. But even still, most aren't interchangeable like this, even though the input signals and output signals are pretty much standardized. (This likely due to the high volumes produced; they can save $0.05 per unit if they don't have to install jumpers to select the LCD's resolution).

DVI/VGA-to-FPDLink Converters Continued:

Then there are those which *do* handle multiple resolutions, and are designed explicitly with that in mind. These are handy for small-batch displays; probably used in Point-Of-Sale terminals, etc. And, obviously, by hackers and hobbyists who want to use their old laptop's display with their desktop, mount it in a custom car-mod, or even as a TV. What once was "impossible" is now just a matter of a few dozen or so dollars and a two-week shipping-time from China.

Again, DVI/VGA-to-LVDS converters come in a couple forms...

Custom Programmed Converters:

One type gets custom-programmed by the seller for nearly any resolution. (UPDATED) Unfortunately, it seems, this "custom-programming" comes in the form of the seller loading the device with one of a large selection of *pre-packaged* binary firmwares. Since this display's 1600x1024 resolution is unique, it's highly unlikely they have a prepackaged binary for it. HOWEVER: I am working on presumptions, here. It certainly wouldn't hurt to ask-around.

I haven't purchased one of these, but if they have the ability to program it for 1600x1024, they seem like they'd be perfect for this display. They come in several forms with several input-options... DVI, VGA, HDMI, Composite (for your older gaming systems or VCR if you, like me, still use one), and even RF (for HDTV). Some of them even have remote-controls, and audio volume-control. These, basically, turn your favorite LCD into a modern high-def multimedia system, TV, and computer-monitor. These, basically, are what you'd find inside a prebuilt LCD HD-TV, but not customized in that "Let's save $0.05 per unit" sort of way.

As fully-featured as they are--as much as I'd've saved time using such a device with my 1600SW (if it can be done), and as much as it'd've been a more *complete* and *functional* solution for this display--I'm the sort who tends to do different things with my tools... Rather, I look at a device like this as a tool, rather than a means to an end. So, for my needs, having a fixed output resolution isn't ideal.

Jumper-Selectable Standard-Resolution Converters:

A while back I purchased the *other* type of converter for another project. This type doesn't have to be programmed for a specific output resolution; instead, jumpers select from among a wide-range of *standard* LCD resolutions/timings. These are generally cheaper, less fully-featured, and more of an "epoxy-blob," "black box," or "trade-secret" sort of device. In fact, despite being widely-available in several PCB layouts, there doesn't seem to be any information on the interwebs about the chip used. (In particular, I purchased an MT6820-B V2.0 for a little over $6! Shockingly cheap.)

Using A Standard-Resolutions Converter with this Nonstandard Resolution Display

As I said, these cheaper converters only work with standard resolutions. The 1600SW's 1600x1024 resolution is completely nonstandard.

I, in fact, had no intention of writing the above dissertation, and intended on this page being all about *how I did it*... but I'm losing steam... so I'll just bullet-point it... (Come back later, maybe there'll be pictures, code, schematics, etc.)

Basically: Three "standard" LCD-resolutions *almost* work with this display:

    • 1280x1024

    • 1600x900

    • 1680x1050

Each has their own pros and cons... and most of these effects are those of the 1600SW's handling of non-native timings.

1680x1050

    • A portion of the image is cut-off at the right and at the bottom. But this can be overcome (see "the trick" below)

    • For some reason, this mode reports to the computer that it doesn't work with some lower standard-resolutions that it can in fact handle. This is overcome by changing the EDID

    • This mode does *not* work with refresh-rates >60Hz

1280x1024

    • Looks best when scaling a lower input-resolution. E.G. 640x480 fills up the entire 1280x1024 block at the left of the screen. The remaining columns (cols 1280-1599) are filled with a solid color (in fact, the color at the bottom-right pixel).

    • For some reason this particular setting seems to output at the same refresh-rate as the input, which means >60Hz won't work... Text-Mode after POST (e.g. boot messages) seems to use 720x480 at 70Hz; the 1600SW doesn't like this).

1600x900

    • Works with nearly all input-resolutions and refresh-rates, but the display *repeats* the image in the lower rows (rows 900-1023 repeat rows 0-123). This gets confusing in text-mode, for sure.

    • This is the ONLY resolution-setting works with input signals at >60Hz (e.g. boot-messages)

So, a couple circuits are involved...

A custom EDID circuit,

Reports the native resolution of 1600x1024, with timings that match 1680x1050... (and a few other configurations)

A resolution-detector/mode-switcher circuit.

This uses the Hsync and Vsync signals directly from the VGA input to detect the incoming (vertical) resolution and refresh-rate in order to determine which output-resolution will work. When a change of output-resolution is required it reconfigures the "jumpers" and resets the converter.

The trick with 1680x1050

Because VGA doesn't send the pixel-clock and Data-Enable to the display, the receiving-device (the VGA-to-FPDLink converter, in this case) has to determine the location of the image from nothing but Hsync and Vsync, and whatever it can determine from the image-data. When you press the "Auto-Adjust" button, it adjusts the location of its sampling of the image with-respect-to the syncs.

So, the trick is to:

    • Run the display at 1680x1050 with an input-signal at 1680x1050

    • Press the "Auto-Align" button, so that the converter aligns the 1680x1050 image-data with the edges of what it thinks is a 1680x1050 LCD (off the physical screen)

    • Then switch the computer to output 1600x1024 *with the same H/Vsync timings as 1680x1050* (extend the H/V blanking-times to match)

--Since there's no Data-Enable signal sent over VGA, and since the converter only looks at the image-data when running "Auto-Align," the converter has no way of knowing that the image stops early, both at the right and at the bottom. It, essentially, thinks it's still receiving 1680x1050 and that there's nothing but black pixels in the unused locations. And the computer thinks it's outputting 1600x1024, so it won't try to extend the desktop/menu-bars off-screen.

WORKS GREAT

Definitely functional-enough for most of my needs... and way better than my other displays at 1024x768.

Caveats

Text-Mode (Most but not all boot-screens, DOS, linux without a framebuffer, etc.) apparently runs at 70Hz, which only works with 1600x900 mode. Thus, it shows the first few lines of text repeated at the bottom... a bit confusing. At least it works at all, there's really no way to change the refresh-rate/resolution of the boot screens (especially if trying to use this monitor to set-up a new computer)

EDID: APPARENTLY WINDOWS (XP) does NOT pay attention to the display's "Native Pixel Format"/"Preferred Timing" in the EDID!

Flicker: I haven't figured out exactly what's responsible, but in some refresh-rates there seems to be very subtle flicker and/or scrolling... 1600x1024 seems to work anywhere from 58Hz to 66Hz, which it seems is being sent *directly* to the display (rather than being buffered and retransmitted at some fixed-rate). Different refresh-rates seem to have different scroll/flicker... I'll be looking into this more, and probably reprogram the EDID to that rate. (Update: I've looked into it, but it seems to be somewhat random. E.G. right now it's not scrolling at all, and other times it's almost unbearable. Maybe it has something to do with beating between the row-frequency and the backlight-inverter-frequency which could be temperature-sensitive?).

Delayed switching: It takes a fraction of a second to detect a resolution-change, then another fraction-of-a-second to reset the converter, then the converter probably takes a fraction of a second to detect the resolution, and the display itself probably takes another fraction of a second to detect the resolution it's receiving... So, in all, it can take a second or more to handle a change in resolution... This is quite limiting during quickly-changing boot-screens. Gotta hope you press that "Pause" button at the right time!

----------------------

Contained-version... +5V, VGA in, 1600SW "openLDI" out. Button/LED board stolen from an old VCR, just happened to be laid-out almost perfectly for the VGA-to-LVDS converter.

I had no intention of this becoming permanent, I just needed something stable to prevent wire-snags and reduce the strain on the boards... but it's been in-use like this for months, now.

Inside, quite ugly, it was supposed to be a prototype, not a final-product...

Below is the VGA-to-LVDS converter, purchased for ~$6 on ebay (no kidding, it's amazing that's even physically possible). It's the MT6820-B V2.0, and comes in several form-factors.

A few hacks can be seen: First, I accidentally wired it backwards once and blew-out the 1.8V regulator, so the replacement can be seen in the middle with the potentiometer. Second, I needed 0.1in spacing headers for power, so that can be seen to the right of the red connector.

The remaining hacks are related to resolution-switching. Under the VGA connector I added a three-pin header for Hsync, Vsync, and GND to be fed to my custom resolution-switcher circuit. On the upper-right corner was unpopulated space, so I used this space with a piggy-back board that adds two jumpers for selecting the EDID sent to the computer. In one jumper-position, it sends the EDID from the MT6820 (its EDID is not used for this project, but some day I might like to use it for something else...). The other position reroutes the VGA's EDID signals to a four-pin header, which is connected to my resolution-switcher circuit.

The output-resolution (sent to the LCD) is selected by the jumpers at the bottom-left in the above picture, the jumper-table is shown in the next picture. These jumpers are selected by the resolution-switcher circuit.

Below, the LVDS output is re-routed to the 1600SW's connector. There's no circuitry necessary, the output-signal from the VGA-to-LVDS converter is correct for the display. The 8-pin chip is the custom EDID (an AVR). This "board" and its attached IDE cable was developed for general-purpose experimenting, then repurposed for this semi-permanent prototype.

The EDID has two custom-resolutions programmed-in. The first is the original 1680x1050 timings provided by the VGA-to-LVDS converter, when it's in that mode. The second (and default/"Native") resolution is the 1600SW's native resolution of 1600x1024, except it extends the horizontal and vertical porches to match the timing of 1680x1050. In this way, the VGA-to-LVDS converter *thinks* it's receiving a 1680x1050 signal with a black border to the right and bottom. (see "the trick" above)

LVDS remap-board and button/LED boards connected. (Guess I didn't take a picture with the jumper-selector connected).

The next two photos are of the resolution-switcher circuit. It takes the VGA's Hsync and Vsync signals as an input to measure the refresh-rate and number of lines. From these values it determines which output-resolution to select. Then it powers-down the VGA-to-LVDS converter, switches the jumpers (via TTL Open-Collector outputs), then powers it back up. It also has a UART for sending the measurements and resolution-change notices to a computer. (It doesn't measure the line-resolution perfectly, e.g. in 1680x1050 mode, it may be off by 2-3 lines. I'm not sure why, but it's accurate enough...). This board was designed for another purpose entirely).

SEE ALSO: