Getting X to work with the NM2070

This page is obsolete! XFree86 now supports the Neomagic! Unless you have some other, unsupported chip, go away! :-)

This page provides information for anyone trying to get XFree86 to run on one of the newer Dell laptops (under Linux, in particular). These are made with the, ehm, fabulous NeoMagic NM2070 graphics chip and its successors, which did not used to be supported by XFree86.

If you need support for the Neomagic chip: Go to www.xfree86.org and download the current version of XFree86-- it includes support for the Neomagic, and it works beautifully (on my system, at least :-)

If you are interested in knowing how to get an unsupported chip to perform, read on. After many mistakes I managed to get my chip to work acceptably, but in 16-color mode only, using the VGA16 server.

The approach detailed here (which I did not invent, see credits below) is known to work with many other laptops using the Neomagic chip (such as the Fujitsu Lifebook 420D, which uses the Neomagic 2090), and probably any other computer with an unsupported chip.

I have a Dell Latitude XPi P100SD (Dual scan, 800x600 LCD screen, 896k VRAM). I installed Red Hat Linux 1.2.13 from CD-ROMs, using an external CD-ROM drive (a NEC), hooked up through an Adaptec PCMCIA SCSI host adapter (the APA1460). Linux installed fine without any lilo switches. There was, however, some confusion with recognizing the CD-rom: it cannot be recognized until after the PCMCIA kernel module has been loaded, which is pretty late in the boot process. If you are getting a message at boot time that no SCSI devices were found, try going on as if nothing is the matter; when you get to the point where you have to select a device to install Linux from, you may well find that the CD-rom is now visible (but even this only worked with the installation CD, not with the live filesystem, for some reason).

