Thinkpad X220

I got myself a new (used) laptop the other day.
As there was some conflicting information regarding the compatibility with FreeBSD I just wanted to get this out there into the search engines.

I haven’t had time to play around with it too much but installing FreeBSD 10.2-RELEASE (actually PCBSD 10.2) most things seem to work out of the box. Wifi, graphics, sound, touchpad, webcam and sleep.

There are a still couple of things that I will have to look into, such as suspend to disk and two finger scroll.

Edit-20160229: Updated title to reflect the correct model (X220)

Dmesg below.

Copyright (c) 1992-2015 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 10.2-RELEASE-p2 #1 85a1d1f(releng/10.2): Wed Aug 12 16:49:20 UTC 2015
root@devastator:/usr/obj/net/executor/builds/git/freebsd-releng-10.2/sys/GENERIC amd64
FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512
VT: running with driver "efifb".
CPU: Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz (2491.96-MHz K8-class CPU)
Origin="GenuineIntel" Id=0x206a7 Family=0x6 Model=0x2a Stepping=7
Features=0xbfebfbff
Features2=0x1fbae3ff
AMD Features=0x28100800
AMD Features2=0x1
XSAVE Features=0x1
VT-x: (disabled in BIOS) PAT,HLT,MTF,PAUSE,EPT,UG,VPID
TSC: P-state invariant, performance statistics
real memory = 4804575232 (4582 MB)
avail memory = 3991875584 (3806 MB)
Event timer "LAPIC" quality 600
ACPI APIC Table:
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
FreeBSD/SMP: 1 package(s) x 2 core(s) x 2 SMT threads
cpu0 (BSP): APIC ID: 0
cpu1 (AP): APIC ID: 1
cpu2 (AP): APIC ID: 2
cpu3 (AP): APIC ID: 3
ioapic0 irqs 0-23 on motherboard
random: initialized
module_register_init: MOD_LOAD (vesa, 0xffffffff80db8eb0, 0) error 19
kbd1 at kbdmux0
cryptosoft0: on motherboard
aesni0: on motherboard
acpi0: on motherboard
acpi_ec0: port 0x62,0x66 on acpi0
acpi0: Power Button (fixed)
cpu0: on acpi0
cpu1: on acpi0
cpu2: on acpi0
cpu3: on acpi0
attimer0: port 0x40-0x43 irq 0 on acpi0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
hpet0: iomem 0xfed00000-0xfed003ff on acpi0
Timecounter "HPET" frequency 14318180 Hz quality 950
Event timer "HPET" frequency 14318180 Hz quality 550
Event timer "HPET1" frequency 14318180 Hz quality 440
Event timer "HPET2" frequency 14318180 Hz quality 440
Event timer "HPET3" frequency 14318180 Hz quality 440
Event timer "HPET4" frequency 14318180 Hz quality 440
atrtc0: port 0x70-0x71 irq 8 on acpi0
Event timer "RTC" frequency 32768 Hz quality 0
Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x408-0x40b on acpi0
acpi_lid0: on acpi0
acpi_button0: on acpi0
pcib0: port 0xcf8-0xcff on acpi0
pci0: on pcib0
vgapci0: port 0x5000-0x503f mem 0xf0000000-0xf03fffff,0xe0000000-0xefffffff irq 16 at device 2.0 on pci0
agp0: on vgapci0
agp0: aperture size is 256M, detected 65532k stolen memory
vgapci0: Boot video device
pci0: at device 22.0 (no driver attached)
uart2: port 0x50b0-0x50b7 mem 0xf252c000-0xf252cfff irq 19 at device 22.3 on pci0
em0: port 0x5080-0x509f mem 0xf2500000-0xf251ffff,0xf252b000-0xf252bfff irq 20 at device 25.0 on pci0
em0: Using an MSI interrupt
em0: Ethernet address: f0:de:f1:bc:c5:7f
ehci0: mem 0xf252a000-0xf252a3ff irq 16 at device 26.0 on pci0
usbus0: EHCI version 1.0
usbus0 on ehci0
hdac0: mem 0xf2520000-0xf2523fff irq 22 at device 27.0 on pci0
pcib1: irq 16 at device 28.0 on pci0
pci2: on pcib1
pcib2: irq 17 at device 28.1 on pci0
pci3: on pcib2
iwn0: mem 0xf2400000-0xf2401fff irq 17 at device 0.0 on pci3
pcib3: irq 19 at device 28.3 on pci0
pci5: on pcib3
pcib4: irq 16 at device 28.4 on pci0
pci13: on pcib4
sdhci_pci0: mem 0xf1400000-0xf14000ff irq 16 at device 0.0 on pci13
sdhci_pci0: 1 slot(s) allocated
ehci1: mem 0xf2529000-0xf25293ff irq 23 at device 29.0 on pci0
usbus1: EHCI version 1.0
usbus1 on ehci1
isab0: at device 31.0 on pci0
isa0: on isab0
ahci0: port 0x50a8-0x50af,0x50bc-0x50bf,0x50a0-0x50a7,0x50b8-0x50bb,0x5060-0x507f mem 0xf2528000-0xf25287ff irq 19 at device 31.2 on pci0
ahci0: AHCI v1.30 with 6 6Gbps ports, Port Multiplier not supported
ahcich0: at channel 0 on ahci0
ahcich1: at channel 1 on ahci0
ahcich4: at channel 4 on ahci0
ahciem0: on ahci0
acpi_tz0: on acpi0
atkbdc0: port 0x60,0x64 irq 1 on acpi0
atkbd0: irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
psm0: irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model Generic PS/2 mouse, device ID 0
battery0: on acpi0
acpi_acad0: on acpi0
orm0: at iomem 0xc0000-0xcffff on isa0
ppc0: cannot reserve I/O port range
est0: on cpu0
est1: on cpu1
est2: on cpu2
est3: on cpu3
ZFS NOTICE: Prefetch is disabled by default if less than 4GB of RAM is present;
to enable, add "vfs.zfs.prefetch_disable=0" to /boot/loader.conf.
ZFS filesystem version: 5
ZFS storage pool version: features support (5000)
Timecounters tick every 1.000 msec
hdacc0: at cad 0 on hdac0
hdaa0: at nid 1 on hdacc0
pcm0: at nid 31,25 and 35,27 on hdaa0
hdacc1: at cad 3 on hdac0
hdaa1: at nid 1 on hdacc1
pcm1: at nid 5 on hdaa1
pcm2: at nid 6 on hdaa1
pcm3: at nid 7 on hdaa1
random: unblocking device.
usbus0: 480Mbps High Speed USB v2.0
usbus1: 480Mbps High Speed USB v2.0
ugen0.1: at usbus0
uhub0: on usbus0
ugen1.1: at usbus1
uhub1: on usbus1
ses0 at ahciem0 bus 0 scbus3 target 0 lun 0
ses0: SEMB S-E-S 2.00 device
ses0: SEMB SES Device
ada0 at ahcich0 bus 0 scbus0 target 0 lun 0
ada0: ATA8-ACS SATA 3.x device
ada0: Serial Number TF655AWHGHXYVL
ada0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)
ada0: Command Queueing enabled
ada0: 476940MB (976773168 512 byte sectors: 1H 63S/T 16383C)
ada0: Previously was known as ad4
SMP: AP CPU #1 Launched!
SMP: AP CPU #3 Launched!
SMP: AP CPU #2 Launched!
Timecounter "TSC-low" frequency 1245981431 Hz quality 1000
Root mount waiting for: usbus1 usbus0
Root mount waiting for: usbus1 usbus0
uhub1: 3 ports with 3 removable, self powered
uhub0: 3 ports with 3 removable, self powered
ugen1.2: at usbus1
uhub2: on usbus1
ugen0.2: at usbus0
uhub3: on usbus0
Root mount waiting for: usbus1 usbus0
uhub3: 6 ports with 6 removable, self powered
Root mount waiting for: usbus1 usbus0
uhub2: 8 ports with 8 removable, self powered
ugen0.3: at usbus0
ugen1.3: at usbus1
ugen0.4: at usbus0
Trying to mount root from zfs:tank/ROOT/default []...
GEOM_ELI: Device label/swap0.eli created.
GEOM_ELI: Encryption: AES-XTS 128
GEOM_ELI: Crypto: hardware
Cuse4BSD v0.1.36 @ /dev/cuse
acpi_video0: on vgapci0
fuse-freebsd: version 0.4.4, FUSE ABI 7.8
wlan0: Ethernet address: 10:0b:a9:4a:bf:a4
wlan0: wlan_clone_create: reject, not an 802.11 device
umodem0: on usbus1
umodem0: data interface 2, has CM over data, has break
umodem1: on usbus1
umodem1: data interface 4, has CM over data, has break
umodem2: on usbus1
umodem2: data interface 10, has CM over data, has break
cdce0: on usbus1
ue0: on cdce0
ue0: Ethernet address: 02:80:37:ec:02:00
ipfw2 (+ipv6) initialized, divert loadable, nat loadable, default to accept, logging disabled
info: [drm] Initialized drm 1.1.0 20060810
drmn0: on vgapci0
iicbus0: on iicbb0 addr 0xff
iic0: on iicbus0
iic1: on iicbus1
iicbus2: on iicbb1 addr 0x0
iic2: on iicbus2
iic3: on iicbus3
iicbus4: on iicbb2 addr 0x0
iic4: on iicbus4
iic5: on iicbus5
iicbus6: on iicbb3 addr 0x0
iic6: on iicbus6
iic7: on iicbus7
iicbus8: on iicbb4 addr 0x0
iic8: on iicbus8
iic9: on iicbus9
iicbus10: on iicbb5 addr 0x0
iic10: on iicbus10
iic11: on iicbus11
iicbus12: on iicbb6 addr 0x0
iic12: on iicbus12
iic13: on iicbus13
info: [drm] MSI enabled 1 message(s)
info: [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
info: [drm] Driver supports precise vblank timestamp query.
drmn0: taking over the fictitious range 0xe0000000-0xf0000000
info: [drm] Enabling RC6 states: RC6 off, RC6p off, RC6pp off
info: [drm] Connector LVDS-1: get mode from tunables:
info: [drm] - kern.vt.fb.modes.LVDS-1
info: [drm] - kern.vt.fb.default_mode
info: [drm] Connector VGA-1: get mode from tunables:
info: [drm] - kern.vt.fb.modes.VGA-1
info: [drm] - kern.vt.fb.default_mode
info: [drm] Connector HDMI-A-1: get mode from tunables:
info: [drm] - kern.vt.fb.modes.HDMI-A-1
info: [drm] - kern.vt.fb.default_mode
info: [drm] Connector DP-1: get mode from tunables:
info: [drm] - kern.vt.fb.modes.DP-1
info: [drm] - kern.vt.fb.default_mode
info: [drm] Connector HDMI-A-2: get mode from tunables:
info: [drm] - kern.vt.fb.modes.HDMI-A-2
info: [drm] - kern.vt.fb.default_mode
info: [drm] Connector HDMI-A-3: get mode from tunables:
info: [drm] - kern.vt.fb.modes.HDMI-A-3
info: [drm] - kern.vt.fb.default_mode
info: [drm] Connector DP-2: get mode from tunables:
info: [drm] - kern.vt.fb.modes.DP-2
info: [drm] - kern.vt.fb.default_mode
info: [drm] Connector DP-3: get mode from tunables:
info: [drm] - kern.vt.fb.modes.DP-3
info: [drm] - kern.vt.fb.default_mode
fbd0 on drmn0
VT: Replacing driver "efifb" with new "fb".
info: [drm] Initialized i915 1.6.0 20080730 for drmn0 on minor 0
error: [drm:pid1600:gen6_sanitize_pm] *ERROR* Power management discrepancy: GEN6_RP_INTERRUPT_LIMITS expected 1a000000, was 12000000
error: [drm:pid1600:gen6_sanitize_pm] *ERROR* Power management discrepancy: GEN6_RP_INTERRUPT_LIMITS expected 1a0d0000, was 1a000000
error: [drm:pid1600:gen6_sanitize_pm] *ERROR* Power management discrepancy: GEN6_RP_INTERRUPT_LIMITS expected 1a0d0000, was 1a000000
error: [drm:pid1600:gen6_sanitize_pm] *ERROR* Power management discrepancy: GEN6_RP_INTERRUPT_LIMITS expected 1a0d0000, was 1a000000
uhub0: at usbus0, port 1, addr 1 (disconnected)
ugen0.2: at usbus0 (disconnected)
uhub3: at uhub0, port 1, addr 2 (disconnected)
ugen0.3: at usbus0 (disconnected)
ugen0.4: at usbus0 (disconnected)
wlan0: link state changed to DOWN
uhub1: at usbus1, port 1, addr 1 (disconnected)
ugen1.2: at usbus1 (disconnected)
uhub2: at uhub1, port 1, addr 2 (disconnected)
ugen1.3: at usbus1 (disconnected)
umodem0: at uhub2, port 4, addr 3 (disconnected)
umodem1: at uhub2, port 4, addr 3 (disconnected)
cdce0: at uhub2, port 4, addr 3 (disconnected)
umodem2: at uhub2, port 4, addr 3 (disconnected)
acpi0: cleared fixed power button status
info: [drm] Enabling RC6 states: RC6 off, RC6p off, RC6pp off
error: [drm:pid7190:intel_lvds_enable] *ERROR* timed out waiting for panel to power off
uhub0: on usbus0
uhub1: on usbus1
error: [drm:pid1600:gen6_sanitize_pm] *ERROR* Power management discrepancy: GEN6_RP_INTERRUPT_LIMITS expected 1a000000, was 12000000
uhub0: 3 ports with 3 removable, self powered
uhub1: 3 ports with 3 removable, self powered
ugen0.2: at usbus0
uhub2: on usbus0
ugen1.2: at usbus1
uhub3: on usbus1
uhub2: 6 ports with 6 removable, self powered
uhub3: 8 ports with 8 removable, self powered
ugen0.3: at usbus0
ugen1.3: at usbus1
umodem0: on usbus1
umodem0: data interface 2, has CM over data, has break
umodem1: on usbus1
umodem1: data interface 4, has CM over data, has break
cdce0: on usbus1
ue0: on cdce0
ue0: Ethernet address: 02:80:37:ec:02:00
umodem2: on usbus1
umodem2: data interface 10, has CM over data, has break
ugen0.4: at usbus0
wlan0: link state changed to UP
wlan0: wlan_clone_create: reject, not an 802.11 device
error: [drm:pid1600:gen6_sanitize_pm] *ERROR* Power management discrepancy: GEN6_RP_INTERRUPT_LIMITS expected 1a0d0000, was 1a000000
error: [drm:pid1600:gen6_sanitize_pm] *ERROR* Power management discrepancy: GEN6_RP_INTERRUPT_LIMITS expected 1a0d0000, was 1a000000
error: [drm:pid1600:gen6_sanitize_pm] *ERROR* Power management discrepancy: GEN6_RP_INTERRUPT_LIMITS expected 1a0d0000, was 1a000000
uhub0: at usbus0, port 1, addr 1 (disconnected)
ugen0.2: at usbus0 (disconnected)
uhub2: at uhub0, port 1, addr 2 (disconnected)
ugen0.3: at usbus0 (disconnected)
ugen0.4: at usbus0 (disconnected)
wlan0: link state changed to DOWN
uhub1: at usbus1, port 1, addr 1 (disconnected)
ugen1.2: at usbus1 (disconnected)
uhub3: at uhub1, port 1, addr 2 (disconnected)
ugen1.3: at usbus1 (disconnected)
umodem0: at uhub3, port 4, addr 3 (disconnected)
umodem1: at uhub3, port 4, addr 3 (disconnected)
cdce0: at uhub3, port 4, addr 3 (disconnected)
umodem2: at uhub3, port 4, addr 3 (disconnected)
acpi0: cleared fixed power button status
info: [drm] Enabling RC6 states: RC6 off, RC6p off, RC6pp off
error: [drm:pid13184:intel_lvds_enable] *ERROR* timed out waiting for panel to power off
uhub0: on usbus1
uhub1: on usbus0
error: [drm:pid1600:gen6_sanitize_pm] *ERROR* Power management discrepancy: GEN6_RP_INTERRUPT_LIMITS expected 1a000000, was 12000000
uhub0: 3 ports with 3 removable, self powered
uhub1: 3 ports with 3 removable, self powered
ugen1.2: at usbus1
uhub2: on usbus1
ugen0.2: at usbus0
uhub3: on usbus0
uhub3: 6 ports with 6 removable, self powered
uhub2: 8 ports with 8 removable, self powered
ugen0.3: at usbus0
wlan0: link state changed to UP
ugen1.3: at usbus1
umodem0: on usbus1
umodem0: data interface 2, has CM over data, has break
umodem1: on usbus1
umodem1: data interface 4, has CM over data, has break
cdce0: on usbus1
ue0: on cdce0
ue0: Ethernet address: 02:80:37:ec:02:00
umodem2: on usbus1
umodem2: data interface 10, has CM over data, has break
ugen0.4: at usbus0
wlan0: wlan_clone_create: reject, not an 802.11 device

Share

Leave a Reply

Your email address will not be published. Required fields are marked *