FreeBSD on the Toshiba Satellite 4030CDT

Gary E. Rafe
May 2001 (current)
February 2000 (original)



ATTENTION -- The information offered here is provided without warranty of any kind. Use it at your own risk.


  1. Introduction

    This document describes our continuing experience with the FreeBSD operating system on a Toshiba Satellite 4030CDT notebook computer. The 4030CDT is configured as follows:

    Additional detailed specification can be found at this hyperlink.

    Update: The IBM hard disk drive was replaced under warranty in August 2000 by Toshiba Depot Service. Turn-around time for this service was 4 days.

  2. System Interrupt Assignments

    irq port Device Description
    0 -- -- System Timer
    1 -- atkbd0 --
    2 -- -- PIC
    3 -- -- unassigned (note 1)
    4 IO_COM1 sio0 DB9 serial port (16550A UART)
    5 -- -- unassigned (note 1)
    6 IO_FD1 fdc0 Floppy diskette controller (DMA2)
    7 ? ppc0 Parallel Port (ECP)
    8 -- -- RTC
    9 0x3e0 pcic0 PCIC-compatible controller (note 2)
    10 -- -- unassigned (note 1)
    11 -- -- unassigned (note 3)
    12 -- psm0 PS/2 mouse port (Logitech MouseMan)
    13 IO_NPX npx0 Floating point unit
    14 IO_WD1 wdc0 Primary IDE controller
    15 IO_WD2 wdc1 Secondary IDE controller

    Notes

    1. Reserved for PCCARD devices.

      Update: Assigned to pcic(4) in 4.1-R.

    2. This interrupt was assigned initially to the PCCARD NIC, ep0. Throughput was, however, abnormally low while the device was configured with this interrupt. Changing the assignment to irq 5 in /etc/pccard.conf restored normal throughput on the device.

      Update: After reviewing 4.1-R kernel configurations, we found that interrupt 9 is reserved for the Intel System Management Bus device intpm(4).

    3. It appears that the integrated sound device, an ESS Maestro-2E, wants to use this interrupt, according to the DOS-mode enabler and the OSS kernel module driver for FreeBSD. The ESS DOS-mode enabler appears to make the chip SoundBlaster compatible; it becomes visible to a FreeBSD kernel with support for the pcm sound driver enabled when subsequently warm-booted (i.e., via CTRL-ALT-DEL; we were unable to get the DOS utility fbsdboot.exe to work on our 4030CDT). We noted also that DMA setting drq 1 conflicted with wd0. Given our inability to boot FreeBSD from our DR-DOS partition, we did not pursue this method of access to the sound device.

      We investigated the use of the OSS kernel module sound driver for FreeBSD. While it did allow us access to /dev/mixer (and thus, use of the internal CD drive for audio discs), we found that audio files played through /dev/dsp were not interpreted correctly. We also found the size of the kernel module to be overly excessive for the benefit achieved. Given the size of the OSS kernel module and its inability to drive /dev/dsp reliably, we did not pursue this method.

      Update: The USB uhci(4) and pcm(4) devices share interrupt 11 on pci0 in 4.1-R.



  3. Configuration Notes (3.x-R)

    1. Internal Modem

      The internal modem in the 4030CDT is a so-called winmodem, which appears to be supported only by Microsoft Windows operating systems at present. In order for PCCARD modem devices to use the resources associated with the internal modem, the internal modem must be disabled in the system's BIOS.

      There have been reports from the Linux community that a kernel module driver offered by Lucent Technologies (available only as a pre-compiled binary at this hyperlink) operates properly in the 4030CDT. We are hopeful that a similar kernel module driver will be made available to the FreeBSD community.

    2. PCCARD

      The following 16-bit PCCARDs have been used regularly, with their respective kernel configuration entries:

      • Xircom CM-56T 56KFlex modem
        device sio1 at isa? disable port ? tty irq ?

      • 3Com EtherLink III 3C589C NIC
        device ep0 at isa? disable port ? net irq ?

      In each case, actual port addresses and interrupts are defined in /dev/pccard.conf.

      We experimented with the PAO3 patches for 3.3-R, dated 19991220 to drive an Adaptec SlimSCSI 1460D. While the kernel compiled without complaint, it failed to boot properly, as it attempted to mount an undefined root filesystem (immediately after mounting successfully the correct root filesystem).

    3. Advanced Power Management (APM)

      1. It appears to be known that the Trident Cyber9525 video chipset does not react properly to APM suspend/resume events while in a non-text (e.g., X11 display) state. Attempting to resume the system when the system was suspended with an X11 session displayed on the LCD will cause the system to hang, requiring a hard reset to recover. Resuming to a text display appears to be more reliable.

        The command vidcontrol -s 1 </dev/ttyv0 can be issued just prior to apm -z to prevent the resume failure described above. If the system is suspended from a shell script exec-ed by the window manager, an appropriate sleep m && vidcontrol -s n (where m is the time to sleep following the suspend command, and n is the virtual console running the X11 session) following the suspend command can restore the X11 display.

      2. The 4030CDT appears to require the kernel option VM86 for proper APM resume handling. Without it, the system reboots immediately following the resume event. We believe this has something to do with the memory issue, described below.

      3. Our early attempts to get a kernel configuration to support a reliable APM resume event were unsuccessful; the system would hang consistently following a resume event. Mailing list discussions suggested running a kernel with the option APM_DEBUG, and noting pertinent information at system boot and suspend/resume events.

        We compiled and ran a kernel with this debugging information for several days without a failed resume event. The amount of debugging information emitted during normal operation was significant, so we modified /usr/src/sys/i386/apm/apm.c to report only the Execute APM hook messages. Following this slight change to apm.c, resume/suspend appears to work well.

        Update: We note that resumes to text mode fail occassionally when the video device is not reset correctly (multi-color vertical lines are observed on the LCD and the keyboard hangs). A hard reset is necessary to bring the system back.

      4. When additional memory was installed in the 4030CDT, the APM resume event would cause an immediate system reboot. Removing the additional memory restored the proper suspend/resume event processing. In all cases, the system's BIOS reported the installed memory correctly (e.g., 65536KB, 98304KB, 131072KB).

        Examination of /var/log/messages showed that, with no additional memory installed, the kernel reported 112K bytes less real memory than indicated by the system's BIOS. The kernel was rebuilt subsequently with the option MAXMEM=(m*1024-112) (where m is the total installed memory, in MB), and found APM suspend/resume events to work correctly again.

      5. We note that suspend/resume events affect the time at which the kernel thinks the last boot occurred (i.e., uptime(1) does not report calendar time since the last boot, rather, it reports only operating time). Inspection of the output of sysctl kern.boottime appears to confirm this.

    4. XFree86 and the Trident Cyber9525

      1. The graphical configuration program XF86Setup(1) was used to generate an inital configuration in /etc/XF86Config. Prior to running XF86Setup, we created the symbolic link from /dev/psm0 to /dev/mouse. The Trident Cyber9525 chipset is supported in the XF86_SVGA server beginning in release 3.3.5.

      2. The 4030CDT's active LCD works very nicely at 1024×768×16bpp. However, as noted above, the APM resume event causes the system to hang when it is suspended while the internal LCD is running an X11 display.

      3. We had the opportunity to attach an InFocus video projector (capable of 1024×768) to the SVGA port while we were setting the system up initially. We found that the Trident drove the external SVGA device at 1024×768 correctly when the port was toggled with Fn-F5. Only slight adjustments to the XFree86 configuration were necessary to position the full display on the external device; these adjustments had no appreciable affect on the internal LCD.

    5. PCM and the ESS Maestro-2E

      This hardware is not supported at present by the pcm kernel sound driver.

      There have been reports from the Linux community that a kernel module driver (available as source from the following hyperlink) operates successfully on the 4030CDT. We are hopeful that similar efforts will find their way into future FreeBSD releases.

      Update: A driver for ESS Maestro sound systems became available in July 2000.

    6. Dialup Networking with pppd(8)

      With the Xircom CM-56T PCCARD KFlex56 modem, occasional connections at 40,000+bps are observed.

    7. Iomega Parallel Port Zip Disk

      This works as advertised (at the following hyperlink) although the system does not support EPP mode on the parallel port.

    8. USB

      We have not yet investigated the use of this interface fully.

      Update: USB support is greatly improved as of 4.1-R.

  4. 4.x-RELEASE

    We upgraded the OS when 4.0-R became available in the Spring of 2000, rather than continuing with the 3.x releases to take advantage of developments with Linux emulation and device support.

    Current kernel config, dmesg(8) output, and XF86Config files are available at their respective hyperlinks.

    In the next sections, we describe our continued experience with various aspects of the system.

    1. PCCARD

      This works ``out-of-the-box'', both in polling mode and with hardware interrupt 10.

      We recently purchased a USR XJ1560J (Japanese model) PCCARD modem for this system, and soon discovered the modem's (undocumented) blacklisting ``feature'' while attempting to connect to a busy ISP. A search of the usual Internet resources failed to uncover any direct references to this particular modem. Several references, however, did suggest the use of (again, undocumented) S register settings. We have since found that ATS40.1=1 appears to override the modem's NUMBER BLACKLISTED feature when a busy number is dailed repeatedly.

      Update: After the LucentTech WinModem Linux driver module was installed successfully, we removed this PCCARD device from the system.

    2. Advanced Power Management (APM)

      APM also works out-of-the-box, under 4.x, although the resume problem with X and the Trident video controller remains. We use apmd(8) to handle resume events, primarily to restore audio levels to the mixer device and to restore the X display if the server is running.

    3. Iomega Parallel Port Zip Disk

      We found that the vpo(4) device for parallel port Zip drives was broken for non-EPP parallel port chip sets in 4.0-R. This prompted us to obtain a USB Zip drive and experiment with the 4030CDT's USB functionality. While we experienced some difficulties when using the umass(4) driver (e.g., occasional system crashes when attaching/detaching from the system), we found the performance of the USB Zip drive to be significantly better than the parallel port version.

      Update: A minor patch to ppb_base.c submitted on XXXX fixed the vpo device for non-EPP parallel port chip sets in 4.1-R.

    4. USB

      As noted above, we had some success with an Iomega USB Zip drive while running 4.0-R. The umass(4) device in 4.1-R appears to be more robust, and we use it rather than the parallel port vpo(4) device.

    5. ESS Maestro-2E Sound

      Prior to 4.1-R, the ESS Maestro-2E audio subsystem was not supported by FreeBSD. The kernel module maestro.ko by Taku Yamamoto appears to drive /dev/mixer, /dev/dsp (4 playback channels), and /dev/audio (4 playback channels) reliably.

      Update: Support for the ESS Maestro-2E device was added to 4.3-R.


  5. Concluding Remarks

    We have been pleased with the robustness and usefulness of FreeBSD on this Toshiba notebook computer. The ability to run applications built for Linux/i386 system seamlessly is a tremendous asset.

  6. References

    1. Gumbley, M.J. Linux and the Toshiba Satellite 4030CDT

    2. Harker, K.E. Linux on Laptops

    3. Kulp, D. Laptop Compatibility for FreeBSD

    4. Rafe, G.E., & D.W. Fraser. Open Source Alternatives: Thriving with (Free) UNIX on the Engineering Desktop

    5. Yamamoto, T. Sound Driver for ESS Maestro


gary.rafe@utoledo.edu
27 October 2001