These pages include some of the information provided here, and also information on the Accelerated-X server (see below).

  • Latitude XPi P133ST.
  • Linux on the Dell Latitude LM P-133ST.
  • Here are some more pages providing details on getting Linux (not X) to run on the Dell laptops:

  • Linux on the Dell Latitude XPi, by Larry Meadows. (Note that his laptop does not have the Neomagic chip).
  • Linux on the Dell Latitude XP with Advanced Port Replicator.
  • What the problem is

    The XFree86 SVGA server does not support the Neomagic chip. This means that NO XF86Config file can make it work properly. I get put in something like 300x240 pixel mode, or thereabouts, which looks like a hugely magnified snapshot of the desktop. Now, the SVGA server does not have a reasonable "generic" mode, but the VGA16 one does. So the first step is to get rid of the SVGA server and install the VGA16 server instead (ergo, only 16 colors). Here is a link to the XF86Config file that came with the patch described below. It ought to work even if you don't end up using the patch.

    Once you've done this you should get a reasonable display, but only 600x480 resolution. Now... the server has no way of putting the screen in 800x600 mode, but this can be done via a kernel patch, or (for kernel versions later than my own) via a boot-time flag. Either way, console mode will be screwed up since the display goes in graphics mode right from bootup, not just when we go into X. The assembly code in the patch "paints" characters on the screen and so restores some functionality, but it does not implement anything beyond a dumb tty (i.e., no cursor addressing, no clear-screen function). Moreover, the patch is for the 1.2.13 kernel. With later kernels you can put the display in graphics mode and therefore get 800x600 mode, but you will have no console capability at all, and you'll almost certainly want to set up xdm so you go right into X mode.

    Here is how to do it, depending on your kernel:

    If you have an 1.2.13 kernel:

  • Start with a page called How to over 800x600 dots on LCD with X window system [sic]. This document explains the process, which in our case will involve a kernel patch. It provides a link for the Dell P133ST with the Neomagic chip. The link provides a kernel patch that asks the BIOS to put the console in 800x600 mode on bootup. (There is an XF86Config file bundled with the patch). Unfortunately the instructions are in Japanese. I had a friend translate the important parts (bless his heart!), and you can pick up the translation here.
  • The instructions call for DMPMEM.EXE. Pick it up from Finn Thoegersen's web page.
    Hint: The addresses returned by DMPMEM.EXE look like this: C000:563C. This is the segment number and the offset, in hexadecimal. To feed this to gcc, write it as 0xC563C, not 0xC000563C. Being clueless about segmented architectures, I got bit by this one.
  • Rebuild the kernel according to the instructions in the README file. (If you're new to this kind of thing, you may care for some more details). Once you've rebuilt the kernel, install the XF86_VGA16 server and the XF86Config file that comes with the patch. That's it, you're ready to go!
  • If you have a later kernel:

    I understand the above patch is specific to the 1.2.13 kernel. Some later kernels (definitely 2.0.0 and later, perhaps others??) will let you select graphics mode directly, without a kernel patch. However, if you do that you will have no output in console mode, and you'll need to get set up so that xdm starts automatically and puts you in X mode. Here's how, courtesy of oskar@otter.cco.caltech.edu:

    Linux offers a way to change the mode on boot up through LILO. All one needs to do is change the lilo.conf file to change "vga=normal" to "vga=770". The ID number 770 is the decimal equivalent of 0x0302 [which is what the patch sets the mode to] as LILO and rdev need the ID in decimal. Of course this makes your Linux console unusable and thus you must make sure that xdm is run on bootup. (You should be able to try this out first from the boot prompt, by booting with "linux vga=770").

    If you have a post-1.2.13 kernel that does not understand the vga=770 option, do not despair! Here is a 1-line kernel patch that will do the same job. (The patch is supposed to be for 2.x.y kernels; perhaps it is unneccessary, in view of the above; if there are kernels for which it is needed, would someone please let me know?)

    No matter what method you use to set the video mode, you should use the VGA16 server and an appropriate XF86Config file, as discussed above.

    Using the Accelerated X server

    Xi Graphics (formerly X Inside) makes an X server for Linux systems (among others), that includes a driver for the NM2070. You can download a demo from their Web site and test it out. (The real thing will set you back $199.95).

    It has now been a long time since I last tried to get their demo to work; at that time, it still did not work properly. It would not go to 800x600 mode without special coaxing, and the display contained noise and (on some or all machines) a big old black line down the right side. My feeling was, if I wanted to fuss with X servers I could do it with free software.

    Since then the company has released a Laptop-specific version of their server, which they tell me now works just fine. Unfortunately, I have not had a chance to go back and try another test with my machine, and anyway, given the realities of laptops, you'll definitely want to try the demo (see link above), and see that it works on your machine before you go ordering.

    Using Netscape

    Although most X applications will run more or less happily in 16-color mode, Netscape will core dump if you start it the normal way. It is possible to run it, by taking the following simple steps:

    1. Set the following resource (probably in your .Xdefaults file).

      netscape*visualID: StaticColor

    2. Invoke netscape as "netscape -mono"

    If you don't know how to set resources, you can get the same effect if you just run netscape like this:

    This will get you black and white pictures, which actually are pretty clear most of the time. For some reason I just could not get Netscape to do 16-color pictures. Also the button icons will not appear at all--to get a reasonable display, select "Show toolbars as Text" under Preferences (in the Options menu).

    The bookmarks-editing window is a little hard to use, since you cannot see icons while you are dragging them, and I basically avoid the netscape newsreader completely. But unless full color is essential to your uses, this setup is quite serviceable for straight browsing, and I use it quite happily.

    One more thing: when you start up Netscape you will get a constant stream of messages about X errors. Just redirect standard error to /dev/null and go about your business. (netscape ... >& /dev/null, if you run csh).

    If you use Netscape a whole lot, and the level of functionality described bothers you, you can do a lot better by using the XF86 Mono server instead of VGA16: no options and resources are needed, and you get all the buttons etc. Of course, if you do this you don't even get the 16 colors you'd have otherwise. I am happier with 16 colors and a somewhat hobbled Netscape, but you may feel differently. (Thanks to kryee@wheat.uwaterloo.ca for suggesting this setup).

    Anything else?

    Feel free to email if you have more questions. You can also browse my directory of related files.

    Special thanks to Finn Thoegersen , Mark Vojkovich, and Oskar Painter for their assistance!


    Updated June 17, 1997.

    alexis@ling.upenn.edu