Slackware Linux 11 on the Toshiba A105 - S4284




Version 0.13
Copyright © 2006-2007 by Zack Smith.
All rights reserved.

0. Summary

Currently working on the wireless issue.

1. System Profile

My A105-S4284 has the following hardware:

ItemDescriptionStatus
CPU Intel Core Duo T2050, 1.6 GHz L1=64 kB, L2=2 MB, Bogomips=3185 Works
Memory 1024 megs DDR2 533 MHz (4200MB/sec theoretical max.) Works
Hard drive & controller Toshiba MK1032GSX 100GB SATA drive and Intel 82801 GBM/GHM SATA controller Works but SATA problem
Optical drive Upgraded to the Pioneer DVR-K06 slot-loading DVD writer Works (tested only for reading)
Display & Video 15.4" 1280x800 TFT Mobile Intel 945GM Express w/shared video memory 8-128MB Works (requires 915resolution hack for widescreen)
SoundIntel 82801G High-Definition Audio controller Works
Wireless Networking Intel PRO/Wireless 3945ABG wireless network adapter Not 100% working yet.
Ethernet Intel PRO/100 VE Ethernet controller. Not tested.
Firewire (IEEE 1394) Texas Instruments OHCI compliant 1394 controller Not tested
USB Intel 82801G Works
PCMCIA Texas Instruments PCIxx12 CardBus and Flash controller Works
SD flash memory slot Texas Instruments 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD) Not tested.
Bluetooth ? Not tested.

2. Installation

This information is provided as-is. Proceed at your own risk.
  • First, you need to shrink the main partition to make room for Linux. There are two ways to do this:
    1. Buy or borrow a copy of PartitionMagic and use that. This is the safe choice.
    2. Use ntfsresize, which is riskier.
      • Under Windows, download the ISO for grml Linux or a similar live-CD Linux and write that to a CD-RW. It must include ntfsresize!
      • Restart, and boot under grml.
      • Use ntfsresize to reduce the size of the main NTFS partition. Definitely use a round number of gigabytes. You will then need to use fdisk to delete/recreate that partition in the proper smaller size, as well as one or two Linux partitions (a big one e.g. 7.5 gigs for Linux data, a smaller one e.g. 512 megs for Linux swap). Consider yourself forewarned that this is a risky operation! So if you are inexperienced or feel queasy about it, Note that you may need to defragment the Windows partition before shrinking it.
      • Reboot to Windows, which should do a check-disk (chkdsk). If not, right click on the main partition icon in My Computer and initiate error-checking. It may want to reboot afterwards.
  • Now under Windows, download the Slackware 11.0 DVD ISO. This will take forever, but it's easier to deal with than the CDs. Then, burn that to a DVD-R.
  • Boot with the Slackware DVD, and enter at the prompt "sata.i noieee1394", to prevent the boot sequence from hanging during FireWire auto-detection.
  • Once at the command prompt, use fdisk if you need to alter your partitions, then run 'setup' and install whatever you want.
  • When you get to the question of whether you want to enable Hotplug, select No. Otherwise the system will hang during start-up.
  • When you get to the stage where you will install LILO, note that you must install it into the MBR (Master Boot Record).

Before abandoning Windows

If you plan on using Linux exclusively, be sure that before you do, you copy all of the Windows TrueType fonts to a disk for use with Linux. They're in c:\windows\fonts. Firefox looks much better when using Windows fonts.

3. Drivers

3.1. Video

Without any modifications, VESA video works using the Intel framebuffer driver in 1024x768 mode if you request that LILO sets that mode at startup.

3.1.1. X Windows

The 945GM graphics chip works in 1024x768 in VESA mode.

To get widescreen 1280x800 video under X windows, you need to use the utility 915resolution.

  1. Download it, remove the executable and recompile it.
  2. Do a "make install".
  3. Then in your /etc/rc.d/rc.M file, just before GPM is started, put the command "915resolution 54 1280 800".
  4. Modify your /etc/X11/xorg.conf to replace the monitor info with this:
     
            Section "Monitor"
            Identifier      "My Monitor"
            Option          "DPMS"
            HorizSync       28-64
            VertRefresh     43-60
            Modeline "1280x800" 83.46 1280 1344 1480 1680 800 801 804 828 -HSync +Vsync
            EndSection
    
  5. Modify your /etc/X11/xorg.conf to include a default depth of 32 bits/pixel and to use the 1280x800 resolution.

Note the following problem: When you exit X in 1280x800, the text in text mode is garbled.

3.1.2. Framebuffer

You can start up in VESA 1024x768 mode. I don't think it's possible to start up in 1280x800, because 915resolution indicates that there is no BIOS video mode for that resolution. The only way to start up in 1280x800 would be to update LILO to include 915resolution functionality.

3.1.3. New discovery

I have discovered that under Windows in the Dos Box, the VESA driver reports that modes 0x162 and 0x168 provide 1280x800 at 32 bits. I never tested whether this mode also worked under Linux. The following is the full list printed by a utility that I wrote. I have no idea as to whether these modes truly exist in the VESA BIOS or whether they are invented by Windows XP.
 
