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: