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
random:
module_register_init: MOD_LOAD (vesa, 0xffffffff80db8eb0, 0) error 19
kbd1 at kbdmux0
cryptosoft0:
aesni0:
acpi0:
acpi_ec0:
acpi0: Power Button (fixed)
cpu0:
cpu1:
cpu2:
cpu3:
attimer0:
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
hpet0:
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:
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:
acpi_button0:
pcib0:
pci0:
vgapci0:
agp0:
agp0: aperture size is 256M, detected 65532k stolen memory
vgapci0: Boot video device
pci0:
uart2:
em0:
em0: Using an MSI interrupt
em0: Ethernet address: f0:de:f1:bc:c5:7f
ehci0:
usbus0: EHCI version 1.0
usbus0 on ehci0
hdac0:
pcib1:
pci2:
pcib2:
pci3:
iwn0:
pcib3:
pci5:
pcib4:
pci13:
sdhci_pci0:
sdhci_pci0: 1 slot(s) allocated
ehci1:
usbus1: EHCI version 1.0
usbus1 on ehci1
isab0:
isa0:
ahci0:
ahci0: AHCI v1.30 with 6 6Gbps ports, Port Multiplier not supported
ahcich0:
ahcich1:
ahcich4:
ahciem0:
acpi_tz0:
atkbdc0:
atkbd0:
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
psm0:
psm0: [GIANT-LOCKED]
psm0: model Generic PS/2 mouse, device ID 0
battery0:
acpi_acad0:
orm0:
ppc0: cannot reserve I/O port range
est0:
est1:
est2:
est3:
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:
hdaa0:
pcm0:
hdacc1:
hdaa1:
pcm1:
pcm2:
pcm3:
random: unblocking device.
usbus0: 480Mbps High Speed USB v2.0
usbus1: 480Mbps High Speed USB v2.0
ugen0.1:
uhub0:
ugen1.1:
uhub1:
ses0 at ahciem0 bus 0 scbus3 target 0 lun 0
ses0:
ses0: SEMB SES Device
ada0 at ahcich0 bus 0 scbus0 target 0 lun 0
ada0:
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:
uhub2:
ugen0.2:
uhub3:
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:
ugen1.3:
ugen0.4:
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:
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:
umodem0: data interface 2, has CM over data, has break
umodem1:
umodem1: data interface 4, has CM over data, has break
umodem2:
umodem2: data interface 10, has CM over data, has break
cdce0:
ue0:
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:
iicbus0:
iic0:
iic1:
iicbus2:
iic2:
iic3:
iicbus4:
iic4:
iic5:
iicbus6:
iic6:
iic7:
iicbus8:
iic8:
iic9:
iicbus10:
iic10:
iic11:
iicbus12:
iic12:
iic13:
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:
uhub3: at uhub0, port 1, addr 2 (disconnected)
ugen0.3:
ugen0.4:
wlan0: link state changed to DOWN
uhub1: at usbus1, port 1, addr 1 (disconnected)
ugen1.2:
uhub2: at uhub1, port 1, addr 2 (disconnected)
ugen1.3:
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:
uhub1:
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:
uhub2:
ugen1.2:
uhub3:
uhub2: 6 ports with 6 removable, self powered
uhub3: 8 ports with 8 removable, self powered
ugen0.3:
ugen1.3:
umodem0:
umodem0: data interface 2, has CM over data, has break
umodem1:
umodem1: data interface 4, has CM over data, has break
cdce0:
ue0:
ue0: Ethernet address: 02:80:37:ec:02:00
umodem2:
umodem2: data interface 10, has CM over data, has break
ugen0.4:
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:
uhub2: at uhub0, port 1, addr 2 (disconnected)
ugen0.3:
ugen0.4:
wlan0: link state changed to DOWN
uhub1: at usbus1, port 1, addr 1 (disconnected)
ugen1.2:
uhub3: at uhub1, port 1, addr 2 (disconnected)
ugen1.3:
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:
uhub1:
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:
uhub2:
ugen0.2:
uhub3:
uhub3: 6 ports with 6 removable, self powered
uhub2: 8 ports with 8 removable, self powered
ugen0.3:
wlan0: link state changed to UP
ugen1.3:
umodem0:
umodem0: data interface 2, has CM over data, has break
umodem1:
umodem1: data interface 4, has CM over data, has break
cdce0:
ue0:
ue0: Ethernet address: 02:80:37:ec:02:00
umodem2:
umodem2: data interface 10, has CM over data, has break
ugen0.4:
wlan0: wlan_clone_create: reject, not an 802.11 device