Found VESA version 3.0
Mode 0x101 is 640 by 480, 8 bits
Mode 0x103 is 800 by 600, 8 bits
Mode 0x105 is 1024 by 768, 8 bits
Mode 0x111 is 640 by 480, 16 bits
Mode 0x112 is 640 by 480, 32 bits
Mode 0x114 is 800 by 600, 16 bits
Mode 0x115 is 800 by 600, 32 bits
Mode 0x117 is 1024 by 768, 16 bits
Mode 0x118 is 1024 by 768, 32 bits
Mode 0x160 is 1280 by 800, 8 bits
Mode 0x161 is 1280 by 800, 16 bits
Mode 0x162 is 1280 by 800, 32 bits
Mode 0x166 is 1280 by 800, 8 bits
Mode 0x167 is 1280 by 800, 16 bits
Mode 0x168 is 1280 by 800, 32 bits
Mode 0x1ff is 640 by 480, 8 bits

3.2. Sound

The Intel 82801G High-Def audio chip is supported by the 2.6.19.2 kernel, which I compiled. You can use the config file below.

3.3. ACPI

Seems to work, but I have not seen it slow down the CPU.

3.4. USB

Four ports total. They work.

3.5. FireWire

The FireWire driver that is supplied with the 2.4 kernel appears to be causing a kernel crash. This is why you need to start up with the "noieee1394" option.

3.6. Printing via lp0

There is no parallel port.

3.7. External flash drive

These work fine and are faster than the SATA drive due to the problem with the SATA driver.

3.8. PCMCIA

Appears to be supported, I didn't test it.

3.9 Networking

The Intel Ethernet NIC appeared to be recognized by the provided kernel.

Wireless

This very nearly gets wireless working:
  1. Obtain the 2.6.19.2 kernel source code, put it in /usr/src, and configure it to include ieee80211 built-in. There is a sample .config file at the bottom of this document.
  2. Obtain the ipw3945 driver and daemon as well as the microcode for it. Un-tar those into /root.
  3. For the driver, cd into its directory and do a "make install_radiotrap" (??) and a "make patch_kernel". You may have to tell the makefile where the kernel sources are.
  4. Do this: "chmod +x /etc/rc.d/rc.udev /etc/rc.d/rc.wireless".
  5. Put the microcode in /lib/firmware.
  6. Compile the daemon and do "make install".
  7. Reboot with the new kernel (first update lilo.conf and rerun lilo).
  8. When it comes back up, cd to the driver directory and run ./load.
  9. You should be able to run iwconfig and see that eth1 is available.

3.10. Internal DVD writer

I upgraded my A105 laptop with the Pioneer DVR-K06R dual-layer slot-loading DVD writer. Installation is very simple and I recommend upgrading to this drive if you can get one. The drive that came with the computer was OK, not great.

4. Performance

4.1. Video

VESA performance is quite decent. My benchmark program bandwidth says:
Framebuffer memory sequential read millions/sec = 5.93086
Framebuffer memory sequential write millions/sec = 21.9919

4.2. Hard drive

The stock drive is a SATA 100 MB drive that is a Toshiba MK1032GSX.

With the provided kernel and 'hdparm' it was impossible to enable DMA, in fact trying to gave an error.

Here are the hdparm benchmarks:

 
hdparm -t (buffered disk read)
  1.83 MB/sec
hdparm -T (cached disk read)
  2560 MB/sec
Compare this to accessing a 4X flash card that is connected via USB2 with a USB2 adapter:
 
hdparm -t (buffered disk read)
  4.95 MB/sec
hdparm -T (cached disk read)
  2043.34 MB/sec

You should add -h to the poweroff command in /etc/rc.d/rc.6 to ensure a quiet hard drive powerdown.

SD flash slot

This laptop comes with a built-in SD card reader, which is not a trivial enhancement because it should be a 32-bit interface and hopefully will prove to be quite fast. However I haven't tested it yet.

4.3. Processor

The Intel Core Duo T2050 has two processors and is really quite sufficient for most purposes, if you have a kernel that supports both.

The BYTE magazine Dhrystone benchmark, available here, gives a result of 160 under Linux.

When I ran it under Windows with Cygwin, I got a value of 189.

4.4. Memory Bandwidth

To ascertain memory performance, I wrote a utility called "bandwidth", which is here. I got these values:
 
L2 cache sequential read millions/sec = 906.877
L2 cache sequential write millions/sec = 798.915
Main memory sequential read millions/sec = 748.983
Main memory sequential write millions/sec = 327.68
Framebuffer resolution: 1024x768, 16bpp
Framebuffer memory sequential read millions/sec = 5.93086
Framebuffer memory sequential write millions/sec = 21.9919

Notice that although the RAM type is rated to offer a 4200 MB/second transfer rate for main memory, the benchmark achieved only 748.9*4 = 2996 MB/second when reading, even though it was reading sequentially which should result in very good prefetch efficiency.

4.5. Internal DVD writer

I haven't written any DVDs under Linux.

5. Kernel

I compiled the 2.6.19.2 kernel from kernel.org and it works fine. The config file (/usr/src/linux/.config) that I created for it is here.

6. Mailing List

Link.

Links