Archive de la catégorie ‘Planet Libre’

Mise en veille et Wifi

Lundi 2 août 2010

Aujourd’hui, je désire vous parler de la mise en veille (dite suspend-to-ram ou mode S3) sous Linux.

Dans un précédent article, j’avais évoqué un problème de configuration réseau lors d’un retour de mise en veille. Depuis la version 1.2 (Locris) de ma distribution Frugalware, la mise en veille fonctionne de façon acceptable sur ma machine. J’écris « de façon acceptable » car un problème subsiste: lors d’un retour de mise en veille, la configuration Wifi semble perdue. Cette perte est probablement due au mauvais rechargement du module ndiswrapper (pilote utilisée pour mon adaptateur Wifi). J’ai donc entrepris l’écriture d’un script shell permettant de résoudre ce problème. En voici le contenu :

#!/bin/sh

# Arrêt du réseau
service interfaces stop
modprobe -r ndiswrapper

# Mise en veille
echo -n mem > /sys/power/state

# Redémarrage du réseau
service interfaces start

Le but du script est assez simple : mettre en veille le système, et gérer le retour de mise en veille. La mise en veille est opérée par la partie centrale du script (echo -n mem …). L’opération clé de ce script est modprobe -r ndiswrapper. Elle permet de décharger le module ndiswrapper. Ainsi, lors du retour de la mise en veille et de la configuration du réseau, le module sera automatiquement et proprement rechargé.

Après avoir donné les droits d’exécution à ce script shell, il sera possible de l’exécuter en tant qu’utilisateur root.

Cependant, ma machine est un ordinateur portable, et je trouve pratique que le système se mette en veille lorsque je referme l’écran. Par ailleurs, le clavier de ma machine dispose d’une touche SUSPEND qui n’a, pour l’instant, aucun effet.

Pour améliorer cette situation, j’ai modifié le script du démon acpid, exécuté lorsqu’un évènement ACPI est généré. Il s’agit du fichier /etc/acpi/acpi_handler.sh. En voici le contenu :

#!/bin/sh # Default acpi script that takes an entry for all actions

IFS=${IFS}/
set $@

case « $1″ in
button)
case « $2″ in
power) /sbin/init 0
;;
sleep)
;;
lid)
;;
*) logger « ACPI action $2 is not defined »
;;
esac
;;
*)
logger « ACPI group $1 / action $2 is not defined »
;;
esac

Ainsi, lorsque le bouton « sleep » (touche SUSPEND) ou le bouton « lid » (une sorte d’interrupteur déclenché lorsque l’écran est refermé), le système sera mis en veille.

Grâce à tout cela, je dispose d’une mise en veille fonctionnelle et pratique. Bien entendu, je reste ouvert à vos remarques, suggestions et questions.

Clic de souris aléatoire

Dimanche 20 juin 2010

Dans des précédents billets, j’avais raconté le problème de clavier que je rencontre depuis deux versions de Frugalware (1.1/Getorin et 1.2/Locris) : de façon aléatoire, une simple pression d’une touche déclenche une répétition infinie de cette même touche.

Cette anomalie n’est pas critique puisque la répétition peut être arrêtée en appuyant sur une autre touche (Echap en particulier), mais elle peut engendrer une indisponibilité du système lorsque c’est une touche multimédia associée au lancement d’une application qui se répète. Dans ce cas, l’application est lancée à l’infini, le système devient inutilisable, et la seule solution consiste souvent à éteindre la machine de façon brutale (c’est-à-dire, bouton de l’ordinateur).

Ce que je n’avais pas encore raconté, c’est que j’avais également un problème de souris : le clic de souris n’était pas toujours pris en compte (environ 1 fois sur 3). Au début, je pensais que c’était plutôt un problème matériel (j’utilise cette souris depuis presque 10 ans) ou de batterie (c’est une souris sans-fil), jusqu’à ce que je fasse une découverte…

En cherchant sur Internet une solution à mon problème de clavier, je suis d’abord tombé sur une discussion sur le forum français de ArchLinux. Le problème décrit est exactement le même que le mien. L’anomalie a d’ailleurs été reportée, mais aucune solution ne semble avoir été trouvée puisque l’anomalie a été réouverte (à l’heure où j’écris ces lignes). C’est tout de même rassurant de voir que je ne suis pas le seul dans ce cas.

Puis, en continuant mes recherches, je suis tombé sur de nombreux forums qui expliquaient que le problème de clavier pouvait être lié à la configuration d’une souris PS/2, et qui proposaient, en guise de solution, de préciser le paramètre rate du module du noyau Linux psmouse.

