Linux on the vprMatrix 200A5 Laptop

Matt Housh (jaeger at morpheus dot net)

NOTE: I no longer own this laptop and do not update this page. I leave it here to keep the information available.

Last edited: 06.16.04

Kernel Configuration

Here is my kernel config file. This information is entirely based on linux kernel version 2.4.22 with the ac3 patch applied.

This is where the important stuff comes in. All the devices in this laptop are supported in linux, as far as I know, but I don't have information on all of them, so I will include what I do know. If you know something I don't or have info on one of the devices I don't, feel free to email me.

Make sure you include the experimental stuff:

[*] Prompt for development and/or incomplete code/drivers

PCMCIA-CS Support

First off, in "General setup", make sure you have hotplug enabled:

[*] Support for hot-pluggable devices

Then, in "General setup -> PCMCIA/CardBus support", enable pcmcia and cardbus:

<*> PCMCIA/CardBus support
[*]   CardBus support

Power Management Support (ACPI)

In "General Setup", enable PM support

<*>   Power Management support

Then, in "General Setup -> ACPI Support", enable the following:

[*] ACPI Support
<*>   AC Adapter
<*>   Battery
<*>   Button
<*>   Fan
<*>   Processor
<*>   Thermal Zone

I have NOT tested any ACPI functionality aside from the laptop powering itself off when shut down. If I bother to test any other functionality, I'll post my results here.

IDE SCSI Emulation (CD-RW/DVD Combo Drive) Support

In "IDE, ATA and ATAPI Block devices", enable IDE cd and scsi emulation support as modules:

<M>   Include IDE/ATAPI CDROM support
<M>   SCSI emulation support

In "SCSI support", enable SCSI cdrom and generic support as modules:

<M> SCSI support
<M>   SCSI CD-ROM support
<M>   SCSI generic support

FireWire Support

In "IEEE 1394 (FireWire) support (EXPERIMENTAL)", enable firewire support, the device driver, and whatever protocol drivers you think you'll need, something like so:

<M> IEEE 1394 (FireWire) support (EXPERIMENTAL) (NEW)
<M>   OHCI-1394 support (NEW)
<M>   OHCI-1394 Video support
<M>   SBP-2 support (Harddisks etc.) (NEW)
<M>   Ethernet over 1394 (NEW)
<M>   OHCI-DV I/O support
<M>   Raw IEEE1394 I/O support (NEW)

This has been sufficient to enable me to connect both a firewire hard drive and cd burner, as well as to connect a DV camera and do some video encoding.

Network Card Support

The vprMatrix 200A5 uses a National Semiconductor DP8381x 10/100 chipset, which is supported by the "natsemi" kernel driver.

In "Network device support -> Ethernet (10 or 100Mbit)", enable ethernet support, "EISA, VLB, PCI and on board controllers", and the DP8381x (natsemi) driver.

[*] Ethernet (10 or 100Mbit)
[*]   EISA, VLB, PCI and on board controllers
<*>     National Semiconductor DP8381x series PCI Ethernet support

Wireless Networking Support

The wireless card in the 200A5 is a PCI card made by Harris Semiconductor with a Prism 2.5 chipset on it. It uses the "hermes" kernel driver and specifically the "orinoco_pci" module. Enable the following in the "Wireless LAN (non-hamradio)" section:

[*] Wireless LAN (non-hamradio)
<M>   Hermes chipset 802.11b support (Orinoco/Prism2/Symbol)
<M>   Prism 2.5 PCI 802.11b adaptor support (EXPERIMENTAL)

*IMPORTANT*: You need to turn the plug'n'play bios setting *ON* in the laptop's BIOS for the wireless card to work correctly. If you leave the setting off, the card will work sporadically, but most of the time will just skyrocket your CPU usage and become idle until the laptop is rebooted.

Modem Support

I do not use dialup, so I have not tested the modem in linux. I have read elsewhere that there's a driver available from http://linmodems.technion.ac.il/packages/smartlink/ that works. Tentatively, in "Network device support":

<M> PPP (point-to-point protocol) support
<M>   PPP support for async serial ports (NEW)
<M>   PPP support for sync tty ports (NEW)
<M>   PPP Deflate compression (NEW)
<M>   PPP BSD-Compress compression (NEW)

Soundcard Support

The soundcard in the 200A5 is an "ALi Corporation M5451 PCI AC-Link Controller Audio Device". It works fairly well and is supported by the "trident" driver. Enable it in the "Sound" section:

<M> Sound card support
<M>   Trident 4DWave DX/NX, SiS 7018 or ALi 5451 PCI Audio Core

I don't use the OSS/Free trident driver, myself, so I probably don't know the answers to any troubleshooting questions related to it. I use ALSA instead with the ali5451 driver.

USB Support

USB support on this laptop also works flawlessly. It supports both USB 1.1 and 2.0 specifications. I have tested it with numerous mice, a trackball, my digital camera, and my visor handspring. Enable support for the EHCI/UHCI controllers and devices you'll use in the "USB support" section:

<M> Support for USB
[*]   Preliminary USB device filesystem
<*>   EHCI HCD (USB 2.0) support (EXPERIMENTAL)
<*>   UHCI (Intel PIIX4, VIA, ...) support (NEW)

For USB mouse support, add:
<*>   USB Human Interface Device (full HID) support
[*]     HID input layer support

NOTE: You'll need input core support and mouse support in the "Input core support" section of the kernel config as well for mice.

I also add support for my handspring visor in "USB Serial Converter support":
<M> USB Serial Converter support
<M>   USB Handspring Visor / Palm m50x / Sony Clie Driver

That's all I can think of right now, I will gladly consider additions, suggestions, or corrections if they're emailed to me.

XFree86 Configuration

