Astuces et configurations pour Ubuntu 10.04 avec EMC2

Un petit post pour noter trucs et astuces pour Ubuntu 10.04 et plus particulièrement dans un environnement de pilotage de CNC avec EMC2. Rien d'extraordinaire, seulement une collection de choses qui sont soit dans la doc (mais bien au fond :) ), soit des colectées sur Internet. Rien de révolutionnaire, seulement de quoi les avoir sous la main...

  • Mettre la dernière version de Firefox à la mode Ubuntu
  • Installer flash et autres goodies
  • Installer Teamviewer pour la télémaintenance
  • Installer Cairo : un dock à la OSX
  • Forcer la carte graphique en mode VESA
  • Installer le patch SMI pour corriger les pb de temps réel sur EMC2
  • ...

linuxcnc_logo.png EMC2: Logiciel open source de pilotage de machine à commande numérique.

Installer la dernière version de FIrefox

Avec la cadence de mise à jour de Firefox qui s'accélère, il devient difficile de disposer d ela dernière version sur Ubuntu. D'autant que la version livrée ne dispose pas de la synchronisation des bookmarks (objet d'un précédent article). Pour l'installer :

sudo add-apt-repository ppa:mozillateam/firefox-stable
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install firefox-locale-fr

Installer Flash et autres contribs propriétaires

sudo apt-get install ubuntu-restricted-extras

Méthode simple pour installer Flash et seulement Flash

Dans 'Applications' / 'Logitheque Ubuntu', rechercher et installer flash

Installer le logiciel de télémaintenance propriétaire Teamviewer

wget http://www.teamviewer.com/download/teamviewer_linux.deb
dpkg -i teamviewer_linux.deb

Installer un Dock 'à la OSX'

(source: http://glx-dock.org/bg_topic.php?t=5646 )

sudo add-apt-repository ppa:cairo-dock-team
sudo apt-get update[|http://glx-dock.org/ww_page.php?p=First%20Steps&lang=en]
sudo apt-get install cairo-dock cairo-dock-plug-ins

Tester son fonctionnement, puis rendre éventuellement le démarrage permanent si ok: http://glx-dock.org/ww_page.php?p=First%20Steps&lang=en

Forcer la carte graphique en mode VESA

Sur Ubuntu, le plug and play marche tellement bien, qu'il est difficile de spécifier sa carte graphique manuellement. Ceci est très utile lorsque que l'on a une carte graphique qui pose problème au temps réel de RTLinux intégré dans Ubuntu 10.04 Emc2. Il faut dans ce cas passer en mode VESA pour désactiver toute accélération graphique. Mais ce n'est pas si simple.....

  • Dans les options de démarrage du noyai courant, enlever l'utilisation du mode VESA pour le mode texte du noyau (vous savez, 50 lignes par page en mode texte). Pour ce faire, editer grub.cfg et ajouter 'nomodeset' en option de kernel :
sudo vi /boot/grub/grub.cfg

(sur la ligne "linux /boot/.... ro quiet splash" de la permière entrée bootable, ajouter nomodeset à la fin)

  • Redémarrer la machine
  • Apres le redémarage, ne pas ouvrir de session, et faire CTRL + ALT + F1 pour passer en console et se logger
  • Arreter GDM, le gestionnaire de login graphique
sudo service gdm stop
  • Lancer la configuration de X
sudo Xorg -configure
  • Si la fin de la configuration s'est bien passée, Xorg vous dit qu'il a placé un fichier xorg.conf.new dans la racine de votre compte.
  • Éditer ce fichier de config, et changer dans la section "Device" le driver par :
 
Driver "vesa"
  • Tester la configuration comme indiqué à l'écran
  • Si tout est ok, l'activer en copiant ce fichier de config dans /etc/X11
sudo cp /home/userxxx/xorg.conf.new /etc/X11/xorg.conf
  • Tester une dernière fois
startx
  • Si tout est ok, redémarrer. Ce changements sont maintenant permanents.
  • A noter que pour revenir à une configuration autodétectée, il suffit de supprimer (en root) le fichier /etc/X11/xorg.conf
sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.vesa

Installer un serveur ssh

SSH n'est pas installé par défaut sur l'Ubuntu 10.04 d'EMC2.

sudo apt-get openssh-server

Optimisation des performances temps réel pour EMC2

La distribution Ubuntu 10.04 pour EMC2 contient un patch temps réel, qui permet lorsque tout est bien réglé de faire fonctionner une machine de CNC sans perte de pas. Toutefois, ce patch temps réel n'est pas tout terrain. Il convient souvent (toujours?) d'optimiser la configuration de la machine pour que cela fonctionne. EMC2 contient un utilitaire ('CNC' / 'Latency test') permettant de tester le comportement de la machine. Pour que tout fonctionne convenablement il faudrait avoir une valeur finale inférieure ou égale à 25000.

J'ai déjà configuré plus d'une dizaine de machine pour EMC2 et voici mes conclusions :

  • Cela n'est jamais optimisé sans rien faire. N'espérez donc pas avoir la config de la mort qui tue 'out of the box', c'est un fantasme :). Il va falloir bosser un peu...
  • Cela provient souvent de la carte graphique (et notamment les cartes NVIDIA, qui s'avèrent particulièrement catastrophiques...), mais cela se corrige aisément, soit en changeant la carte graphique, soit en passant en VESA
  • Cela provient souvent des interruptions SMI (interruptions destinées à gérer les fonctions bas niveau de la machine, voir http://en.wikipedia.org/wiki/System_Management_Mode ), et pas que sur les ordinateurs portables ...
  • Cela provient parfois (notez la nuance..) de la configuration du BIOS (et notamment l'APM ou l'ACPI)
  • Parfois, il n'y a vraiment rien a faire... La machine en peut pas être utilsée sous EMC2. J'ai eu un cas avec un Acer avec processeur Core 2, dont la pauvreté des settings du BIOS ne m'a pas permis d'avoir ue config fonctionnelle. Ceci dit, cla ne m'est arrivé qu'une fois.

A titre d'exemple, voici quelques comptes rendus d'installation.

Son mon pc fixe (récent), j'ai du :

  • Configurer dans le bios Speedstep : Disabled (dévalide le changement de vitesse de processeur en fonction de la charge)
  • Configurer dans le bios C1E Support : Disabled (plus de suspend to ram)
  • Configurer dans le bios Southbridge : Disable audio controller
  • Configurer dans le BIOS le port parallèle en mode 'EPP' (Enhanced parallel port)
  • Appliquer le patch SMI aux fichier de config EMC2

Temps de latence Max: 10 000

Sur un vieux portable ACER à base de Pentium Mobile 1.7Ghz, j'ai du :

  • Mettre à jour le Bios
  • Configurer dans le BIOS le port parallèle en mode 'EPP' (Enhanced parallel port)
  • Mettre l'option 'lapic' sur la ligne de démarrage du kernel
  • Appliquer le patch SMI aux fichier de config EMC2

Temps de latence Max: 10 000

Sur un vieux portable IBM R31, à base de Pentium mobile 1.4Ghz, j'ai du :

  • Mettre à jour le BIOS
  • Configurer dans le bios Speedstep : Disabled (dévalide le changement de vitesse de processeur en fonction de la charge)
  • Dans le bios, désactiver les profils de gestion d'énergie en mettant le processeur toujours au maximum de sa fréquence
  • Configurer dans le BIOS le port parallèle en mode 'EPP' (Enhanced parallel port)
  • Appliquer le patch SMI aux fichier de config EMC2
  • Passer en VESA

Temps de latence Max: 25000

Carte graphique

Si "latency test" chargé, vous constatez que vous passez d'une valeur faible (< 20000) à une valeur très grande (>>>2 000 ) en attrapant une grande fenètre et en la secouant avec la souris, alors c'est que votre carte graphique est l'un des problèmes. Pour corriger ce point, passer en mode VESA (décrit ci dessus). Cela ne corrigera probablement pas tout, mais vous devriez au moins pouvoir à nouveau secouer vos fenêtres ... sans faire augmenter le temps de latence. A noter que vous pouvez également tenter de changer la carte graphique si vous en avez une en stock, mais à votre place je ferai ceci qu'à la fin, une fois que tout marche, pour optimiser. En effet, la désactivation du VESA et le changement de la carte graphique feront soit 'tout macher', soit 'retomber en panne' un système fonctionnel. De plus, le passage en mode VESA corrige à tous es coups les problèmes graphiques...

Optimisation du BIOS

Je n'ai que peu creusé cette piste, mais un ami a eu un certain succès en le faisant. Néanmoins, je met les informations ci dessous 'sous toute réserve' et me ferai un plaisir de compléter avec vos commentaires.

Il est possible que la désactivation de l'ACPI , ou de l'APM, ou des deux corrige le problème. Il faut essayer.... et relancer le "latency test". Il faut aussi creuser les pistes de la désactivation des fonctions de suspension, de changement dynamique de la fréquence du processeur, etC.. La doc d'EMC2 se révèle précieuse : http://wiki.linuxcnc.org/emcinfo.pl?TroubleShooting

Apparemment, il est serait possible de le faire également sans changer les paramètres du BIOS, seulement en passant des options sur la ligne de démarrage du noyau:

  • acpi=off ou noacpi pour désactiver l'acpi,
  • apm=off ou noapm pour d'ésactiver l'Advanced Power Management
  • noapic pour désactiver l'Advanced Priority Interrupt Controller
  • nolapic pour désactiver le local APIC

Plus d'info sur les options kernel de la 10.04 ici: [https://help.ubuntu.com/community/BootOptions#Common_Kernel_Options |https://help.ubuntu.com/community/BootOptions#Common_Kernel_Options]

Installation du patch SMI

La désactivation des interruptions SMI est considérée comme dangereuse. Je l'ai toutefois pratiquée de façon systématique sans aucun problème (sauf sur une seule machine, un serveur Supermicro qui n'avait tout simplement pas de SMI...). A chaque fois l'amélioration a été spectaculaire.

Installer le patch SMI pour corriger les problèmes de temps réel sur EMC2. Attention, ceci n'est pas pour toutes les configs.. (source : http://wiki.linuxcnc.org/emcinfo.pl?FixingSMIIssues )

  • Editer /etc/emc2/rtapi.conf et remplacer
# List of realtime kernel modules to be loaded
if [ "3" = "3" ] ; then \
    MODULES="adeos rtai_hal rtai_ksched rtai_fifos rtai_shm rtai_sem rtai_math"
    RTAI=3
    MODPATH_adeos=
    MODPATH_rtai_hal=/usr/realtime-$(uname -r)/modules/rtai_hal.ko
    MODPATH_rtai_ksched=/usr/realtime-$(uname -r)/modules/rtai_ksched.ko
    MODPATH_rtai_fifos=/usr/realtime-$(uname -r)/modules/rtai_fifos.ko
    MODPATH_rtai_shm=
    MODPATH_rtai_sem=/usr/realtime-$(uname -r)/modules/rtai_sem.ko
    MODPATH_rtai_math=/usr/realtime-$(uname -r)/modules/rtai_math.ko

Par:

# List of realtime kernel modules to be loaded
if [ "3" = "3" ] ; then \
    MODULES="adeos rtai_hal rtai_ksched rtai_fifos rtai_shm rtai_sem rtai_math rtai_smi"
    RTAI=3
    MODPATH_adeos=
    MODPATH_rtai_smi=/usr/realtime-$(uname -r)/modules/rtai_smi.ko
    MODPATH_rtai_hal=/usr/realtime-$(uname -r)/modules/rtai_hal.ko
    MODPATH_rtai_ksched=/usr/realtime-$(uname -r)/modules/rtai_ksched.ko
    MODPATH_rtai_fifos=/usr/realtime-$(uname -r)/modules/rtai_fifos.ko
    MODPATH_rtai_shm=
    MODPATH_rtai_sem=/usr/realtime-$(uname -r)/modules/rtai_sem.ko
    MODPATH_rtai_math=/usr/realtime-$(uname -r)/modules/rtai_math.ko
  • Lancer ensuite l'EMC2 Latency test
  • Vérifier que le module est bien chargé. Vous devriez voir un rtai_smi dans la sortie suivante :
lsmod | grep rtai

rtai_smi                2057  0 
rtai_math              21406  0 
rtai_sem               21551  1 rtapi
rtai_fifos             20988  1 rtapi
rtai_sched            156719  3 rtapi,rtai_sem,rtai_fifos
rtai_hal              186236  4 rtapi,rtai_sem,rtai_fifos,rtai_sched

Outils additionnels

vi en mode couleur :

apt-get install vim