J’ai en effet une souris PS/2 branché sur le port série via un adaptateur, et c’est bien le module psmouse qui est chargé lors du démarrage du système.

J’ai donc, comme proposé par ces forums, ajouté le paramètre suivant à la ligne de démarrage du noyau Linux (fichier /root/grub/menu.lst pour GRUB) :

psmouse.rate=40

Je dois avouer que je vois pas en quoi consiste ce paramètre, et en quoi il pourrait influer sur le clavier.

Quoi qu’il en soit, depuis ce changement, j’ai pu constaté encore avec dépit le problème du clavier, mais… la souris fonctionne maintenant beaucoup mieux ! Chaque clic est maintenant bien pris en compte par le système.

Il reste donc ce problème du clavier. Je dois encore chercher des solutions. J’espère que j’aurais la possibilité de décrire cette hypothétique solution dans un prochain billet.

Capture d’écran incluant le pointeur de la souris

Dimanche 9 mai 2010

Dans mon message précédent, j’avais parlé du thème par défaut du pointeur de la souris sous Frugalware 1.2 (Locris) et, dans les commentaires, on m’avait demandé une petite capture d’écran. J’avais répondu que je n’avais pas trouvé le moyen de faire une capture d’écran qui inclut le pointeur de la souris.

Je me suis alors lancé dans la recherche d’une solution à ce problème. Après de multiples lectures de forums et de blogs, j’ai trouvé deux outils disposant de la fonctionnalité voulue : Shutter et GIMP.

Ces deux logiciels sont bien évidemment disponibles sous forme de paquets pour Frugalware.

Mon choix s’est porté vers GIMP. Certains me diront surement que c’est un peu le canon pour tuer une mouche mais, Shutter étant un logiciel GNOME, je ne voulais pas installer toutes les dépendances liées à ce paquet.

Pour prendre une capture d’écran incluant le pointeur de la souris avec GIMP, il suffit de choisir l’entrée du menu Fichier > Créer > Capture d’écran… La fenêtre suivante apparait :

Capture d'écran de l'outil de capture d'écran de GIMP

Il suffit alors de sélectionner l’option Prendre une capture d’écran de l’écran entier, de cocher l’option Inclure le pointeur de la souris, de régler un délai et de cliquer sur le bouton Capturer. La capture d’écran se fera au moment du bip et le résultat apparaitra dans une fenêtre d’édition de GIMP.

On peut alors enregistrer le résultat dans le format que l’on souhaite.

Et voici, en guise d’exemples, quelques pointeurs du thème par défaut :

  • le pointeur normal Pointeur normal
  • le pointeur main Pointeur main
  • le pointeur d’atente Pointeur d'attente
  • le curseur de déplacement Pointeur de déplacement

Comme je le disais dans mon message précédent, je n’avais pas été emballé par ce thème aux premiers abords et puis, avec le temps, j’ai fini par m’y habituer, voire même, par les apprécier.

N’hésitez pas à me faire part de vos impressions dans les commentaires.

Mon passage à Frugalware 1.2 (Locris)

Dimanche 2 mai 2010

Cela fait maintenant quelques semaines que j’ai mis à jour ma distribution Frugalware de la version 1.1 (Getorin) vers la version 1.2 (Locris).

J’attendais beaucoup de cette nouvelle version car la version 1.1 m’avait apporté deux grands problèmes.

D’une part, j’avais un problème de mise en veille (dite suspend-to-ram ou mode S3). Lorsque j’exécutais la commande appropriée pour ce genre d’opération (echo -n mem > /sys/power/state), mon ordinateur se mettait bel et bien en veille mais, lors du réveil, le système semblait se bloquer, n’affichant qu’un écran noir avec un curseur clignotant. J’avais essayé d’analyser le problème pendant des heures, mais sans aucun succès.