Here is my XF86Config file.

XFree86 configuration is rather easy (though it can occasionally be time-consuming) with XFree86 version 4. The 200A5 has an nVidia GeForce 4 420 Go in it, which is relatively painless to get up and running at the LCD's default resolution, 1280x854.

First off, you'll need to install the nVidia closed-source linux drivers. For CRUX users, these are available in the CLC ports tree under contrib/, but if you're not running CRUX, grab them from nVidia's website. The CLC port is called "nvidia". If you're downloading it from the website, get the package appropriate for your system. I will not detail the install here as nVidia's documentation is good for that, except to say that CRUX users should add the following line to /etc/modules.conf:

alias /dev/nvidia* nvidia

NOTE: Please notice that this line was changed with version 4191 of the nVidia linux drivers, it USED To be "NVdriver" instead of "nvidia".

*IMPORTANT*: On the vprMatrix 200A5, the latest (4496 as of this writing) version of the nVidia driver has a small problem. If you're running X and then switch back to a console, the screen is unreadable (black) until you either switch back to X or reboot the laptop. X doesn't seem to be affected in any way by this bug, just fair warning. If you use the 4363 driver instead, this problem doesn't manifest itself.

Once the closed-source nVidia drivers are installed, you should be able to generate a semi-useful XF86Config file using the command 'XFree86 -configure'. This will probe your hardware and attempt to figure out your video card, monitor timings, and mouse. It's somewhat successful on the 200A5, and we will fill in the rest.

nVidia GeForce 4 420 Go

To run in its native resolution of 1280x854, you need a modeline to tell XFree86 the correct timings. The following line is what I use. I did NOT write it up, I found it on the net using a google search.

ModeLine "1280x854" 85.26 1280 1296 1552 1792 854 854 861 892

NOTE: This Modeline goes in the "Monitor" section of the XF86Config file. Refer to my XF86Config file linked above.

PS/2 Touchpad

The builtin touchpad works as a ps/2 mouse. Your mouse configuration section should look something like this:

Section "InputDevice"
   Identifier  "Mouse0"
   Driver      "mouse"
   Option      "Protocol" "ps/2"
   Option      "Device" "/dev/misc/psaux"
   Option      "Emulate3Buttons" "true"
EndSection

USB Mouse

If you want to use a USB mouse in X in addition to the touchpad on the laptop, you'll need to do a little extra work. If you haven't already done so, install a hotplug manager such as murasaki (available in CLC) to handle automatic loading and unloading of USB modules.

Add a second mouse section after the first one that looks like this:

Section "InputDevice"
   Identifier  "Mouse1"
   Driver      "mouse"
   Option      "Protocol" "imps/2"
   Option      "Device" "/dev/input/mice"
   Option      "ZAxisMapping" "4 5"
EndSection

This assumes your USB mouse is a microsoft (optical) wheel mouse or a similar model such as logitech's optical wheel mouse or trackball. Alter the second mouse section as necessary to match your hardware.

In order to get the two mice to work concurrently in XFree86, you'll need to also alter the "ServerLayout" section of the XF86Config file. Basically you'll need to tell XFree86 you have 2 mice and that one of them is the main pointer. The second one sends pointer events, but can be removed. Logically, the touchpad should be your core pointer and the USB mouse the secondary one. So, you should have two mouse configuration lines in the "ServerLayout" section like these:

InputDevice    "Mouse0" "CorePointer"
InputDevice    "Mouse1" "SendCoreEvents"

Leave the rest of the "ServerLayout" section as it is. Now both mice should work concurrently.

TV-Out (TwinView) Support

There are numerous ways you can set up TwinView with nVidia video cards, so I'll only describe the way I use it to save space and time. Besides, the nVidia linux driver documentation has quite a bit of info on this subject, so check there if you need more.

I use my laptop sometimes to play DivX or other movie files on my TV and projector at home. I prefer to use linux to do just about everything on my laptop, so I needed X to work with the TV-Out, not just windows. Fortunately, TwinView solves this problem perfectly. I set up XFree86 to display 1024x768 on both my laptop screen and the TV when the TV-Out cable is plugged into the TV, or 640x480 on both screens when it's plugged into the projector, and to revert back to 1280x854 when the TV-Out cable is NOT plugged in. Note that restarting X is required to switch between them.

The important bits of configuration go into the "Device" section of the XF86Config file. Refer to my linked XF86Config above.

This is the config for the projector. Most of the settings for the projector work great with the TV as well; the only thing that needs to change in my particular config is the MetaModes line. The MetaModes line for the TV is commented out.

Option     "TVStandard" "NTSC-M"
Option     "TVOutFormat" "SVIDEO"
Option     "TwinView"
Option     "TwinViewOrientation" "Clone"
Option     "SecondMonitorHorizSync" "30 - 50"
Option     "SecondMonitorVertRefresh" "60"
Option     "MetaModes" "640x480,640x480"
#Option     "MetaModes" "1024x768,1024x768"

Assuming you have X already configured and working, these lines will allow you to use the TV-Out in "Clone" mode, meaning the TV/projector and the LCD display the same picture at all times. If you want to change that, refer to nVidia's documentation and change the "TwinViewOrientation" option. "TVStandard" refers to your TV's output standard, which you should already know or be able to find out easily. For North America, where I live, "NTSC-M" is the appropriate setting. This is also appropriate for the projector. Consult your TV manual if you're unsure. The rest of the options should be self-explanatory, though if you want to change them, I again suggest referring to nVidia's documentation.

I will not detail the rest of X configuration as the nVidia and XFree86 documentation should cover everything else.

Suspend to RAM / swsusp

I have done no testing whatsoever in this respect. Maybe I will sometime.

Valid XHTML 1.0! Valid CSS!