Running FreeBSD on Toshiba Portégé R100

The Toshiba Portégé R100 is a very nice and compact laptop. Take a look at my photos of it. I decided to run FreeBSD on it and stumbled upon a few things that needed further research.

Installation

If you have a pcmcia cdrom drive, you can boot on it by holding down the "C" button during boot. The FreeBSD installer shouldn't have any problems installing from the pcmcia drive.

I don't have a cd burner, so I chose to install via PXE. I will not go into much detail about the process, but the highlights are:

The acpi_toshiba kernel module

The acpi_toshiba module makes some of the FN+Fx button combinations work, most notably FN+F6 and FN+F7 to adjust the brightness and FN+F8 to turn off the backlight (I wonder why that function is not on FN+F1 as the symbols would indicate).

Add the following line to /boot/loader.conf to load it at boot time:

acpi_toshiba_load="YES"

Enhanced SpeedStep

Intel Pentium M processors have circuitry for changing their clock frequency and input voltage on-the-fly. In addition to providing a large range of frequencies - typically between 5 and 7, in contrast to earlier processors from Intel, which only had "fast" and "slow" speeds

Taking advantage of this is very easy. Install /usr/ports/sysutils/estctrl and add the following two lines to your rc.conf:

est_enable="YES"
estctrl_enable="YES"

With FreeBSD 6.0 and later estctrl has been deprecated and it is recommended to use powerd instead which is included in the base system. Just add the following line to your rc.conf:

powerd_enable="YES"

Intel(R) PRO/Wireless 2200BG

The driver for the builtin wireless card is part of the main FreeBSD tree from FreeBSD 6.0, but you still have to install the iwi-firmware from ports.

The firmware is located in /usr/ports/net/iwi-firmware. After installing it, add the following line to rc.conf to load the firmware at boot:

iwi_enable="YES"

From FreeBSD 6.2 you need the /usr/ports/net/iwi-firmware-kmod port instead of the one mentioned above. The following line in /boot/loader.conf should be enough to load both the if_iwi module and the neccesary firmware at boot:

if_iwi_load="YES"

Suspend

At the time of this writing something goes horribly wrong when resuming from S3 suspend. If I unload the if_iwi kernel module before suspending it seems to be a bit better, but then the filesystems have problems with disk access. I hope to find a solution to that.

A little more investigation points to ata being the problem. The laptop has survived a suspend once when boot_verbose was enabled, so it could be a timing problem. I haven't been able to reproduce the success yet though.

I have now enabled the vesa console and is running it in 1024x768. Combined with boot_verbose, this makes resume work almost every time if I manually change to vt1 before suspending. However something goes wrong if I close the lid before the suspend is complete.

X.org

The Trident CyberbladeXP4 is supported by X.org 6.8.2 but there is no hardware acceleration. Furthermore the xorg.conf file needed some tweaking in order to get 1024x768 pixels in 24bit.

My xorg.conf is here.

The video resolution gets strange after the lid has been closed but is easily restored by switching to vt1 and back to X. I made a small script that does that which gets called by devd.

Insert the following into /etc/devd.conf:

notify 5 {
        match "system"          "ACPI";
        match "subsystem"       "Lid";
        action "/root/bin/notify_lid $notify";
};

The notify_lid script is here.

I now tried changing to the "vesa" driver in xorg.conf. When X starts up the colors are strange but a change to vt1 and back makes them normal. The devd hack is not neccesary with the vesa driver. Furthermore there is now acceleration.

I got a mail about this issue a while ago:


By the way, X.Org works just fine with trident driver if there is an option:

  Section "Device"
      ...
      Driver     "trident"
      ...
      Option     "ShadowFB"      "on"           # here it is
      ...
  EndSection

I have tested this and it works, but unfortunately it starts acting strange if you switch to an external monitor. If you don't need to do that, everything should be fine with the trident driver.


E-mail Valid XHTML 1.1 Valid CSS!