Arduino, Gedit et Gnome-Builder

Arduino fournit une IDE nommé simplement « Arduino IDE », disponible dans les dépôts Debian :

apt install arduino

L’application permet de coder, compiler et téléverser le code sur les micro-contrôleurs facilement. Mais depuis un certain temps, Arduino IDE est délaissé au profit de Arduino Studio , son futur remplaçant qui n’est pas encore prêt.

En attendant, si l’on souhaite pallier les petits défauts d’Arduino IDE, il faut passer par un éditeur de texte extérieur. En effet, le logiciel ne propose pas de numérotation des lignes, alors que lorsqu’une erreur se glisse, le compilateur indique bien un numéro de ligne ( bug ). Le logiciel ne propose pas de mode nuit, pour limiter la fatigue des yeux. Et le fait devoir relancer l’application et donc l’éditeur à chaque branchement, débranchement de la carte est aussi un peu ennuyeux.

Gnome-Builder et Gedit comme éditeurs extérieurs :

Afin de laisser le choix, le logiciel Arduino permet de choisir un éditeur extérieur. Il faut pour cela aller dans Fichier > Préférences et cocher « Utiliser un éditeur externe ». Une fois cela fait la zone d’édition se grise, et l’application rechargera la dernière version du code, que vous aurez rédiger avec un autre éditeur, à chaque nouvelle compilation.

Arduino demande juste que le fichier .ino soit placé dans un dossier du même nom (~/projet01/projet01.ino).

Personnellement comme j’utilise Gnome, j’ai choisi Builder pour servir d’éditeur. Le logiciel est apparu avec Gnome 3.16, et j’utilise la 3.18. il est donc plutôt récent, mais il progresse rapidement. Il va au-delà des possibilités de Gedit, même si celui-ci peut très bien faire l’affaire.

Gnome-builder et Gedit versus .ino et .pde

Gnome-builder et Gedit reconnaissent les fichiers .ino et .pde comme du code C et applique la coloration syntaxique qui va avec. Mais le code Arduino, reprends aussi des éléments du langage C++ et ajoute des fonctions de base spécifique notamment pour la communication sur le port série (Serial.print).

Afin d’avoir quelque chose de plus parlant, j’ai créé un fichier .lang spécifique. Le fichier pointe sur le c.lang et cpp.lang et ajoute les mots clés issus du monde Arduino. Vous pouvez le trouver ici : /kaochen/GtkSourceView-Arduino

Les explications d’installation sont fournies dans le README.

Le fichier reprend les éléments de référence : /en/Reference/HomePage mais pas ceux des librairies externes. Je n’ai pas souhaité trop encombrer le fichier .lang. De plus ce fichier a une influence sur l’auto-complétion, je préfère voir à l’usage.

Conclusion :

J’ai placé le fichier sur Github afin de le partager un maximun, d’avoir des retours d’expérience et de le faire évoluer en conséquence, donc n’hésitez pas si vous avez des remarques. En espérant que cela puisse servir à quelqu’un d’autre.

Arduino : logiciel et contrôle de la carte :

Je me suis lancé à la découverte du monde Arduino. Afin de démarrer sur de bonne base, je me suis commandé un Arduino Starter Kit en Français. En plus de contenir, une carte Arduino Uno, un jeu de composant de base, il comprend aussi un bouquin d’exercice très bien écrit et très pédagogique. Cela permet de découvrir en douceur la fabrication d’un circuit et la programmation d’un micro-contrôleur.

Un paquet arduino existe dans Debian et il embarque tout le nécessaire pour programmer et contrôler les différentes cartes.

apt install arduino

CaptureArduino

La carte dispose d’un port USB pour pouvoir interagir avec le micro-contrôleur. Je n’ai pas réussi à faire fonctionner la carte sur un USB 3 mais en le branchant en USB 2, le noyau arrive à voir la carte :

dmesg | tail
[ 280.694367] usb 3-10: new full-speed USB device number 10 using xhci_hcd
[ 280.824363] usb 3-10: New USB device found, idVendor=2a03, idProduct=0043
[ 280.824366] usb 3-10: New USB device strings: Mfr=1, Product=2, SerialNumber=220
[ 280.824367] usb 3-10: Product: Arduino Uno
[ 280.824367] usb 3-10: Manufacturer: Arduino Srl
[ 280.824368] usb 3-10: SerialNumber: 85xx4383xxxxxxxxxx
[ 280.824544] usb 3-10: ep 0x82 - rounding interval to 1024 microframes, ep desc says 2040 microframes
[ 280.824926] cdc_acm 3-10:1.0: ttyACM0: USB ACM device

dmseg permet de voir la mémoire tampon des messages du noyau, tail n’affiche que la fin de la liste en supposant que la carte a été branché au dernier moment.

Ici la carte apparaîtra sous le nom ttyACM0 dans le dossier /dev et si j’en liste le contenu, je vois ma carte qui appartient au groupe dialout .

ls -l /dev/tty*
crw-rw---- 1 root       dialout 166,  0 nov.   6 17:38 /dev/ttyACM0

Je m’ajoute donc au groupe dialout afin de pouvoir utiliser la carte facilement depuis le logiciel arduino sans passer par root ou sudo.

usermod -a -G dialout Nom_Utilisateur

Certaine carte peuvent nécessiter plutôt l’ajout au groupe tty ou uucp .

Une fois l’ajout fait, je me reconnecte à ma session et cette fois-ci je vois bien ma carte depuis le logiciel Arduino directement: CarteSerie

Voilà, la communication peut se faire par port série, dans les deux sens, soit en télé-versant sur la carte le code compilé, soit en écoutant le port et en affichant le résultat :

Arduino Port Serie

Bref tout ça pour dire que ce n’est pas vraiment compliqué et que j’ai été agréablement surpris par la facilité pour construire et programmer son propre circuit.

Adobe Flash à jour sous Debian :

Depuis quelque temps, il est possible de ne plus rester coincé à la version 11.2 du lecteur flash d’Adobe. Le plug-in étant une passoire pour la sécurité, il est intéressant de pouvoir le mettre à jour régulièrement.

logo flash Pour faire simple :

  • Adobe publie une nouvelle version de son lecteur flash.
  • Google reconditionne le plug-in flash dans le format « pepper » pour Chrome.
  • En installant le paquet pepperflashplugin-nonfree on va chercher dans la dernière version de Chrome le plug-in flash sous forme pepper afin de pouvoir l’utiliser dans Chromium.
  • et enfin en installant browser-plugin-freshplayer-pepperflash on permet à Firefox/Iceweasel d’utiliser aussi ce dernier.

On peut vérifier la version de son lecteur flash en allant sur cette page : /software/flash/about/ . Il faudra relancer le navigateur après chaque modification pour constater un changement.

  1. Installation du pepper flash :

    On installe le paquet pepperflashplugin-nonfree disponible dans les dépôts contrib depuis wheezy-backports et supérieurs.

    apt install pepperflashplugin-nonfree

    Cela permet de profiter de flash depuis Chromium. Cette manipulation est nécessaire parce que le code téléchargé n’est pas sous licence-libre, il n’est donc par embarqué dans Chromium par défaut.

    Ensuite on installe le paquet browser-plugin-freshplayer-pepperflash qui permet à Firefox/Iceweasel de l’utiliser :

    apt install browser-plugin-freshplayer-pepperflash

    Ce paquet est nouveau dans Debian, il était nécessaire auparavant de passer par une compilation. Cela facilite donc grandement la tâche.

    Il est disponible dans les dépôts contrib depuis jessie-backports et supérieurs.

  2. Mettre à jour le lecteur flash :

    Le paquet pepperflashplugin-nonfree va chercher la dernière version du lecteur flash lorsqu’il a été installé pour la première fois.

    Une fois installé, il faudra passer par deux lignes de commandes pour vérifier les mises à jours et les installer si nécessaire :

    Donc pour voir si une version plus récente est disponible :

    update-pepperflashplugin-nonfree --status
    Flash Player version installed on this system : 18.0.0.233
    Flash Player version available on upstream site: 19.0.0.207

    puis pour l’installer :

    update-pepperflashplugin-nonfree --install
  3. Conclusion :

    En attendant de voir disparaître flash des différents site Web, cette méthode permet de pallier le manque d’effort d’Adobe pour les plate-formes Linux.

    Liens :

