Debian sid works mostly fine, using grub-efi as bootloader. Some caveats are present though, and are explained below. And yes, the hardware/real TrackPoint buttons are back.
Contents
July, 08 2015: | Update the efibootmgr command line and mark it as tested (thanks Zhenech) |
---|---|
May, 21 2015: | Update status about Xorg stack |
May, 07 2015: | Add feedback about fingerprint reader with libfprint 0.6 |
April, 22 2015: | Add an “other issue” section with VirtualBox/SMAP issue |
April, 14 2015: | Add fix for GnuPG smartcard problems |
April, 13 2015: | Update situation about dock station audio output |
March, 31 2015: | Update UEFI bios update procedure |
March, 30 2015: | Add some more information about docking station |
March, 25 2015: | Add link to kernel config |
March, 20 2015: | Update TrackPoint configuration |
March, 17 2015: | Add BIOS update procedure |
March, 14 2015: | Initial version |
The laptop is really nice. Lenovo website permits you to tune the laptop configuration, so I took:
lspci:
00:00.0 Host bridge: Intel Corporation Broadwell-U Host Bridge -OPI (rev 09) 00:02.0 VGA compatible controller: Intel Corporation Broadwell-U Integrated Graphics (rev 09) 00:03.0 Audio device: Intel Corporation Broadwell-U Audio Controller (rev 09) 00:14.0 USB controller: Intel Corporation Wildcat Point-LP USB xHCI Controller (rev 03) 00:16.0 Communication controller: Intel Corporation Wildcat Point-LP MEI Controller #1 (rev 03) 00:19.0 Ethernet controller: Intel Corporation Ethernet Connection (3) I218-LM (rev 03) 00:1b.0 Audio device: Intel Corporation Wildcat Point-LP High Definition Audio Controller (rev 03) 00:1c.0 PCI bridge: Intel Corporation Wildcat Point-LP PCI Express Root Port #6 (rev e3) 00:1c.1 PCI bridge: Intel Corporation Wildcat Point-LP PCI Express Root Port #3 (rev e3) 00:1d.0 USB controller: Intel Corporation Wildcat Point-LP USB EHCI Controller (rev 03) 00:1f.0 ISA bridge: Intel Corporation Wildcat Point-LP LPC Controller (rev 03) 00:1f.2 SATA controller: Intel Corporation Wildcat Point-LP SATA Controller [AHCI Mode] (rev 03) 00:1f.3 SMBus: Intel Corporation Wildcat Point-LP SMBus Controller (rev 03) 00:1f.6 Signal processing controller: Intel Corporation Wildcat Point-LP Thermal Management Controller (rev 03) 02:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5227 PCI Express Card Reader (rev 01) 03:00.0 Network controller: Intel Corporation Wireless 7265 (rev 59)
lsusb:
Bus 003 Device 002: ID 8087:8001 Intel Corp. Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 002: ID 17ef:1010 Lenovo Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 006: ID 04ca:703c Lite-On Technology Corp. Bus 001 Device 005: ID 8087:0a2a Intel Corp. Bus 001 Device 004: ID 138a:0017 Validity Sensors, Inc. Bus 001 Device 003: ID 058f:9540 Alcor Micro Corp. Bus 001 Device 007: ID 17ef:100f Lenovo Bus 001 Device 002: ID 17ef:1010 Lenovo Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
You can find some pictures on a G+ album.
Some Lenovo documents might be helpful too:
/proc/cpuinfo:
processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 61 model name : Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz stepping : 4 microcode : 0x18 cpu MHz : 2200.000 cache size : 3072 KB physical id : 0 siblings : 4 core id : 0 cpu cores : 2 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 20 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap bogomips : 4389.91 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management: processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 61 model name : Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz stepping : 4 microcode : 0x18 cpu MHz : 2200.000 cache size : 3072 KB physical id : 0 siblings : 4 core id : 0 cpu cores : 2 apicid : 1 initial apicid : 1 fpu : yes fpu_exception : yes cpuid level : 20 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap bogomips : 4389.91 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management: processor : 2 vendor_id : GenuineIntel cpu family : 6 model : 61 model name : Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz stepping : 4 microcode : 0x18 cpu MHz : 2689.671 cache size : 3072 KB physical id : 0 siblings : 4 core id : 1 cpu cores : 2 apicid : 2 initial apicid : 2 fpu : yes fpu_exception : yes cpuid level : 20 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap bogomips : 4389.91 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management: processor : 3 vendor_id : GenuineIntel cpu family : 6 model : 61 model name : Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz stepping : 4 microcode : 0x18 cpu MHz : 2200.000 cache size : 3072 KB physical id : 0 siblings : 4 core id : 1 cpu cores : 2 apicid : 3 initial apicid : 3 fpu : yes fpu_exception : yes cpuid level : 20 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap bogomips : 4389.91 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management:
As you can notice, SMAP is present. I didn't have the possibility to exerce it yet, but will report when I have.
As said above, the hardware TrackPoint buttons are back. They are now wired to the touchpad, so they don't really work out of the box right now (on Jessie 3.16 or experimental 3.19 kernels).
A patchset went to Linux 4.0-rc5 to fix that, it might be backported to Debian kernels at one point (#780862)
For Xorg, as usual, you might need a config file to handle the TrackPoint correctly. For example, I use the TrackPoint for scrolling (vertically and horizontally).
Section "InputClass" Identifier "Trackpoint Wheel Emulation" MatchProduct "TPPS/2 IBM TrackPoint|DualPoint Stick|Synaptics Inc. Composite TouchPad / TrackPoint|ThinkPad USB Keyboard with TrackPoint|USB Trackpoint pointing device|Composite TouchPad / TrackPoint" MatchDevicePath "/dev/input/event*" Option "EmulateWheel" "true" Option "EmulateWheelButton" "2" Option "Emulate3Buttons" "false" Option "XAxisMapping" "6 7" Option "YAxisMapping" "4 5" EndSection
At the moment, the standard psmouse driver with default options doesn't handle the BIOS setting for the disabled touchpad, so if you want to disable it you'll have to do it manually.
You can either do it from your desktop environment if it supports it, or there are two other options:
Section "InputClass" Identifier "Touchpad" MatchProduct "PS/2 Synaptics TouchPad" MatchDevicePath "/dev/input/event*" Option "Ignore" "true" EndSection
Note
If you rebuild your kernel, you'll need to have CONFIG_MOUSE_PS2, CONFIG_MOUSE_PS2_TRACKPOINT and CONFIG_MOUSE_PS2_SYNAPTICS. If you remove CONFIG_MOUSE_PS2_SYNAPTICS things will break (the TrackPoint doesn't appear as a standalone device anymore but again as a Synaptics touchpad, so it gets disabled by the Xorg config snippet.
On 3.16 or 3.19 kernel thinkpad_acpi won't load so you lose some of the Fn keys. For now you can use options thinkpad_acpi force_load=1 in the same X250.conf.
This is fixed in 4.0-rc1 with 1b0eb5bc and a wishlist bug has been opened for the Debian kernels (#780467).
The keyboard backlight function works just fine, it's not controlled by the kernel but rather (I guess) by the EC.
By default, the function keys are set to the “special” function, not the usual Fx key. You can swap this behavior using the Fn lock (Fn+Esc key).
The standard keyboard (AT Translated Set 2 keyboard input device) exposes the following special keys
F1: | KEY_MUTE, mute sound (the LED works fine too) |
---|---|
F2: | KEY_VOLUMEDOWN, lower volume |
F3: | KEY_VOLUMEUP, raise volume |
F5: | KEY_BRIGHTNESSDOWN, lower brightness (see note below) |
F6: | KEY_BRIGHTNESSUP, raise brightness |
With thinkpad_acpi loaded, the following keys are also recognized:
F4: | KEY_F20 (the pictogram on the key and the LED indicates it should be mute mic, but I'm unsure if that key exists on Linux) |
---|---|
F7: | KEY_SWITCHVIDEOMODE, graphics output settings |
F8: | KEY_WLAN, wireless settings |
F9: | KEY_CONFIG |
F10: | KEY_SEARCH |
F11: | KEY_SCALE |
F12: | KEY_FILE |
4: | KEY_SLEEP (as far as I can tell, that's the only standard key which is override when using Fn) |
You're free to bind some of the keys to whatever function you like. For example, I bound KEY_SWITCHVIDEOMODE to xfce4-display-settings --minimal and KEY_CONFIG to xfce4-settings-manager.
The volume keys are handled for me by xfce4-volumed but you might have to bind them yourself.
About the brightness keys, since it's a Windows 8 laptop the brightness should be handled by userspace and the i915 driver (see BKO#81691, BKO#51231 and that huge LKML thread for more details). In my case it's handled by xfce4-power-manager and I get 10 brightness levels on the 3.16 kernel, with the lowest one completely black. Not really perfect, but usable.
Note
The caps lock key does not have any LED marking the status. It's really painful, no thanks to Lenovo for that.
Using Debian sid, graphics work fine. You need xserver-xorg-video-intel 2:2.99.917 or later and a 4.0+ kernel is better. This is OK in sid, stretch and jessie-backports for the DDX, and in sid, stretch for the kernel.
I'm using the I/OMMU, but I need intel_iommu=on,igfx_off, this is BFO#90091.
When docked and without any monitor plugged, here's the xrandr output:
Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767 eDP1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 276mm x 156mm 1920x1080 60.04*+ 59.93 1680x1050 59.95 59.88 1600x1024 60.17 1400x1050 59.98 1280x1024 60.02 1440x900 59.89 1280x960 60.00 1360x768 59.80 59.96 1152x864 60.00 1024x768 60.00 800x600 60.32 56.25 640x480 59.94 DP1 disconnected (normal left inverted right x axis y axis) DP2 disconnected (normal left inverted right x axis y axis) HDMI1 disconnected (normal left inverted right x axis y axis) HDMI2 disconnected (normal left inverted right x axis y axis) VIRTUAL1 disconnected (normal left inverted right x axis y axis)
The laptop features a mini-DisplayPort connector and a VGA one. I couldn't try the mini-DisplayPort connector yet, but the VGA one is wired internally to the DP2 output.
Since I took the 1920×1080 screen on a 12.5" screen, that should corresponds to 177 dpi. Xorg by default ignores the screen size, so if you want to revert that and forces the uses of correct DPI, you can use the following file:
Section "Monitor" Identifier "<default monitor>" DisplaySize 276 156 EndSection
All in all, the experience is OK, but some rough edges can be found here and there, due to the fact Broadwell setups are not yet really common. I guess experience will improve with newer kernels and DDX.
One issue still appearing on 4.0 is screen flickering when doing VT switch. This is BFO#85583
A workaround is to use i915.enable_ips=0.
Two sound cards are available: the Intel PCH one (realtek chip) and the HDMI one. By default the HDMI one is the first one, and the devices are also not numbered correctly for ALSA default setup:
ls -l /dev/snd total 0 drwxr-xr-x 2 root root 80 Mar 13 11:51 by-path crw-rw----+ 1 root audio 116, 2 Mar 13 13:11 controlC0 crw-rw----+ 1 root audio 116, 7 Mar 13 13:11 controlC1 crw-rw----+ 1 root audio 116, 6 Mar 13 13:11 hwC0D0 crw-rw----+ 1 root audio 116, 10 Mar 13 13:11 hwC1D0 crw-rw----+ 1 root audio 116, 3 Mar 13 13:14 pcmC0D3p crw-rw----+ 1 root audio 116, 4 Mar 13 13:15 pcmC0D7p crw-rw----+ 1 root audio 116, 5 Mar 13 13:14 pcmC0D8p crw-rw----+ 1 root audio 116, 9 Mar 13 13:11 pcmC1D0c crw-rw----+ 1 root audio 116, 8 Mar 13 13:18 pcmC1D0p crw-rw----+ 1 root audio 116, 33 Mar 13 13:11 timer
One solution is to put defaults.pcm.card=1 in ~/.asoundrc, so ALSA will use the pcmC1* devices nodes, or use:
options snd_hda_intel index=1,0
in /etc/modprobe.d/X250.conf, which will reorder the device nodes and fix sound once and for all.
The smartcard reader is an USB device from Alcor Micro Corp.:
Bus 001 Device 003: ID 058f:9540 Alcor Micro Corp.
It seems to work just fine out of the box. I use it with my OpenPGP smartcard, and I don't use pcscd but gnupg2 directly, so I need read/write access to the device. This doesn't happen right now because there's no udev rule to change permission on the /dev/bus/usb/001/003 device node. You can add the following line to /lib/udev/rules.d/60-gnupg.rules (or use an override file in /etc/udev/rules.d.
ATTR{idVendor}=="058f", ATTR{idProduct}=="9540", ENV{ID_SMARTCARD_READER}="1", ENV{ID_SMARTCARD_READER_DRIVER}="gnupg"
A bug has been opened as well (#780469, fixed in gnupg 1.4.19-1).
I didn't test the reader with another smartcard, so YMMV.
Note
With my current setup, it seems that decryption from gnupg doesn't work, and breaks future usage of the reader. Only solution is to restart (since it's not possible to unplug/replug the reader).
It seems to work fine when using pcscd so you might want to stick with that for now. This is issue #1947 and a fix (971d558) went in GnuPG master so it should be fixed with GnuPG 2.1.4.
The fingerprint reader is a Validity device:
Bus 001 Device 003: ID 138a:0017 Validity Sensors, Inc. Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 255 Vendor Specific Class bDeviceSubClass 17 bDeviceProtocol 255 bMaxPacketSize0 8 idVendor 0x138a Validity Sensors, Inc. idProduct 0x0017 bcdDevice 0.78 iManufacturer 0 iProduct 0 iSerial 1 89f99f34944c bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 46 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xa0 (Bus Powered) Remote Wakeup MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 4 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 4 Device Status: 0x0000 (Bus Powered)
The device is apparently the same as in the 2014 ThinkPads, and should be supported with libfprint starting version 0.6.
Using fprint_demo package, I'm able to enroll, verify and identify fingerprints, so it does seem to do the job. Not sure I'd use it for anything else than fun, but YMMV.
The webcam is a Lite-On device:
Bus 001 Device 006: ID 04ca:703c Lite-On Technology Corp. Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 239 Miscellaneous Device bDeviceSubClass 2 ? bDeviceProtocol 1 Interface Association bMaxPacketSize0 64 idVendor 0x04ca Lite-On Technology Corp. idProduct 0x703c bcdDevice 0.17 iManufacturer 1 J8AEC8A29 iProduct 2 Integrated Camera iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 1086 bNumInterfaces 2 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 500mA Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 0 bInterfaceCount 2 bFunctionClass 14 Video bFunctionSubClass 3 Video Interface Collection bFunctionProtocol 0 iFunction 4 Integrated Camera Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 1 Video Control bInterfaceProtocol 0 iInterface 4 Integrated Camera VideoControl Interface Descriptor: bLength 13 bDescriptorType 36 bDescriptorSubtype 1 (HEADER) bcdUVC 1.00 wTotalLength 109 dwClockFrequency 48.000000MHz bInCollection 1 baInterfaceNr( 0) 1 VideoControl Interface Descriptor: bLength 18 bDescriptorType 36 bDescriptorSubtype 2 (INPUT_TERMINAL) bTerminalID 1 wTerminalType 0x0201 Camera Sensor bAssocTerminal 0 iTerminal 0 wObjectiveFocalLengthMin 0 wObjectiveFocalLengthMax 0 wOcularFocalLength 0 bControlSize 3 bmControls 0x0000000e Auto-Exposure Mode Auto-Exposure Priority Exposure Time (Absolute) VideoControl Interface Descriptor: bLength 11 bDescriptorType 36 bDescriptorSubtype 5 (PROCESSING_UNIT) Warning: Descriptor too short bUnitID 2 bSourceID 1 wMaxMultiplier 16384 bControlSize 2 bmControls 0x0000157f Brightness Contrast Hue Saturation Sharpness Gamma White Balance Temperature Backlight Compensation Power Line Frequency White Balance Temperature, Auto iProcessing 0 bmVideoStandards 0x1d None PAL - 625/50 SECAM - 625/50 NTSC - 625/50 VideoControl Interface Descriptor: bLength 29 bDescriptorType 36 bDescriptorSubtype 6 (EXTENSION_UNIT) bUnitID 3 guidExtensionCode {c385b80f-c268-4745-90f7-8f47579d95fc} bNumControl 0 bNrPins 1 baSourceID( 0) 2 bControlSize 4 bmControls( 0) 0x1f bmControls( 1) 0x00 bmControls( 2) 0x00 bmControls( 3) 0x00 iExtension 0 VideoControl Interface Descriptor: bLength 29 bDescriptorType 36 bDescriptorSubtype 6 (EXTENSION_UNIT) bUnitID 4 guidExtensionCode {82066163-7050-ab49-b8cc-b3855e8d221d} bNumControl 0 bNrPins 1 baSourceID( 0) 3 bControlSize 4 bmControls( 0) 0xff bmControls( 1) 0xff bmControls( 2) 0x71 bmControls( 3) 0x00 iExtension 0 VideoControl Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 3 (OUTPUT_TERMINAL) bTerminalID 5 wTerminalType 0x0101 USB Streaming bAssocTerminal 0 bSourceID 4 iTerminal 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x87 EP 7 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0010 1x 16 bytes bInterval 8 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 0 iInterface 0 VideoStreaming Interface Descriptor: bLength 15 bDescriptorType 36 bDescriptorSubtype 1 (INPUT_HEADER) bNumFormats 2 wTotalLength 754 bEndPointAddress 129 bmInfo 0 bTerminalLink 5 bStillCaptureMethod 2 bTriggerSupport 1 bTriggerUsage 0 bControlSize 1 bmaControls( 0) 27 bmaControls( 1) 27 VideoStreaming Interface Descriptor: bLength 27 bDescriptorType 36 bDescriptorSubtype 4 (FORMAT_UNCOMPRESSED) bFormatIndex 1 bNumFrameDescriptors 9 guidFormat {59555932-0000-1000-8000-00aa00389b71} bBitsPerPixel 16 bDefaultFrameIndex 1 bAspectRatioX 0 bAspectRatioY 0 bmInterlaceFlags 0x00 Interlaced stream or variable: No Fields per frame: 2 fields Field 1 first: No Field pattern: Field 1 only bCopyProtect 0 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 5 (FRAME_UNCOMPRESSED) bFrameIndex 1 bmCapabilities 0x00 Still image unsupported wWidth 640 wHeight 480 dwMinBitRate 73728000 dwMaxBitRate 147456000 dwMaxVideoFrameBufferSize 614400 dwDefaultFrameInterval 333333 bFrameIntervalType 2 dwFrameInterval( 0) 333333 dwFrameInterval( 1) 666666 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 5 (FRAME_UNCOMPRESSED) bFrameIndex 2 bmCapabilities 0x00 Still image unsupported wWidth 320 wHeight 180 dwMinBitRate 13824000 dwMaxBitRate 27648000 dwMaxVideoFrameBufferSize 115200 dwDefaultFrameInterval 333333 bFrameIntervalType 2 dwFrameInterval( 0) 333333 dwFrameInterval( 1) 666666 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 5 (FRAME_UNCOMPRESSED) bFrameIndex 3 bmCapabilities 0x00 Still image unsupported wWidth 320 wHeight 240 dwMinBitRate 18432000 dwMaxBitRate 36864000 dwMaxVideoFrameBufferSize 153600 dwDefaultFrameInterval 333333 bFrameIntervalType 2 dwFrameInterval( 0) 333333 dwFrameInterval( 1) 666666 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 5 (FRAME_UNCOMPRESSED) bFrameIndex 4 bmCapabilities 0x00 Still image unsupported wWidth 352 wHeight 288 dwMinBitRate 24330240 dwMaxBitRate 48660480 dwMaxVideoFrameBufferSize 202752 dwDefaultFrameInterval 333333 bFrameIntervalType 2 dwFrameInterval( 0) 333333 dwFrameInterval( 1) 666666 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 5 (FRAME_UNCOMPRESSED) bFrameIndex 5 bmCapabilities 0x00 Still image unsupported wWidth 424 wHeight 240 dwMinBitRate 24422400 dwMaxBitRate 48844800 dwMaxVideoFrameBufferSize 203520 dwDefaultFrameInterval 333333 bFrameIntervalType 2 dwFrameInterval( 0) 333333 dwFrameInterval( 1) 666666 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 5 (FRAME_UNCOMPRESSED) bFrameIndex 6 bmCapabilities 0x00 Still image unsupported wWidth 640 wHeight 360 dwMinBitRate 55296000 dwMaxBitRate 110592000 dwMaxVideoFrameBufferSize 460800 dwDefaultFrameInterval 333333 bFrameIntervalType 2 dwFrameInterval( 0) 333333 dwFrameInterval( 1) 666666 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 5 (FRAME_UNCOMPRESSED) bFrameIndex 7 bmCapabilities 0x00 Still image unsupported wWidth 848 wHeight 480 dwMinBitRate 130252800 dwMaxBitRate 130252800 dwMaxVideoFrameBufferSize 814080 dwDefaultFrameInterval 500000 bFrameIntervalType 1 dwFrameInterval( 0) 500000 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 5 (FRAME_UNCOMPRESSED) bFrameIndex 8 bmCapabilities 0x00 Still image unsupported wWidth 960 wHeight 540 dwMinBitRate 124416000 dwMaxBitRate 124416000 dwMaxVideoFrameBufferSize 1036800 dwDefaultFrameInterval 666666 bFrameIntervalType 1 dwFrameInterval( 0) 666666 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 5 (FRAME_UNCOMPRESSED) bFrameIndex 9 bmCapabilities 0x00 Still image unsupported wWidth 1280 wHeight 720 dwMinBitRate 147456000 dwMaxBitRate 147456000 dwMaxVideoFrameBufferSize 1843200 dwDefaultFrameInterval 1000000 bFrameIntervalType 1 dwFrameInterval( 0) 1000000 VideoStreaming Interface Descriptor: bLength 43 bDescriptorType 36 bDescriptorSubtype 3 (STILL_IMAGE_FRAME) bEndpointAddress 0 bNumImageSizePatterns 9 wWidth( 0) 640 wHeight( 0) 480 wWidth( 1) 320 wHeight( 1) 180 wWidth( 2) 320 wHeight( 2) 240 wWidth( 3) 352 wHeight( 3) 288 wWidth( 4) 424 wHeight( 4) 240 wWidth( 5) 640 wHeight( 5) 360 wWidth( 6) 848 wHeight( 6) 480 wWidth( 7) 960 wHeight( 7) 540 wWidth( 8) 1280 wHeight( 8) 720 bNumCompressionPatterns 9 bCompression( 0) 1 VideoStreaming Interface Descriptor: bLength 6 bDescriptorType 36 bDescriptorSubtype 13 (COLORFORMAT) bColorPrimaries 1 (BT.709,sRGB) bTransferCharacteristics 1 (BT.709) bMatrixCoefficients 4 (SMPTE 170M (BT.601)) VideoStreaming Interface Descriptor: bLength 11 bDescriptorType 36 bDescriptorSubtype 6 (FORMAT_MJPEG) bFormatIndex 2 bNumFrameDescriptors 9 bFlags 1 Fixed-size samples: Yes bDefaultFrameIndex 1 bAspectRatioX 0 bAspectRatioY 0 bmInterlaceFlags 0x00 Interlaced stream or variable: No Fields per frame: 1 fields Field 1 first: No Field pattern: Field 1 only bCopyProtect 0 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 1 bmCapabilities 0x00 Still image unsupported wWidth 640 wHeight 480 dwMinBitRate 73728000 dwMaxBitRate 147456000 dwMaxVideoFrameBufferSize 614400 dwDefaultFrameInterval 333333 bFrameIntervalType 2 dwFrameInterval( 0) 333333 dwFrameInterval( 1) 666666 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 2 bmCapabilities 0x00 Still image unsupported wWidth 320 wHeight 180 dwMinBitRate 13824000 dwMaxBitRate 27648000 dwMaxVideoFrameBufferSize 115200 dwDefaultFrameInterval 333333 bFrameIntervalType 2 dwFrameInterval( 0) 333333 dwFrameInterval( 1) 666666 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 3 bmCapabilities 0x00 Still image unsupported wWidth 320 wHeight 240 dwMinBitRate 18432000 dwMaxBitRate 36864000 dwMaxVideoFrameBufferSize 153600 dwDefaultFrameInterval 333333 bFrameIntervalType 2 dwFrameInterval( 0) 333333 dwFrameInterval( 1) 666666 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 4 bmCapabilities 0x00 Still image unsupported wWidth 352 wHeight 288 dwMinBitRate 24330240 dwMaxBitRate 48660480 dwMaxVideoFrameBufferSize 202752 dwDefaultFrameInterval 333333 bFrameIntervalType 2 dwFrameInterval( 0) 333333 dwFrameInterval( 1) 666666 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 5 bmCapabilities 0x00 Still image unsupported wWidth 424 wHeight 240 dwMinBitRate 24422400 dwMaxBitRate 48844800 dwMaxVideoFrameBufferSize 203520 dwDefaultFrameInterval 333333 bFrameIntervalType 2 dwFrameInterval( 0) 333333 dwFrameInterval( 1) 666666 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 6 bmCapabilities 0x00 Still image unsupported wWidth 640 wHeight 360 dwMinBitRate 55296000 dwMaxBitRate 110592000 dwMaxVideoFrameBufferSize 460800 dwDefaultFrameInterval 333333 bFrameIntervalType 2 dwFrameInterval( 0) 333333 dwFrameInterval( 1) 666666 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 7 bmCapabilities 0x00 Still image unsupported wWidth 848 wHeight 480 dwMinBitRate 97689600 dwMaxBitRate 195379200 dwMaxVideoFrameBufferSize 814080 dwDefaultFrameInterval 333333 bFrameIntervalType 2 dwFrameInterval( 0) 333333 dwFrameInterval( 1) 666666 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 8 bmCapabilities 0x00 Still image unsupported wWidth 960 wHeight 540 dwMinBitRate 124416000 dwMaxBitRate 248832000 dwMaxVideoFrameBufferSize 1036800 dwDefaultFrameInterval 333333 bFrameIntervalType 2 dwFrameInterval( 0) 333333 dwFrameInterval( 1) 666666 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 9 bmCapabilities 0x00 Still image unsupported wWidth 1280 wHeight 720 dwMinBitRate 221184000 dwMaxBitRate 442368000 dwMaxVideoFrameBufferSize 1843200 dwDefaultFrameInterval 333333 bFrameIntervalType 2 dwFrameInterval( 0) 333333 dwFrameInterval( 1) 666666 VideoStreaming Interface Descriptor: bLength 46 bDescriptorType 36 bDescriptorSubtype 3 (STILL_IMAGE_FRAME) bEndpointAddress 0 bNumImageSizePatterns 9 wWidth( 0) 640 wHeight( 0) 480 wWidth( 1) 320 wHeight( 1) 180 wWidth( 2) 320 wHeight( 2) 240 wWidth( 3) 352 wHeight( 3) 288 wWidth( 4) 424 wHeight( 4) 240 wWidth( 5) 640 wHeight( 5) 360 wWidth( 6) 848 wHeight( 6) 480 wWidth( 7) 960 wHeight( 7) 540 wWidth( 8) 1280 wHeight( 8) 720 bNumCompressionPatterns 9 bCompression( 0) 1 bCompression( 1) 5 bCompression( 2) 10 bCompression( 3) 20 VideoStreaming Interface Descriptor: bLength 6 bDescriptorType 36 bDescriptorSubtype 13 (COLORFORMAT) bColorPrimaries 1 (BT.709,sRGB) bTransferCharacteristics 1 (BT.709) bMatrixCoefficients 4 (SMPTE 170M (BT.601)) Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 1 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x00c0 1x 192 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 2 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x0180 1x 384 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 3 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 4 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x0280 1x 640 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 5 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x0320 1x 800 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 6 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x03b0 1x 944 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 7 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x0a80 2x 640 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 8 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x0b20 2x 800 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 9 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x0be0 2x 992 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 10 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x13c0 3x 960 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 11 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x13fc 3x 1020 bytes bInterval 1 Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 239 Miscellaneous Device bDeviceSubClass 2 ? bDeviceProtocol 1 Interface Association bMaxPacketSize0 64 bNumConfigurations 1 Device Status: 0x0000 (Bus Powered)
It works fine with the uvcvideo driver and tools like guvcview.
The Intel 7265 wireless card is supported out of the box in the 3.16 Jessie/sid kernel. It needs a firmware blob, which is present in firmware-iwlwifi. If you upgrade to 3.19 from experimental or rebuild a 4.0+ kernel, you'll need a later version of the firmware (iwlwifi-7265D-10.ucode). You can find it directly upstream and it should be part of the next firmware-nonfree upload.
When using 802.11/ac on 5GHz band, performances are quite correct imho:
wget 192.168.0.254/gen/1G -O /dev/null --2015-03-14 16:32:23-- http://192.168.0.254/gen/1G Connecting to 192.168.0.254:80... connected. HTTP request sent, awaiting response... 302 Moved Temporarily Location: http://192.168.0.254:8095/fixed/1G [following] --2015-03-14 16:32:23-- http://192.168.0.254:8095/fixed/1G Connecting to 192.168.0.254:8095... connected. HTTP request sent, awaiting response... 200 OK Length: 1073741824 (1.0G) [application/octet-stream] Saving to: ‘/dev/null’ /dev/null 100%[=====================>] 1.00G 15.7MB/s in 55s
Suspend to ram works fine, but I had issues at resume when plugged to external monitors.
The most complete dock station, you get:
Graphics output work fine for DP and VGA. I didn't try yet the DVI-D one, the HDMI didn't seem to work but it might only be related to the current graphics driver support.
You can only use two digital outputs at once, so if you want three monitors you need to use VGA for one. Also remember you'll have to switch off the laptop screen since the graphics card only has three CRTCs.
I didn't test it myself but the laptop + dockstation is apparently perfectly able to drive three displays at 1920×1080 (using VGA + DVI-D + DisplayPort).
The sound output from the dock station doesn't work as of 4.0. A fix went into ALSA git tree and was CC: to stable@kernel.org so it should appear in a release kernel in a not too distant future.
The laptop came with BIOS version 1.04:
DMI: LENOVO 20CMCTO1WW/20CMCTO1WW, BIOS N10ET27W (1.04 ) 12/01/2014
I noticed there was a BIOS update available on the X250 support page (1.06), so decided to test the BIOS update. The BIOS update utility is an EFI application, so I decided to run it directly.
First steps are the same as the legacy Thinkwiki procedure for X series (which doesn't work for UEFI ThinkPads): we download the image and generate a working ISO (be careful, the URL is already outdated, pick the correct BIOS from the Lenovo support page linked above):
> mkdir /tmp/bios/ && cd /tmp/bios > wget http://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles/n10ur03w.iso > geteltorito n10ur03w.iso > bios.iso
Then we extract the relevant files (first two steps as root):
# kpartx -av bios.iso # mount /dev/mapper/loop0p1 /mnt > mkdir /boot/efi/FLASH # I'm putting everything in the EFI system partition > cp /mnt/EFI/BOOT/BootX64.efi /boot/efi/FLASH > cp /mnt/FLASH/SHELLFLASH.EFI /boot/efi/FLASH > cp -r /mnt/FLASH/N10ET29W /boot/efi/FLASH
I have an UEFI shell in my EFI system partition, so I use it to boot and manually run the BootX64.efi application. That binary can be anywhere on the EFI partition, but the SHELLFLASH.EFI and data folder (N10ET29W here) should both be in the /FLASH folder at the root of that partition.
Note
You can also drop the shell part and actually put a boot variable for BootX64.efi (or even SHELLFLASH.EXE in case someone finds the correct invocation), with something like that:
efibootmgr -c -L "Bios Flash" -l /FLASH/BootX64.efi
Inside the UEFI shell:
> fs1: # select the EFI system partition on the disk > cd FLASH > BootX64.efi
Then the Lenovo flash application starts and you can proceed with the update. It'll copy the BIOS files to memory, reboot to an unlocked state and start flashing, then reboot again (twice, in my case).
Et voilà:
DMI: LENOVO 20CMCTO1WW/20CMCTO1WW, BIOS N10ET29W (1.06 ) 02/12/2015
Due to the various enhancements not yet present in Debian kernels (wether the 3.16 Jessie one, or even the 3.19 experimental one), I currently run my own kernel, tracking 4.0rc series. You can find the config file there.
I don't use VirtualBox, but it's apparently broken (#783142 and #13820 upstream) on Broadwell CPUs because of SMAP support:
VirtualBox kernel code needs to access user-level code because the complete virtual memory of the guest is mapped on the host side and on 32-bit hosts we have the 1G limitation in the kernel part of the address space (3G for userland, 1G for kernel, kernel starts at 0xC0000000). And we don't want to limit guests on 32-bit hosts to 1GB RAM...
(yeah, that sure looks like a good idea…)
Some links about the subject: