DæmonNews: News and views for the BSD community

December 1999 Get BSD New to BSD? Search BSD Submit News FAQ Contact Us Join Us
Search


Get BSD Stuff

Getting your single-frequency monitor to work with BSD

by Chuck Robey, chuckr@picnic.mat.net

I recently had a really good experience getting a single-frequency monitor working, so I thought I'd write up my experiences, and perhaps help others. I guess you could consider this a usage report on the Software Integrators Saturn GL video card, and the monitor of the week.

You know what I mean, they show up on sale all over, for very little money, the single-frequency 19" or 21" monitors from DEC, Sun, HP, and other workstation manufacturers. These guys are not multisync monitors, so you can't just connect them to your PC and run, even if you bought a matching connector. Just trying to run a 640X400 PC start up screen could easily fry any of these monitors, and your investment would be gone. Their big transformers are optimized to run at one frequency, and they're kinda stubborn about it.

I tried to get a monitor like that running for myself about 3 years ago. In the end it turned out that the monitor was fried, but I found out after paying out $375 for a video card that was totally useless if it couldn't be used to run that monitor. At that time the various vendors of video cards would sell you (a very expensive) video card, but it had to be set up by the video card vendor for ONE monitor scan rate, and if the monitor was no good, gee, that's too bad (bye bye $375).

I recently had another chance to get my hands on a single-frequency monitor, and I nearly passed it up before doing another check on the vendors of video cards serving the single-frequency monitor market, when I found out about Software Integrators' Saturn GL. It comes in 4M and 8M versions, and the current price of $159 for the 8M model is attractive, but that wasn't the reason why I decided to give these guys a try.

The reason is the installation method--primarily the fact that it's user-configurable. The card comes with software: a CDROM for the Windows users, and a floppy for us Unix-ers. Listen closely about that very interesting floppy.

First, the floppy is bootable, it's been made using FreeDOS, so if you're like me, and all your old dos-bootable floppies have crumbled into dust, this is a good recharge. Second, the floppy, when booted, starts up a Software Integrators job that cycles through 30 different sync setups, waiting for you to hit the space bar when you see one that you like. Write down the number that shows up on the screen (to ID the mode), then hit any key *except* the space bar, and it continues to cycle through the possibilities. If instead you hit the space bar again, that sync setup is stored in on-card non-volatile memory, so that the card now boots every time in a mode that your monitor, no matter what kind you bought, likes.

The first time I tried this, I had 3 of the single-frequency monitors on hand: my HP A1097C and two Sun GDM 1955s that belong to friends. Although the HP and Sun displays have a different scan rates, they all worked flawlessly with the Saturn GL, until you try running X.

Oh, I forgot to mention connectors. I had a connector from the last time I'd messed about with single-frequency monitors, but since SI sells those cables (two kinds) inexpensively, you can buy one from them also.

GETTING XFree86 Running

OK, getting X set up scares you? I'm no genius on this, but I followed some reasonable rules, and got it working pretty easily, so I will continue this tirade through that part of the job also.

First, go look on Software Integrators' website, http://www.si87.com/, for a utility called satlinux.exe. It'll be part of the zip package, saturnml.zip.

This neat utility, after you've used the boot disk, reads the setup on the card, and produces a series of modelines like you'll see in /etc/XF86Config files, for setting up XFree86 to work with your card.

First time I tried this, I was worried, because I didn't have a dos-bootable disk to stick it onto, and it runs under dos. Turned out to be really easy. You can use a copy of their FreeDOS floppy for this. Just use dd to read in the floppy you got with the card, like this:

dd if=/dev/fd0 out=si87.flp

This makes an image, a bootable image, of the floppy in file si87.flp. Go get yourself a spare 3 1/2" floppy, and read this file back onto it (this is the Unix way to do the dos "diskcopy")

dd if=si87.flp of=/dev/fd0

Now you have a copy of the install floppy. Then, you'll need the mtools[1] tools from /usr/ports/emulators, so that you can write the satlinux.exe file onto the floppy you've just created. Don't worry, the floppy is just over half full, and there's way more than enough room here. You probably want to change the file (on the floppy disk) autoexec.bat, so that it doesn't start up the Software Integrators' sync discovery routine, that'll make your monitor unreadable again. Just use mtools to delete autoexec.bat, if you don't have any other plans.

Reboot from FreeBSD into your floppy, and start up satlinux.exe. You have to give it a file name as a parameter; it doesn't write it's output to stdout, it goes to the file you give it, and complains if you don't give it a filename. Reboot back into FreeBSD, and then use the mtools stuff to get a copy of the modelines file into your system.