D’autre part, j’avais également un problème de clavier. J’ai l’habitude d’utiliser les touches dites multimedia de mon clavier pour lancer mes applications usuelles comme sylpheed, firefox et liferea. De temps en temps, le lancement d’une de ces applications déclenchait une charge système importante. Le curseur de la souris restait figé. Le système ne réagissait plus. Bref, tous les indicateurs passaient au rouge. Lorsque j’arrivais (difficilement) à accéder au terminal (Ctrl+Alt+F1), à me connecter et à lister les processus, je constatais des dizaines de processus correspondant à l’application dont j’avais demandé le lancement. Intriguant… Puis, un jour, j’ai voulu supprimer un courriel dans sylpheed, en pressant simplement la touche Suppr. Tout d’un coup, sylpheed s’est mis à supprimer tous les courriels du dossier (je sais maintenant pourquoi le dossier Corbeille existe…). Suite à la répétition de quelques désagréments similaires, j’avais compris peu à peu que tous ces problèmes étaient liés à un même problème : dans certaines circonstances (vraisemblablement lorsque le système était surchargé), la pression d’une touche du clavier semblait se répéter à l’infini. Cependant, malgré de nombreuses recherches, je n’avais jamais pu trouvé la cause de ce comportement.

Voilà pourquoi j’attendais beaucoup Frugalware 1.2 (Locris), espérant que le passage à cette version me fasse oublier ces deux désagréments.

La mise à jour s’est déroulée, comme d’habitude, sans aucun soucis. J’ai pour cela suivi les instructions de mise à jour données par l’équipe de développement, mais adaptées pour pallier la petite taille de mon disque dur.

Dès le redémarrage, je constate le nouveau fond d’écran, plutôt sympa. Puis je me connecte et là, je constate que le thème du pointeur a également changé. Cela est probablement dû au changement de version de X.org. Certains pointeurs (et plus particulièrement le pointeur normal) me paraissaient a priori « vieillottes ». J’étais un peu décontenancé et je prévoyais de changer tout cela. Finalement, après quelques jours, je m’y suis habitué et j’ai décidé de garder ce thème.

J’ai également testé la mise en veille, et j’ai été très content de voir que le système ne s’ai pas bloqué lors du retour de veille. Mais j’ai un peu déchanté lorsque j’ai vu que le pilote ndiswrapper (pilote de mon adaptateur Wifi) semblait ne pas se réinitialiser correctement lors du retour en veille (d’après ce que je vois dans le fichier /var/log/messages).

De retour de veille, je suis donc obligé de décharger le pilote (modprobe -r ndiswrapper) puis de redémarrer le service réseau (service interfaces restart). Mais il ne s’agit pas du problème le plus grave.

En effet, l’initialisation de l’interface Wifi ne fonctionne pas comme auparavant. Le client DHCP (dhcpcd) ne peut pas récupérer une adresse IP de mon routeur et tombe en time out. En regardant d’un peu plus près la configuration de l’interface Wifi (iwconfig wlan0), je remarque que ma clé WEP est correctement renseignée, mais que le ESSID reste à « any/off ». Il faut alors attendre quelques minutes (durée très variable) avant que le ESSID apparaisse, comme par magie, dans la configuration de l’interface Wifi. J’ai passé beaucoup de temps à chercher la cause de ce problème et j’ai essayé de nombreuses solutions (désactivation de IPv6, réinstallation de ndiswrapper et du pilote de l’adaptateur, …) mais cela n’a rien réglé. Je me suis finalement résigné à attendre les quelques minutes d’initialisation de l’adaptateur. Pour cela, j’ai ajouté l’option suivante à mon fichier /etc/sysconfig/network/default :

dhcp_opts = -b

Cette option ordonne au client DHCP de passer en arrière plan avant de récupérer une adresse IP. Cela a deux avantages :

  1. Le démarrage du système est plus rapide car il ne bloque plus sur l’obtention d’une adresse IP à partir d’une (hypothétique) connexion Wifi;
  2. Le client DHCP scrute l’interface Wifi et, lorsque la connexion est établie, demande l’obtention de l’adresse IP.

Concrètement, le temps que le système démarre, que me connecte sur mon système et que je lance mon navigateur, la connexion Wifi est établie et l’adresse IP est obtenue. Cela est satisfaisant mais je ne serai pas étonné d’avoir des problèmes dans le futur.

Pour ce qui est du clavier, le problème est malheureusement encore présent, mais il me semble plus rare.

En résumé, mon passage à Frugalware 1.2 s’est passé sans encombre. Il m’a permis de régler le problème de retour de veille mais l’interface Wifi semble instable et je dois encore analyser les problèmes d’initialisation de cette interface (en particulier lors du retour de veille). Si vous avez des idées, je vous remercie de m’en faire part dans les commentaires.

Contrôle de volume sous Linux

Dimanche 21 mars 2010

Ce week-end, je souhaitais simplifier mon contrôle de volume du son (mixer en anglais) sous Linux, et j’aimerais vous faire profiter de mon humble expérience.

