IBM Thinkpad X40

From NetBSD Wiki

Jump to: navigation, search

I just got a used laptop IBM Thinkpad X40 - here are the results of the basic setup so far:

Contents

Hardware specifications

The IBM Thinkpad X40 is subnotebook with around 1.6 kg of weight. It has a 12.1 TFT Display, 1.2 GHz LV (Low voltage) or ULV (Ultra Low Voltage) Pentium M processor. It uses a Intel Intel 82855GM graphic chipset. Actiontec Electronics bluetooth device, Atheros or Intel Wireless chipset. It's akku power lasts for about 3-4 hours. It's a nifty laptop :)

Xorg

I use modular-x which works out of the box. Just install the packages, run:

 X -configure

Copy the resulting xorg.conf.new to /etc/X11/xorg.conf and your are ready to go.

acpi hints

Some users complain about a freeze when they close/open the lid to put the laptop to sleep. Actually it's a bug in the firmware. Tobias Nygren (tnn) has a fix available in his home directory (http://www.netbsd.org/~tnn/NetBSD_on_Thinkpad_x40.html). Note that sysutils/acpi-iasl no longer exists - you'll need sysutils/acpica-utils and sysutils/acpidump.

As I am using -current (aka 4.9.72 built from sources 18th Sep 2008) ACPI Suspend to RAM just works fine. Just enter

 sysctl -w machdep.sleep_state=3

to put the laptop to sleep. Due to a bug somehwere you have to wake up your Thinkpad X40 by pressing the power button. It won't work when you use FN+F4.

As for 5.99.11, this functionality appears to be broken. If ACPI is disabled and apm support is included instead, suspend appears to work fine (as does resume, triggered by the screen lid close event).

incessant fan

For some reason, ThinkPads running NetBSD with ACPI enabled seem to run their CPU cooling fans all of the time. Although it's possible to control this via specific embedded controller ACPI registers, NetBSD does not currently support it, so it's easier to just disable ACPI entirely if it's bothersome. In more recent versions of NetBSD, this can be accomplished at boot and made permanent by changing the 'default' field of /boot.cfg.

ath activity led

Try setting hw.ath0.softled=1 in /etc/sysctl.conf if the wifi activity light doesn't work.

ath noise with timeouts

