Disclaimer

This information is provided AS IS and with NO WARRANTY, implied or explicit. I take no responsibility for you frying your laptop, your LCD, yourself or causing a nuclear meltdown following these instructions. This is just a description of what I did to get my laptop to run FreeBSD, and some information on what hardware was included in the laptop I purchased. I do not in any way guarantee that you will get a machine with the same hardware if you buy an "Apache C" from Best Technology.

Update

My laptop is broken nowadays, it gets stuck before BIOS POST with the green power light blinking as if the laptop was suspended. If it's feeling very happy for the day, it will boot after a few minutes of speaking softly to it. The fact that I won an IBM Thinkpad T41 at the ACM ICPC world finals 2004 very much reduced my interest in debugging this problem, but in case anyone has seen anything similar or has any suggestions, I'd of course be happy to hear about it.

The retailer has gone bankrupt from what I understand, but I'll leave this page up as there are still people around with similar machines sold under different brands.

As for the problems with X11, they have been fixed in newer versions of X11. The last time I booted the laptop with a decently new version of FreeBSD (4.9, I think), it still seemed to have problems with the kernel crashing on boot so that information might still be useful.

Executive Summary

This laptop does have some issues with FreeBSD 4.4. These include huge problems both with the kernel crashing on boot, and with X being unable to display to the built-in LCD. Both of these issues have effective workarounds thou'.

Once the laptop is up and running, it seems to be very stable thou'. It is rather heavy by today's standards (3 kilograms) and runs rather hot.

The laptop

The laptop I purchased was called Apache C and was manufactured by now the now bankrupt company Best Technology AB in Sweden. The specs on this model obviously vary quite a bit, and the spec on the webpage are totally horrible. The version I have is equipped with a Pentium III 1GHz along with 2 * 256 Mbyte PC-133 SDRAM and a 20 Gbyte Fujitsu harddisk.

The chipset in the laptop is a SIS 630s. This is a chipset with a lot integrated; it has a graphics chip, 10/100 NIC, soundcard, a winmodem and of course standard features like an IDE and a floppy disk controller. Integrated with the graphics card is a TV-out card, in my case a CHRONTEL 7500. In the laptop, there is also a CardBus (PCMCIA) controller and a FireWire (IEEE-1394) controller, both manufactured by Texas Instruments. pciconf -l -v and dmesg gives a more detailed listing.

The way the graphics card does its output is a bit odd. The graphics card itself only drives the VGA output meant for connecting an external CRT. Both the internal LCD and the SVHS connector sit off the TV-out controller. This means that when TV-out is used, the LCD will go black. Note that the graphics card reserves a configurable portion of the main system ram and uses as video ram. There's no RAM on the video card itself.

The configurability of the BIOS was less than impressive. The essential functions are there, but not much else. Do not buy this laptop if you want to fine-tune your BIOS settings to squeeze out maximum performance.

The TV-out was a real disappointment. I have only tested it under Windows, but there the color output is very poor and it has huge black borders around the screen.

I have not had any chance to test out the CardBus bridge, usb or the FireWire controller, as I have no device which uses those ports to test with.

APM seems to be working fine with the default flag in the kernel (you will need to remove the disabled keyword from the apm driver). I've verified that it suspends and resumes correctly when in X11. I do not use suspend to disk, so that is untested (if it is even supported?). The output from apm lists what APM Capacities the apm driver and command recognizes.

Getting it to work with FreeBSD 4.4

There are a few issues with this laptop and FreeBSD 4.4. There are workarounds/fixes for all of them that I have run into thou'. The 10/100 NIC is a SiS 900. They have changed the way the MAC address from the older SiS 900, so an older version of FreeBSD might not be able to read the MAC address of the NIC.

The NIC works fine with the sis driver, which requires miibus. The integrated soundcard works fine with the pcm driver. USB seems to be detected properly with the standard USB stuff from GENERIC. The winmodem supposedly has closed source drivers availible from the manufacturer for Linux. The CardBus bridge is detected with the default cardbus/pcmcia stuff from GENERIC. I have not tested installing the FireWire patches availible for FreeBSD since I still wouldn't have any device to test them out with. The trackpad works out of the box with moused. Run it with the switch "-m 1=4" to make tapping on it work.

Issues and workarounds

Kernel crashes on boot (including from the installation disks)

This one was really troubling - the installation disks for FreeBSD 4.4 crash with a kernel panic. It is easy to do a workaround thou', but with possible implications for using a CardBus card during the install. The reason for the panic is that the machine doesn't like the way FreeBSD does PCI interrupt routing for the CardBus bridge. The workaround forces ISA interrupt routing instead.

Break into the kernel bootloader (the countdown) and type:
set hw.pcic.intr_path=1
set hw.pcic.irq=0

Once the system is install, you will need to add those lines without the set to /boot/loader.conf. You should probably also pick a good IRQ if you want to use the bridge. I don't have any CardBus cards to test with. The suggestion and solution came from this thread on the FreeBSD stable mailing list

"Melting screen" with X11 sis drivers for XFree86 4.1.0

The sis driver included with XFree86 4.1.0 and older does not support the Chrontel tv-out controller, which also drives the LCD screen. Instead, when X is started with this driver, it results in a "melting screen" effect. It is quite pretty the first time around. :-)

This might or might not be fixed in XFree86 4.2.0. It should be fixed in later versions, so this should no longer be an issue if you're using a reasonably new version of FreeBSD. The following applies only to someone installing an older version for whatever reason.

At the install, I recommend that you do not install X. Instead, either download the XFree86 4 package or compile it from ports. The workaround is to visit Thomas Winischhofer's page about Xfree86 on SiS 630s and download his driver. There is also a local mirror here of the driver I'm currently using. This one is exactly the same as his precompiled driver from 13/1 2002. The only difference is that I didn't tar it. Note the the permissions on the file should be read and execute. There is probably a newer version on his page, so before reporting any problems, try that one too. Even if his page only mentions linux, the precompiled driver seems to work fine, both with and without linux emulation enabled (only tried with support for it built into the kernel thou'). The driver should, once downloaded and unpacked, be placed in /usr/X11R6/lib/modules/drivers.

This works fine for me, running X in 16 bits depth at 60Hz on the LCD. I've tested 640x480, 800x600 and 1024x768 resolutions. Everything clearly looks the best in 1024x768, so that's what I recommend that you use as default.

My configuration files, and logs

Links