Lenovo Yoga 7i (& Yoga 7) - 14ITL5 & 15ITL5
Le dump du BIOS indique les réferences 14ITL05 & 15ITL05, mais ces références semblent appartenir à d'autres modèles. Peut-être cela peut fonctionner ou vous aider.
En un clin d’œil
Le tableau suivant récapitule la prise en charge du matériel de portable par les différentes versions d'Ubuntu. Il utilise les notations suivantes :
Ce portable est parfois appelé Yoga 7i ou Yoga 7 (ce n'est pas très claire), et a les références 14ITL5 pour le 14 pouces et 15ITL5 pour le 15 pouces.
Version | Installation | Carte graphique | Son | Wifi | Bluetooth | Webcam | Touchpad | Raccourcis multimédia | Ecran tactile | Lecteurs d’empreintes digitales | Ecran tactile multipoints |
---|---|---|---|---|---|---|---|---|---|---|---|
20.04 avec Kernel 5.11.0 à 5.11.5 | |||||||||||
21.04 | |||||||||||
21.10 | |||||||||||
21.10 Avec kernet 5.13 |
Utilisateurs du Wiki possédant cet ordinateur, fonctionnel :
Cet ordinateur portable n'est à priori pas tatoué.
par
GRUB_CMDLINE_LINUX_DEFAULT="i915.enable_psr=0 i8042.direct i8042.dumbkbd" sauver ctrl-x puis dans la commande sudo update-grub
Installation
Pour démarrer sur le BIOS, il faut démarrer l'ordinateur et appuyer sur F2, on peut aussi utiliser le boot menu sur F12.
Il y a un mini BIOS, on n'a malheureusement pas accès à grand chose.
Il est possible de garder Windows en plus d'Ubuntu.
Post-Installation
Kernel 5.11 (pour 20.04)
Il faut installer le kernel 5.11 pour avoir un fonctionnement complet du PC.
Les kernels après 5.11.5 ne fonctionnent plus chez moi sur Ubuntu 20.04 (dernier testé 5.11.16).
Tutoriel - Dépot 5.11.5
Je recommande de télécharger :
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.11.5/amd64/linux-headers-5.11.5-051105-generic_5.11.5-051105.202103091130_amd64.deb wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.11.5/amd64/linux-headers-5.11.5-051105_5.11.5-051105.202103091130_all.deb wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.11.5/amd64/linux-image-unsigned-5.11.5-051105-generic_5.11.5-051105.202103091130_amd64.deb wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.11.5/amd64/linux-modules-5.11.5-051105-generic_5.11.5-051105.202103091130_amd64.deb
Et d'installer :
sudo dpkg -i *.deb
Il faut désactiver le secure boot
Aller dans le BIOS en appuyant (une ou plusieurs fois) sur F2 au démarrage, tout de suite après l'appui sur power ou le redémarrage.
Il y a une option Secure Boot, la mettre sur disable.
Ceci à cause de ces noyaux (kernel) qui ne sont pas signés.
Rebooter et vérifier :
uname -r
Son
Depuis le kernel 5.11.0 (jusqu’à 5.11.5) la carte son fonctionne, et n'a pas une sortie fictive ou dummy output.
Mais fonctionne qu'avec le jack et un casque ou headphone.
Si vous avez une sortie fictive vérifiez aussi les drivers utilisés, avec la commande :
aplay -l
Vous devez avoir quelques chose qui commence par :
**** Liste des Périphériques Matériels PLAYBACK **** carte 0: sofhdadsp [sof-hda-dsp], périphérique 0: HDA Analog (*) []
La commande :
sudo dmesg | grep -i audio
Doit afficher des ligne contenant : sof-audio-pci
J'ai fait pas mal de modification, et je ne sais plus si sur Ubuntu 20.04, il faut forcer le driver sof-hda-dsp ou si cela est automatique.
Sur Ubuntu 21.04 aucune modification à faire pour avoir une sortie réelle et le fonctionnement du jack.
Haut-parleur (speakers)
Beaucoup de portables Lenovo (et d'autres marques aussi) avec le chipset ALC287 n'ont pas de sons sur les haut-parleurs.
Sur un pc avec un BIOS non restreint, en modifiant l'option S3 qui est désactivée pour Windows, cela devrait fonctionner facilement. Sur celui-ci il faut faire les modifications à la main.
Pour fonctionner avec les haut-parleurs (speakers) il faut :
* Activer le mode S3 (voir plus bas)
* Vérifier qu'il est bien activé
* Lancer une musique sur VLC par exemple, laisser jouer, passer en veille (suspend-to-RAM), sortir de la veille, et le son fonctionne sur les hauts-parleur (speakers).
Si pas de son lu pendant 7 secondes, le son ne fonctionnera plus, il faudra alors remettre en veille.
Il y a un script sur la page de tutoriel, mais nous sommes plusieurs à ne pas avoir un fonctionnement concluant.
Gestion d'énergie / Mode S3 / Deep
Par défaut, pour l'autre OS, le mode S3 est désactivé dans le BIOS, vu que le BIOS est bridé (on a accès a presque rien), on ne peut pas le réactiver.
Il faut le modifier dans Ubuntu.
Le mode S3 est bien plus performant pour le passage en veille, que le s2idle activé par défaut.
Par exemple environ 10h de veille (dans la ram) consome 6% de batterie et ne chauffe pas contrairement au triple (de mémoire) et à un échauffement important en mode S2.
Le mode S3 est obligatoire pour avec le son avec les haut-parleurs.
Vérifier si le S3 est bien activé
Tapez :
cat /sys/power/mem_sleep
"S2idle [deep]" doit apparaitre
Si il y a juste "[s2idle]" il est désactivé.
Puis :
sudo dmesg |grep ACPI|grep supports
Vous devriez avoir :
[ 0.195933] ACPI: (supports S0 S3 S4 S5)
Si S3 n’apparaît pas il n'est pas activé.
Activer le mode S3
Cette procédure est différente pour les autres modèles.
Il faut suivre la procédure ici, la voici en simplifié :
1) Installer iasl (Intel's compiler/decompiler for ACPI machine language) and cpio
sudo apt-get install acpica-tools cpio
2) on crée un dossier acpi : mkdir acpi
3) on fait un dump de la table ACPI DSDT
sudo cat /sys/firmware/acpi/tables/DSDT > dsdt.aml
4) On décompile le dump qui va generé un .dsl basé sur le .aml ACPI
iasl -d dsdt.aml
5) on crée notre patch pour notre Yoga 7i : (C'est cette étape qui est propre au matériel)
nano acpi.patch
On met :
--- dsdt.dsl~ +++ dsdt.dsl @@ -18,7 +18,7 @@ * Compiler ID "INTL" * Compiler Version 0x20210105 (539033861) */ -DefinitionBlock ("", "DSDT", 2, "LENOVO", "CB-01 ", 0x00000002) +DefinitionBlock ("", "DSDT", 2, "LENOVO", "CB-01 ", 0x00000003) { External (_GPE.AL6F, MethodObj) // 0 Arguments External (_GPE.P0L6, MethodObj) // 0 Arguments @@ -516,7 +516,7 @@ Name (SS1, Zero) Name (SS2, Zero) - Name (SS3, Zero) + Name (SS3, One) Name (SS4, One) OperationRegion (GNVS, SystemMemory, 0x45AB8018, 0x0A9B) Field (GNVS, AnyAcc, Lock, Preserve)
On sauvegarde
6) On applique le patch :
patch --verbose < acpi.patch
Il doit y avoir un message "2 Hunk ok", ou quelque chose comme cela. Testé sur Ubuntu 20.04.
7) On recompile notre version patché du .dsl
iasl -ve -tc dsdt.dsl
8) On crée une archive CPIO avec la structure correct, qui permetra à GRUB de le démarrer au boot.
Nous appelerons l'image finale acpi_override et la copions dans /boot/:
mkdir -p kernel/firmware/acpi cp dsdt.aml kernel/firmware/acpi find kernel | cpio -H newc --create > acpi_override sudo cp acpi_override /boot
9) GRUB doit être paramétré :
sudo nano /etc/default/grub
Chercher et remplacer les lignes suivante :
GRUB_CMDLINE_LINUX_DEFAULT="mem_sleep_default=deep" GRUB_EARLY_INITRD_LINUX_CUSTOM="/boot/acpi_override"
Note : il est possible de garder d'autres parametre dans GRUB_CMDLINE_LINUX_DEFAULT il faut mettre un espace entre chaque.
10) Il faut regenerer la config de GRUB :
sudo update-grub
Ici 2 options : soit GRUB genere la config avec initrd /boot/acpi_override (on le vois apparaitre), soit non (ce qui est mon cas sous Ubuntu 20.04)
Si il est apparu on passe à l'étape 12, sinon la 11
11) Il faut que GRUB charge notre nouvelle table DSDT, il faut éditer (en root) /boot/grub/grub.cfg en graphique ou :
sudo nano /boot/grub/grub.cfg
Il faut modifier chaque ligne initrd pour avoir /boot/acpi_override avant l'image noyau, donc pour chaque version du noyau
Exemple :
initrd /boot/initrd.img-5.11.5-051105-generic
Devient :
initrd /boot/acpi_override /boot/initrd.img-5.11.5-051105-generic
12) Redemarer et verifier si cela fonctionne :
sudo dmesg |grep ACPI|grep supports
Vous devriez avoir :
[ 0.195933] ACPI: (supports S0 S3 S4 S5)
Si S3 n’apparaît pas il n'est pas activé.
Puis :
cat /sys/power/mem_sleep
"S2idle [deep]" doit apparaitre
Si il y a juste "[s2idle]" il est désactivé.
C'est l'élement qui me semble compliqué, on peut vérifier (si ca ne fonctionne pas) avec :
sudo dmesg
On doit avoir :
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.11.5-051105-generic root=(l'emplacement de votre Ubuntu) ro mem_sleep_default=deep
Il doit y avoir aussi une ligne
ACPI: DSDT 0x.... ... (v02 LENOVO CB-01 00000003 INTL ...)
Il faut avoir le 3 avant INTL (par défaut c'est à 2 avant la modif que l'on viens de faire)
Bien verifier si il y a eu des erreurs, et si on a bien remplacer toutes les lignes initrd.
Touches raccourcis réglage luminosité (hotkeys brightness)
Fonctionnent sous 21.10.
Les touches fonctionnent uniquement après une mise en veille vers la ram (suspend-to-RAM), avec le noyau 5.11.5, cela fonctionnait mal ou pas avec des noyaux précédent (peut être les 5.8).
Certains parlent d'options dans /etc/default/grub, j'ai fait quelques test non concluant, peut-être une piste a creuser avec : acpi_backlight=none
Pavé tactile
Vous pouvez consulter la page consacrée au pavé tactile (touchpad) pour savoir comment utiliser toutes ses possibilités (ascenseur vertical, ascenseur horizontal, …).
Le Touchpad présente souvent le défaut suivant : lorsqu'on tape au clavier, on clique sans le vouloir avec la paume. Consultez ce paragraphe pour corriger ce défaut.
Ecran Tactile
Multitouch
Si le multitouch ne fonctionne pas immédiatement après l'installation, installez ces paquets:
sudo apt-get install xserver-xorg-input-evdev touchegg
Pour tester si cela fonctionne, tapez "touchegg" dans un terminal et essayez de "scroller" avec deux doigts dans une autre application avec un ascenseur.
Si ça fonctionne, vous devrez ajouter touchegg dans vos programmes au démarrage de session.
Avec plusieurs écrans
Si vous avez un second écran branché, vous vous apercevrez que le touchscreen ne fonctionne pas comme vous l'attendez probablement : toucher un point sur l'écran ne clique pas en ce point : l'écran tactile couvre la surface totale des deux écrans, et pas seulement la sienne.
Essayez la commande suivante:
xinput --map-to-output "ELAN Touchscreen" eDP1
Si ça fonctionne bien pour vous, ajoutez cette commande aux programmes au démarrage de votre session
Mode tablette : désactiver le clavier et le touchpad
Un capteur détecte le passage en mode retourné ou tablette et désactive le touchpad (sur Plasma et Mate). Sur certains environnement de bureau, l'écran est automatiquement retourné (en plus du touchpad désactivé), c'est le cas de :
- L’environnement de bureau Ubuntu (Xorg)
- L’environnement de bureau Ubuntu sur Wayland (Sauf 21.10)
- L’environnement de bureau Cynamon, par contre le tactile considère que l'écran est dans le même sens.
Grouar propose des scripts dans sont tuto pour Yoga 2 Pro
Voici un script bash qui permet de basculer entre le mode tablette (clavier et touchpad désactivés) et le mode laptop :
#!/bin/bash # you can find touchpad and keyboard labels with the command xinput --list TOUCHPAD_LABEL="SynPS/2 Synaptics TouchPad" KEYBOARD_LABEL="AT Translated Set 2 keyboard" STATUS_ON=1 STATUS_OFF=0 function getStatus { # first argument is device id or device name status=$(xinput --list-props "$1" | grep "[^\"]Device Enabled.*" | grep -o "[01]$") echo $status } function setStatus { xinput set-int-prop "$1" "Device Enabled" 8 $2 } tp_status=$(getStatus "$TOUCHPAD_LABEL") kb_status=$(getStatus "$KEYBOARD_LABEL") if [[ $tp_status == $STATUS_ON ]] && [[ $kb_status == $STATUS_ON ]] then #kdialog --passivepopup 'Keyboard and touchpad disabled' 3 # uncomment if you use kde and want notifications setStatus "$TOUCHPAD_LABEL" $STATUS_OFF setStatus "$KEYBOARD_LABEL" $STATUS_OFF else #kdialog --passivepopup 'Keyboard and touchpad enabled' 3 # uncomment if you use kde and want notifications setStatus "$TOUCHPAD_LABEL" $STATUS_ON setStatus "$KEYBOARD_LABEL" $STATUS_ON fi
Je l'utilise avec un fichier .desktop placé dans ~/.local/share/applications dont le contenu est le suivant :
[Desktop Entry] Encoding=UTF-8 Name=Toggle Tablet Comment=Toggle keyboard and touchpad Exec=~/scripts/toggletablet.sh Icon=preferences-desktop-display Type=Application
Ce qui permet de lancer le script via le menu (dans mon cas, Homerun dans KDE)
Mode tablette : retourner l'écran
Sur 21.10, le mode tablette ne fonctionne pas sous Wayland (serveur d'affichage de Gnome), il faut alors rebasculer en Xorg. Pour ce faire : déconnectez vous; sur l'écran de connection, choisissez un utilisateur et avant de valider, choisissez "Ubuntu sous Xorg" avec l'icône "paramètres" situé en bas à droite.
Pour retrouver la fonction de zoom à 2 doigts sur Firefox, ajoutez en fin de fichier ~\.profile, la ligne suivante :
export MOZ_USE_XINPUT2=1
Un autre script pour alterner entre trois orientations d'écran :
#!/bin/sh # Switch between 3 orientations state=$(xrandr -q|grep eDP1|cut -d' ' -f5) case $state in inverted) xrandr -o normal xinput set-prop 'ELAN Touchscreen' 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1 xinput enable 'SynPS/2 Synaptics TouchPad' ;; right) xrandr -o inverted xinput set-prop 'ELAN Touchscreen' 'Coordinate Transformation Matrix' -1 0 1 0 -1 1 0 0 1 xinput disable 'SynPS/2 Synaptics TouchPad' ;; *) xrandr --screen 0 -o right xinput set-prop 'ELAN Touchscreen' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1 xinput disable 'SynPS/2 Synaptics TouchPad' ;; esac
Sources
- (en) Ask Ubuntu
- (en) Kernel 5.11
—-
Contributeurs : Pour la base issu de lenovo_yoga_2_pro grouar, pour le Yoga 7 : DavidLenovo