Lenovo IdeaPad Yoga 900 13ISK
Still working on installation, wiki will come soon.
Hardware Lenovo Yoga 900-13ISK
on linux-5.3.9 kernel
Laptop Specifications
Device | Model | Works | Notes |
---|---|---|---|
Intel® Core™ i7 | Intel Core i7 (6th Gen) 6500U / 2.5 GHz | Yes | |
Intel® HD Graphics | 520 | Yes | by default i915 driver will be used, need USE change to use i965 idriver instead See Intel. |
samsung 13.3"3200×1800 touchscreen | Wide QXGA+ (WQXGA+) 3200×1800, 16:9 aspect ratio | Yes | intel_backlight works, PPI of 276.05 |
Wireless Intel Corporation Wireless 8260 (rev 3a) | Yes | ||
Bluetooth | Yes | ||
Sound | Yes | ||
Camera | Yes | ||
Card Reader | Partial | Note
a patch is needed for micro sd >= 256G *see below* Note
sdcard performance are good dd if=/dev/urandom of=/media/mmc/test bs=30M count=10 10+0 records in 10+0 records out 314572800 bytes (315 MB, 300 MiB) copied, 2.02639 s, 155 MB/s | |
Touchscreen | Yes | multitouch ok | |
Touchpad | Yes | some multitouch support (two finger scrolling ok) monotouch ok, left and right click ok, touch click ok |
Forum
see https://forums.gentoo.org/viewtopic-p-8223726.html#8223726 for intallation discussion
Configuration details
host bridge
root #
lspci -nn -k
00:00.0 Host bridge [0600]: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers [8086:1904] (rev 08) Subsystem: Lenovo Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers [17aa:3800] Kernel driver in use: skl_uncore
.config - Linux/x86 4.9.95-gentoo Kernel Configuration
→
Graphics
root #
lspci -nn -k
00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 520 [8086:1916] (rev 07) Subsystem: Lenovo HD Graphics 520 [17aa:3800] Kernel driver in use: i915
.config - Linux/x86 4.9.95-gentoo Kernel Configuration
→
See Intel.
See [1] for video decoding hardware acceleration
pcie bus
root #
lspci -nn -k
00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-LP PCI Express Root Port #5 [8086:9d14] (rev f1) Kernel driver in use: pcieport 00:1c.5 PCI bridge [0604]: Intel Corporation Sunrise Point-LP PCI Express Root Port #6 [8086:9d15] (rev f1) Kernel driver in use: pcieport
.config - Linux/x86 4.9.95-gentoo Kernel Configuration
→
USB Bus
root #
lspci -nn -k
00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller [8086:9d2f] (rev 21) Subsystem: Lenovo Sunrise Point-LP USB 3.0 xHCI Controller [17aa:3800] Kernel driver in use: xhci_hcd
.config - Linux/x86 4.9.95-gentoo Kernel Configuration
→
SMBus
root #
lspci -nn -k
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-LP SMBus [8086:9d23] (rev 21) Subsystem: Lenovo Sunrise Point-LP SMBus [17aa:3800] Kernel driver in use: i801_smbus Kernel modules: i2c_i801
.config - Linux/x86 4.9.95-gentoo Kernel Configuration
→
ISA bus
root #
lspci -nn -k
00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-LP LPC Controller [8086:9d48] (rev 21) Subsystem: Lenovo Sunrise Point-LP LPC Controller [17aa:3800]
.config - Linux/x86 4.9.95-gentoo Kernel Configuration
→
Power Management Controler
root #
lspci -nn -k
00:04.0 Signal processing controller [1180]: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem [8086:1903] (rev 08) Subsystem: Lenovo Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem [17aa:3800] 00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Thermal subsystem [8086:9d31] (rev 21) Subsystem: Lenovo Sunrise Point-LP Thermal subsystem [17aa:3800] 00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-LP PMC [8086:9d21] (rev 21) Subsystem: Lenovo Sunrise Point-LP PMC [17aa:3800]
.config - Linux/x86 4.9.95-gentoo Kernel Configuration
→ Device Drivers → Generic Thermal sysfs driver → ACPI INT340X thermal drivers
<M> ACPI INT340X thermal drivers
<M> ACPI INT3406 display thermal driver
→ Device Drivers → Generic Thermal sysfs driver
<M> Intel PCH Thermal Reporting Driver
→ Device Drivers → X86 Platform Specific Device Drivers
[*] Intel PMC Core driver
SATA SSD
root #
lspci -nn -k
00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-LP SATA Controller [AHCI mode] [8086:9d03] (rev 21) Subsystem: Lenovo Sunrise Point-LP SATA Controller [AHCI mode] [17aa:3800] Kernel driver in use: ahci
.config - Linux/x86 4.9.95-gentoo Kernel Configuration
→
some issue when formating with ext4 with
inline_data
formating with
has_journal,extent,huge_file,flex_bg,uninit_bg,64bit,dir_nlink,extra_isize
seems to not create issues with mount options rw,noatime,defaults,errors=remount-ro
Display
Backlight control through brightness buttons works without modification on X screen resolution is a little bit tricky to tune
root #
cat /etc/X11/xorg.conf.d/90-monitor
Section "Monitor" Identifier "Monitor-eDP-1" DisplaySize 293 165 # In millimeters EndSection
root #
cat .xinitrc
xrandr --dpi 192 xrdb -merge ~/.Xresources xinput set-prop "Synaptics TM3066-002" "Synaptics Palm Detection" 1 xinput set-prop "Synaptics TM3066-002" "Synaptics Palm Dimensions" 5, 5 #exec ck-launch-session dbus-launch --sh-syntax --exit-with-session xfce4-session exec ck-launch-session dbus-launch --sh-syntax --exit-with-session fluxbox
root #
cat .Xresources
Xft.dpi: 144 Xft.autohint: 0 Xft.lcdfilter: lcddefault Xft.hintstyle: hintfull Xft.hinting: 1 Xft.antialias: 1 Xft.rgba: rgb
In xfce->settings->appearance->fonts, set custom DPI to 140 see https://wiki.archlinux.org/index.php/Xorg#Display_size_and_DPI for more settings on DPI especially for gtk3 based app
Wireless
Method 1: Using the kernel driver
Configure and compile kernel
root #
lspci -nn -k
01:00.0 Network controller [0280]: Intel Corporation Wireless 8260 [8086:24f3] (rev 3a) Subsystem: Intel Corporation Wireless 8260 [8086:1130] Kernel driver in use: iwlwifi Kernel modules: iwlwifi
.config - Linux/x86 4.9.95-gentoo Kernel Configuration
→ Device Drivers → Network device support → Wireless LAN
<M> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi)
<M> Intel Wireless WiFi DVM Firmware support
<M> Intel Wireless WiFi MVM Firmware support
[ ] Enable broadcast filtering (NEW)
[*] Enable runtime power management mode for PCIe devices
Debugging Options --->
rfkill: exports duplicate symbol rfkill_alloc (owned by kernel)
Install firmware package
root #
emerge --ask sys-kernel/linux-firmware
sound
root #
lspci -nn -k
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-LP HD Audio [8086:9d70] (rev 21) Subsystem: Lenovo Sunrise Point-LP HD Audio [17aa:3800] Kernel driver in use: snd_hda_intel Kernel modules: snd_hda_intel, snd_soc_skl
.config - Linux/x86 4.9.95-gentoo Kernel Configuration
→ to complete
→ Device Drivers → Generic Driver Options
-*- Userspace firmware loading support
[*] Include in-kernel firmware blobs in kernel binary
(i915/skl_dmc_ver1_26.bin) External firmware blobs to build into the kernel binary
(/lib/firmware) Firmware blobs root directory
soundcore: exports duplicate symbol register_sound_dsp (owned by kernel)
The package sys-kernel/linux-firmware is required.
root #
emerge --ask sys-kernel/linux-firmware
bluetooth
root #
lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M |__ Port 7: Dev 4, If 0, Class=Wireless, Driver=btusb, 12M |__ Port 7: Dev 4, If 1, Class=Wireless, Driver=btusb, 12M
.config - Linux/x86 4.9.95-gentoo Kernel Configuration
→ Search (CONFIG_BT_HCIBTUSB)
Symbol: BT_HCIBTUSB [=m]
Type : tristate
Prompt: HCI USB driver
Location:
│ -> Networking support (NET [=y])
│ -> Bluetooth subsystem support (BT [=m])│
│ (1) -> Bluetooth device drivers│
│ Defined at drivers/bluetooth/Kconfig:21│
│ Depends on: NET [=y] && BT [=m] && USB [=y]│
│ Selects: BT_INTEL [=m]
working under command line (net-wireless/bluez-tools) could pair to an android phone
Bluetooth — describes the configuration and usage of Bluetooth controllers and devices.
https://wiki.archlinux.org/index.php/bluetooth
misc
root #
lspci -nn -k
00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-LP CSME HECI #1 [8086:9d3a] (rev 21) Subsystem: Lenovo Sunrise Point-LP CSME HECI [17aa:3800] Kernel driver in use: mei_me
.config -
https://www.kernel.org/doc/Documentation/misc-devices/mei/mei.txt Intel Management Engine (Intel ME) is an isolated and protected computing resource (Co-processor) residing inside certain Intel chipsets.
Touchpad and TouchScreen
root #
lspci -nn -k
00:15.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 [8086:9d60] (rev 21) Subsystem: Lenovo Sunrise Point-LP Serial IO I2C Controller [17aa:3800] Kernel driver in use: intel-lpss Kernel modules: intel_lpss_pci 00:15.1 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #1 [8086:9d61] (rev 21) Subsystem: Lenovo Sunrise Point-LP Serial IO I2C Controller [17aa:3800] Kernel driver in use: intel-lpss Kernel modules: intel_lpss_pci 00:15.3 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #3 [8086:9d63] (rev 21) Subsystem: Lenovo Sunrise Point-LP Serial IO I2C Controller [17aa:3800] Kernel driver in use: intel-lpss Kernel modules: intel_lpss_pci
root #
xinput list
Virtual core pointer id=2 [master pointer (3)]
↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
↳ Synaptics TM3066-002 id=10 [slave pointer (2)]
↳ ELAN21EF:00 04F3:21EF id=11 [slave pointer (2)]
Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Lenovo EasyCamera: Lenovo EasyC id=9 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=12 [slave keyboard (3)]
root #
less /proc/bus/input/devices
I: Bus=0018 Vendor=06cb Product=77c6 Version=0100
N: Name="Synaptics TM3066-002"
P: Phys=i2c-SYNA2B29:00
S: Sysfs=/devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-6/i2c-SYNA2B29:00/0018:06CB:77C6.0002/input/input23
U: Uniq=
H: Handlers=mouse0 event15
B: PROP=5
B: EV=b
B: KEY=e520 10000 0 0 0 0
B: ABS=6f3800001000003
I: Bus=0018 Vendor=04f3 Product=21ef Version=0100
N: Name="ELAN21EF:00 04F3:21EF"
P: Phys=i2c-ELAN21EF:00
S: Sysfs=/devices/pci0000:00/0000:00:15.3/i2c_designware.2/i2c-7/i2c-ELAN21EF:00/0018:04F3:21EF.0003/input/input24
U: Uniq=
H: Handlers=mouse1 event16
B: PROP=2
B: EV=1b
B: KEY=400 0 0 0 0 0
B: ABS=3273800000000003
B: MSC=20
this is work in progress, synaptic module : hid_rmi, i2c_designware, i2c_hid, i2c-ITE8396, hid-rmi
this is work in progress, elan module : hid_multitouch, i2c_hid, hid-generic
module difference between a working synaptic and touchscreen and not working configuration : modules added : 8021q ccm ctr hid_multitouch hid_rmi hid_sensor_custom i2c_designware_platform i2c_designware_core elan_i2c i2c_i801 iTCO_vendor_support iTCO_wdt llc rmi_core stp garp i2c_designware_core hid_sensor_hub
.config - Linux/x86 4.9.95-gentoo Kernel Configuration
→ Device Drivers → Multifunction device drivers
<M> Intel Low Power Subsystem support in PCI mode
Device Drivers → HID support → I2C HID support
<M> HID over I2C transport layer
Device Drivers → HID support → Special HID Drivers
<M> HID multitouch panels
<M> synaptic RM14 device support
Device Drivers → Input device support → Touchscreens
<M> Elan eKTF2127 I2C touchscreen
<M> Elan eKTH I2C touchscreen
Device Drivers → HID support → Special HID drivers
<M> ELAN USB Touchpad Support
echo elan_i2c >> /etc/modules-load.d/synaptic.conf
i2c_hid i2c-ITE8396:00: error in i2c_hid_init_report size:19 / ret_size:18<
See Synaptics to configure.
SD card
root #
lspci -nn -k
02:00.0 SD Host controller [0805]: O2 Micro, Inc. Device [1217:8620] (rev 01) Subsystem: Lenovo Device [17aa:3800] Kernel driver in use: sdhci-pci Kernel modules: sdhci_pci
.config -
The reader detects the partition but gives timeouts on linux 4.16.11
root #
dd if=/dev/mmcblk0 bs=512 count=1 of=test
[385702.654671] mmc0: Tuning timeout, falling back to fixed sampling clock [385702.654769] mmc0: new ultra high speed SDR104 SDXC card at address 0001 [385702.655364] mmcblk0: mmc0:0001 EE8QT 239 GiB [385702.657337] mmcblk0: p1 [385713.140629] mmc0: Timeout waiting for hardware interrupt. [385713.140635] mmc0: sdhci: ============ SDHCI REGISTER DUMP =========== [385713.140643] mmc0: sdhci: Sys addr: 0x00000008 | Version: 0x00000603 [385713.140649] mmc0: sdhci: Blk size: 0x00007200 | Blk cnt: 0x00000008 [385713.140655] mmc0: sdhci: Argument: 0x1dcffff0 | Trn mode: 0x0000003b [385713.140661] mmc0: sdhci: Present: 0x01ff0000 | Host ctl: 0x00000017 [385713.140667] mmc0: sdhci: Power: 0x0000000f | Blk gap: 0x00000000 [385713.140673] mmc0: sdhci: Wake-up: 0x00000000 | Clock: 0x00000007 [385713.140678] mmc0: sdhci: Timeout: 0x0000000a | Int stat: 0x00000000 [385713.140684] mmc0: sdhci: Int enab: 0x02ff008b | Sig enab: 0x02ff008b [385713.140690] mmc0: sdhci: AC12 err: 0x00000004 | Slot int: 0x00000000 [385713.140696] mmc0: sdhci: Caps: 0x25fcc8bf | Caps_1: 0x00002077 [385713.140702] mmc0: sdhci: Cmd: 0x0000123a | Max curr: 0x005800c8 [385713.140708] mmc0: sdhci: Resp[0]: 0x00000900 | Resp[1]: 0x00000000 [385713.140714] mmc0: sdhci: Resp[2]: 0x00000000 | Resp[3]: 0x00001b00 [385713.140718] mmc0: sdhci: Host ctl2: 0x0000800b [385713.140723] mmc0: sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0xfffff208 [385713.140726] mmc0: sdhci: ============================================ [385713.191687] mmc0: Tuning timeout, falling back to fixed sampling clock
patch to fix this issue (no more required on 5.9.1)
diff --git a/drivers/mmc/host/sdhci-pci-o2micro.c b/drivers/mmc/host/sdhci-pci-o2micro.c index 19944b004..1d8938a68 100644 --- a/drivers/mmc/host/sdhci-pci-o2micro.c +++ b/drivers/mmc/host/sdhci-pci-o2micro.c @@ -681,7 +681,6 @@ static const struct sdhci_ops sdhci_pci_o2_ops = { const struct sdhci_pci_fixes sdhci_o2 = { .probe = sdhci_pci_o2_probe, .quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC, - .quirks2 = SDHCI_QUIRK2_CLEAR_TRANSFERMODE_REG_BEFORE_CMD, .probe_slot = sdhci_pci_o2_probe_slot, #ifdef CONFIG_PM_SLEEP .resume = sdhci_pci_o2_resume,
webcam
root #
lsusb -t
|__ Port 6: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M |__ Port 6: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M
.config - Linux/x86 4.9.95-gentoo Kernel Configuration
→ Device Drivers → Multimedia support →
[*] Cameras/video grabbers support
[*] Media USB Adapters --->
<M> USB Video Class (UVC)
[*] UVC input events device support
HEVC
see https://forums.gentoo.org/viewtopic-p-8522411.html#8522411
driver summary
lsmod is a poor representation of what drivers are needed. It will show modules loaded even if they are not necessary. this list must be split and reduced to the useful modules for each hardware parts
root #
lsmod
root #
lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M |__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 6: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M |__ Port 6: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M |__ Port 7: Dev 4, If 0, Class=Wireless, Driver=btusb, 12M |__ Port 7: Dev 4, If 1, Class=Wireless, Driver=btusb, 12M