ArchLinux sur un portable Asus X70AF-TY028V

De ArchwikiFR


Asus-x70af.jpeg

Matériel

  • CPU : AMD Athlon II M320 à 2.1 GHz, 512Ko de cache L2
  • RAM : 4Go DDR2 800MHz
  • Disque dur : 500Go
  • Lecteur/Graveur DVD-rw
  • Affichage : 17,3", 1600x900
  • Chipset graphique : ATI Radeon HD 5145, 512Mb dédié
  • Chipset audio : HDA Intel
  • réseau : 1 port Ethernet intégré 10/100/1000Mbit/s, carte Atheros AR8121, Wifi intégré, carte Atheros AR9285
  • USB :4 ports USB 2.0
  • lecteur de carte : SD/MMC/MemoryStick-pro
  • touchpad: multitouch 2 boutons, Elantech ETPS/2
  • sortie: audio ( e/s S/PDIF), VGA et HDMI
  • entrée: microphone

Compatibilité

Ce qui marche

  • Le son, lecture et enregistrement.
  • Affichage, 3D avec le pilote ATI Catalyst ou le pilote libre radeon
  • Réglage de la luminosité de l'écran en hard, l'écran s'éteint quand on ferme le portable
  • Le réseau ethernet
  • La carte wifi
  • Les ports USB
  • ACPI pour connaître la température et la charge batterie
  • Le lecteur de carte
  • Le lecteur/graveur CD/DVD-rw
  • Les hotkeys (touche Fn) qui sont des touches ACPI, avec acpid
  • Suspend to RAM
  • La sortie HDMI
  • Le touchpad multitouch

Ce qui ne marche pas

  • Néant


Les touches Fn aka hotkeys

Les touches Fn+F2 (Wlan) et Fn+F9 (touchpad) ne sont pas actives.

Après configuration, on peut les faire fonctionner normalement:

Pour le wifi, voir ici.
Pour le touchpad, voir .

Pour de plus amples informations sur la gestion de ces touches : ACPI hotkeys

Conclusion

Après quelques réglages (voir ci-dessous), ce portable fonctionne normalement sous Archlinux. Utilisation parfaite sous KDE avec les effets 3D activés.

Configuration

Options kernel au boot

Voici les options passées au noyau au démarrage pour un fonctionnement optimal:

nomodeset iommu=noagp,noaperture agp=off amd64_edac_mod.ecc_enable_override=1 pcie_aspm=force vga=854


Fn+F2, activation/désactivation de la carte wifi

  1. Installer acpid et l'ajouter aux DAEMONS de /etc/rc.conf
  2. Installer rfkill
  3. Ajouter les lignes suivantes dans le fichier /etc/acpi/handler.sh
button/wlan)
 /etc/acpi/asus-wireless-switch.sh ;;
esac
;;
Fichier: /etc/acpi/handler.sh
#!/bin/sh
minspeed=`cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq`
maxspeed=`cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq`
setspeed="/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed"
set $*
case "$1" in
   button/power)
       #echo "PowerButton pressed!">/dev/tty5
       case "$2" in
           PBTN|PWRF)  logger "PowerButton pressed: $2" ;;
           *)          logger "ACPI action undefined: $2" ;;
       esac
       ;;
   button/sleep)
       case "$2" in
           SLPB)   echo -n mem >/sys/power/state ;;
           *)      logger "ACPI action undefined: $2" ;;
       esac
       ;;
   button/wlan)
       /etc/acpi/asus-wireless-switch.sh ;;
       esac
       ;;
   ac_adapter)
       case "$2" in
           AC|ACAD|ADP0)
               case "$4" in
                   00000000)
                       echo -n $minspeed >$setspeed
                       #/etc/laptop-mode/laptop-mode start
                   ;;
                   00000001)
                       echo -n $maxspeed >$setspeed
                       #/etc/laptop-mode/laptop-mode stop
                   ;;
               esac
               ;;
           *)  logger "ACPI action undefined: $2" ;;
       esac
       ;;
   battery)
       case "$2" in
           BAT0)
               case "$4" in
                   00000000)   #echo "offline" >/dev/tty5
                   ;;
                   00000001)   #echo "online"  >/dev/tty5
                   ;;
               esac
               ;;
           CPU0)	
               ;;
           *)  logger "ACPI action undefined: $2" ;;
       esac
       ;;
   button/lid)
       #echo "LID switched!">/dev/tty5
       ;;
   *)
       logger "ACPI group/action undefined: $1 / $2"
       ;;
esac
4. Créer le fichier /etc/acpi/asus-wireless-switch.sh et le rendre exécutable: chmod +x /etc/acpi/events/asus-wireless-switch.sh
Fichier: /etc/acpi/asus-wireless-switch.sh
#!/bin/sh
WLANSTATUS=`cat /sys/devices/platform/asus_laptop/wlan`
test -z $WLANSTATUS && exit 1
if [ $WLANSTATUS = 0 ]; then
       echo 1 > /sys/devices/platform/asus_laptop/wlan
       rfkill unblock all
elif [ $WLANSTATUS = 1 ]; then
       echo 0 > /sys/devices/platform/asus_laptop/wlan
       rfkill block all
fi

En ce qui concerne les touches Fn+FX vous pouvez récupérer les codes des touches avec l'outil acpi_listen, cf. ACPI hotkeys

Fn+F9 activation/désactivation du Touchpad

Ci dessous un script bash qui permet d'activer ou désactiver le Touchpad. C'est un script à lancer en utilisateur.

Fichier: /etc/acpi/asus-touchpad-switch.sh
#! /bin/sh
XINPUTNUM=`xinput list | grep 'Touchpad' | sed -n -e's/.*id=\([0-9]\+\).*/\1/p'`
TPSTATUS=`xinput list-props $XINPUTNUM | grep "Synaptics Off" | cut -f3`
if test $TPSTATUS -eq 0
then
    xinput set-int-prop $XINPUTNUM "Synaptics Off" 8 1
else
    xinput set-int-prop $XINPUTNUM "Synaptics Off" 8 0
fi

Il ne reste plus qu'à associer ce script à Fn+F9.

Une solution est d'utiliser la méthode suivante :

Créer et rendre exécutable le script :

Fichier: /.user-handler.sh
#!/bin/sh
case "$1" in
    hotkey)
	case "$3" in
	  0000006b)
	    /etc/acpi/asus-touchpad-switch.sh ;;
	esac
	;;
esac

0000006b est la valeur retournée par acpi_listen après l'appui sur Fn+F9 (voir ACPI hotkeys)

Lancer la commande suivante au démarrage de la session X :

acpi_listen | while read; do ~/.user-handler.sh $REPLY; done &