APT : Début de simplification

Grande parmi les anciens, l’application APT commence à mixer les possibilités d’ apt-get et d’ apt-cache sous la même commande apt . L’évolution est déjà présente dans Debian Jessie et permet de retrouver sous la même bannière des fonctions disponibles dans les autres commandes d’APT. Le but étant d’avoir une syntaxe plus simple et une meilleure lisibilité des résultats, notamment avec de la couleur.

Donc :

apt install blender

au lieu de :

apt-get install blender

ou encore

apt show blender

au lieu de :

apt-cache show blender

La commande apt simplifie aussi le listing de paquet avec :

apt list
apt list --installed
apt list --upgradable

pour ces commandes il fallait souvent passer par dkpg et la bonne option : dpkg-query -l pour obtenir le même résultat.

Donc si on s’en réfère au man d’apt 1.0 :

apt (Advanced Package Tool) est un outil en ligne de commande pour
gérer les paquets. Il fournit une interface en ligne de commande au
système de gestion de paquets. Voir également apt-get(8) et apt-
cache(8) pour davantage d'options en ligne de commande.

list
La commande list est utilisée pour afficher une liste de paquets.
Il gère les motifs du shell pour chercher les noms de paquets,
ainsi que les options suivantes : --installed, --upgradable,
--all-versions.

search
La commande search recherche le(s) terme(s) donnée(s) et affiche
les paquets correspondants.

show
La commande show affiche les informations sur le(s) paquet(s)
donné(s).

install
La commande install est suivie du nom de un ou plusieurs paquets
dont l'installation ou la mise à jour est souhaitée.

On peut choisir d'installer une version particulière d'un paquet en
faisant suivre son nom par un signe égal et par la version. Cette
version sera recherchée et l'installation sera demandée. On peut
aussi choisir une distribution particulière en faisant suivre le
nom du paquet par une barre oblique et par le nom de la
distribution ou de l'archive (stable, testing, unstable).

remove
La commande remove est identique à la commande install, les paquets
étant alors supprimés et non installés. Veuillez noter que la
suppression d'un paquet en laisse les fichiers de configuration sur
le système. Quand un signe plus est accolé (sans espace
intermédiaire) au nom du paquet, le paquet est installé au lieu
d'être supprimé.

edit-sources
La commande edit-sources permet de modifier le fichier sources.list
et fournit des vérifications de sécurité de base.

update
La commande update permet de resynchroniser un fichier d'index
répertoriant les paquets disponibles et sa source.

upgrade
La commande upgrade permet d'installer les versions les plus
récentes de tous les paquets présents sur le système en utilisant
les sources énumérées dans /etc/apt/sources.list. De nouveaux
paquets seront installés, mais les paquets installés ne seront
jamais supprimés.

full-upgrade
La commande full-upgrade remplit la même fonction que upgrade mais
peut aussi supprimer des paquets installés si cela est nécessaire
pour résoudre un conflit entre des paquets.

Voilà pour le moment, mais les versions suivantes, notamment en vue pour Debian Stretch, proposeront des possibilités supplémentaires, comme l’ auto-remove et l’ auto-clean . ( Annonce APT 1.1 )

Même si cette nouvelle syntaxe prendra un peu de temps à rentrer dans les mœurs, il est intéressant d’y jeter un coup d’œil, notamment pour apt list –installed qui facilite bien les choses.

De plus apt à l’amabilité de prévenir de sa jeunesse :

WARNING: apt does not have a stable CLI interface yet. Use with caution in scripts.

(Attention : apt n’a pas encore une interface CLI stable. A utiliser avec précaution dans les scripts.)

Cette mention est une précaution et devrait disparaître, à ne pas en douter, dans les prochaines versions.

Affaire à suivre donc…

Compiler SimpleScreenRecorder

SimpleScreenRecorder (SSR) est un outil qui permet de capturer en vidéo son bureau.
Le logiciel est complet et permet en quelques clics d’enregistrer tout ou partie de son écran avec l’entrée sonore de son choix.

Logo SSR
SSR est plutôt récent, et il n’est pas encore disponible dans les dépôts Debian, voici comment le compiler et l’installer facilement :

  1. Installation des dépendances :

    dpkg --add-architecture i386
    apt update
    apt install build-essential pkg-config qt4-qmake libqt4-dev libavformat-dev  libavcodec-dev libavutil-dev libswscale-dev libasound2-dev libpulse-dev libjack-jackd2-dev libgl1-mesa-dev libglu1-mesa-dev libx11-dev libxfixes-dev libxext-dev libxi-dev g++-multilib  libx11-6 libxext6 libxfixes3 libxfixes3:i386 libglu1-mesa:i386

    Un peu de liaisons entre les libs :

    cd /usr/lib/i386-linux-gnu
    ln -s libGL.so.1 libGL.so
    ln -s libGLU.so.1 libGLU.so
    ln -s libX11.so.6 libX11.so
    ln -s libXext.so.6 libXext.so
    ln -s libXfixes.so.3 libXfixes.so
    ldconfig
  2. Compilation :

    cd
    mkdir simplescreenrecorder
    cd simplescreenrecorder
    wget /MaartenBaert/ssr/archive/master.tar.gz
    tar -zxvf master.tar.gz
    cd ssr-master
    ./simple-build-and-install
  3. Utilisation :

    Si vous êtes arrivés au bout de la compilation, vous devriez avoir un raccourci dans votre lanceur d’application, ou bien, vous pourrez le lancer  juste avec cette commande :

    simplescreenrecorder

    Pour l’utilisation, il suffit de se laisser porter par les indications, l’outil reste simple mais très complet. Ecran SSR 1 Ecran SSR 2

  4. Le mot de la fin :

    Voilà un logiciel plutôt simple pour enregistrer son bureau, en espérant bientôt le trouver dans les dépôts de Debian directement.

Finaliser l’installation de Jessie

Suite à mon billet précédent , Debian est maintenant déployée sur ma machine, mais à mon goût il reste incomplet, voici donc, quelques trucs à faire après une installation toute fraîche :

  1. Ajouter les dépôts contrib et non-free à son sources.list.

    Le sources.list référence l’ensemble des dépôts sur lesquels on veut pourvoir aller chercher des paquets. Par défaut, le sources.list de Debian ne présente que les dossiers des dépôts contenant des paquets libres. Les paquets propriétaires, dont les codes sources ne sont pas fournis, se trouvent dans non-free, contrib hébergeant des paquets libres mais qui peuvent avoir besoin de paquet situé dans non-free pour fonctionner. Personnellement j’ai 3 paquets non-free et 6 paquets contribs d’installés pour 3000 paquets entièrement libres.

    On édite le fichier sources.list avec l’application de son choix.

    gedit /etc/apt/sources.list
    

    puis on rajoute la mention contrib et non-free aux lignes :

    deb http://http.debian.net/debian jessie main contrib non-free
    deb-src http://http.debian.net/debian jessie main contrib non-free
    
    deb http://http.debian.net/debian jessie-updates main contrib non-free
    deb-src http://http.debian.net/debian jessie-updates main contrib non-free
    
    deb http://security.debian.org/ jessie/updates main contrib non-free
    deb-src http://security.debian.org/ jessie/updates main contrib non-free

    Et enfin, on met à jour la liste des paquets disponibles avec la commande :

    apt update

    lien : /fr/SourcesList

  2. Mettre à jour le microde de son CPU :

    Une fois que l’on a activé les dépôts non-free, on peut mettre à jour le microde/firmware de votre processeur.
    On vérifie la version :

     cat /proc/cpuinfo | grep -i microcode

    Puis pour des processeurs AMD :

    apt install amd64-microcode

    Ou pour des processeurs Intel :

    apt install intel-microcode

    Le changement sera visible au prochain démarrage.

    Lien : /fr/Microcode

  3. Activation des pilotes graphiques libres :

    Les pilotes libres de cartes graphiques fonctionnent souvent très bien, il n’est pas nécessaire de se jeter sur les pilotes propriétaires pour que cela fonctionne correctement. Les pilotes propriétaires peuvent proposer plus de fonctionnalités notamment 3D mais apportent souvent plus d’instabilités et de bugs pas toujours facile à détecter. Croyez-en mon expérience, fuyez les pilotes propriétaires, pour avoir plus de tranquillité.

    Première étape, connaître sa carte :

    lspci -v | grep VGA

    Qui ici m’indique la présence d’une carte graphique Intel :

    00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller

    Afin de savoir quel pilotes j’utilise, je regarde le résultat de la commande glxinfo :

    glxinfo | grep -i opengl

    notamment les premières lignes :

    OpenGL vendor string: Intel Open Source Technology Center OpenGL renderer string: Mesa DRI Intel(R) Haswell Desktop OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.3.2 OpenGL core profile shading language version string: 3.30

    Ici, je peux voir que j’utilise le pilote Mesa (libre) sur une carte Intel et que ma machine peut gérer de l’OpenGL 3,3.
    Si la mention llvmpipe est présente, c’est que l’OS utilise le CPU et non le GPU pour calculer l’affichage. Cela peut être normal pour une machine virtuelle, mais pour une machine physique disposant d’une carte radeon, il faudra ajouter le paquet firmware-linux-nonfree afin que la carte soit bien prise en compte.

  4. Installer le plug-in flash :

    Le plug-in flash n’est pas un cadeau, notamment en termes de sécurité, il est conseillé de le fuir si possible mais si vous n’avez pas le choix :

    apt-get install flashplugin-nonfree 

    ou alors pour avoir une version plus récente : /fr/Freshplayerplugin

  5. Monter automatiquement les partitions EXT 4 à chaque démarrage :

    Créer un point de montage:

    mkdir /media/Documents

    Lui donner les droits du user courant.

     chown user:user /media/Documents/

    Trouver l’UUID de la partition que l’on souhaite monter

    ls -l /dev/disk/by-uuid

    On édite le fichier fstab

    gedit /etc/fstab

    Et on y ajoute une ligne en combinant UUID et point de montage

    UUID=df566ec1-f2c3-4453-b5de-04d19ca29a2f /media/Documents          ext4    defaults        0       2

    Une fois enregistré, on monte la partition sans même redémarrer.

    mount -a
  6. Activer le verrouillage numérique au démarrage :

    apt install numlockx

    Et voilà, c’est un bon début, ensuite on hésite pas à consulter la documentation et les forums pour en savoir plus:

Installer Debian 8 Jessie

L’installation de Debian est plus triviale que ce l’on pense, il faut juste savoir un peu ce que l’on souhaite faire avant. En effet, Debian se veut universelle et ne souhaite pas discriminer les possibilités d’utilisations. Elle peut donc être autant un bureau, qu’un serveur, qu’une machine virtuelle ou bien tout à faire autre chose. Voici ici mes choix pour en faire un ordinateur de bureau : Debian Jessie

  1. Trouver l’image de Jessie :

    Personnellement j’utilise une image d’installation par Internet (netinst). Elle est minimaliste (247Mo), nécessite une connexion à Internet mais permet d’installer facilement le ou les interfaces de son choix : https://www.debian.org/distrib/netinst
    Adepte du 64 bits, je jette mon dévolu sur la dernière image disponible : debian-8.1.0-amd64-netinst.iso

  2. Copier l’image sur une clé :

    Une fois en possession de l’image, je déploie l’image sur clé USB. Soit avec l’aide d’ Unetbootin , soit en ligne de commande directement, merci dd.

    Je me place dans le dossier de téléchargement :

    cd ~/Téléchargement/

    Je vérifie le chemin de la clé, parce que dd permet d’écraser facilement la mauvaise partition :

    fdisk -l

    Ma clé se trouvant en /dev/sdc1 , je choisis comme destination /dev/sdc (sans le 1).

    Ensuite j’écrase ma clé (avec précaution) :

    dd if=debian-8.1.0-amd64-netinst.iso of=/dev/sdc
  3. Installation graphique :

    Une fois que dd a finit, il suffit de démarrer sur sa clé avec la machine de son choix. Debian Installeur panneau 1
    Si votre machine démarre en UEFI plutôt qu’en Bios, l’apparence devrait changer légèrement : Debian Installeur panneau 1
    Dans cet exemple je choisis « Graphical install » afin d’avoir un installeur plus « sexy » utilisable à la souris.
    Ensuite je me laisse porter par les différents panneaux. Les questions sont souvent simples et la plupart du temps je choisis les paramètres par défaut. Les explications sont claires et entièrement disponible en français, prenez le temps de les lire. Il y a une vingtaine de panneaux dont certains sont intéressants à détailler :

    • La création d’un compte root :

      Personnellement, je choisis de ne pas créer de compte root, je préfère déclarer le premier user en tant qu’administrateur et j’utiliserais la commande sudo au coup par coup. Compte Root

    • Partitionnement :

      Là, tout dépend de vous et ce que vous voulez en faire. Je choisis souvent d’avoir un « home » séparé afin de faciliter les réinstallations et la sauvegarde des paramètres. Partitionnement

      Dans le cas d’un partitionnement manuel, il est bon de choisir une partition / (racine) de taille confortable, les logiciels, et les jeux seront installés dedans, 5 Go au minimum mais 30 Go c’est plus confort.

      On ajoute aussi un /swap qui fait environ 1.5 fois la taille de la RAM. Le swap servira notamment à décharger la RAM lors des hibernations. Il ne faut pas qu’il soit plus petit que la taille de la RAM en tout cas.

      Pour la partition /home, libre à vous, cette partition contiendra les données et les paramètres des comptes utilisateurs.

      Si votre carte mère utilise un firmware UEFI et non BIOS, une partition /boot/efi de 128Mo sera nécessaire pour pouvoir démarrer le système d’exploitation.

      Et dans le cas d’un formatage en LVM il faudra en premier créer une partition /boot (128Mo) en dehors du LVM afin que la carte mère sache la lire.

      Cela pourrait donc ressembler à quelque chose comme ceci pour un disque de 128Go : PartageDisque

    • Installation et choix des paquets :

      Étant parti d’un cd « net-install » avec le strict minimum, je demande à l’installeur de passer par un miroir pour obtenir le reste des paquets nécessaires : Jessie19

      Pour le choix du miroir, tout dépend de votre position géographique, moi je me contente du premier de la liste. Jessie21
      Un peu plus tard, on peut choisir la destinée de notre Debian. Personnellement je garde, là aussi, les paramètres par défaut afin d’avoir Gnome 3 et le parc de logiciels classiques que requiert une utilisation bureautique (Firefox, LibreOffice, Evolution…). Taskell

      Si vous souhaitez ne pas utiliser d’interface graphique, ou l’installer plus tard, décochez « GNOME » et « environnements de bureau Debian » (Il faut tout décocher sinon cela installe quand même l’interface par défaut 🙂 ).

    • Grub pour amorcer le démarrage :

      Pour finir je laisse l’installeur déployer Grub sur la première partition de mon disque primaire (/boot/grub/), afin de disposer d’un sélecteur d’OS et de noyaux. L’installation est finit à l’aide de l’iso, il n’y a plus qu’à relancer en pensant à retirer la clé USB, et l’on devrait tomber sur un bureau tout beau, tout neuf. Grub

  4. Finaliser l’installation

    Voilà, avec un peu d’entraînement et un peu de familiarisation avec les termes informatiques, on s’en sort très bien. Dans le billet suivant , je détaille quelques étapes pour améliorer cette installation toute fraîche.