On Software Integrators' site is a huge monitor database, it'll give you the intended mode for your monitor (my HP A1097C was intended to run 1280X1024). It will also give you the vertical and horizontal sync frequencies for your monitor. Find the modeline entry from the "satlinux.exe" output that matches the resolution mode you wanted. Here's the file that it made for me:

 
   Modeline "640x480" 67 640 672 776 864 480 502 505 1073  
   Modeline "800x600" 135 800 1104 1296 1720 600 802 805 1062  
   Modeline "1024x768" 135 1024 1200 1392 1720 768 894 897 1082  
   Modeline "1152x864" 135 1152 1280 1424 1728 864 952 955 1083  
   Modeline "1280x1024" 135 1280 1344 1536 1728 1024 1027 1030 1076  
   Modeline "1600x1200" 126 1600 1664 1856 2104 1200 1201 1207 1261  
   LOW RESOLUTIONS -- OPTIONAL USE! 
   Modeline "720x480" 74 720 736 840 888 480 490 492 523  
   Modeline "320x240" 74 320 336 432 792 240 250 252 1547  
   Modeline "512x384" 74 512 536 688 1272 384 402 404 1467  

Like I said, my monitor uses 1280X1024, so I cut the single line out that matches that resolution. Now, use your favorite editor to edit your XF86Config file, the section that looks like:

 
Section "Monitor" 
    Identifier  "HP A1097C" 
    VendorName  "HP" 
    ModelName   "A1097C" 
    HorizSync   76-82 
    VertRefresh 70-75 
 
    #1280x1024 
     Modeline "1280x1024"   135.00   1280 1304 1496 1700   1024 1027 1030 1092 -hsync -vsync 
EndSection 

Take the HorizSync and VertRefresh lines, edit them so that they match the data that you got from your monitor's entry in the database on SI's website. Where I show ranges, you'll stick a single number in. Also, stick in the modeline you identified from satlinux.exe.

Save the file. You want to start up XFree86 now, but you expect it to fail (it will). What you want is the failure message, so start it like "startx >& xerrs", so that file xerrs will tell you info about what went wrong.

It's going to show you that either your horizontal number or vertical number is off by some small amount. If it's one or two numbers, then edit the single number you stuck in so that it's a smallish range that contains the value that XFree86 complained about not having. Here's the line that I found in my own error output:

(--) GLINT: Mode "1280x1024" needs hsync freq of 72.50 kHz. Deleted.

My sync was 72, so I gave it a slightly larger range, so that the mode would be selected. As long as it's reasonably close, you don't have to worry. Make sure that your screen section only has the one mode, so that some other, wildly different (and wrong) mode doesn't get selected. Again, Here's mine, showing 8, 16, and 24 bits per pixel sections:

 
Section "Screen" 
    Driver      "Accel" 
    Device      "Saturn ML" 
    Monitor     "HP A1097C" 
    DefaultColorDepth 16 
    Subsection "Display" 
        Depth       8 
        Modes       "1280x1024" 
        ViewPort    0 0 
    EndSubsection 
    Subsection "Display" 
        Depth       16 
        Modes       "1280x1024" 
        ViewPort    0 0 
    EndSubsection 
    Subsection "Display" 
        Depth       24 
        Modes       "1280x1024" 
        ViewPort    0 0 
    EndSubsection 
EndSection 

This time when you boot XFree86, it should not give you an error, and you should get a screen. It probably won't be optimized, so here's where the fine-tuning comes in. You want to use a utility called xvidtune. This is a GUI'd way to flip about the numbers in your modeline, and see if you can get the screen wider, flatter, whatever. This thing is safe to start up, so go start it *right now* so that you can see the buttons you have, and be able to feel safe about playing with it. It's safe to start up, as long as you don't hit the buttons, so feel free to go take a look. The key button is labeled "show". After you've tweaked the other values, when you hit "show" it prints a perfect, customized modeline out for you, so that you can doctor your XF86Config file with it.

Listen to your monitor, because when you get to the end of the range that your monitor can safely take, it'll start to softly hum (whistle, really) at you, as the power supply begins to be overstressed. You want to back off now, until you can't hear that any more. Don't dawdle when you do this, because your monitor's power supply is heating up when you hear that whistle, and you really can cause permanent damage if you let the monitor's power supply overheat. A few tens of seconds would probably be fine, but it's not really predictable, so err on the side of caution and be quick in your testing.

That's it, go install your new modeline, and you've got X running happily. That's all I had to do.

Software Integrators didn't even know about this, much less influence me directly, and I don't get any money for it. If you get your single frequency monitor running using this, you might drop me a line and tell me your experiences; I'd feel good if I knew I had helped someone.

Summing up, the card runs $159 (it cost me $10 for Fedex 2 day shipping, so really $169), and that was all the worry involved. I'm perfectly happy with my oversized display now. When I get another monitor, I'll be able to reconfigure the card without calling Software Integrators and handing over more cash, which is just fine with me!


[1] mtools : for a nice intro see "Sharing Floppies" at http://www.daemonnews.org/19992/newbies.html




Author maintains all copyrights on this article.
Images and layout Copyright © 1998-2004 Dæmon News. All Rights Reserved.