Some users complain about ath timeouts on the console and inside the messages log. See a possible solution here (http://wiki.netbsd.se/ThinkPad_ath0_Problem)

sample custom kernel config

In addition to GENERIC, this features: apm, acpi dsdt override, odcm, drm support

 include         "arch/i386/conf/GENERIC"
 
 # Intel(R) On Demand Clock Modulation (aka ODCM)
 options         INTEL_ONDEMAND_CLOCKMOD
 
 options         PCIBIOS                 # PCI BIOS support
 options         PCIBIOSVERBOSE          # PCI BIOS verbose info
 options         PCI_ADDR_FIXUP          # fixup PCI I/O addresses
 options         PCI_BUS_FIXUP           # fixup PCI bus numbering
 options         PCI_INTR_FIXUP          # fixup PCI interrupt routing
 
 #
 # repaired X40 ACPI DSDT to fix lid close exception
 #
 options ACPI_DSDT_OVERRIDE
 options ACPI_DSDT_FILE="\"/usr/src/sys/arch/i386/conf/X40.hex\""
 
 i915drm*        at vga?         # Intel i915, i945 DRM driver
 apm0    at mainbus0                     # Advanced power management

dmesg

 Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
     2006, 2007
     The NetBSD Foundation, Inc.  All rights reserved.
 Copyright (c) 1982, 1986, 1989, 1991, 1993
     The Regents of the University of California.  All rights reserved.
 
 NetBSD 4.0 (GENERIC_LAPTOP) #0: Sun Dec 16 00:27:57 PST 2007
       builds@wb34:/home/builds/ab/netbsd-4-0-RELEASE/i386/200712160005Z-obj/home/builds/ab/netbsd-4-0-RELEASE/src/sys/arch/i386/compile/GENERIC_LAPTOP
 total memory = 1014 MB
 rbus: rbus_min_start set to 0x40000000
 avail memory = 988 MB
 timecounter: Timecounters tick every 10.000 msec
 timecounter: Timecounter "i8254" frequency 1193182 Hz quality 100  BIOS32 rev. 0 found at 0xfd740
 PCI BIOS rev. 2.1 found at 0xfd8c8
 pcibios: config mechanism [1][x], special cycles [x][x], last bus 5
 PCI IRQ Routing Table rev. 1.0 found at 0xfdeb0, size 256 bytes (14 entries)
 PCI Interrupt Router at 000:31:0 (Intel 82371FB (PIIX) PCI-ISA Bridge compatible)  ------------------------------------------
   device vendor product pin PIRQ IRQ stage
 ------------------------------------------
 000:02:0 0x8086 0x3582   A  0x00  11  0    already assigned
 000:29:0 0x8086 0x24c2   A  0x00  11  0    already assigned
 000:29:1 0x8086 0x24c4   B  0x03  11  0    already assigned
 000:29:2 0x8086 0x24c7   C  0x02  11  0    already assigned
 000:29:7 0x8086 0x24cd   D  0x07  11  0    already assigned
 000:31:1 0x8086 0x24ca   A  0x02  11  0    fixed up
 000:31:3 0x8086 0x24c3   B  0x01  11  0    already assigned
 000:31:5 0x8086 0x24c5   B  0x01  11  0    already assigned
 000:31:6 0x8086 0x24c6   B  0x01  11  0    already assigned
 002:00:0 0x1180 0x0476   A  0x00  11  0    already assigned
 002:00:1 0x1180 0x0822   B  0x01  11  0    already assigned
 002:01:0 0x8086 0x1077   A  0x04  11  0    already assigned
 002:02:0 0x168c 0x1014   A  0x05  11  0    already assigned
 ------------------------------------------
 mainbus0 (root)
 pci_addr_fixup: 000:31:1 0x8086 0x24ca new address 0x00005800
 pci_addr_fixup: 000:31:1 0x8086 0x24ca new address 0x00005808
 pci_addr_fixup: 000:31:1 0x8086 0x24ca new address 0x00005810
 pci_addr_fixup: 000:31:1 0x8086 0x24ca new address 0x0000580c
 pci_addr_fixup: 000:31:1 0x8086 0x24ca new address 0x3f700000
 cpu0 at mainbus0: apid 0 (boot processor)
 cpu0: Intel Pentium M (Banias) (686-class), 598.09 MHz, id 0x695
 cpu0: features a7e9fbbf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,APIC,SEP,MTRR>
 cpu0: features a7e9fbbf<PGE,MCA,CMOV,PAT,CFLUSH,DS,ACPI,MMX>
 cpu0: features a7e9fbbf<FXSR,SSE,SSE2,TM,SBF>
 cpu0: features2 180<EST,TM2>
 cpu0: "Intel(R) Pentium(R) M processor 1200MHz"
 cpu0: I-cache 32 KB 64B/line 8-way, D-cache 32 KB 64B/line 8-way
 cpu0: using thermal monitor 2
 cpu0: Enhanced SpeedStep (956 mV) 600 MHz
 cpu0: Enhanced SpeedStep frequencies available (MHz): 1200 1100 1000 900 800 600
 ioapic at mainbus0: not configured
 acpi0 at mainbus0: Advanced Configuration and Power Interface
 acpi0: using Intel ACPI CA subsystem version 20060217
 acpi0: X/RSDT: OemId <IBM   ,TP-1U   ,00002080>, AslId < LTP,00000000>
 acpi0: found ECDT, GPE 28
 acpi0: SCI interrupting at int 9
 acpi0: fixed-feature power button present
 timecounter: Timecounter "ACPI-Fast" frequency 3579545 Hz quality 1000
 ACPI-Fast 24-bit timer
 LNKA: ACPI: Found matching pin for 0.2.INTA at func 0: 11
 LNKA: ACPI: Found matching pin for 0.29.INTA at func 0: 11
 LNKD: ACPI: Found matching pin for 0.29.INTB at func 1: 11
 LNKC: ACPI: Found matching pin for 0.29.INTC at func 2: 11
 LNKH: ACPI: Found matching pin for 0.29.INTD at func 7: 11
 LNKC: ACPI: Found matching pin for 0.31.INTA at func 1: 11
 LNKB: ACPI: Found matching pin for 0.31.INTB at func 3: 11
 LNKA: ACPI: Found matching pin for 1.0.INTA at func 0: 11
 LNKB: ACPI: Found matching pin for 1.0.INTB at func 1: 11
 LNKE: ACPI: Found matching pin for 1.1.INTA at func 0: 11
 LNKF: ACPI: Found matching pin for 1.2.INTA at func 0: 11
 ACPI Object Type 'Processor' (0x0c) at acpi0 not configured
 PNP0C0F at acpi0 not configured
 PNP0C0F at acpi0 not configured
 PNP0C0F at acpi0 not configured
 PNP0C0F at acpi0 not configured
 PNP0C0F at acpi0 not configured
 PNP0C0F at acpi0 not configured
 PNP0C0F at acpi0 not configured
 PNP0C0F at acpi0 not configured
 PNP0C01 at acpi0 not configured
 acpilid0 at acpi0 (PNP0C0D): ACPI Lid Switch
 acpibut0 at acpi0 (PNP0C0E): ACPI Sleep Button
 PNP0A03 at acpi0 not configured
 PNP0C02 at acpi0 not configured
 PNP0000 at acpi0 not configured
 PNP0100 at acpi0 not configured
 PNP0200 at acpi0 not configured
 PNP0800 at acpi0 not configured
 PNP0C04 at acpi0 not configured
 PNP0B00 at acpi0 not configured
 PNP0303 at acpi0 not configured
 IBM3780 at acpi0 not configured
 IBM0071 at acpi0 not configured
 acpiec0 at acpi0 (PNP0C09-0): ACPI Embedded Controller
 acpiec0: io 0x62,0x66
 ACPI Object Type 'Power' (0x0b) at acpi0 not configured
 acpibat0 at acpi0 (PNP0C0A-0): ACPI Battery (Control Method)
 acpiacad0 at acpi0 (ACPI0003-0): ACPI AC Adapter
 IBM0068 at acpi0 not configured
 acpitz0 at acpi0: ACPI Thermal Zone
 acpitz0: unable to get polling interval; using default of 30.0s
 acpitz0: passive cooling mode only
 acpitz0: critical 95.0C passive 43.0C
 apm0 at acpi0: Power Management spec V1.2
 acpibat0: battery info: SANYO, LION, IBM-92P1002,   759
 acpiacad0: AC adapter offline.
 pci0 at mainbus0 bus 0: configuration mode 1
 pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
 pchb0 at pci0 dev 0 function 0
 pchb0: Intel 82855GM Host-Hub Controller (rev. 0x02)
 agp0 at pchb0: detected 8060k stolen memory
 agp0: aperture at 0xe0000000, size 0x8000000
 Intel 82855GM GMCH Memory Controller (miscellaneous system, revision 0x02) at pci0 dev 0 function 1 not configured
 Intel 82855GM GMCH Configuration Process (miscellaneous system, revision 0x02) at pci0 dev 0 function 3 not configured
 vga1 at pci0 dev 2 function 0: Intel 82855GM GMCH Integrated Graphics Device (rev. 0x02)
 wsdisplay0 at vga1 kbdmux 1: console (80x25, vt100 emulation)
 wsmux1: connecting to wsdisplay0
 Intel 82855GM GMCH Integrated Graphics Device (miscellaneous display, revision 0x02) at pci0 dev 2 function 1 not configured
 uhci0 at pci0 dev 29 function 0: Intel 82801DB USB UHCI Controller (rev. 0x01)
 uhci0: interrupting at irq 11
 usb0 at uhci0: USB revision 1.0
 uhub0 at usb0
 uhub0: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
 uhub0: 2 ports with 2 removable, self powered
 uhci1 at pci0 dev 29 function 1: Intel 82801DB USB UHCI Controller (rev. 0x01)
 uhci1: interrupting at irq 11
 usb1 at uhci1: USB revision 1.0
 uhub1 at usb1
 uhub1: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
 uhub1: 2 ports with 2 removable, self powered
 uhci2 at pci0 dev 29 function 2: Intel 82801DB USB UHCI Controller (rev. 0x01)
 uhci2: interrupting at irq 11
 usb2 at uhci2: USB revision 1.0
 uhub2 at usb2
 uhub2: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
 uhub2: 2 ports with 2 removable, self powered
 ehci0 at pci0 dev 29 function 7: Intel 82801DB USB EHCI Controller (rev. 0x01)
 ehci0: interrupting at irq 11
 ehci0: BIOS has given up ownership
 ehci0: EHCI version 1.0
 ehci0: companion controllers, 2 ports each: uhci0 uhci1 uhci2
 usb3 at ehci0: USB revision 2.0
 uhub3 at usb3
 uhub3: Intel EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
 uhub3: 6 ports with 6 removable, self powered
 ppb0 at pci0 dev 30 function 0: Intel 82801BAM Hub-PCI Bridge (rev. 0x81)
 pci1 at ppb0 bus 1
 pci1: i/o space, memory space enabled
 cbb0 at pci1 dev 0 function 0: Ricoh 5C476 PCI-CardBus bridge (rev. 0x8d)
 Ricoh product 0x0822 (SD Host Controller system, revision 0x13) at pci1 dev 0
function 1 not configured
 wm0 at pci1 dev 1 function 0: Intel i82541GI Mobile 1000BASE-T Ethernet, rev. 0
 wm0: interrupting at irq 11
 wm0: 32-bit 33MHz PCI bus
 wm0: 64 word (6 address bits) MicroWire EEPROM
 wm0: Ethernet address 00:0a:e4:26:1e:65
 igphy0 at wm0 phy 1: Intel IGP01E1000 Gigabit PHY, rev. 0
 igphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
 ath0 at pci1 dev 2 function 0
 ath0: interrupting at irq 11
 ath0: 11a rates: 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
 ath0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
 ath0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
 ath0: mac 5.6 phy 4.1 5 GHz radio 1.7 2 GHz radio 2.3
 cbb0: interrupting at irq 11
 cardslot0 at cbb0 slot 0 flags 0
 cardbus0 at cardslot0: bus 2
 pcmcia0 at cardslot0
 pcib0 at pci0 dev 31 function 0
 pcib0: Intel 82801DB ISA Bridge (rev. 0x01)
 piixide0 at pci0 dev 31 function 1
 piixide0: Intel 82801DBM IDE Controller (ICH4-M) (rev. 0x01)
 piixide0: bus-master DMA support present
 piixide0: primary channel configured to compatibility mode
 piixide0: primary channel interrupting at irq 14
 atabus0 at piixide0 channel 0
 piixide0: secondary channel configured to compatibility mode
 piixide0: secondary channel interrupting at irq 15
 atabus1 at piixide0 channel 1
 Intel 82801DB SMBus Controller (SMBus serial bus, revision 0x01) at pci0 dev 31 function 3 not configured
 auich0 at pci0 dev 31 function 5: i82801DB/DBM (ICH4/ICH4M) AC-97 Audio
 auich0: interrupting at irq 11
 auich0: ac97: Analog Devices AD1981B codec; headphone, 20 bit DAC, no 3D stereo
 auich0: ac97: ext id 601<AC97_22,AMAP,VRA>
 Intel 82801DB AC97 Modem Controller (modem communications, revision 0x01) at pci0 dev 31 function 6 not configured
 isa0 at pcib0
 com1 at isa0 port 0x2f8-0x2ff irq 3: ns16550a, working fifo
 pckbc0 at isa0 port 0x60-0x64
 pckbd0 at pckbc0 (kbd slot)
 pckbc0: using irq 1 for kbd slot
 wskbd0 at pckbd0: console keyboard, using wsdisplay0
 pms0 at pckbc0 (aux slot)
 pckbc0: using irq 12 for aux slot
 wsmouse0 at pms0 mux 0
 attimer0 at isa0 port 0x40-0x43: AT Timer
 pcppi0 at isa0 port 0x61
 pcppi0: children must have an explicit unit
 midi0 at pcppi0: PC speaker (CPU-intensive output)
 sysbeep0 at pcppi0
 isapnp0 at isa0 port 0x279: ISA Plug 'n Play device support
 npx0 at isa0 port 0xf0-0xff
 npx0: reported by CPUID; using exception 16
 pcppi0: attached to attimer0
 isapnp0: no ISA Plug 'n Play devices found
 WARNING: Callback scheduled before sysmon task queue thread present.
 timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0
 auich0: measured ac97 link rate at 48000 Hz
 audio0 at auich0: full duplex, mmap, independent
 Kernelized RAIDframe activated
 wd0 at atabus0 drive 0: <HITACHI_DK13FA-40B>
 wd0: drive supports 16-sector PIO transfers, LBA addressing
 wd0: 38154 MB, 77520 cyl, 16 head, 63 sec, 512 bytes/sect x 78140160 sectors
 wd0: 32-bit data port
 wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
 wd0(piixide0:0:0): using PIO mode 4, Ultra-DMA mode 5 (Ultra/100) (using DMA)
 boot device: wd0
 root on wd0a dumps on wd0b
 root file system type: ffs
 wsdisplay0: screen 1 added (80x25, vt100 emulation)
 wsdisplay0: screen 2 added (80x25, vt100 emulation)
 wsdisplay0: screen 3 added (80x25, vt100 emulation)
 wsdisplay0: screen 4 added (80x25, vt100 emulation)

You need to switch on bluetooth manually (FN + F5)

 ubt0 at uhub2 port 1 configuration 1 interface 0
 ubt0: Actiontec Electronics product 0x2441, rev 1.10/5.46, addr 2
 ubt0: at uhub2 port 1 (addr 2) disconnected
 ubt0 detached


xorg.conf (for reference)

 Section "ServerLayout"
       Identifier     "X.org Configured"
       Screen      0  "Screen0" 0 0
       InputDevice    "Mouse0" "CorePointer"
       InputDevice    "Keyboard0" "CoreKeyboard"
 EndSection
 
 Section "Files"
       RgbPath      "/usr/pkg/share/X11/rgb"
       ModulePath   "/usr/pkg/lib/xorg/modules"
       FontPath     "/usr/pkg/lib/X11/fonts/misc/"
       FontPath     "/usr/pkg/lib/X11/fonts/TTF/"
       FontPath     "/usr/pkg/lib/X11/fonts/OTF"
       FontPath     "/usr/pkg/lib/X11/fonts/Type1/"
       FontPath     "/usr/pkg/lib/X11/fonts/100dpi/"
       FontPath     "/usr/pkg/lib/X11/fonts/75dpi/"
 EndSection
 
 Section "Module"
       Load  "extmod"
       Load  "record"
       Load  "dbe"
       Load  "glx"
       Load  "GLcore"
       Load  "xtrap"
       Load  "dri"
       Load  "freetype"
       Load  "type1"
 EndSection
 
 Section "InputDevice"
       Identifier  "Keyboard0"
       Driver      "kbd"
       Option  "XkbModel"      "pc102"
       Option  "XkbLayout"     "de"
 EndSection
 
 Section "InputDevice"
       Identifier  "Mouse0"
       Driver      "mouse"
       Option      "Protocol" "wsmouse"
       Option      "Device" "/dev/wsmouse"
       Option      "ZAxisMapping" "4 5 6 7"
 EndSection
 
 Section "Monitor"
       Identifier   "Monitor0"
       VendorName   "Monitor Vendor"
       ModelName    "Monitor Model"
 EndSection
 
 Section "Device"
         ### Available Driver options are:-
         ### Values: : integer, <f>: float, <bool>: "True"/"False",
         ### <string>: "String", <freq>: "<f> Hz/kHz/MHz"
         ### [arg]: arg optional
         #Option     "NoAccel"                 # [<bool>]
         #Option     "SWcursor"                # [<bool>]
         #Option     "ColorKey"                # <i>
         #Option     "CacheLines"              # <i>
         #Option     "Dac6Bit"                 # [<bool>]
         #Option     "DRI"                     # [<bool>]
         #Option     "NoDDC"                   # [<bool>]
         #Option     "ShowCache"               # [<bool>]
         #Option     "XvMCSurfaces"            # <i>
         #Option     "PageFlip"                # [<bool>]
       Identifier  "Card0"
       Driver      "intel"
       VendorName  "Intel Corporation"
       BoardName   "82852/855GM Integrated Graphics Device"
       BusID       "PCI:0:2:0"
 EndSection
 
 Section "Screen"
       Identifier "Screen0"
       Device     "Card0"
       Monitor    "Monitor0"
       SubSection "Display"
               Viewport   0 0
               Depth     1
       EndSubSection
       SubSection "Display"
               Viewport   0 0
               Depth     4
       EndSubSection
       SubSection "Display"
               Viewport   0 0
               Depth     8
       EndSubSection
       SubSection "Display"
               Viewport   0 0
               Depth     15
       EndSubSection
       SubSection "Display"
               Viewport   0 0
               Depth     16
       EndSubSection
       SubSection "Display"
               Viewport   0 0
               Depth     24
       EndSubSection
 EndSection
Personal tools