Depuis quelques années, j’ai l’habitude d’utiliser l’utilitaire aumix pour contrôler le volume du son. J’apprécie cet outil pour sa simplicité et son efficacité. Comme expliqué par le site officiel du projet, l’outil est disponible pour différentes interfaces, dont une interface graphique pour la console (en Ncurses) et une interface graphique pour X (en GTK+).

Mais voilà, le paquet aumix fourni par ma distribution Linux Frugalware  ne présente que l’interface grahique pour console. Préférant l’interface graphique pour X, j’ai créé un paquet Frugalware pour avoir un aumix avec l’interface désirée.

Et voilà le résultat :

Aumix sous Linux
Si vous êtes intéressé par le paquet, n’hésitez pas à me le signaler.

Je profite également de ce message pour donner une petite astuce. Si, comme moi, vous souhaitez pouvoir contrôler le volume du son via votre clavier, vous pouvez assigner des touches (ou des combinaisons de touches) aux commandes suivantes :

aumix -v +5

aumix -v -5

Ces commandes augmenteront/diminueront de 5% le volume principal du son.

Alternativement, vous pouvez aussi utiliser les commandes suivantes :

amixer set Master 5%+

amixer set Master 5%-

Ces commandes auront le même effet, mais utiliseront amixer, le contrôleur de volume officiel du projet ALSA (projet de gestion des cartes son sous Linux).

J’espère que cette petite astuce pourra être utile.

 

Le gestionnaire de fenêtres Ion3

Lundi 22 février 2010

Aujourd’hui, je vais vous présenter un logiciel que j’utilise déjà depuis un certain temps : Ion3. Cela fait déjà longtemps que je souhaite écrire un article à ce sujet. Voilà enfin que je me décide à le faire.

Ion3 est un gestionnaire de fenêtres (window manager en anglais) pour X, le système d’affichage généralement utilisé sous Linux. C’est donc un logiciel qui s’occupe des fenêtres des applications graphiques, en leur donnant un contour, en permettant à l’utilisateur de les déplacer, de les redimensionner, etc.

Vous me direz qu’il existe des quantités de gestionnaires de fenêtres. Et vous avez raison. Mais Ion3 a la particularité d’être un gestionnaire de fenêtres en mosaïque et à onglets (tiling tabbed window manager en anglais). Que cela veut-il dire ?

Dans un gestionnaire de fenêtres en mosaïque, vous découpez votre écran en cadres (frames), que vous disposez comme bon vous semble. Cette disposition est persistante, c’est-à-dire, elle sera conservée de session en session. Vous pouvez configurer plusieurs dispositions, appelées espaces de travail (workspaces). Au départ, les cadres sont vides. Puis vous placez les fenêtres de vos applications dans ces cadres. Les fenêtres seront alors automatiquement maximisées. De ce fait, aucun espace n’est perdu et l’occupation peut être facilement optimisée.

Mieux vaut des bonnes captures d’écran plutôt que de longs discours.

Mon espace de travail 1

Il s’agit de l’espace de travail que j’utilise pour développer. L’écran est découpé en deux cadres. A gauche, je place un terminal me servant à compiler, exécuter. A droite, je place un éditeur de texte.

Mon espace de travail 2

C’est un espace de travail à quatre cadres, où j’y place différentes petites applications, comme des terminaux ou un mixer.

Mon espace de travail 3

Cet espace de travail ne présente qu’un seul et unique cadre. C’est l’espace de travail idéal pour un navigateur.

Mon espace de travail 4

Cet espace de travail est assez similaire à l’espace de travail 1, si ce n’est que le cadre de gauche est moins large que celui de droite. Je l’utilise pour des applications qui suivent le modèle « boîte à outils » (une fenêtre principale peu large, ouvrant des fenêtres de travail secondaires), comme Pidgin ou Gimp.

Dans un gestionnaire de fenêtres à onglets, un même cadre peut contenir plusieurs fenêtres. De plus en plus d’applications implémentent ce concept. Mozilla Firefox a été l’un des premiers à le mettre en place. Cependant, je considère que cette fonctionnalité n’a été mise en place que pour combler la faiblesse des gestionnaire de fenêtres. Toutes ces applications à onglets proposent de gérer les fenêtres, en lieu et place du logiciel responsable de cette tâche, le gestionnaire de fenêtres.

Ainsi, avec Ion3, toutes les applications deviennent « à onglets ». Mieux, vous pouvez placer des applications  différentes dans un même groupe d’onglets. Voici une capture d’écran :

Mon espace de travail 3 avec onglets

