Lenovo IdeaPad Yoga 900 13ISK

From Gentoo Wiki
Jump to:navigation Jump to:search
This article has been flagged for not conforming to the wiki guidelines. Please help Gentoo out by starting fixing things.

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
KERNEL
.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
KERNEL
.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
KERNEL
.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
KERNEL
.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
KERNEL
.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]
KERNEL
.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]
KERNEL
.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
KERNEL
.config - Linux/x86 4.9.95-gentoo Kernel Configuration
 →
Note
some issue when formating with ext4 with inline_data
Note
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
KERNEL
.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  --->
Note
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
KERNEL
.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
Note
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 
KERNEL
.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
KERNEL
.config -
Note
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
Note
this is work in progress, synaptic module : hid_rmi, i2c_designware, i2c_hid, i2c-ITE8396, hid-rmi
Note
this is work in progress, elan module : hid_multitouch, i2c_hid, hid-generic
Note
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
KERNEL
.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
Note
echo elan_i2c >> /etc/modules-load.d/synaptic.conf
Note
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
KERNEL
.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
KERNEL
.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

Important
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 

External resources