- Model: 2373-19G
- CPU: 1300 MHz Intel Pentium M
- RAM: 256 MB (upgraded to 512 MB)
- Display: 1024x786
- Harddisk: 30 GB (upgraded to 60 GB)
- Graphics Chip: ATI Mobility Radeon 7500 (32 MB RAM)
- Audio: Intel ICH4 (82801DB)
- Interfaces: Ethernet, modem, Cardbus, USB, Infrared, parallel, S-Video-Out
- Drives: CD-RW/DVD-ROM
- Configuration files: Kernelconfig, XF86Config
Actually, I didn't install FreeBSD right on this machine, I had a working 5.1-CURRENT installation (from November 2003) on a larger harddisk on my old laptop, so I just swapped drives and booted FreeBSD on the new machine - which surprisingly worked fine (Windows XP, which I have on a second partition, didn't like that and needed to be reinstalled... *evilgrin*).
My custom kernel configuration includes support for the soundcard (device pcm), support for the CardBus WLAN card I have and USB2.0 support (although I don't have any USB2.0 devices). Of course, I removed all the drivers and options that I don't need.
You probably need to put
hw.pci.allow_unsupported_io_range="1"into /boot/device.hints in order to detect the CardBus slots properly.
This laptop comes with an ATI Mobility Radeon 7500 which has 32MB of Video RAM. It runs fine with XFree 4.3.0, and it even supports hardware acceleration (I get about 500-600 fps with glxgears). The only problem is that X doesn't survive a suspend/resume cycle if you have hardware acceleration enabled, so I disabled it in my XF86Config file (I don't have a big need for DRI anyway). I hope this gets better with the next XFree86 release.
ACPI support on the T40 is quite good. S3 works (suspend/resume), S5 works too (soft power-off), and I can control CPU speed via various hw.acpi.cpu sysctls.
I patched my DSDT since compiling the ASL output from acpidump with iasl gave some warnings and one error, but I'm not sure if this is really necessary, the original DSDT booted fine without errors, too.
I've uploaded the ASL file, so you can see what I changed. I also hardcoded that I'm running "Windows 2001" (there's a tunable hw.acpi.os_name that is intended to do this without ASL patching, but it somehow doesn't work on my box), because there are many checks for Windows in the code. I also added some comments, as far as I could find out which control method is called at which event.
There are some problems with ACPI, though:
- If you have XFree86 hardware acceleration enabled, you can suspend, but on resume the system hangs.
- If you resume from suspend, the USB ports are dead, they spit out
usb0: cannot start usb1: cannot start usb2: cannot start usb0: host system error usb0: host controller process error usb0: host controller halted usb1: host system error usb1: host controller process error usb1: host controller halted usb2: host system error usb2: host controller process error usb2: host controller halted usb3: unrecoverable error, controller halted usb3: blocking intrs 0x10 usb3: port reset timeout
- The fan kicks in quite early and then stays on all the time - this is annoying, and I don't know why, since the machine isn't getting hot. According to the ACPI temperature values, the fan starts exactly when the temperature hits 39°C, but it doesn't turn off if the temperature falls again. In Windows, the fan is almost always off.
If your mouse hangs after suspending/resuming, try adding the
following to /boot/device.hints:
The integrated 'Intel 82801DB (ICH4) Pro/100 VE Ethernet' card is detected as device fxp0 and works as expected.
As this laptop is a true Centrino type machine, it features an integrated Intel WLAN card ('Intel PRO/Wireless LAN 2100 3B Mini PCI Adapter'). There is no Open Source driver for this card (yet), but if you're running a very recent -CURRENT, you can try Bill Paul's NDIS miniport driver wrapper, which allows to run Windows binary drivers.
First, download and unpack the Windows XP driver for the WLAN card from IBM's Device Driver Matrix. Unfortunately, this is a .exe file, so you will need to unpack the file in Windows.
Once you have unpacked the driver, locate the .INF and .SYS file which come with this package (I used the Windows XP version and not the Windows 2K version of the driver).
Then you need to compile the ndis.ko and if_ndis.ko modules:
# cd /sys/modules/ndis ; make ; make install # cd /sys/modules/if_ndis # ndiscvt -i /path/to/driver.INF -s /path/to/driver.SYS -o ndis_driver_data.h # make ; make install
First load ndis.ko, then if_ndis.ko, and you should see messages like these on your console:
ndis0: <Intel(R) PRO/Wireless LAN 2100 3B Mini PCI Adapter> mem 0xc0200000-0xc0200fff irq 6 at device 2.0 on pci2 can't re-use a leaf (ESS_ID)! ndis0: NDIS API version: 5.1 ndis0: status: 400100fe ndis0: status complete ndis0: status: 4001000c ndis0: status complete ndis0: 802.11 address: aa:bb:cc:dd:ee:ff ndis0: 11b rates: 11Mbps 2Mbps 1Mbps ndis0: link up
The small WLAN status LED at the bottom of the lid starts to blink and you can use ifconfig ndis0 to configure the device as you would with any other network interface, like setting IP address, netmask, SSID, WEP key etc.
The integrated modem is a WinModem and unfortunately, there's no FreeBSD driver available.
Cardbus, USB, Infrared, parallel, S-Video-Out
Cardbus works, USB seems to have a problem with suspend/resume (see above), parallel should work; I haven't tested the Infrared and the S-Video-Out ports, but I guess they don't work.
The laptop is equipped with the so-called 'UltraNav' device - which is basically a Trackpoint (the red nipple in the center of the keyboard) and a separate Touchpad. If you have both of them enabled in the BIOS, the third mouse button doesn't work, so I disabled the Touchpad (which I don't like anyway - Trackpoint rocks! :-) ).
On boot, I see some error messages like these:
start (b0000000) < sc->membase (c0200000) start (b0000000) < sc->pmembase (e8000000)They seem to be Cardbus related, but since everything seems to work fine, I don't care.