FreeBSD 7.2 on the Lenovo Thinkpad X60s

I recently installed FreeBSD 7.2 on my Lenovo Thinkpad X60s. Since the X60s doesn't have any CD-ROM and I don't have any external storage media other than USB sticks, I used PXE booting to install FreeBSD over the network.


I used my setup from FreeBSD on the Lenovo Thinkpad X60s and it worked flawlessly. To recapitulate:

Please remember that this configuration is meant for my internal network,, with the server being Change according to your network.


HW Out of the box With patches
Intel Core Duo SMP Yes
Intel 82801G audio Yes
Intel 945 graphics Yes
Firewire Yes
Bluetooth -- --
Modem No No
SD Card Reader No No
Intel 3945ABG WLAN Yes
Gigabit Ethernet Yes
Suspend/resume No No
Fingerprint reader No* No

* The device is found and is seen as an ugen(4), so it is reachable for experiments.

I haven't tested Bluetooth at all.

See below for dmesg.


The latency problems I reported with the Intel PRO/1000 em(4) in 6.1 and 6.2 are gone. No need to patch anything. Network works fine.

The Intel 3945ABG wireless LAN now works with wpi(4). It is, however, marked as experimental. Add this to /boot/loader.conf:


but read /usr/share/doc/legal/intel_wpi/LICENSE before adding anything.

Make sure the hardware radio button on the front of the laptop is in the "on" position.

Reboot to load the driver or do a

  # kldload if_wpi

The handrest gets very hot when the wpi is running. I don't know if anything can be done about this.


Graphics acceleration for the Intel 945GM is now supported by the Xorg server.

I initially tried to use an xorg.conf from Xorg -configure but didn't get anything at all on the monitor. Instead, I used the built-in miniconfiguration and expanded that to get it working.

Nota bene: The new Xorg in 7.2 works with HAL and dbus to become aware of hardware changes. This means that on a pristine FreeBSD system, you won't get any mouse or keyboard in X! To get around this, either start HAL and dbus, or add this to your xorg.conf:

  Section "ServerFlags"
    Option "AllowEmptyInput" "false"

I don't know why this is "true" by default. I was very surprised. See the man page for xorg.conf(5) for the AllowEmptyInput keyword:

Option "AllowEmptyInput" "boolean"

If enabled, don't add the standard keyboard and mouse drivers, if there are no input devices in the config file. Enabled by default if AutoAddDevices and AutoEnableDevices is enabled, otherwise disabled. If AllowEmptyInput is on, devices using the kbd, mouse or vmmouse driver are ignored.

Then define your mouse and keyboard manually. Here's my keyboard and mouse configuration:

  Section "InputDevice"
  	Identifier  "Keyboard0"
  	Driver      "kbd"
  Section "InputDevice"
  	Identifier  "Mouse0"
  	Driver      "mouse"
  	Option	    "Protocol" "auto"
  	Option	    "Device" "/dev/sysmouse"
  	Option	    "ZAxisMapping" "4 5 6 7"

And, for completeness, the rest of my minimal xorg.conf:

  Section "ServerLayout"
  	Identifier     "MC config"
  	InputDevice    "Mouse0" "CorePointer"
  	InputDevice    "Keyboard0" "CoreKeyboard"
  	Screen	"Builtin Default intel Screen 0"
  Section "Device"
  	Identifier	"Builtin Default intel Device 0"
  	Driver	"intel"
  Section "Screen"
  	Identifier	"Builtin Default intel Screen 0"
  	Device	"Builtin Default intel Device 0"


Sound (Intel HDAC) now supported out of the box with snd_hda(4) for both output and input. Add:


in /boot/loader.conf and reboot to load driver or do a

  # kldload snd_hda

Use mixer(8) (or install audio/aumix or audio/xmixer) to set volume. Use

  /etc/rc.d/mixer stop

to save state for all mixers.

Power Management

The laptop suspends, but reboots on resume. As before, powerd(8) works fine.


The machine gets rather hot, about 58 degrees around the CPU, after running a while. To see the temperature, you might want to use the kernel modules coretemp and acpi_ibm. Add to /boot/loader.conf:


and reboot, or do a

  # kldload coretemp
  # kldload acpi_ibm

Now you can grep the sysctls for "tempe":

  # sysctl -a|grep tempe
  hw.acpi.thermal.tz0.temperature: 53.0C
  hw.acpi.thermal.tz1.temperature: 54.0C
  dev.cpu.0.temperature: 54
  dev.cpu.1.temperature: 55


  Copyright (c) 1992-2009 The FreeBSD Project.
  Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
  	The Regents of the University of California. All rights reserved.
  FreeBSD is a registered trademark of The FreeBSD Foundation.
  FreeBSD 7.2-RELEASE #0: Fri May  1 08:49:13 UTC 2009
  Timecounter "i8254" frequency 1193182 Hz quality 0
  CPU: Genuine Intel(R) CPU           L2400  @ 1.66GHz (1662.51-MHz 686-class CPU)
    Origin = "GenuineIntel"  Id = 0x6e8  Stepping = 8
    AMD Features=0x100000<NX>
    Cores per package: 2
  real memory  = 527302656 (502 MB)
  avail memory = 501964800 (478 MB)
  ACPI APIC Table: <LENOVO TP-7B   >
  FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
   cpu0 (BSP): APIC ID:  0
   cpu1 (AP): APIC ID:  1
  ACPI Warning (tbfadt-0505): Optional field "Gpe1Block" has zero address or length:        0    102C/0 [20070320]
  ioapic0: Changing APIC ID to 1
  ioapic0 <Version 2.0> irqs 0-23 on motherboard
  kbd1 at kbdmux0
  acpi0: <LENOVO TP-7B> on motherboard
  acpi0: [ITHREAD]
  acpi_ec0: <Embedded Controller: GPE 0x1c, ECDT> port 0x62,0x66 on acpi0
  acpi0: Power Button (fixed)
  acpi0: reservation of 0, a0000 (3) failed
  acpi0: reservation of 100000, 1ff00000 (3) failed
  Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
  acpi_timer0: <24-bit timer at 3.579545MHz> port 0x1008-0x100b on acpi0
  acpi_hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on acpi0
  Timecounter "HPET" frequency 14318180 Hz quality 900
  acpi_lid0: <Control Method Lid Switch> on acpi0
  acpi_button0: <Sleep Button> on acpi0
  pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
  pci0: <ACPI PCI bus> on pcib0
  vgapci0: <VGA-compatible display> port 0x1800-0x1807 mem 0xee100000-0xee17ffff,0xd0000000-0xdfffffff,0xee200000-0xee23ffff irq 16 at device 2.0 on pci0
  agp0: <Intel 82945GM (945GM GMCH) SVGA controller> on vgapci0
  agp0: detected 7932k stolen memory
  agp0: aperture size is 256M
  vgapci1: <VGA-compatible display> mem 0xee180000-0xee1fffff at device 2.1 on pci0
  hdac0: <Intel 82801G High Definition Audio Controller> mem 0xee240000-0xee243fff irq 17 at device 27.0 on pci0
  hdac0: HDA Driver Revision: 20090329_0131
  hdac0: [ITHREAD]
  pcib1: <ACPI PCI-PCI bridge> irq 20 at device 28.0 on pci0
  pci2: <ACPI PCI bus> on pcib1
  em0: <Intel(R) PRO/1000 Network Connection 6.9.6> port 0x2000-0x201f mem 0xee000000-0xee01ffff irq 16 at device 0.0 on pci2
  em0: Using MSI interrupt
  em0: [FILTER]
  em0: Ethernet address: 00:16:d3:21:5a:5a
  pcib2: <ACPI PCI-PCI bridge> irq 21 at device 28.1 on pci0
  pci3: <ACPI PCI bus> on pcib2
  pci3: <network> at device 0.0 (no driver attached)
  pcib3: <ACPI PCI-PCI bridge> irq 22 at device 28.2 on pci0
  pci4: <ACPI PCI bus> on pcib3
  pcib4: <ACPI PCI-PCI bridge> irq 23 at device 28.3 on pci0
  pci12: <ACPI PCI bus> on pcib4
  uhci0: <UHCI (generic) USB controller> port 0x1820-0x183f irq 16 at device 29.0 on pci0
  uhci0: [GIANT-LOCKED]
  uhci0: [ITHREAD]
  usb0: <UHCI (generic) USB controller> on uhci0
  usb0: USB revision 1.0
  uhub0: <Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb0
  uhub0: 2 ports with 2 removable, self powered
  uhci1: <UHCI (generic) USB controller> port 0x1840-0x185f irq 17 at device 29.1 on pci0
  uhci1: [GIANT-LOCKED]
  uhci1: [ITHREAD]
  usb1: <UHCI (generic) USB controller> on uhci1
  usb1: USB revision 1.0
  uhub1: <Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb1
  uhub1: 2 ports with 2 removable, self powered
  uhci2: <UHCI (generic) USB controller> port 0x1860-0x187f irq 18 at device 29.2 on pci0
  uhci2: [GIANT-LOCKED]
  uhci2: [ITHREAD]
  usb2: <UHCI (generic) USB controller> on uhci2
  usb2: USB revision 1.0
  uhub2: <Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb2
  uhub2: 2 ports with 2 removable, self powered
  uhci3: <UHCI (generic) USB controller> port 0x1880-0x189f irq 19 at device 29.3 on pci0
  uhci3: [GIANT-LOCKED]
  uhci3: [ITHREAD]
  usb3: <UHCI (generic) USB controller> on uhci3
  usb3: USB revision 1.0
  uhub3: <Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb3
  uhub3: 2 ports with 2 removable, self powered
  ehci0: <Intel 82801GB/R (ICH7) USB 2.0 controller> mem 0xee444000-0xee4443ff irq 19 at device 29.7 on pci0
  ehci0: [GIANT-LOCKED]
  ehci0: [ITHREAD]
  usb4: EHCI version 1.0
  usb4: companion controllers, 2 ports each: usb0 usb1 usb2 usb3
  usb4: <Intel 82801GB/R (ICH7) USB 2.0 controller> on ehci0
  usb4: USB revision 2.0
  uhub4: <Intel EHCI root hub, class 9/0, rev 2.00/1.00, addr 1> on usb4
  uhub4: 8 ports with 8 removable, self powered
  pcib5: <ACPI PCI-PCI bridge> at device 30.0 on pci0
  pci21: <ACPI PCI bus> on pcib5
  cbb0: <RF5C476 PCI-CardBus Bridge> mem 0xe4300000-0xe4300fff irq 16 at device 0.0 on pci21
  cardbus0: <CardBus bus> on cbb0
  pccard0: <16-bit PCCard bus> on cbb0
  cbb0: [ITHREAD]
  fwohci0: <Ricoh R5C552> mem 0xe4301000-0xe43017ff irq 17 at device 0.1 on pci21
  fwohci0: [FILTER]
  fwohci0: OHCI version 1.0 (ROM=0)
  fwohci0: No. of Isochronous channels is 4.
  fwohci0: EUI64 00:0a:e4:06:00:16:20:1b
  fwohci0: Phy 1394a available S400, 2 ports.
  fwohci0: Link S400, max_rec 2048 bytes.
  firewire0: <IEEE1394(FireWire) bus> on fwohci0
  fwe0: <Ethernet over FireWire> on firewire0
  if_fwe0: Fake Ethernet address: 02:0a:e4:16:20:1b
  fwe0: Ethernet address: 02:0a:e4:16:20:1b
  fwip0: <IP over FireWire> on firewire0
  fwip0: Firewire address: 00:0a:e4:06:00:16:20:1b @ 0xfffe00000000, S400, maxrec 2048
  sbp0: <SBP-2/SCSI over FireWire> on firewire0
  dcons_crom0: <dcons configuration ROM> on firewire0
  dcons_crom0: bus_addr 0x1184000
  fwohci0: Initiate bus reset
  fwohci0: BUS reset
  fwohci0: node_id=0xc800ffc0, gen=1, CYCLEMASTER mode
  pci21: <base peripheral, SD host controller> at device 0.2 (no driver attached)
  isab0: <PCI-ISA bridge> at device 31.0 on pci0
  isa0: <ISA bus> on isab0
  atapci0: <Intel ICH7 UDMA100 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0x1810-0x181f at device 31.1 on pci0
  ata0: <ATA channel 0> on atapci0
  ata0: [ITHREAD]
  atapci1: <Intel AHCI controller> port 0x18d0-0x18d7,0x18c4-0x18c7,0x18c8-0x18cf,0x18c0-0x18c3,0x18b0-0x18bf mem 0xee444400-0xee4447ff irq 16 at device 31.2 on pci0
  atapci1: [ITHREAD]
  atapci1: AHCI Version 01.10 controller with 4 ports detected
  ata2: <ATA channel 0> on atapci1
  ata2: [ITHREAD]
  ata3: <ATA channel 1> on atapci1
  ata3: port not implemented
  ata3: [ITHREAD]
  ata4: <ATA channel 2> on atapci1
  ata4: port not implemented
  ata4: [ITHREAD]
  ata5: <ATA channel 3> on atapci1
  ata5: port not implemented
  ata5: [ITHREAD]
  pci0: <serial bus, SMBus> at device 31.3 (no driver attached)
  acpi_tz0: <Thermal Zone> on acpi0
  acpi_tz1: <Thermal Zone> on acpi0
  atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
  atkbd0: <AT Keyboard> irq 1 on atkbdc0
  kbd0 at atkbd0
  atkbd0: [GIANT-LOCKED]
  atkbd0: [ITHREAD]
  psm0: <PS/2 Mouse> irq 12 on atkbdc0
  psm0: [GIANT-LOCKED]
  psm0: [ITHREAD]
  psm0: model Generic PS/2 mouse, device ID 0
  battery0: <ACPI Control Method Battery> on acpi0
  acpi_acad0: <AC Adapter> on acpi0
  cpu0: <ACPI CPU> on acpi0
  est0: <Enhanced SpeedStep Frequency Control> on cpu0
  p4tcc0: <CPU Frequency Thermal Control> on cpu0
  cpu1: <ACPI CPU> on acpi0
  est1: <Enhanced SpeedStep Frequency Control> on cpu1
  p4tcc1: <CPU Frequency Thermal Control> on cpu1
  pmtimer0 on isa0
  orm0: <ISA Option ROMs> at iomem 0xce800-0xcf7ff,0xcf800-0xd07ff,0xdc000-0xdffff,0xe0000-0xeffff pnpid ORM0000 on isa0
  ppc0: parallel port not found.
  sc0: <System console> at flags 0x100 on isa0
  sc0: VGA <16 virtual consoles, flags=0x300>
  sio0: configured irq 4 not in bitmap of probed irqs 0
  sio0: port may not be enabled
  sio0: configured irq 4 not in bitmap of probed irqs 0
  sio0: port may not be enabled
  sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
  sio0: type 8250 or not responding
  sio0: [FILTER]
  sio1: configured irq 3 not in bitmap of probed irqs 0
  sio1: port may not be enabled
  vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
  ugen0: <STMicroelectronics Biometric Coprocessor, class 0/0, rev 1.00/0.01, addr 2> on uhub3
  Timecounters tick every 1.000 msec
  firewire0: 1 nodes, maxhop <= 0, cable IRM = 0 (me)
  firewire0: bus manager 0 (me)
  ad4: 76319MB <FUJITSU MHV2080BH 00840028> at ata2-master SATA150
  hdac0: HDA Codec #0: Analog Devices AD1981HD
  hdac0: HDA Codec #1: Conexant (Unknown)
  pcm0: <HDA Analog Devices AD1981HD PCM #0 Analog> at cad 0 nid 1 on hdac0
  pcm1: <HDA Analog Devices AD1981HD PCM #1 Digital> at cad 0 nid 1 on hdac0
  GEOM_LABEL: Label for provider ad4s1a is ufsid/4a0d44619adf9d9d.
  GEOM_LABEL: Label for provider ad4s1d is ufsid/4a0d44651c11690a.
  GEOM_LABEL: Label for provider ad4s1e is ufsid/4a0d4461e29548a3.
  GEOM_LABEL: Label for provider ad4s1f is ufsid/4a0d446154f21a39.
  SMP: AP CPU #1 Launched!
  Trying to mount root from ufs:/dev/ad4s1a
  GEOM_LABEL: Label ufsid/4a0d44619adf9d9d removed.
  GEOM_LABEL: Label for provider ad4s1a is ufsid/4a0d44619adf9d9d.
  GEOM_LABEL: Label ufsid/4a0d4461e29548a3 removed.
  GEOM_LABEL: Label for provider ad4s1e is ufsid/4a0d4461e29548a3.
  GEOM_LABEL: Label ufsid/4a0d446154f21a39 removed.
  GEOM_LABEL: Label for provider ad4s1f is ufsid/4a0d446154f21a39.
  GEOM_LABEL: Label ufsid/4a0d44651c11690a removed.
  GEOM_LABEL: Label for provider ad4s1d is ufsid/4a0d44651c11690a.
  GEOM_LABEL: Label ufsid/4a0d44619adf9d9d removed.
  GEOM_LABEL: Label ufsid/4a0d4461e29548a3 removed.
  GEOM_LABEL: Label ufsid/4a0d446154f21a39 removed.
  GEOM_LABEL: Label ufsid/4a0d44651c11690a removed.

Last updated: <2009-07-21 14:01:28 MEST>