On y voit, dans un même groupe d’onglets, trois applications : Sylpheed, Mozilla Firefox (deux onglets) et Liferea.

Enfin, Ion3 est aussi bien manipulable avec la souris qu’avec le clavier. Il est, par exemple, possible de déplacer une fenêtre d’un cadre vers un autre via un simple drag’n drop. Autre exemple : lorsqu’on presse les touches Alt+Entrée sur une fenêtre, Ion3 va automatiquement créer un espace de travail temporaire, dans lequel il va placer et maximiser la fenêtre. Très pratique !

Pour ceux qui désirent installer Ion3, je vous invite à chercher le paquet disponible pour vos distributions. Pour Frugalware, j’ai préparé un paquet mais il est incomplet et je ne l’ai pas encore publié. N’hésitez donc pas à me contacter si vous êtes intéressés.

Page d’accueil du projet Ion

Une introduction à Ion3 (en français)

Installer la clé Hercules Wireless N USB mini puis se connecter à un réseau Wifi sous Linux

Dimanche 10 janvier 2010

A Noël, on m’a offert la clé Hercules Wireless N USB mini (nom de code : HWNUm-300). Il s’agit une clé USB, très petite (d’où le nom « mini »), de couleur noire, et permettant de se connecter à un réseau Wifi.

Je me suis alors attelé à installer cette clé sur mon système Linux (Frugalware 1.1 Getorin).

J’insère d’abord délicatement la clé en croisant des doigts pour que tout fonctionne correctement. Après quelques instants, je lance ifconfig en ligne de commande. Je m’aperçois avec déception qu’aucune nouvelle interface réseau n’a été créée.

Je lance ensuite lsusb, et là, bonne nouvelle ! Un nouveau périphérique apparaît :

Bus 002 Device 002: ID 06f8:e031 Guillemot Corp.

J’en déduis que la clé USB a bien été reconnue mais que la puce Wifi n’a pas été détectée. J’en conclus que je vais devoir charger le pilote de la puce par moi-même.

Pour cela, je commence par déterminer quelle est la puce utilisée par cette clé. Après une longue recherche, je découvre qu’il s’agit d’une Realtek RTL 8192 SU (RTL8192SU).

J’essaie ensuite de trouver un pilote Linux adéquate à cette puce. Quelques recherches m’amènent à la conclusion suivante: aucun pilote n’est disponible pour la version du noyau Linux (2.6.30) de mon système.

Je me résigne alors à utiliser l’outil ndiswrapper, formidable outil en l’état, mais qui oblige à utiliser le pilote propriétaire pour MS Windows…

Au départ, j’envisage d’utiliser le CD fourni avec la clé USB pour récupérer ce pilote mais la seule chose disponible est un fichier .exe, uniquement exploitable sous MS Windows. Je trouve finalement les pilotes MS Windows sur cette page. Je télécharge l’archive ZIP, la décompresse. J’y trouve le fichier net8192su.inf dans le répertoire WinXP.

Je suis ensuite la page Wiki sur ndiswrapper écrite par la communauté francophone de Frugalware. Toutes les commandes s’exécutent avec succès. Je relance ifconfig et je constate avec joie qu’une nouvelle interface réseau a été créée: wlan0.

Il me reste à configurer ma connexion un réseau Wifi. Pour cela, je ne m’embête pas trop et lance l’outil netconfig, fourni par la distribution Frugalware. Cet outil fonctionne comme une sorte de guide. Il suffit de répondre aux questions posées. A la fin, l’outil va réécrire le fichier /etc/sysconfig/network/default. Prenez donc soin d’en faire une copie de sauvegarde si vous voulez revenir à votre ancienne configuration réseau.

Une fois cela fait, j’ai relancé le service interfaces, qui s’occupe de réinitialiser les interfaces réseau :

service interfaces restart

Un avertissement m’indique que l’adresse par défaut a été utilisée. En relançant ifconfig, j’en ai la confirmation mais je m’aperçois également que mon interface réseau filaire (eth0) n’a pas été désactivée. J’aurais probablement dû arrêter le service interfaces avant de reconfigurer les interfaces réseau avec netconfig

Je décide alors de redémarrer mon système, et là, ô miracle, l’interface réseau wlan0 est pleinement fonctionnelle. Je peux alors me libérer du câble réseau et profiter du surf sur Internet en toute liberté.

J’espère que ce petit retour d’expérience pourra être utile à d’autres personnes. Les commentaires sont ouverts pour tout renseignement complémentaire.

1234