Quantcast
Channel: Configuration Archives - Framboise 314, le Raspberry Pi à la sauce française....
Viewing all 170 articles
Browse latest View live

Ressusciter la Game Boy avec un Raspberry Pi Zero

$
0
0

gameboy_250pxQue faire d’une Game Boy qui a rendu l’âme ou qui ne sert plus ?
La transformer en console de jeu rétro en l’équipent d’un petit (mais costaud) Rasberry Pi Zero.
C’est le challenge qu’a relevé wermy. Il a remis sa Game Boy « à jour » en la transformant en console de retrogaming grâce à Retropie.

Un Raspberry Pi Zero dans une Game Boy = Game Boy Zero

gameboy_raspi_zeroC’est la sortie du Pi Zero, sa taille réduite et sa faible consommation qui ont donné l’idée de cette réalisation.

gameboy_boitierUne fois modifiée, la Game Boy ne laisse pratiquement rien voir des modifications qu’elle a subies.

gameboy_alimLa sortie casque a conservé sa fonction

gameboy_charge_hdmiSur le côté gauche la prise micro USB de charge batterie et une mini HDMI pour envoyer la vidéo sur un écran.

gameboy_usbSur le côté droit une prise USB qui pourrait permettre la connexion d’un clavier, par exemple.

gameboy_boutonsA l’arrière, deux des vis de fermeture du boîtier ont laissé la place à des boutons supplémentaires qui peuvent servir pour certains jeux.

gameboy_cartoucheLa cartouche de jeu a été modifiée pour accueillir un adaptateur de carte microSD. L’adaptateur a été soudé sur le connecteur de la cartouche, ce qui va connecter la microSD au lecteur de carte microSD du Pi Zero… Un peu tordu et demandant d’effectuer des soudures avec précaution, mais ça permet de garder le caractère d’origine de la console 🙂

gameboy_cartouche2La carte microSD contenant ReroPie est glissée dans le lecteur présent sur la cartouche de la Game Boy…

gameboy_cartouche3Ensuite la cartouche rejoint son emplacement normal dans la Game Boy. Cela permet de changer de carte microSD sans devoir tout démonter 🙂

gameboy_cablageLe connecteur du port cartouche est relié au connecteur microSD du Raspberry Pi en utilisant les pastilles disponibles sous la carte.

gameboy_batterieLa trappe à piles dissimule une batterie de 2000 mAh.

gameboy_hubQui dissimule elle-même un hub USB à 2 ports. L’un des ports est ici équipé d’une clé USB Bluetooth. Les 3 boutons situés au dessus du hub sont utilisés lors de la configuration de l’écran.

gameboy_ecranL’écran (celui d’Adafruit ?) est monté à la place de l’écran d’origine.

gameboy_les_testsQuelques essais avant de refermer la boîte… On dirait bien que ça boote !

gameboy_demarrage2Retropie fonctionne 🙂

gameboy_donkey_kongÇa vous rappelle des trucs ?

gameboy_donkey_kong2Ah… un vrai jeu 😉

gameboy_resultatet il y en a bien d’autres…

Vidéo

Conclusion

Une belle réalisation décrite sous forme d’images qui devrait permettre à un RaspiNaute un peu débrouillard et sachant souder de réaliser le même genre de résurrection.

Si vous avez fait quelque chose du même genre, les pages de framboise314 vous tendent les bras 🙂

Merci à Bedredine qui m’a signalé cette belle réalisation

Sources

  • http://www.generation-nt.com/game-boy-raspberry-pi-retrogaming-emulateur-actualite-1927278.html
  • http://www.begeek.fr/game-boy-zero-une-console-custom-a-base-de-raspberry-pi-199018

Game Boy Zero


Mettez un Amiga dans votre Raspberry Pi et vice-versa

$
0
0

happiga_250pxHAPPIGA est une distribution pour Raspberry Pi basée sur une Debian qui permet de booter directement sur l’émulateur d’Amiga UAE4ARM le tout pré-configuré et optimisé. HAPPIGA permet d’émuler un Amiga 4040 AGA à fond les ballons avec plein de RAM. Une compatibilité avec Picasso96 est disponible pour avoir une résolution plus importante.
Un partage de fichier Samba est aussi mis en place pour transférer facilement ses fichiers vers l’émulateur.

Happiga : Mettez un Amiga dans votre Raspberry Pi et… vice-versa !

Erwan est Amigaïste depuis le début des années 90. Même si cette émulation ne remplacera jamais un vrai Amiga dans le cœur des puristes, le créateur d’Happiga espère que cela permettra à certains de continuer, reprendre ou découvrir cette superbe machine qu’est l’Amiga.

Il vient de publier plusieurs versions de que vous pourrez télécharger en cliquant sur le lien Happiga ci-dessous :

A noter une version spécialement conçue pour être utilisée avec BerryBoot !
HAPPIGA ne contient aucun kickstart ou fichier sous copyright.
Les sources originales d’UAE4ARM-RPI sont disponibles sur github
Toutes les modifications apportées par Erwan sont présentes dans le répertoire ~/sources/ présent dans l’image.

Ce qu’en dit Erwan

L’Amiga à toujours une place importante dans mon cœur c’est pour cela que je continue d’aller à des rassemblement Amiga tous les ans (comme le NAS) et que dans mes relations j’ai beaucoup d’amigaïstes .

Donc je voulais offrir à la communauté Amiga une nouvelle distribution basée sur « Happi Game Center » mais ne contenant que l’Amiga en direct boot et tournant sur pico-ordinateur afin d’avoir une nouvelle machine Amiga, fun et accessible financièrement. Donc voici « HAPPIGA » qui permet de faire tourner un Amiga 4040 à fond les ballons (ou les boing ball ^^) sur Rapsberry PI 2 grâce à UAE4ARM (Merci à CHIPS pour son travail)

Un Raspberry Pi dans un Amiga

Les images

happiga-04

Apparence définitive. Le tout est fonctionnel 🙂 🙂 :)

 

happiga-01

Un Rapsberry pi 3 + dissipateur thermique en céramique.

happiga-02

Une carte Keyrah V2

happiga-03

Un boitier d’Amiga 600 + Clavier : MERCI TameBest d’Amiga Impact pour le Don.

Installation

Le fichier .img s’installe de la même manière que HAPPI GAME CENTER, consultez la rubrique installation de celui-ci.

Retour au Menu

La touche F9 permet de revenir au menu

 

Vidéo

Présentation de Happiga V1.2

Une vidéo explicative pour vous aider à configurer l’Amiga

 

Conclusion

Merci Erwan pour ce développement qui va sans doute ravir les amateurs d’Amiga ! Un système clé en main pour booter directement est appréciable.

N’hésitez pas à vous rendre sur la page de Happi game Center pour faire un retour à Erwan sur votre utilisation de sa distribution 😉

Sources

 

Donnez la parole à votre Raspberry Pi

$
0
0

parole_250pxParfois les choses se télescopent comme dirait un astronome… Hier à Nevers un des visiteurs (radioamateur) sur les Premières Rencontres Nationales du Raspberry Pi prépare un relais (radio) et m’a demandé si le Raspberry Pi pouvait générer des messages. Les messages ne peuvent pas être enregistrés car il faut par exemple retourner la puissance du signal reçu ou la température… Sinon il faudrait enregistrer une quantité de messages… importante.

Synthèse vocale sur le Raspberry Pi

Vendredi j’avais acheté le numéro 193 de Linux Magazine France. Or ce numéro contient un article intitulé : « Il ne lui manque que la parole… ».

Profitant de cette aubaine, j’ai rebranché un Raspberry Pi (bin oui j’avais emmené tous mes joujoux à Nevers 🙂 ) et une enceinte. Juste pour le fun (loi de Gombretin oblige) j’avais fait tourner en boucle Big Buck Bunny sur HDMIPI pendant 2 jours en non stop, avec le son et cette enceinte. Arrivé à Nevers je rebranche le tout, je lance le film et pas de son ! bin oui ! Gombretin et Murphy se sont ligués contre moi. Pas moyen de récupérer le son. Là je viens de tout rebrancher. Devinez ? hihihi ça fonctionne ! Je suis vert 🙁

Bon revenons à nos moutons.

SVOX Pico TTS

La lecture de l’article (très intéressant) de Linux Magazine France m’a amené à tester SVOX Pico TTS (TTS = Text To Speach).

L’installation ne pose pas de problème particulier. Après les sempiternels

sudo apt-get update
sudo apt-get upgrade

on passe à l’installation du synthétiseur vocal :

sudo apt-get install libttspico-utils

Et puis… c’est tout. C’est prêt

Un premier test : Vas y, cause

L’installation de Pico TTS  ajoute un utilitaire destiné à générer un fichier .wav à partir du texte :

pico2wave   -w   helloworld.wav    "Hello world, happy new year, my tailor is rich oups "

Bon, si vous avez d’autres idées pour la phrase, ne vous gênez pas 🙂

Voilà on obtient un fichier .wav avec une vois qui a quand même un fort accent américain…

Do you speak français ?

Non, sérieux… Vous imaginez un relais radioamateur français qui vous répond avec un accent du Michigan ? Voyons voir s’il est possible d’arranger ça. On peut régler la langue du synthétiseur. Il y a peu de langues disponibles

Le seul moyen d’avoir la liste des langues est d’en utiliser une qui ne figure pas dans la liste.

pi@raspi-7p-officiel:~/parole $ pico2wave -l fr-BE -w "Allez, une fois"
Unknown language: fr-BE
Valid languages:
en-US
en-GB
de-DE
es-ES
fr-FR
it-IT

Usage: pico2wave <words>
-w, --wave=filename.wav     Write output to this WAV file (extension SHOULD
be .wav)
-l, --lang=lang             Language (default: "en-US")

Help options:
-?, --help                  Show this help message
--usage                 Display brief usage message

Bon, on voit qu’il n’y a ni le Mandarin, ni le serbo-croate mais au moins on trouve le français ! il faudra utiliser fr-FR pour que le RasPi s’exprime dans la langue de Molière.

On teste ?

pico2wave  -l  fr-FR  -w  framboise.wav  "Bienvenue sur framboise trois quatorze !"

Cela génère un fichier framboise.wav qu’on peut écouter :

pi@raspi-7p-officiel:~/parole $ omxplayer -o local framboise.wav                Audio codec pcm_s16le channels 1 samplerate 16000 bitspersample 16
Subtitle count: 0, state: off, index: 1, delay: 0
have a nice day

Sortir le son directement sur le jack audio

C’est une peu contraignant de devoir créer un fichier .wav à chaque fois, puis de l’écouter avec omxplayer.
Comme tout bon informaticien, je suis un « bon » fainéant. Je ne vais pas refaire des dizaines de fois la même suite de commandes. J’applique le principe : « Si tu dois écrire plus de deux fois les mêmes commandes, écris un script »
La revue Linux Magazine France propose un script qui fonctionne très bien.
J’ai créé un fichier dit.sh

nano dit.sh

Ajoutez ces lignes dans le fichier, enregistrez le (CTRL X)

#!/bin/bash
pico2wave -l fr-FR -w /tmp/test.wav "$1"
aplay -q /tmp/test.wav
rm /tmp/test.wav

Le fichier .wav est créé de façon temporaire, lu, puis supprimé. $1 représente la phrase que vous passerez en paramètre sur la ligne de commande.

Rendez le programme exécutable.

sudo chmod 755 dit.sh

Si vous ne voyez pas à quoi ça sert, lisez l’article sur les droits Linux, indispensables si vous voulez savoir comment modifier les droits des fichiers et répertoires…

Réglage du volume

La sortie peut sembler un peu faible, vous pouvez modifier le niveau sonore en réglant le volume. Non, non, ne cherchez pas le bouton qu’il faut tourner, on est en ligne de commande !

amixer sset 'PCM' 95%

Vous pouvez aller jusque 100%… après le « bouton » se bloque 🙂

Quelques tests

 ./dit.sh "La température est de douze virgule six degrés "
 ./dit.sh "Votre signal arrive esse sept sur le relais "
 ./dit.sh "Désolé F1GYT, le relais est actuellement en maintenance "

 

Juste pour vous amuser essayez « La température est de 6,8°C » ou encore « La distance est de 35km », « vous pesez 97kg » (ouais je sais…), « le RaspberryPi pèse environ 45g et coûte 40€ », « le disque dur pidrive a une capacité de 314Mo », « nous sommes le 1/5/2016 », « il est 22h30 » etc…
Pico TTS lit parfaitement ces phrases avec les unités 🙂

Et si voulez lire le manuel (si, si, c’est bien, RTFM) il est disponible en ligne.

 

Conclusion

Un grand merci à Linux Magazine France dont je vous conseille la lecture. Vous y trouverez également les informations pour installe X11VNC ou encore les bases du QR Code.

De nombreuses applications utilisent la synthèse vocale, mais c’est souvent intégré à des distributions ou à des applications. Dans le domaine de la robotique, de la domotique ou de l’alarme vous pouvez avoir besoin de donner la parole à votre framboise. Vous avez ici les bases pour rendre votre RasPi bavard. N’en abusez quand même pas, au bout d’un moment on n’a qu’une envie… Débrancher le haut -parleur 😉

Il faut parfois jongler avec l’orthographe pour arriver à obtenir le son voulu mais ce n’est pas trop compliqué (pour les fois où j’ai eu à le faire). Je trouve le son d’une qualité tout à fait acceptable pour une voix synthétique. N’hésitez pas à dire ce que vous en pensez dans les commentaires 🙂

Pour répondre à la question posée hier à Nevers : Oui, en plus de gérer le fonctionnement du relais, pourquoi ne pas confier à un Raspberry Pi la génération des messages de service ?

Sources

Partage Samba entre 2 Raspberry Pi sous Jessie

$
0
0

partage_samba_client_serveur_250pxSamba a été conçu pour permettre le partage de fichiers entre Windows et Linux.
Mais l’architecture client-serveur n’est pas à usage exclusif de ce mariage mixte. Récemment on m’a demandé s’il était possible de partager un dossier avec Samba entre 2 Raspberry Pi. J’ai répondu oui, mais pour Estelle ça ne semblait pas aussi évident que ça… Je me suis dit que ce partage inter-RasPi pouvait intéresser d’autres RasPiNautes. J’ai branché un Raspberry Pi supplémentaire, mis dedans une carte microSD avec un Raspbian Jessie tout frais, et je vous propose de partager… ce partage 🙂

Partage Samba sous Jessie entre deux Raspberry Pi

Halte aux polémiques

Pour couper court à toutes les polémiques, recommandations et autres remarques, je vous rassure, je suis au courant qu’il existe d’autres moyens. J’utilise d’ailleurs NFS au boulot (ah !). En général ça m’agace sur les forums quand quelqu’un pose une question pour réaliser quelque chose avec, disons, une application xyz. En général les réponses au lieu de l’aider vont dans le sens inverse :

  • « pourquoi tu fais ça avec xyz ? abcd est beaucoup mieux ! »
  • « oula xyz est trop lent, prends plutôt azerty ! »
  • « quoi ça existe encore xyz, je croyais que c’était plus maintenu, tu devrais pas utiliser ça! »
  • « uiop est beaucoup plus simple à utiliser que xyz, pourquoi tu as choisi cette daube ? »
  • etc. etc.

En général ces « encouragements » (qui partent parfois d’un bon sentiment) sont de plus ponctués d’autant de fôtes d’ortograffes qu’il y a de mots dans la phrase. Dites moi si je me trompe ! Mais en tout cas ça ne répond pas à la question de la personne sur l’utilisation de xyz.

Voilà j’ai encore fait mon papy ronchon, mais que voulez-vous, il y a des choses qui m’agacent !

Ici la question qui était posée était : « Peut-on partager un répertoire entre 2 Raspberry Pi avec Samba ? »

L’architecture Client-Serveur

partage_samba_client_serveurA ma droite le serveur (oui, celui qui a le nœud pap). C’est lui qui propose un service. Ici il vient d’amener un verre (c’est une menthe à l’eau – si, si) au client (celui qui a les lunettes de soleil)…

Si on résume : Le serveur propose un service et le client utilise ce service.

2tierIci nous avons deux Raspberry Pi identiques. Sur l’un nous allons installer le serveur Samba. Ce sera le serveur. Il sera chargé d’offrir un service.

L’autre Raspberry Pi va utiliser le service proposé. Ce sera ici notre client.

Faites entrer les participants

Pour monter cette architecture j’ai utilisé un Raspberry Pi installé sur (enfin, derrière) l’écran 7 pouces officiel (vous le reconnaîtrez à son nom : raspi-7p-officiel) et ajouté au réseau un RasPi qui avait servi il y a quelques jour aux tests de la caméra 8 Mpx. Il est d’ailleurs toujours monté sur le « banc test ».

partage_samba_logo_600px

Cliquez pour agrandir

Sur l’image ci-dessus le Raspberry Pi de gauche (raspi-7p-officiel) est le serveur Samba. Son adresse IP est 192.168.1.230. Le client sera monté sur le Raspberry Pi de droite (son nom est plus classique : raspberrypi). L’adresse du client est 192.168.1.106.

Les appellations raspi1 et raspi2 n’ont rien à voir avec le modèle du Raspberry Pi, ce ne sont que des identifiants pour les repérer dans la suite de l’article.

Remarque : Pour les « encore plus ronchon que moi » (il y en a ?) ne vous étonnez pas de trouver un RasPi avec une adresse en 230 et l’autre en 106. Déjà comme on a un masque à 255.255.255.0 (/24) ils sont dans le même réseau. Les Raspberry Pi « fixes » comme celui qui est monté sur l’écran officiel ont un privilège : j’ai programmé le routeur TP-LINK (non, je n’ai pas de Box) pour que le DHCP attribue toujours la même adresse à ces Raspberry Pi (en fonction de leur adresse MAC) et la plage commence à .230. L’autre est relié en Wifi par une clé USB et il a pris normalement une adresse automatique car son adresse MAC n’est pas connue du routeur. Un Raspberry Pi fixe prend toujours la même adresse quand je le connecte au réseau…

Le cahier des charges

Sur le premier Raspberry Pi

  • Créer un répertoire /home/pi/partage_samba.
  • Mettre un « flag » dans le répertoire (un fichier qui servira à vérifier qu’on a bien accès au répertoire à distance)
  • Installer le serveur Samba sur ce Raspberry Pi.
  • Configurer le serveur Samba pour qu’il partage le répertoire partage_samba
    sous le nom de partage commun.

Sur le deuxième Raspberry Pi

  • Tester le bon fonctionnement du serveur Samba avec un client Samba en vérifiant qu’on peut voir le fichier « flag », créer un dossier…

SI ça fonctionne (si ça ne fonctionne pas, inutile de continuer…)

  • Créer un dossier /home/pi/lien_raspi1
  • Modifier fstab pour que le partage commun soit automatiquement
    monté dans /home/pi/lien_raspi1

Remarque : Dans la logique avant de se lancer dans le montage automatique via fstab , il faudrait déjà vérifier que le partage se monte manuellement avec la commande mount… Je vous laisse chercher un peu comment faire…

 On s’y jette ?

Créer le répertoire de partage et mettre un flag

On va commencer par créer le répertoire qui sera partagé :

mkdir /home/pi/partage_samba

Mettez un flag dans ce répertoire pour pouvoir l’identifier à coup sur :

touch /home/pi/partage_samba/raspi1

serveur_250px

Installer le serveur Samba

On peut maintenant installer le serveur sur le premier Raspberry Pi. Pensez avant tout à faire

sudo apt-get update

sudo apt-get upgrade

pour avoir un système à jour puis installez Samba sur le serveur.

apt-get install samba samba-common-bin

Configurer le partage dans le fichier de configuration

Par sécurité, faites une copie de sauvegarde du fichier de configuration par défaut de Samba (on ne sait jamais..) avant de farfouiller dedans :

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.org

Bon, c’est mon habitude de garder les fichiers originaux avec une extension .org mais rien ne vous empêche de les appeler .old, .back ou… tout ce que vous voulez

Ouvrez le fichier smb.conf

sudo nano /etc/samba/smb.conf

Juste parce que je n’aime pas ce nom (qui me rappelle le boulot work…) je modifie WORKGROUP en MAISON (vous faites comme vous voulez).

Ajouter à la fin du fichier /etc/samba/smb.conf

[commun]
comment = Partage Samba inter RasPi
path = /home/pi/partage_samba
writable=yes
valid users = pi
write list = pi
create mode = 0777
directory mode = 0777
share modes = yes

A noter que le partage s’appelle commun. C’est sous ce nom qu’il apparaîtra sur les autres machines. Je ne rentre pas dans le détail de la config, je vous laisse chercher un peu… Si vous avez envie.

Redémarrer le service samba pour que les modifications apportées au fichier smb.conf soient prises en compte.

sudo service smbd restart

Si tout se passe bien (Raspbian ne renvoie pas de message d’insulte) vous pouvez continuer. Sinon…. cherchez l’erreur ! Pas la peine d’aller plus loin si le serveur ne démarre pas.

Passez le dossier partage_samba en 776

chmod 776 /home/pi/partage_samba

Créez un utilisateur Samba sur ce Raspberry Pi. Je n’ai pas été original, j’ai créé pi avec le login raspberry. Vous ferez certainement mieux 🙂

pi@raspi-7p-officiel:~ $ sudo   smbpasswd   -a   pi
New SMB password:
Retype new SMB password:

Redémarrez samba pour prendre les modifications en compte.

sudo service smbd restart

Il ne faut pas oublier que les droits du système l’emportent sur les droits Samba. Si l’utilisateur Samba a le droit d’écrire (dans Samba) mais que les droits système l’interdisent… il ne pourra pas écrire.

Le premier Raspberry Pi est prêt, on va passer au deuxième.

Configurer l’accès au partage depuis le Raspberry Pi distant

client_600pxÇa fait déjà un bon moment que le client attend… Je vous propose qu’on s’occupe de lui maintenant.

Installer le client Samba sur le deuxième Raspberry Pi

Pour que le serveur… serve à quelque chose, comme dans la vraie vie, il lui faut un client. Pour Samba, le client de base s’appelle smbclient (vous voyez qu’il n’y a pas que moi pour ne pas se fouler quand il faut trouver un nom 😉 ). On va donc commencer par installer ce client sur le RasPi 2.

pi@raspberrypi:~ $ sudo apt-get install smbclient
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Paquets suggérés :
heimdal-clients
Les NOUVEAUX paquets suivants seront installés :  smbclient
0 mis à jour, 1 nouvellement installés, 0 à enlever et 3 non mis à jour.
Il est nécessaire de prendre 304 ko dans les archives.
Après cette opération, 753 ko d'espace disque supplémentaires seront utilisés.
Réception de : 1 http://mirrordirector.raspbian.org/raspbian/ jessie/main smbclient armhf 2:4.2.10+dfsg-0+deb8u2 [304 kB]
304 ko réceptionnés en 6s (49,0 ko/s)
Sélection du paquet smbclient précédemment désélectionné.
(Lecture de la base de données... 127021 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../smbclient_2%3a4.2.10+dfsg-0+deb8u2_armhf.deb ...
Dépaquetage de smbclient (2:4.2.10+dfsg-0+deb8u2) ...
Traitement des actions différées (« triggers ») pour man-db (2.7.0.2-5) ...
Paramétrage de smbclient (2:4.2.10+dfsg-0+deb8u2) ...

Connexion au partage avec smbclient

Le partage qui existe sur le RasPi 1 s’appelle commun : on va exécuter smbclient en lui indiquant l’adresse du raspberry Pi serveur Samba ainsi que le nom du partage :

pi@raspberrypi:/etc/samba $ smbclient //192.168.1.230/commun

comme vous vous connectez avec le nom de pi (tiens c’est le même que celui de l’utilisateur Samba que j’ai créé tout à l’heure 🙂 le serveur Samba ne vous demande que le mot de passe de cet utilisateur pour autoriser la connexion (tapez raspberry)

Enter pi's password:
Domain=[MAISON] OS=[Windows 6.1] Server=[Samba 4.2.10-Debian]
smb: \>

On voit que le domaine est bien MAISON (c’est mieux que WORKGROUP, non ?). Le prompt
smb : \>
vous indique que la connexion a été autorisée. Vous allez pouvoir entrer des commandes.

smb: \> ls
.                                   D        0  Wed May 11 19:26:55 2016
..                                  D        0  Wed May 11 19:22:55 2016
raspi1                              N        0  Wed May 11 19:26:55 2016

15273212 blocks of size 1024. 10503608 blocks available

Le ls nous prouve que nous sommes bien connectés au RasPi 1 puisqu’on retrouve notre fichier « flag » appelé raspi1. Pour tester si on a le droit d’écrire, nous allons ajouter un dossier toto (oui, je sais… mais c’est une habitude).

smb: \> mkdir toto
smb: \> ls
.                                   D        0  Wed May 11 19:52:05 2016
..                                  D        0  Wed May 11 19:22:55 2016
raspi1                              N        0  Wed May 11 19:26:55 2016
toto                                D        0  Wed May 11 19:52:05 2016

15273212 blocks of size 1024. 10503604 blocks available
smb: \> cd toto
smb: \toto\>

Tout va bien, le partage est opérationnel  et on peut travailler dedans depuis le deuxième Raspberry Pi. Sortez du client Samba :

smb: \> exit
pi@raspberrypi:~/ $

Montage automatique d’un partage Samba

Pour monter le répertoire partagé « à la mano » la commande (que vous pouvez tester 🙂 )  serait :

 

sudo mount -t cifs -o username=pi,password=raspberry //192.168.1.230/commun /home/pi/lien_raspi1

 

L’inconvénient de cette méthode c’est que lors du redémarrage du RasPi2, le montage est perdu car il est simplement stocké en mémoire.

Nous allons donc informer le système qu’il doit systématiquement monter le dossier partagé sur RasPi1 à chaque démarrage. Ça se passe dans /etc/fstab.

Le fichier fstab (file systems table) est la table des différents systèmes de fichiers sur un ordinateur sous Unix/Linux : il contient une liste des disques utilisés au démarrage et des partitions de ces disques. Pour chaque partition, il indique comment elle sera utilisée et intégrée à l’arborescence du système de fichiers global (c’est-à-dire le point de montage). Il se trouve généralement à /etc/fstab.
Dans les versions récentes d’Unix/Linux, des outils d’administration peuvent automatiquement générer un fichier fstab complet lors de l’installation du système d’exploitation ou proposer une interface graphique pour modifier ce fichier. (Wikipedia)

Merci Kikipedia, on va s’en occuper !

Comme vous l’avez vu avec la commande mount, si vous ne saisissez pas le nom d’utilisateur et son mot de passe, vous ne pouvez pas vous connecter au partage Samba. En mode manuel pas de problème, soit vous saisissez le login/password manuellement, soit vous l’intégrez à la commande mount.

Maintenant imaginons un Raspberry Pi « headless » (pas de clavier, pas d’écran… je ne parle même pas de la souris, accessoire bien inutile en ligne de commande 🙂 ). Alors, hein avec un RasPi headless c’est comment-y que vous saisissez le login/mot de passe ?

Heureusement Tux le manchot a pensé à tout. Il suffit de créer un fichier .smbcredentials et de mettre dedans le login et le mot de passe… Fastoche !

Remarque : Le point devant le nom du fichier signifie que c’est un fichier caché

Sur le Raspi2 créez un fichier /home/pi/.smbcredentials (oui avec nano mais je ne vais pas tout vous re-expliquer à chaque fois, bossez un peu, aussi 🙂 ). Dans le fichier ajoutez ces deux lignes:

username=pi
password=raspberry

Puis donnez au fichier les droits 600. (Si ça ne vous inspire pas je vous conseille un peu de lecture)

Ajout d’un montage dans fstab

Toujours sur le Raspi2 ajouter la ligne suivante à /etc/fstab :

//192.168.1.230/commun  /home/pi/lien_raspi1 cifs  credentials=/home/pi/.smbcredentials,x-systemd.automount,defaults 0 0

Pour tester qu’il n’y a pas d’erreur dans la ligne que vous avez rajoutée à fstab la commande mount -a monte les systèmes de fichiers présents dans fstab :

pi@raspberrypi:~ $ sudo mount -a

Si vous ne vous faites pas insulter par Jessie c’est que ça s’est bien passé. Sinon… cherchez l’erreur que VOUS avez pu faire et ne m’envoyez pas de message incendiaire pour m’insulter et me dire que le tuto « y marche pas » 😉

On va vérifier que maintenant le RasPi2 a bien une liaison avec le serveur (oui je sais il s’en passe des choses parfois étrange dans les bars…)

pi@raspberrypi:~ $ cd lien_raspi1
pi@raspberrypi:~/lien_raspi1 $ ls -al
total 4
drwxrwxr--  3 pi pi    0 mai   11 19:52 .
drwxr-xr-x 21 pi pi 4096 mai   11 21:19 ..
-rw-r--r--  1 pi pi    0 mai   11 19:26 raspi1
drwxrwxrwx  3 pi pi    0 mai   11 21:20 toto
pi@raspberrypi:~/lien_raspi1 $

On retrouve notre fichier raspi1 qui se trouve sur le RasPi1… donc on a bien monté le partage sur /home/pi/lien_raspi1 🙂

Vérification finale

Je vous laisse décortiquer la ligne ajoutée dans fstab. Vous trouverez des liens dans la rubrique Sources.

Allez, on reboote ! Et là, misère de misère, le montage ne se fait pas ! Le répertoire /home/pi/lien_raspi1 reste désespérément vide 🙁

Explication : le RasPi2 était relié au routeur en WiFi et le réseau n’était pas encore en place quand le système voulait monter le partage dans /home/pi/lien_raspi1. Pas de message mais… pas de montage non plus ! dmesg par contre donnait des indications claires sur le problème qui provoquait la « panne » (vous voyez qu’en cherchant un peu on arrive à mettre hors de cause les farfadets, gnomes et autres trolls qui sont censés hanter Linux) :

[    9.652749] FS-Cache: Netfs 'cifs' registered for caching
[    9.653772] Key type cifs.spnego registered
[    9.653866] Key type cifs.idmap registered
[    9.679094] CIFS VFS: Error connecting to socket. Aborting operation.
[    9.680424] CIFS VFS: cifs_mount failed w/return code = -101
[    9.818847] CIFS VFS: Error connecting to socket. Aborting operation.
[    9.824717] CIFS VFS: cifs_mount failed w/return code = -101
[   10.118682] systemd-journald[133]: Received request to flush runtime journal from PID 1
[   10.419502] Adding 102396k swap on /var/swap.  Priority:-1 extents:3 across:1773568k SSFS
[   10.526376] smsc95xx 1-1.1:1.0 eth0: hardware isn't capable of remote wakeup
[   10.526719] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   10.685480] wlan0: authenticate with c0:4a:00:5a:ca:03
[   10.758366] wlan0: send auth to c0:4a:00:5a:ca:03 (try 1/3)
[   10.760181] wlan0: authenticated
[   10.762347] wlan0: associate with c0:4a:00:5a:ca:03 (try 1/3)
[   10.765989] wlan0: RX AssocResp from c0:4a:00:5a:ca:03 (capab=0x431 status=0 aid=6)
[   10.774647] wlan0: associated
[   10.774937] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready

On voit que quand wlan0 est prêt (dernière ligne) il y a belle lurette que l’erreur CIFS est passée et que notre montage n’a pas été fait ! Ce qui se traduit lorsque vous allez dans le répertoire lien_raspi1 par un répertoire désespérément vide. 🙁

En mettant x-systemd.automount dans les options de la ligne ajoutée à fstab, on indique au système qu’il peut démarrer et que le montage du dossier partagé n’interviendra que lorsque vous y accéderez…

Démarrage normal… accédez au répertoire /home/pi/lien_raspi1 et vous y retrouvez tout ce qu’on s’attend à y trouver :

pi@raspberrypi:~/lien_raspi1 $ ls
raspi1    toto

C’est à dire notre « flag » raspi1 et le répertoire toto créé un peu plus tôt (nan, pas le chien de Mickey !)

Amusez vous, créez des fichiers, supprimez les, créez un répertoire et des fichiers dans ce répertoire etc… tout ça doit fonctionner sans problème.

Bon, et on en fait quoi ?

Alors là… C’est vous qui voyez ! Vous avez un répertoire partagé entre deux machines (mais ce n’est pas limitatif). Chaque RasPi peut écrire dans ce répertoire ou y récupérer des infos. Voilà un bon moyen pour échanger des images, des mesures, tout ce que vous voudrez…

partage_600px

Conclusion

Nous sommes arrivés au bout de cette aventure. Samba est capable de bien d’autres choses et de nombreux tutoriels proposent des solutions (même framboise314). Celui de Pi Home Server dans les sources ci-dessous est très bien fait.

Une fois que vous avez un système qui fonctionne, faites une copie de sauvegarde de votre carte microSD et… amusez vous. Vous ne pouvez rien casser, si vous plantez le RasPi vous refaites la carte à partir de votre image sauvegardée et hop, ça repart !

Plus vous ferez de manips, d’erreurs, d’essais… Plus vous avancerez et plus vous progresserez dans l’utilisation de Linux. Juste un truc de professionnel à ne pas oublier : RTFM 😉

Je n’ai pas la prétention d’avoir réalisé LE partage Samba parfait. Il y a certainement des imperfections que les commentaires ci-dessous vous permettront de rectifier ! Mais bon, ne venez pas me dire qu’avec NFS ç’aurait été plus rapide, plus facile, plus mieux bien…

ohnonnn

Sources

Raspberry Pi : installer Samba

Raspbian Jessie version 2016-05-10

$
0
0

downloadLa sortie d’une nouvelle version de Raspbian est toujours un événement dans le petit monde de la framboise.
Avec le retour du printemps et des beaux jours (nan, je rigole) voici une nouvelle mouture de l’OS proposé par la fondation. Simon Long en propose une description sur le blog de la Fondation. Je vous en propose un traduction, avant de passer à des essais plus sérieux.

Raspbian Jessie 2016-05-10 : Les nouveautés

Traduction d’un article paru sur le blog raspberrypi.org :
https://www.raspberrypi.org/blog/another-update-raspbian/

Il n’y a aucune nouvelle annonce passionnante concernant le matériel pour l’instant. Par contre nous venons de publier une nouvelle version de notre image Raspbian avec quelques fonctionnalités utiles (nous l’espérons). Lisez la suite de cet article pour connaître le détail des changements…

Le Bluetooth

Lorsque le Pi 3 a été lancé en Février, nous n’avions pas eu le temps de travailler sur le nouvel interface Bluetooth ajouté sur la carte. Il y avait une pile logicielle fonctionnelle, mais l’interface utilisateur était inexistante.

L’interface

J’avais espéré être en mesure d’utiliser l’une des interfaces Bluetooth Linux existante, mais après les avoir essayées toutes, je n’ai pas trouvé ce que je voulais en termes de convivialité et d’intégration avec le bureau. Je ne voulais vraiment pas en ré-écrire une à partir de zéro, mais finalement c’est ce que j’ai fait, ce qui signifie que j’ai passé quelques semaines amusantes à essayer de percer les mystères de BlueZ et D-Bus. Après quelques faux départs, j’ai finalement obtenu quelque chose qui me semble utilisable. Il y a donc maintenant un plugin Bluetooth dans la barre des tâches de lxpanel.

bluetooth_01

Le menu est toujours en anglais malgré la localisation de l’OS. Pour les tests j’ai ajouté un haut-parleur Bluetooth RYGHT (note de framboise314)

Sur la barre des tâches, à la gauche de l’icône réseau, il y a maintenant une icône Bluetooth. Si vous cliquez dessus, elle ouvre un menu qui vous permet de faire découvrir le Raspberry Pi par d’autres appareils, ou d’ajouter ou supprimer un périphérique Bluetooth. En sélectionnant l’option «Add Device… » une fenêtre s’ouvre. Elle va progressivement se remplir avec tous les périphériques Bluetooth détectables qui sont à portée – il suffit de sélectionner celui que vous voulez associer et d’appuyer sur le bouton «Pair».

bluetooth_02

Vous serez ensuite guidé à travers la procédure de jumelage, qui dépend de l’appareil. Avec de nombreux dispositifs (tels que des souris ou des haut-parleurs), le jumelage est entièrement automatique et ne nécessite aucune intervention de l’utilisateur ; sur d’autres périphériques, vous pouvez être invité(e) à entrer un code ou pour confirmer que le code affiché sur un périphérique distant correspond à celui indiqué sur le Raspberry Pi. Suivez les instructions, et (si tout va bien), vous devriez être récompensé avec une belle boîte de dialogue vous indiquant que le jumelage a réussi.

bluetooth_03

Les appareils associés sont listés en bas du menu Bluetooth – ces entrées de menu peuvent être utilisés pour connecter ou déconnecter un appareil associé. Pour supprimer un jumelage complètement, utilisez l’option Remove Device… = Supprimer le périphérique… dans le menu.

Le support du Bluetooth est limitée à ce stade du développement. Vous pouvez jumeler le Raspberry Pi avec à peu près tous les périphériques, mais vous ne pouvez vous connecter utilement qu’à des dispositifs qui prennent en charge soit le HID (Human Interface Device) soit  Audio Sink services – c’est à dire les interfaces utilisateur souris et claviers ou autres ainsi que les haut-parleurs et les casques.

Note de framboise314 : Mes premiers essais avec une enceinte RYGHT Y-Storm et un casque SYNCWIRE BT-01  montrent que ces deux périphériques audio sont bien détectés et affichés, puis jumelés – Les liens vers les produits sont là pour vous montrer ce que j’utilise, pas pour vous inciter à les acheter 🙂

Les appareils doivent se reconnecter après un redémarrage ou à la mise sous tension de votre Raspberry Pi, mais gardez à l’esprit que les claviers et les souris peuvent avoir besoin que vous appuyiez sur une touche ou cliquiez sur le bouton de la souris pour les réveiller s’ils sont en veille lors de leur mise sous tension.

L’interface Bluetooth devrait également fonctionner avec un dongle Bluetooth externe sur des plateformes autres que le Raspberry Pi 3 – Je l’ai testé avec succès avec un dongle Targus sur toutes les plates-formes RasPi des générations précédentes.

L’audio Bluetooth

L’interface utilisateur prend désormais en charge l’utilisation de haut-parleurs et de casques Bluetooth pour la sortie audio, avec quelques réserves, dont nous parlerons plus bas.

Pour connecter un périphérique audio, vous l’associez comme décrit ci-dessus – il sera alors listé dans le menu audio, accessible par un clic droit sur l’icône du haut-parleur à droite de la barre des tâches.

bluetooth_04

La sélection d’un périphérique Bluetooth à partir du menu audio le sélectionne comme périphérique de sortie audio par défaut – il y aura une pause de quelques secondes pendant l’établissement de la connexion. Vous pourrez ensuite utiliser la commande de volume sur la barre des tâches pour le contrôler, comme pour les haut-parleurs filaires connectés sur la prise jack audio.

Il y a cependant un problème avec le support de l’audio Bluetooth : en raison de la façon dont la pile Bluetooth a été implémentée, les appareils Bluetooth ne sont pas vus par le système en tant que dispositifs audio ALSA standards. ils nécessitent l’utilisation d’une couche audio intermédiaire appelé PulseAudio. PulseAudio est déjà intégré dans l’interface utilisateur – ne vous occupez pas de sa mise en place – mais le problème est que toutes les applications ne sont pas capables d’envoyer de l’audio à l’interface PulseAudio, et ne peuvent donc pas diffuser d’audio via Bluetooth.

La plupart des applications fonctionnent très bien – les vidéos et le son fonctionnent dans les navigateurs Epiphany et Iceweasel, ainsi que dans les lecteurs de musique en ligne de commande mplayer ou le lecteur multimédia vlc. Pour l’heure ni Scratch ni Sonic Pi ne peuvent utiliser la sortie audio Bluetooth – nous travaillons avec les auteurs de ces programmes pour améliorer cela et espérons que les deux applications pourront être rendues compatibles, c’est une histoire à suivre!

L’utilisation de PulseAudio a un autre effet de bord qui peut causer des problèmes pour un petit nombre d’utilisateurs – en particulier, si vous utilisez déjà PulseAudio pour autre chose que l’interfaçage avec les périphériques Bluetooth. Ce plugin arrêtera automatiquement le service PulseAudio chaque fois qu’un périphérique ALSA standard sera sélectionné. Si vous utilisez PulseAudio pour vos propres besoins, il serait préférable de supprimer le plugin volumealsa de la barre des tâches complètement pour éviter cela – faites juste un clic droit n’importe où sur la barre des tâches, choisissez ‘Ajouter/Enlever des éléments du tableau de bord‘, et supprimez  « Volume contrôle (ALSA)  » de la liste.

bluetooth_05

Copieur de carte SD

Une demande qui revient souvent sur les forums est « Quelle est la meilleure façon de sauvegarder votre Raspberry Pi ». Les gens veulent aussi savoir comment faire migrer leur Raspbian pour installer une nouvelle carte SD dont la capacité est plus grande ou plus petite que celle qu’ils utilisent pour le moment. C’était difficile avec les outils de ligne de commande que nous recommandions auparavant. Il y a maintenant une nouvelle application pour vous aider à sauvegarder votre carte, et vous la trouverez dans le menu sous « Accessoires ».

SDcopier_06

L’application Copieur de carte SD permet de copier Raspbian d’une carte vers une autre – c’est d’ailleurs à peu près tout ce qu’elle fait – mais il y a plusieurs choses utiles que vous pourrez faire ensuite. Pour l’utiliser, vous aurez besoin d’un lecteur USB de carte SD.

Pour prendre un exemple habituel : comment faire si vous voulez sauvegarder votre installation existante de Raspbian?

  • Insérez une carte SD vierge dans votre lecteur de carte USB et branchez-le sur votre Raspberry Pi, puis lancez SD Card Copier.
  • Dans « Copy From Device », sélectionnez « carte SD interne » – Internal SD card
  • Dans la rubrique « Copy To Device » sélectionnez le lecteur de carte USB « Generic storage Device »  (ce sera probablement le seul périphérique répertorié).
  • Appuyez sur Start , regardez les messages sur l’écran et… attendez – dans dix ou quinze minutes, vous devriez avoir un clone de votre installation actuelle sur la nouvelle carte SD.
  • Testez votre nouvelle carte en la dans le connecteur de carte SD du Raspberry Pi et démarrez-le; il devrait démarrer et vous pourrez vérifier que l’installation est identique à celle d’origine. Vous devriez retrouver toutes vos données et applications.

Vous pouvez démarrer le Raspberry Pi directement à partir de la carte de sauvegarde, mais si vous voulez récupérer votre carte d’origine à partir de la sauvegarde, il suffit d’inverser le processus : démarrer votre Raspberry Pi à partir de la carte de sauvegarde, mettre la carte sur laquelle vous souhaitez restaurer dans le lecteur de carte SD, et répéter le processus ci-dessus.

Le programme ne se limite pas à copier sur une carte de la même taille que la source; vous pouvez copier sur une carte plus grande si vous êtes à court d’espace sur votre support existant, ou même sur une carte plus petite (tant qu’il a suffisamment d’espace pour stocker tous vos fichiers – le programme va vous avertir s’il n’y a pas assez espace). Il a été conçu pour fonctionner avec les images de Raspbian et NOOBS; il peut sans doute fonctionner avec d’autres systèmes d’exploitation ou avec des formats de carte personnalisés, mais cela n’est pas garanti.

La seule restriction est que vous ne pouvez pas écrire sur le lecteur de carte SD interne, car vous remplaceriez le système d’exploitation en cours d’exécution, ce qui entraînerait forcément des erreurs, plantages…

Pensez bien que tout ce qui existe sur la carte de destination sera écrasé par ce programme, alors vérifiez que vous avez sauvegardé ce qui se trouvait sur la carte de destination (photos, vidéos, musique, documents…) avant de cliquer sur le bouton Start !

pigpio

Cette image inclut la bibliothèque pigpio de abyz.co.uk – qui constitue un moyen unique d’accéder aux broches GPIO du Raspberry Pi à partir de Python, C et autres langages. Elle élimine la nécessité d’utiliser sudo dans des programmes qui veulent accéder aux ports GPIO, et en conséquence Scratch fonctionne maintenant sans avoir à utiliser sudo.

pigpio

Geany

Un des outils qui est vraiment utile pour les programmeurs professionnels est un bon éditeur de texte – l’éditeur simple fourni avec LXDE est parfait pour de petites tâches, mais pas vraiment adapté pour un travail sérieux.

geany_01_600px

Cliquez pour agrandir

L’image de Raspbian intègre maintenant l’éditeur Geany (rubrique Programmation) , qui est beaucoup plus adapté pour la gestion de grands projets. Il offre des fonctionnalités comme la coloration syntaxique, l’indentation automatique et la gestion fichiers multiples. Il y a une aide en ligne intégrée dans le programme lui-même, mais vous pouvez aussi visiter le site Geany.

Les nouvelles versions des applications

Les programmes standards inclus dans l’image existent pour la plupart dans une nouvelle version : Scratch, Sonic Pi, Node-RED, BlueJ et PyPy. Vous trouverez les modifications apportées à ces applications sur le site Web ou les changelists individuels de chacune d’elles.

Nouveau noyau Linux

Le noyau Linux a été mis à niveau en version 4.4. Ce changement ne devrait avoir aucun effet notable pour la plupart des utilisateurs, mais il force l’utilisation du Device Tree; si vous avez modifié votre installation de Raspbian, en particulier pour procéder à l’installation de nouveau matériel, vous pourrez trouver la lecture de ce post sur le forum utile.

Tweaks

Vous remarquerez sans doute de nombreuses petites modifications de l’interface utilisateur dans tout le système. Parmi celles-ci :

• Une nouvelle boîte de dialogue pour l’arrêt du Raspberry Pi

shutdown

• Une boîte de dialogue pour régler les paramètres de la souris et du clavier, permettant maintenant de définir la vitesse du double-clique sur le bouton de la souris

clavier_souris

• La boîte de dialogue Configuration Raspberry Pi vous permet désormais d’activer ou de désactiver l’interface 1-wire, et d’activer ou désactiver l’accès à distance au démon pigpio

config

• Un clic droit sur l’icône de la corbeille sur le bureau donne maintenant la possibilité de vider la corbeille (Empty Trash Can)

corbeille

• Le raccourci clavier Ctrl-Alt-T peut maintenant être utilisé pour ouvrir une fenêtre de terminal

Enfin, il y a quelques fonctionnalités relatives à l’installation qui ont subi des modifications :

• Lorsque vous créez une nouvelle image Raspbian sur une carte SD, le système de fichiers sera automatiquement étendu pour utiliser tout l’espace disponible sur la carte lors du premier démarrage.

• Si un fichier  wpa_supplicant.conf est placé dans le répertoire /boot, il sera déplacé dans le répertoire /etc/wpa_supplicant la prochaine fois que le système démarrera, en écrasant les paramètres réseau existants. Ceci permet de précharger une configuration Wifi sur une carte à partir d’un poste sous Windows ou une autre machine qui voit pas la partition de démarrage.

Il y a aussi une foule de corrections de bogues mineurs dans diverses parties du système, et un peu de nettoyage en général sur les thèmes et les textes.

Comment puis-je obtenir Raspbian ?

Une image complète de Raspbian et un programme d’installation de NOOBS sont disponibles à partir de la page Téléchargements du site de la Fondation.

Si vous utilisez l’image actuelle de Jessie, elle peut être mise à jour vers la nouvelle version en exécutant les commandes suivantes :

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install piclone geany usb-modeswitch
sudo apt-get install python-pigpio python3-pigpio

J’avais oublié de mentionner que les liaisons de Python vers pigpio devaient être ajoutés dans le cadre d’une mise à niveau – c’est chose faite dans la dernière ligne de code ci-dessus.

Comme toujours, vos commentaires sur la nouvelle version seront les bienvenus.

N’hésitez pas à mettre vos remarques et suggestions en ligne sur le site de la Fondation ou sur ses forums.

 

Avec Cayenne, pimentez la gestion de votre Raspberry Pi

$
0
0

presentation_cayenne_250pxAvanquest et sa division « Objets Connectés » myDevices présentent Cayenne, outil de développement et de création de projets IoT à partir d’un Raspberry Pi. Cayenne est une solution gratuite, accessible en ligne ou via une application mobile, permettant aux développeurs et aux créateurs de concevoir en quelques heures des solutions IoT.

Cayenne, une plateforme gratuite IoT

Le communiqué de presse

myDevices a développé une plateforme IoT robuste permettant aux sociétés de connecter des objets, de visualiser des données, d’appliquer facilement des règles sophistiquées et d’interagir avec leurs clients connectés de manière efficace.

presentation_cayenne_600px

Avec Cayenne, myDevices étend sa plateforme (lancée en octobre 2015) de connectivité et d’objets connectés, à la communauté des développeurs et créateurs sous la forme d’un outil facile d’utilisation grâce à sa fonction « Glisser-déposer ». Cette plateforme permet un prototypage rapide, elle est ouverte à la communauté des développeurs. Au 30 mai 2016, plus de 20 000 développeurs travaillent sur des projets, dont environ 5000 sont actifs, et ont généré plus de 200 millions d’événements… Cayenne enregistre environ 1400 inscriptions supplémentaires par semaine.

ecrans_cayenne_600px

Cayenne permet aux développeurs, utilisant des Raspberry Pi, de réaliser leurs projets sans avoir besoin de recourir à des SDK ou des API.

Ce qu’amène Cayenne

  • La reconnaissance automatique des différents actionneurs et capteurs connectés au Raspberry Pi lui permettant d’être opérationnelle en 7 minutes;
  • De nombreux widgets personnalisables, pour visualiser en temps réel les données ainsi que leurs historiques au travers d’une interface graphique simple et pratique;
  • Des déclencheurs très faciles à mettre en place avec le système « Glisser-déposer », permettant à un capteur, un moteur ou un actionneur de lancer une action automatique sur un autre objet connecté;
  • Des alertes de seuils qui envoient des e-mails ou des SMS selon des critères personnalisables;
  • La possibilité de programmer la mise en route et l’arrêt de lumières, moteurs, soupapes et actionneurs à des jours et à des heures donnés.

ecrans2_cayenne_600px

Cayenne peut être utilisé pour effectuer des prototypages efficaces, optimiser les prévisions commerciales ou encore assurer la continuité du flux de travail. À la maison, Cayenne permet par exemple de contrôler, de manière simple et fluide, la domotique, la sécurité, les capteurs et l’éclairage. Outre une interface utilisateur intégrée et intuitive, son plus gros avantage est de permettre d’entreprendre des projets IoT simples et de réduire de manière significative le temps et les frais associés à des projets IoT plus complexes.

ecrans3_cayenne_600px

Vous pouvez ouvrir un compte Cayenne gratuit sur : www.cayenne-mydevices.com

Les principales caractéristiques de Cayenne

  • Une application mobile pour configurer, suivre et contrôler les objets et les capteurs partout où l’on se trouve;
  • Une configuration intuitive qui connecte le Raspberry Pi, ses capteurs, actionneurs et extensions à Internet en quelques minutes seulement;
  • Un moteur de règles pour déclencher des actions automatiques entre les objets connectés;
  • Un tableau de bord personnalisable avec des widgets d’affichage de données utilisant le « Glisser-déposer »;
  • Une programmation horaire des lumières, moteurs et actionneurs;
  • Une gestion graphique des entrées/sorties GPIO configurable depuis une application mobile ou un tableau de bord;
  • Un accès distant instantané depuis un téléphone ou un ordinateur.

ecrans4_cayenne_600px

Comment ça marche ?

Cayenne est le premier outil de création de projet IoT de type glisser/déposer qui permet aux développeurs de créer et d’héberger rapidement leurs projets d’objets connectés. Cayenne a été conçu pour l’Internet des objets. Il peut contrôler le matériel à distance, il peut afficher les données des capteurs, stocker des données, les analyser etc.

Il y a plusieurs éléments importants dans la plate-forme:

  • Cayenne App – configurez et contrôlez vos projets IoT avec des widgets en glisser-déposer  dans une application.
  • Tableau de bord en ligne Cayenne – Utilisez un navigateur pour configurer et contrôler vos projets IoT.
  • Cayenne Cloud – responsable du traitement et du stockage des données des périphériques, des utilisateurs et des capteurs pour les commandes, les actions, les déclencheurs et les alertes.
  • Agent Cayenne – permet la communication avec le serveur, l’agent et le matériel pour la mise en œuvre des commandes entrantes et sortantes, les actions, les déclencheurs et les alertes.

Chaque fois que vous appuyez sur un bouton de l’application Cayenne sur votre smartphone ou sur le tableau de bord en ligne, l’information part vers le Cloud Cayenne où elle est traitée puis envoyée à votre matériel. Ça fonctionne de la même façon, mais en sens inverse. Vous pouvez utiliser l’application mobile Cayenne ou le tableau de bord en ligne, c’est vous qui choisissez. Toutes les modifications apportées au matériel depuis l’application mobile sont immédiatement reprises par l’affichage du tableau de bord en ligne, et vice versa.

ecrans5_cayenne_600px

Caractéristiques principales

  • Connexion via Ethernet, Wi-Fi et téléphone (pour l’application mobile uniquement)
  • Découvre et configure automatiquement un (ou plusieurs) Raspberry Pi sur un réseau (en Ethernet ou Wi-Fi uniquement)
  • Tableau de bord personnalisable par glisser-déposer de widgets
  • Accès à distance, redémarrage et l’arrêt du Raspberry Pi
  • Ajout et contrôle de capteurs, actionneurs et extensions connectées à un Raspberry Pi
  • Configuration de déclencheurs pour les Raspberry Pi, les capteurs et les actionneurs
  • Configuration et réception d’alertes de dépassement de seuil via e-mail et SMS
  • Surveillance de périphériques et création d’historique de valeurs fournies par les capteurs
  • Test et configuration de matériel via le GPIO
  • Et bientôt ! Configuration des actions et des commandes récurrentes

Les images fournies par Cayenne

Cette série d’images fournies par Cayenne montre des copies d’écran sur navigateur web, puis sur l’application smartphone de Cayenne.

Copies d’écran smartphone

Cayenne_Mobile_App_Add_Device

Ajouter un capteur… il y a le choix

Cayenne_Mobile_App_Settings

Configurer les périphériques du Pi

Cayenne_Mobile_App_GPIO

Accéder au GPIO

Cayenne_Mobile_App_Schedule

Programmer une tâche

Cayenne_Mobile_App_Configure_Trigger1

Mettre en place un déclencheur

Cayenne_Mobile_App_Configure_Trigger2

Un autre trigger pour faire varier la luminosité d’un éclairage

Cayenne_Mobile_App_Dashboard

Exemple de tableau de bord sur smartphone

Cayenne_Mobile_App_Dashboard2

Tableau de bord avec variateur de lumière

Cayenne_Mobile_App_Triggers

Les différents triggers programmés

Cayenne_Mobile_App_Widget_Settings

Configurer un capteur

Cayenne_Mobile_App_Widget_Settings2

Configurer un capteur de luminosité

Copies d’écran navigateur web

Cayenne_Online_Add_Device_600px

Cayenne_Online_Configure_600px

Cayenne_Online_Configure_Sensor_600px

Cayenne_Online_Configure_Sensor_Type_600px

Cayenne_Online_Dashboard_600px

Cayenne_Online_Device_Settings_600px

Cayenne_Online_Extension_Channels_600px

Cayenne_Online_GPIO_600px

Cayenne_Online_Historical_Data_600px

Essais de Cayenne

Vous imaginez bien que j’ai voulu tester cette solution et ne pas me contenter de reprendre ce communiqué. Voici ce que ça donne…

J’ai commencé par créer un compte gratuit sur Cayenne puis…

Installation de l’application Cayenne

appli_cayenne_600pxL’application est disponible pour iOS et pour Android. Une fois l’installation de l’application Cayenne faite vous pouvez la lancer (nan, pas le téléphone… juste l’appli 🙂 )

Screenshot_2016-05-19-19-15-25

Vérifiez que le Raspberry Pi est en fonctionnement. c’est bon ? On continue…

Screenshot_2016-05-19-19-15-43

Le « détecteur de Raspberry Pi » s’ouvre

Screenshot_2016-05-19-19-15-51

Cliquez sur « Find Raspberry Pis » et la détection commence…

Screenshot_2016-05-19-19-15-58

Bingo ! Cayenne a trouvé un RasPi et me donne son IP… c’est OK sélectionnez le Pi en cliquant dans la case à cocher à côté de son nom

Screenshot_2016-05-19-19-16-11

on peut le configurer en cliquant sur Setup

Screenshot_2016-05-19-19-16-19

L’installation démarre…

Mais que se passe-t-il sur le Raspberry Pi ?

Je suis toujours curieux de savoir ce qui se passe sur mon Raspberry Pi…

 sudo wget https://s3.amazonaws.com/mydevices-cayenne/prod/agents/1.0/rpi.sh
sudo chmod 774 rpi.sh
sudo mv rpi.sh rpi_0fxtzycgi1.sh
sudo nohup ./rpi_0fxtzycgi1.sh

Donc ça lance un fichier appelé rpi.sh dans lequel il y a :

pi@raspberrypi:~ $ cat rpi.sh
#!/bin/bash
# myDevices setup script
set -e
NAME="$0"
PREFIX="myDevices-1.0"
HOME="$( cd "$( dirname "${BASH_SOURCE[0]}" )"  pwd )"
echo $NAME
codeRaw="${NAME##*_}"
inviteCode="${codeRaw%.*}"
wget -O $HOME/$PREFIX.tar.gz "http://updates.mydevices.com/raspberry/myDevices-1.0.tar.gz"
tar -xzvf $HOME/$PREFIX.tar.gz
cd $HOME/$PREFIX
chmod +x $HOME/$PREFIX/setup.sh
bash -x $HOME/$PREFIX/setup.sh -code "$inviteCode" "$@"

Voilà vous avez tout sous la main, je vous laisse décortiquer tout ça…

Continuons avec notre appli Cayenne…

Screenshot_2016-05-19-19-22-10

Le RasPi est prêt à l’emploi. Un écran d’aide apparait

Screenshot_2016-05-19-19-37-26

Par défaut un certain nombre de paramètres apparaissent. La température du CPU est en °F… Elle devrait pouvoir être affichée en °C dans une prochaine version tout comme c’est déjà le cas avec les autres capteurs de température (voir l’exemple du DS18B20 testé un peu plus loin dans l’article) . Ce premier écran nous donne déjà un certain nombre d’informations intéressantes sur notre Raspberry Pi.

Screenshot_2016-05-19-19-23-23

Non, ce n’est pas l’encéphalogramme du Raspberry Pi, juste l’évolution de la courbe de température affichée en tapant sur la jauge de température…

Screenshot_2016-05-19-19-23-59

Quelques infos sur la machine

Screenshot_2016-05-19-19-24-11

Un accès direct au GPIO, avec la possibilité de voir et/ou de modifier l’état des ports.

Screenshot_fm_vnc

On accède même au bureau du Raspberry Pi à distance :)

Cette première étape fonctionne, j’ai le contrôle de mon RasPi sur le smartphone.

L’interface web de Cayenne

cayenne_FB

Connectez vous sur la page web de Cayenne. En haut à gauche de l’écran, il y a un menu. Choisissez ADD New… > Device

Vous aboutissez sur un menu permettant de choisir ce que vous souhaitez ajouter : Actionneur, extensions ou capteurs.

Vous voyez par exemple ci-dessus le menu des capteurs disponibles. Si vous cliquez sur un type de capteur vous déroulez la liste des capteurs que Cayenne va gérer de façon native. Si vous cliquez sur température vous obtenez :

cayenne_capteurs_temp

Ce résultat est susceptible d’évoluer puisque l’équipe de Cayenne ajoute constamment des nouveautés à ses listes de capteurs/actionneurs/cartes d’extension.

Si vous vous voulez ajouter des extensions :

cayenne_extensionsCliquez par exemple sur Analog Converter et vous obtenez :

cayenne_analog_devices

On voit que la liste est déjà conséquente et elle va encore s’allonger 🙂

Pour tous ces composants listés dans la rubrique Add New… Cayenne fournit le driver, l’installe…

Il vous reste donc le plus difficile à faire : vous connecter à votre appli ou à votre page web sur Cayenne et… regarder le résultat 🙂

Comme j’avais un DS18B20 soudé sur un connecteur GPIO (c’est un reste de l’article sur le 1-wire 🙂 ), je n’ai pas hésité longtemps et je l’ai branché sur le Raspberry Pi 3 utilisé pour les tests. Après avoir activé le 1-wire le tableau de bord donne ceci :

cayenne_ds18B20_01

Dans la colonne de gauche, le DS18B20 a été ajouté à la liste, et sur le Tableau de bord il y a l’affichage de la température mesurée par la sonde… Et… c’est tout ce qu’il y a à faire !

Si on clique sur DS 18B20 dans la liste de gauche :

cayenne_ds18B20

On peut paramétrer l’utilisation du DS 18B20 par Cayenne et même… accéder à la documentation technique 🙂

Sur le tableau de bord en ligne, il suffit d’amener le curseur de la souris en haut d’un des widgets et le curseur prend la forme d’une croix à quatre flèches. On peut alors déplacer les widgets à son gré pour constituer un tableau de bord « maison ».

cayenne_deplacementCi-dessus la courbe de charge du CPU en cours de déplacement sur l’écran du navigateur.

J’ai eu un peu plus de mal sur l’appli Android. L’ajout du DS18B20 s’est bien passée. Par contre je n’ai pas réussi à déplacer les widgets à tous les coups… Avant de trouver la méthode : Il faut poser le doigt sur un widget et le tenir appuyé. Après un court instant le widget est « libéré » et peut être déplacé. Sur mon Samsung S4 avec le vibreur activé lorsque le widget est libéré, ça fait BZZZZT 🙂

Les modifications (ajouts ou retraits) que vous faites sur une des deux interfaces sont reportées sur l’autre.

Et les triggers ?

Un des points forts de Cayenne, c’est la possibilité de mettre en service des triggers (déclencheurs) qui vont déclencher des actions en fonction de seuils prédéterminés.

Le test consistera à déclencher un ventilateur lorsque le température mesurée par la sonde de température sera trop élevée.

Créer le Ventilateur

add_deviceAllez dans ADD NEW… et ajoutez un device (dispositif). Comme le ventilo est une machine tournante, j’ai choisi un moteur. L’écran ci-dessus montre le ventilo en cours de création, il reste à remplacer la première ligne (Motor Switch) par son nom réel : Ventilation. après un Add Sensor… c’est prêt !

add_ventilationRetour au tableau de bord qui est maintenant équipé d’une interface représentant le ventilateur. Là encore ça reste très simple : cliquez sur le bouton, le ventilateur tourne (l’icône du moteur passe au rouge) … cliquez à nouveau et le ventilateur s’arrête (l’icône redevient grise).

Configurer la sortie

J’ai connecté un relais au GPIO pour actionner le ventilateur.  C’est le GPIO 18 qui s’est vu confier cette tâche redoutable 🙂

Screenshot_2016-06-01-18-40-53Les ports GPIO sont par défaut (et par sécurité) configurés en entrée. J’ai passé le port 18 en sortie. cayenne_gpioSur l’écran du PC (ci-dessus) il m’a suffi de cliquer sur le bouton IN pour qu’il se transforme en OUT ! Qui dit plus simple ? Et si vous voulez tester la commande de ventilateur, cliquez sur le port GPIO lui même. LOW deviendra HIGH et votre ventilateur tournera 🙂

Mettre les triggers en place

La mise en place des triggers est aussi simple que tout ce que nous venons de voir et ne nécessite pas de connaissance particulière. La création est guidée par l’interface.

Créer un trigger pour le ventilateur

add_trigger3Premier trigger pour la mise sous tension du ventilateur. Cliquez sur My Triggers puis New Trigger. Nommez le trigger (ici Ventilation). Glissez l’icône du Raspberry Pi à côté du if (si) et sélectionner la source du déclenchement (ici la sonde DS18B20). Avec le curseur indiquez la température de déclenchement (ici 30°C) puis Température above (Température supérieure).

Dans la partie then (alors)  Sélectionnez ce que vous voulez déclencher (ici ventilation, GPIO 18) puis cochez la cas ON pour mettre le ventilo en route au déclenchement.

et … c’est tout. Cliquez en bas à droite sur Save Trigger. Votre premier déclencheur est prêt !

add_trigger9Second trigger pour arrêter le ventilo. Bin oui sinon il reste en fonctionnement après le déclenchement précédent… Même manip que précédemment, sauf qu’ici on déclenche lorsque la température redescend en dessous de 27°C (un peu d’hystérésis ça ne fait pas de mal 🙂 ) et qu’on arrête le ventilateur (case Off). et… bin oui, c’est tout aussi.

Créer un trigger pour le SMS

Mais ce qui serait bien ce serait d’être averti par SMS que le ventilo tourne (ou que la salle de bain est inondée, que la porte est ouverte, que le congélateur est à -4°C…).

add_trigger10Allez maintenant qu’on sait comment faire, créons un trigger qui m’avertit lorsque la température monte à 29°C, juste avant le démarrage du ventilo. J’ai sélectionné Text Message et rentré mon téléphone au format +336xxxxxxxx (en enlevant le zéro qui est avant le 6). Sauvez le trigger et… vous avez deviné ? C’est tout…

Tests des triggers

Tout ça c’est bien beau mais est-ce-que ça fonctionne ? En mettant les doigts sur la DS18B20, la sonde prend un coup de chaud et sa température augmente. Pile poil ce qu’il faut pour tester !

add_trigger524.19°C pas de problème, le ventilateur est éteint (petit navire 🙂 ).

add_trigger6La température grimpe. Au dessus de 30°C, le relais colle. Ici, à 31.75°C le ventilateur est en fonctionnement : le symbole du moteur est rouge. Lorsque la température redescend, le second trigger arrête bien le ventilateur.

Et pendant ce temps sur mon portable un message est arrivé :

Screenshot_2016-06-01-19-46-20L’avertissement a bien été envoyé sur mon téléphone. La température est un peu au dessus des 29°C programmés, car la transmission des infos se fait à intervalle de temps fixe. Ce qui explique le léger décalage entre le moment où le seuil est dépassé et le déclenchement du trigger.

 

Une abondante documentation (en anglais) est disponible pour vous aider à mettre votre système sur pied.

 

Videos

 

Conclusion

Cayenne se révèle un outil très puissant pour créer rapidement un tableau de bord. Si vous envisagez une installation domotique à base de Raspberry Pi, son utilisation vous simplifiera grandement la vie et vous disposerez d’un tableau de bord d’apparence professionnelle sans taper une seule ligne de code !

Le service Cayenne vous permet aussi d’afficher les courbes ou les événements sur une période, à des fins de surveillance ou d’analyse. Vous pourrez mettre en place avec facilité des déclencheurs, par exemple : « si la température excède 29 degrés, mettre la ventilation en marche » comme décrit ci-dessus.

La gamme des capteurs/actionneurs/cartes E/S évolue constamment et Cayenne devrait permettre de gérer prochainement de nouvelles plateformes et de nouveaux réseaux comme LoRa ou Sigfox (dont je vous avais présenté un exemple avec la carte de SNOC) pour faire communiquer tous ses objets entre eux via le moteur de règles et de gestion d’événements vraiment simple à utiliser sans programmation aucune.

Un forum communautaire est disponible pour trouver (ou amener) de l’information, laisser des suggestions, des commentaires…

Si vous réalisez des projets avec Cayenne, n’hésitez pas à partager vos réalisations sur framboise314, ne serait-ce qu’une capture d’écran !

Et puis si vous testez simplement cette plateforme, vos commentaires seront les bienvenus…

Sources

 

 

 

 

 

Ne négligez pas la qualité de la carte SD de votre Raspberry Pi !

$
0
0

evo_250pxLa carte microSD, un élément de votre Raspberry Pi qu’il ne faut pas négliger ! L’idée de ce billet est née lors de tests.
J’avais besoin de plusieurs cartes SD une montée sur le RasPi, une autre pour préparer le prochain test. J’en récupère une sur le bureau qui était dans un adaptateur SD <=> microSD un peu poussiéreux… je la prépare avec Win32DiskImager ah oui …. la vitesse est autour de 4 Mo/s. Vérification faite à la fin de l’opération (à la loupe car c’est écrit trop petit pour mes vieux yeux) c’est une classe (4) sans marque. Enfin si… Made in Taiwan.

La carte SD au cœur du Raspberry Pi

Bon, je continue mes tests en mettant la carte dans le RasPi. Mise sous tension… les 4 framboises, le texte défile… ça me semble normal. Et là, soudain tout bascule 🙁 Un écran noir, quelques clignotements de la LED ACT et…. rien !
Au bout d’un long moment, je me dis que la carte n’est pas bonne. Qu’à cela ne tienne, je la remets dans le lecteur de carte SD et… réécriture. Retour au RasPi ! Même combat ! arghhh

Les cartes SD

30c3-controllerCe sont des cartes mémoire dont la plupart embarquent un microcontrôleur de type ARM ou 8051, modifié par le constructeur afin de permettre une accélération matérielle des algorithmes contenus dans le micrologiciel de la carte. Ce microcontrôleur ainsi que le micrologiciel qu’il contient permettent une gestion des cellules de mémoire flash et de leur usure ainsi que la communication avec le système.

Dans la majorité des cas, les cellules de mémoire flash et le microcontrôleur se trouvent sur la même puce, ce pour des raisons pratiques. L’usure est due uniquement aux phases d’écriture. Selon la technologie le nombre d’écriture avant panne peut varier de 10 000 à 100 000. Ceci peut causer des problèmes sur un système qui accède (très) fréquemment au système de fichier sur la carte microSD (Raspbian).

sd_600pxLe micrologiciel embarqué peut être réécrit grâce à une séquence précise de commandes non documentée, variant d’un constructeur à l’autre. Certaines cartes MicroSD embarquent ainsi un micrologiciel modifié afin de masquer leur capacité réelle, comme dans le cas de cartes de contrefaçon, qui annoncent une capacité supérieure au nombre de blocs réellement disponibles. Cette annonce de capacité erronée peut conduire à des pertes de données, par réécriture des blocs précédents lorsque la capacité physique maximale est atteinte, certains blocs étant dupliqués par le micrologiciel modifié. (source Wikipedia)

Le Raspberry Pi

 La vitesse d’accès à la carte Sd est exactement la même sur un Rasperry Pi 2 et un Raspberry Pi 3. La principale limitation est le fait que le bus du lecteur de carte est limité à 20 Mo/s. Sur le RasPi 3 il est possible (mais pas recommandé à cause des erreurs qui se produisent) d’overclocker le bus à 40 Mo/s (http://www.jeffgeerling.com/blog/2016/how-overclock-microsd-card-reader-on-raspberry-pi-3).

cartes-memoires-sd-micro-sd_600px

image (c) http://www.cnetfrance.fr/produits/les-5-raisons-d-acheter-une-carte-sd-haute-performance-39799131.htm

Le test de démarrage

pi3_prises_600pxJe me suis placé dans les mêmes conditions pour les deux tests c’est à dire un Raspberry Pi 3 avec un système (la dernière version de Jessie en mode graphique), entièrement à jour (update/upgrade/rpi-update) en fonctionnement et déclenchement du chrono lors du clic sur le bouton Reboot. Arrêt du chrono lorsque le bouton « Menu » s’affiche dans la barre de tâches du bureau.

  • Carte Samsung EVO 16 Go Classe (10) : 25 secondes
  • Carte sans marque 8 Go Classe (4) : 2 minutes 35 secondes

carte_SD_FB

Une anecdote pour finir

Un de mes collègues qui gère son poulailler avec un Raspberry (projet PoulaGeek) se plaignait de plantages, carte microSD corrompue… Après avoir refait la carte avec Win32DiskImager ça refonctionnait une quinzaine et… rebelote ! Je lui ai conseillé de tester une carte EVO 16 Go comme celles que j’utilise (ce n’est pas de la pub, ce sont les cartes que je trouve au supermarché d’à côté à 8€ environ). Depuis je n’ai plus entendu parler de soucis avec sa carte SD.

Conclusion

Ne lésinez pas sur la qualité des cartes microSD que vous utilisez. Les quelques euros que vous économiserez, vous les repaierez en temps perdu à attendre votre système ou à refaire une nouvelle carte. Il faut savoir aussi que les cartes microSD comme tous les composants électroniques ne sont pas strictement identiques. A la sortie de la chaîne de fabrication, chaque composant est testé et classé en fonction de sa vitesse, des cellules mémoire défectueuses… Sans pouvoir vous le garantir à 100%, les microSD de meilleure qualité sont vendues par les « grands noms » alors que les mémoires « déclassées » finissent avec des marques folkloriques ou… pas de marque du tout !

panneau_danger_80pxPour plus de sécurité : Une carte microSD n’est pas éternelle. Un jour ou l’autre elle va lâcher ! Prévoyez d’en faire une copie de secours (Win32DiskImager sous Windows ou dd sous Linux) sous forme d’un fichier .img que vous ne mettrez que quelques minutes à transférer sur une carte neuve. La dernière version de Jessie embarque aussi un utilitaire qui peut cloner votre carte microSD à chaud… Vous ne pourrez plus dire que vous n’étiez pas prévenu(e).

Sources

On Hacking MicroSD Cards

 

Bootez votre Raspberry Pi 3 sur une clé USB

$
0
0

boot_USB_250pxOn attendait cette possibilité depuis la sortie du Raspberry Pi. Coincés par ce démarrage sur la carte SD imposé par les précédents SoC, on attendait l’arrivée de cette nouvelle.
Eh bien ça y est il est possible de booter sur une clé USB avec le Raspberry Pi 3 ! Bon, ça nécessite quelques manipulations mais après… ça fonctionne.

Booter le Raspberry Pi 3 sur sur un périphérique de stockage USB

Comment démarre le SoC

En fait ce qui nous intéresse ici, ce sont les toutes premières secondes de ce démarrage. Juste après que vous ayez branché la prise micro-usb d’alimentation, ou appuyé sur le bouton reset fraîchement installé sur votre Raspberry Pi. Dans un premier temps, le signal RUN s’établit, le SOC se réveille. Le SOC c’est le System On a Chip (Système Sur une Puce) de Broadcom. Ce SOC BCM2837 contient un processeur ARM cadencé à 1,2 GHz, un GPU VideoCore IV, de la mémoire cache et d’autres babioles qui accompagnent généralement les microprocesseurs (GPIO, timers, BUS divers et variés – I2C – SPI, contrôleur d’interruption – PIC, contrôleur de mémoire -MMU, UART…).

etape_01

A la mise sous tension, seul le GPU est activé. Le processeur ARM reste en veille, la SDRAM est désactivée. Le SOC comporte une ROM (Read Only Memory – Mémoire Morte) dans laquelle le fabricant a programmé le premier étage du bootloader. Lors de son réveil, le GPU est paramétré pour exécuter le programme qui est dans cette ROM. C’est ce qu’il fait et le firmware contenu en ROM a pour seul objectif d’accéder à la carte micro SD, qui doit être formatée en FAT (enfin, au moins la première partition)… SAUF si on a modifié un registre de l’OTP (One Time Programmable memory) qui dit au BCM2837 (celui qui équipe le Raspberry Pi 3) que lorsqu’il démarre, il va déjà voir s’il y a une carte SD opérationnelle. Si ce n’est pas le cas, il peut baguenauder et essayer de démarrer sur l’USB le SPI ou l’Ethernet…

boot_USB_01

Un Raspberry Pi 3 équipé d’une carte HiFiberry DAC + remarquez à droite de limage la carte SD posée sur le socle et pourtant… ça fonctionne !

Donc ce que je vous propose de faire c’est de commencer cette modif, prévoyez un peu de temps quand même…
Ce tutoriel est paru sur le blog raspberrypi.org, en voici une traduction.

 

Attention !
Ce tutoriel  EXPÉRIMENTAL est accessible aux débutants. Cependant vérifiez qu’il n’y a pas de messages d’erreur ni d’avertissements. Ce tutoriel ne fonctionne qu’avec certains modèles de clés USB si votre modèle de clé ne permet pas de booter le Raspberry Pi 3, inutile de m’incendier 🙂

Mise à jour du firmware

Commencez par une mise à jour du systéme

sudo apt-get update
sudo apt-get upgrade

Ensuite on met à jour le firmware dans /boot (start.elf et bootcode.bin) mais avec la version de la branche NEXT (expérimentale) : sudo BRANCH=next rpi-update

pi@raspberrypi:~ $ sudo BRANCH=next rpi-update
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
*** Performing self-update
*** Relaunching after update
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
*** Downloading specific firmware revision (this will take a few minutes)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 168 0 168 0 0 294 0 --:--:-- --:--:-- --:--:-- 294
100 51.1M 100 51.1M 0 0 413k 0 0:02:06 0:02:06 --:--:-- 468k
*** Updating firmware
*** Updating kernel modules
*** depmod 4.4.15-v7+
*** depmod 4.4.15+
*** Updating VideoCore libraries
*** Using HardFP libraries
*** Updating SDK
*** Running ldconfig
*** Storing current firmware revision
*** Deleting downloaded files
*** Syncing changes to disk
*** If no errors appeared, your firmware was successfully updated to 47d64831ccbc99080f98c1bc8948717c3416cb0f
*** A reboot is needed to activate the new firmware

 Autorisation du boot USB

On va modifier le fichier config.txt pour autoriser le boot USB :

echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt

Ceci ajoute program_usb_boot_mode=1 à la fin du fichier /boot/config.txt.

On peut maintenant redémarrer le Raspberry Pi et vérifier que le registre 17 de l’OTP a bien été modifié

sudo reboot

et pour vérifier le registre :

pi@raspberrypi:~ $ vcgencmd otp_dump | grep 17:
17:3020000a
pi@raspberrypi:~ $

Vérifiez bien que la valeur du registre 17 est    3020000a   ! (0x3020000a pour ceux qui parlent couramment en hexadécimal 😀 ).

Si vous le souhaitez vous pouvez effacer la ligne program_usb_boot_mode du fichier config.txt (attention de ne pas laisser de ligne blanche à la fin du fichier !) de façon à ce que si vous employez votre carte micro SD sur un autre Raspberry Pi, elle ne programme pas le mode de boot sur USB 😉 Vous pouvez faire la modif avec sudo nano /boot/config.txt, par exemple.

Les clés qui fonctionnent à coup sûr

Les tests ont pour le moment été réalisés avec

  • Sandisk Cruzer Fit 16Go
  • Sandisk Cruzer Blade 16Go
  • Sandisk Cruzer Blade 32Go (merci Michel)
  • Samsung 32Go USB 3.0 drive
  • MeCo 16Go USB 3.0
  • Sandisk Cruise Slice16 Go => celle que j’ai utilisé
  • Disque dur WD Pi Drive 314Go

boot_USB_05

Préparation d’une clé USB déjà partitionnée

Attention !
La clé va être effacée et toutes les données qu’elle contient seront perdue à tout jamais !

Commencez par insérer la clé USB dans un des ports USB du Raspberry Pi. Plutôt que de télécharger à nouveau l’image Raspbian, nous allons copier le système existant sur la carte micro SD du Raspberry Pi. La source (carte SD) sera /dev/mmcblk0 et la destination (clé USB) devrait être /dev/sda en supposant que vous n’ayez pas d’autres périphériques USB connectés.

boot_USB_07

On commence par utiliser parted pour créer une partition FAT32 de 100Mo, suivie d’une partition Linux ext4 qui occupera le reste de la place disponible.

La clé que j’ai utilisé contenait déjà une partition. Si votre clé n’a pas de partition, passez à l’étape suivante.

pi@raspberrypi:~ $ sudo parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mktable msdos
Warning: Partition(s) on /dev/sda are being used.
Ignore/Cancel? i
Warning: The existing disk label on /dev/sda will be destroyed and all data on
this disk will be lost. Do you want to continue?
Yes/No? y
Error: Partition(s) 1 on /dev/sda have been written, but we have been unable to
inform the kernel of the change, probably because it/they are in use. As a
result, the old partition(s) will remain in use. You should reboot now before
making further changes.
Ignore/Cancel?

Sortez par CTRL + C et rebootez le Raspberry Pictrl c et reboot

Préparation d’une clé USB non partitionnée

On commence par utiliser parted pour créer une partition FAT32 de 100Mo, suivie d’une partition Linux ext4 qui occupera le reste de la place disponible.

pi@raspberrypi:~ $ sudo parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mktable msdos
Warning: The existing disk label on /dev/sda will be destroyed and all data on
this disk will be lost. Do you want to continue?
Yes/No? y
(parted) mkpart primary fat32 0% 100M
(parted) mkpart primary ext4 100M 100%
(parted) print
Model: SanDisk Cruzer Slice (scsi)
Disk /dev/sda: 16,0GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number Start End Size Type File system Flags
1 1049kB 99,6MB 98,6MB primary fat32 lba
2 99,6MB 16,0GB 15,9GB primary ext4 lba

(parted) quit
Information: You may need to update /etc/fstab.

Nous allons maintenant formater les partitions et créer les systèmes de fichiers boot et root (ça peut prendre un certain temps selon la taille de la clé USB)

pi@raspberrypi:~ $ sudo mkfs.vfat -n BOOT -F 32 /dev/sda1
mkfs.fat 3.0.27 (2014-11-12)
pi@raspberrypi:~ $ sudo mkfs.ext4 /dev/sda2
mke2fs 1.42.12 (29-Aug-2014)
En train de créer un système de fichiers avec 3884032 4k blocs et 971040 i-noeuds.
UUID de système de fichiers=545cd535-8405-42eb-aafe-e92300be1f10
Superblocs de secours stockés sur les blocs :
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Allocation des tables de groupe : complété
Écriture des tables d'i-noeuds : complété
Création du journal (32768 blocs) : complété
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété

Transfert du système Raspbian sur la clé USB

On va monter les systèmes de fichiers nouvellement créés et installer rsync

pi@raspberrypi:~ $ sudo mkdir /mnt/target
pi@raspberrypi:~ $ sudo mount /dev/sda2 /mnt/target/
pi@raspberrypi:~ $ sudo mkdir /mnt/target/boot
pi@raspberrypi:~ $ sudo mount /dev/sda1 /mnt/target/boot/
pi@raspberrypi:~ $ sudo apt-get update; sudo apt-get install rsync
Atteint http://archive.raspberrypi.org jessie InRelease
.../...
Ign http://mirrordirector.raspbian.org jessie/rpi Translation-en
Lecture des listes de paquets... Fait
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
rsync est déjà la plus récente version disponible.
rsync passé en « installé manuellement ».
0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.

Maintenant que les systèmes de fichiers de la clé USB sont montés, on peut copier le boot et le root file system (rfs) dessus… Comptez une demi heure voire plus selon la taille du système ! Vous pouvez aller boire un café, une bière ou une boisson au cola selon votre préférence. Quoi ? De l’eau ? Non, Monsieur chez moi l’eau ne sert qu’à laver les patates 😉

sudo rsync -ax --progress / /boot /mnt/target

boot_USB_06

Régénérer les clés SSH

pi@raspberrypi:~ $ cd /mnt/target
pi@raspberrypi:/mnt/target $ sudo mount --bind /dev dev
pi@raspberrypi:/mnt/target $ sudo mount --bind /sys sys
pi@raspberrypi:/mnt/target $ sudo mount --bind /proc proc
pi@raspberrypi:/mnt/target $ sudo chroot /mnt/target
root@raspberrypi:/# rm /etc/ssh/ssh_host*
root@raspberrypi:/# dpkg-reconfigure openssh-server
Creating SSH2 RSA key; this may take some time ...
2048 7a:f7:33:4c:01:71:a3:fc:c1:2c:b4:9c:3c:3f:4b:19 /etc/ssh/ssh_host_rsa_key.pub (RSA)
Creating SSH2 DSA key; this may take some time ...
1024 28:c6:4b:d1:5e:d9:cb:8c:ca:ad:70:fe:87:08:a1:21 /etc/ssh/ssh_host_dsa_key.pub (DSA)
Creating SSH2 ECDSA key; this may take some time ...
256 f7:f1:9e:3f:6b:13:41:d2:d9:ee:a1:00:e2:ef:ed:db /etc/ssh/ssh_host_ecdsa_key.pub (ECDSA)
Creating SSH2 ED25519 key; this may take some time ...
256 fc:98:8c:c3:52:45:95:c1:67:78:41:0c:00:c6:23:f0 /etc/ssh/ssh_host_ed25519_key.pub (ED25519)
[ ok ] Restarting OpenBSD Secure Shell server: sshd.
root@raspberrypi:/# exit
exit
pi@raspberrypi:/mnt/target $ sudo umount dev
pi@raspberrypi:/mnt/target $ sudo umount sys
pi@raspberrypi:/mnt/target $ sudo umount proc

Modifier cmdline.txt

Il faut maintenant modifier cmdline.txt pour que la clé USB soit le root file system (RFS) à la place de la carte SD :

pi@raspberrypi:/mnt/target $ sudo sed -i "s,root=/dev/mmcblk0p2,root=/dev/sda2," /mnt/target/boot/cmdline.txt

/!\ il n’y a qu’une ligne de code et /mnt/target/boot/cmdline.txt est en un seul bloc

Modifier fstab

pi@raspberrypi:/mnt/target $ sudo sed -i "s,/dev/mmcblk0p,/dev/sda," /mnt/target/etc/fstab

/!\ il n’y a qu’une ligne de code et /mnt/target/etc/fstab est en un seul bloc

Démonter le système de fichier de la clé USB

pi@raspberrypi:/mnt/target $ cd ~
pi@raspberrypi:~ $ sudo umount /mnt/target/boot
pi@raspberrypi:~ $ sudo umount /mnt/target

Arrêter le Raspberry Pi 3

pi@raspberrypi:~ $ sudo poweroff

Maintenant vous pouvez débrancher la prise micro USB d’alimentation et enlever la carte SD

boot_USB_04

Attendez 2,87 secondes (nan c’est une connerie 😉 )

Redémarrer le Raspberry Pi 3

et… reconnectez l’alim… suspens 🙂

ecran_boot

Bon bin chez moi après ce bel écran coloré, ça boote 😀

Raspbian démarre et j’arrive sur le bureau en mode graphique. J’avais installé x11vnc, depuis mon PC je me reconnecte… Ma foi tout ça fonctionne !

Allez une petite verification :

pi@raspberrypi:~ $ df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/root 15G 4,0G 9,8G 29% /
devtmpfs 459M 0 459M 0% /dev
tmpfs 463M 0 463M 0% /dev/shm
tmpfs 463M 6,4M 457M 2% /run
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 463M 0 463M 0% /sys/fs/cgroup
/dev/sda1 93M 20M 73M 22% /boot
tmpfs 93M 0 93M 0% /run/user/1000

et aussi

fdisk -l

/dev/sda1 2048 194559 192512 94M c W95 FAT32 (LBA)
/dev/sda2 194560 31266815 31072256 14,8G 83 Linux

Et avec Ubuntu Mate ?

Là je n’ai pas testé personnellement, c’est Michel qui s’y est collé… Volà ce qu’il en dit :

« Pour Ubuntu Mate 16.10.1 je n’ai rien touché du tout. Ma carte SD était bien chargée d’applications et il a fallu une bonne heure pour faire le transfert de la carte SD vers la clé USB.

Le 1er démarrage un peu long…….20 secondes environ et ensuite un peu plus court.

Aucun fichier n’a été modifié, j’ai uniquement suivi le tuto à la lettre près. »

Si comme Michel vous avez testé d’autres distributions que Raspbian ou d’autres clés n’hésitez pas à ajouter les infos dans les commentaires, je les reprendrai en fin d’article 🙂

Conclusion

Depuis le temps qu’on attendait cette possibilité, elle est enfin disponible. Le Raspberry Pi boote sur autre chose que la carte micro SD !

Certes ceci est encore expérimental mais fonctionne bien. Il faudra tester le boot sur un disque dur classique et sur un SSD mais c’est déjà très encourageant.

boot_USB_02

Le boot Ethernet fonctionne, j’espère le tester bientôt. C’est un peu plus compliqué à mettre en oeuvre et il reste des points à améliorer sur ce démarrage mais c’est déjà fonctionnel 🙂

Sources

Pi 3 booting part I: USB mass storage boot beta

 

Pi 3 booting part II: Ethernet

 

 


Prenez VRAIMENT la main à distance sur votre Raspberry Pi avec x11VNC

$
0
0

Prendre-la-main-250pxSi vous êtes un lecteur habituel du blog, vous vous souvenez sans doute que je vous avais expliqué comment installer et démarrer automatiquement tightvncserver sous Raspbian Jessie.
Alors, me dires-vous, on sait déjà prendre la main à distance sur le Raspberry Pi…. Pourquoi ajouter VRAIMENT dans le titre ? Eh bien cette fois tout ce que vous ferez sur la machine distante sera fidèlement reproduit en local sur le Raspberry Pi !  Vous bougez la souris sur votre PC ? Le curseur se déplace sur l’écran du Raspberry Pi. Vous ouvrez un menu sur l’écran local du Raspberry Pi ? Il s’ouvre aussi sur la machine distante 🙂

NIVEAU_debutant

Cliquez pour avoir une définition de ces niveaux

Prenez la main à distance sur un Raspberry Pi avec x11vnc

Présentation

Comme indiqué plus haut, l’avantage de ce type de prise en main, c’est que tous les mouvements de souris, frappes clavier et affichage écran sont absolument identiques et simultanés sur l’écran local du Raspberry Pi et sur la machine distante sur laquelle vous intervenez.

Imaginez une classe avec 10 Raspberry Pi en service… Vous pouvez vous connecter sur chacun des Raspberry Pi pour voir ce que l’utilisateur est en train de faire, et comment il le fait. De plus si un des participants a un souci, vous pouvez prendre la main à distance sur sa machine et lui montrer comment il faut faire… sans bouger de votre place 🙂

 

Attention !
Ce tutoriel ne fournit pas une connexion sécurisée car il n’utilise pas de solution de communication sécurisée comme SSH. Il ne faudra l’utiliser que sur un réseau local !

Ceci étant dit voilà ce que je vous propose :

  • Voir comment fonctionnent les sessions graphiques sur le Raspberry Pi
  • Installer x11vnc sur le Raspberry Pi
  • Vérifier que ça fonctionne avec RealVNC sous Windows et KDRC sous Linux
  • Pour ceux que ça intéresse, lancer x11VNC automatiquement au démarrage de Raspbian

Ça vous va ?

Alors on y va 😆

Comment ça marche ?

Session graphique locale

principe_session locale_600pxLorsque vous ouvrez une session graphique en local sur un Raspberry Pi sous Raspbian Jessie, les informations à afficher sont envoyées au DISPLAY :0. c’est celui qui est affiché sur l’écran local via HDMI si vous êtes connecté(e) à l’écran de cette façon.

Session graphique distante avec tightvncserver

principe_session locale2_600pxLorsque vous ouvrez une session distante avec tightvncserver, une nouvelle session graphique est ouverte sur le Raspberry Pi. Les images sont envoyées sur le DISPLAY :1.

Ce que vous affichez sur l’écran de la machine distante est différent de ce qui est affiché sur l’écran du Raspberry Pi. Votre souris et votre clavier interagissent avec votre session graphique, mais absolument pas sur la session DISPLAY :0.

C’est un peu comme si vous étiez connecté(e) sur une autre machine

Session graphique distante avec x11vnc

principe_sessionx11_600pxVoilà ce qui nous intéresse ! Avec une machine distante connectée sur le même DISPLAY :0 que le Raspberry Pi en local. Conséquence : toute action d’une machine (clavier, souris, clics sur un menu, une icône…) est instantanément dupliquée sur l’autre machine. Dans un sens et dans l’autre.

Installation de X11vnc sur le Raspberry Pi

Mettez le système à jour

Comme d’habitude, partez d’une machine mise à jour avant de procéder à l’installation de x11vnc :

sudo apt-get update
sudo apt-get upgrade

Installez x11vnc

Vous pouvez maintenant passer à l’installation de x11vnc. Rien de bien compliqué : un simple sudo apt-get install x11vnc fera tout le travail pour vous 🙂

pi@raspberrypi:~ $ sudo apt-get install x11vnc
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés&nbsp;:
libvncclient0 libvncserver0 tcl tcl8.6 tk tk8.6 x11vnc-data
Paquets suggérés&nbsp;:
tcl-tclreadline
Les NOUVEAUX paquets suivants seront installés&nbsp;:
libvncclient0 libvncserver0 tcl tcl8.6 tk tk8.6 x11vnc x11vnc-data
0 mis à jour, 8 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 1 621 ko dans les archives.
Après cette opération, 3 403 ko d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] o
Réception de&nbsp;: 1 http://mirrordirector.raspbian.org/raspbian/ jessie/main libvncclient0 armhf0.9.9+dfsg2-6.1+deb8u1 [118 kB]
Réception de&nbsp;: 2 http://mirrordirector.raspbian.org/raspbian/ jessie/main libvncserver0 armhf0.9.9+dfsg2-6.1+deb8u1 [174 kB]
.../...
Paramétrage de tk (8.6.0+8+b1) ...
Paramétrage de x11vnc-data (0.9.13-1.2) ...
Paramétrage de x11vnc (0.9.13-1.2) ...
Traitement des actions différées («&nbsp;triggers&nbsp;») pour libc-bin (2.19-18+deb8u4)&nbsp;. ..
pi@raspberrypi:~ $

Une entrée dans le menu

L’installation de x11vnc crée un fichier dans /usr/share/applications. ce fichier s’appelle x11vnc.desktop et il contient les informations destinées à l’insertion d‘une entrée de menu permettant d’accéder à x11vnc :

pi@raspberrypi:/usr/share/applications $ cat x11vnc.desktop
[Desktop Entry]
Name=X11VNC Server
Comment=Share this desktop by VNC
Exec=x11vnc -gui tray=setpass -rfbport PROMPT -bg -o %%HOME/.x11vnc.log.%%VNCDISPLAY
Icon=computer
Terminal=false
Type=Application
StartupNotify=false
#StartupWMClass=x11vnc_port_prompt
Categories=Network;RemoteAccess;

Ce qui produit l’affichage suivant dans le menu

ssvnc_04Si vous souhaitez franciser cette entrée du menu, rien de plus simple, modifiez le fichier x11vnc.desktop en l’ouvrant avec nano et changez le texte de ces deux lignes :

[Desktop Entry]
Name=Serveur X11VNC
Comment=Partager ce bureau avec VNC

Ce qui fait que le texte sera en français dans le menu ainsi que la bulle d’aide qui s’ouvre quand on passe la souris sur le texte :

ssvnc_09

Lancement manuel de x11vnc

Cliquez sur Serveur X11VNC dans le menu pour lancer le programme. Après quelques secondes, une fenêtre s’ouvre :

ssvnc_05Laissez le port sur 5900 (en principe le port 5900 correspond au DISPLAY :0, le port 5901 au DISPLAY :1 etc. Si vous modifiez le port, faites le en connaissance de cause et attendez vous à faire des modifs aussi sur la machine qui va se connecter à distance 🙂

Si vous avez des fichiers à transférer choisissez un mode de transfert. J’ai coché UltraVNC bien que je n’utilise pas cette possibilité… On ne sait jamais.

Validez vos choix en cliquant sur le bouton OK en bas à gauche de la fenêtre.

Encore quelques secondes d’attente (et on voit sur le moniteur CPU que celui-ci bosse !

ssvnc_06Autorisez les connexions distantes (cochez la case Accept Connections) sinon vous risquez d’avoir des soucis pour vous connecter à distance 😉

Dans la zone de texte Password saisissez un mot de passe qui sera demandé lorsque vous vous connecterez à distance. On n’est jamais trop prudent. Sans honte, j’ai choisi raspberry comme mot de passe 😛 (bah si un pirate russe hacke mon raspberry pi il aura fait du boulot pour rien 🙂 ). Vous pouvez laisser ViewOnly Password vide. C’est le mot de passe qui serait demandé pour une connexion en view only (sans possibilité d’interaction).

Cliquez sur Apply pour valiser vos choix puis sur OK.

En haut à droite de la barre de tâches vous voyez apparaître une icône de x11vnc (bon, ils se sont pas forcés pour le côté graphique 😉 )

ssvnc_07ssvnc_10Si vous cliquez sur cette icône, vous ouvrez un menu qui vous permettra de régler certains paramètres de x11vnc.

En particulier vous disposez ici de l’aide de x11vnc mais aussi de la possibilité d’arrêtre x11vnc.

D’autre part l’icône est un indicateur puisque si cette icône disparait cela signifie que x11vnc s’est arrêté de fonctionner pour une raison ou pour une autre.

Suite à ces opérations, x11vnc tourne sur le Raspberry Pi, nous pouvons essayer de nous connecter depuis un poste distant.

Connexion depuis un poste Windows

 

Installation
Si ce n’est pas fait, téléchargez et installer RealVNC Viewer (https://www.realvnc.com/download/viewer/).

Lancez l’exécution de RealVNC sur le PC distant.

viewer_01Saisissez l’adresse et le numéro de port de la machine sur laquelle vous voulez vous connecter (normalement c’est le Raspberry Pi dont on parle depuis le début de cet article 😉 ). Cliquez sur le bouton Connexion.

viewer_02De quoi je mêle ? Ignorez superbement ce message. C’est qui qui commande hein ? Dites lui OK et on n’en parle plus !

viewer_03RealVNC Viewer vous avertit que la connexion ne sera pas chiffrée. Allez on y va, cliquez sur Continuer.

viewer_04Hé non ce n’est pas encore fini 🙂 Entrez le mot de passe que vous avez saisi tout à l’heure dans la fenêtre de x11vnc sur le Raspberry, puis cliquez sur OK.

Allez c’était le clic final !

viewer_05Une superbe fenêtre s’ouvre sur votre écran et vous voici sur la session de votre Raspberry Pi. Pas de croix noire comme lors du premier lancement de tightvncviewer mais vous avez ici la flèche habituelle de Raspbian Jessie. Bougez la souris, ouvrez le menu et observez l’écran d’origine de votre Raspberry Pi…. Alors ?

Tout en haut, au milieu de la fenêtre il ya un rectangle. Si vous mettez le curseur de la souris dessus vous ouvrez un menu qui vous donne accès aux options de RealVNC.

ssvnc_08En particulier une des icônes vous permet d’envoyer CTRL ALT DEL sur la machine distante. Passez le curseur sur les icônes pour obtenir des infos sur l’utilisation de celles-ci.

Connexion depuis un poste Linux

Installation
Si ce n’est pas fait, installez KRDC sur système Linux : sudo apt-get install krdc

Ouvrez KRDC sur le poste Linux.

krdc_01Saisissez l’adresse du Raspberry Pi et le numéro de port sur lequel vous pouvez accéder à x11vnc. Cliquez sur la flèche située à droite de la zone de saisie pour accéder à x11vnc.

krdc_02Une fenêtre de configuration (Host Configuration – KRDC) s’ouvre. Vous pouvez choisir la qualité de transmission. Si votre réseau fonctionne bien, optez pour High Quality. Cochez la case Remember password si vous souhaitez mémoriser le mot de passe.

Lorsque vous avez terminé la configuration, cliquez sur le bouton OK.

krdc_03bDans la fenêtre qui s’ouvre, saisissez le mot de passe qui vous permet d’accéder à la session ouverte sur le Raspberry Pi puis cliquez sur le bouton OK.

krdc_04_600px

Cliquez pour agrandir…

Et voilà votre fenêtre du bureau Raspbian Jessie ouverte dans KRDC…

Bon, il reste un inconvénient… Le lancement de x11vnc est valable pour cette session du bureau. Si vous éteignez le Raspberry Pi, il faudra relancer à chaque fois x11vnc. Pas cool si c’est un Raspberry headless (sans clavier, souris ni écran 🙂 )

Alors il nous reste une dernière étape : automatiser le lancement de x11vnc !

Lancement automatique sous Raspbian Jessie

NIVEAU_avancé

Cliquez pour avoir une définition des niveaux

Créer un fichier mot de passe

Comme il faut saisir le mot de passe à chaque lancement, ce n’est pas pratique avec un Raspberry Pi headless… La solution, c’est de créer un fichier, d’y ranger le mot de passe et d’indiquer à x11vnc où il doit aller récupérer le mot de passe.

Il n’y a pas d’endroit privilégié pour stocker le mot de passe. Il peut être dans /home/pi/.vnc/ ou dans /etc. C’est cette option que j’ai choisie en créant un fichier x11vnc.pass avec l’option -storepasswd.

pi@raspberrypi:~ $ sudo x11vnc -storepasswd /etc/x11vnc.pass
Enter VNC password:
Verify password:
Write password to /etc/x11vnc.pass?  [y]/n y
Password written to: /etc/x11vnc.pass
pi@raspberrypi:~ $ sudo cat /etc/x11vnc.pass
ë▒▒▒▒▒

Ne cherchez pas à lire le mot de passe, il n’est bien entendu pas stocké en clair dans le fichier !

Créer le service pour Raspbian Jessie

Pour permettre le lancement automatique, il faut créer un fichier x11vnc.service dans /lib/systemd/system avec nano.

sudo nano /lib/systemd/system/x11vnc.service

Saisissez les lignes suivantes dans le fichier

[Unit]
Description=Start x11vnc at startup.
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pass -rfbport 5900 -shared

[Install]
WantedBy=multi-user.target

Maintenant que le service est prêt il faut demander à systemd de le prendre en compte pour qu’il soit lancé au démarrage :

sudo systemctl daemon-reload
sudo systemctl enable x11vnc.service

pi@raspberrypi:/usr/share/applications $ sudo systemctl daemon-reload
pi@raspberrypi:/usr/share/applications $ sudo systemctl enable x11vnc.service
Created symlink from /etc/systemd/system/multi-user.target.wants/x11vnc.service to /lib/systemd/system/x11vnc.service.

Bon, tout s’est bien passé, on peut rebooter le Raspberry Pi, vérifier en se connectant à distance que le lancement automatique de x11vnc a bien été fait.

Conclusion

C’est une demande souvent formulée : « tightvncserver c’est bien mais ce que je voudrais c’est intervenir sur le bureau de Raspbian Jessie, celui qui est ouvert, pas un autre…« 

Dans cette article vous trouverez les bases pour prendre la main à distance sur un Raspberry Pi. Tout n’est pas parfait, vous voudrez sans doute adapter la résolution de l’écran… Bon, je vous laisse un peu de boulot 🙂 Vous ne pensiez pas vous en tirer comme ça ?

Et puis si vous êtes sage, on verra peut-être un de ces jours comment prendre la main à distance mais de façon sécurisée, cette fois… Mais ça… c’est une autre histoire !

Sources

 

 

 

 

Connectez-vous à distance au Raspberry Pi avec TeamViewer

$
0
0

teamviewer_250pxAprès vous avoir présenté tightvncserver puis x11VNC, voici venir TeamViewer (TW) pour le Raspberry Pi.
Encore une façon de prendre la main à distance sur un Raspberry Pi, très intéressante si le RasPi est headless (sans écran/clavier).
Alors que les solutions précédentes utilisaient des ports particuliers, TW utilise les ports standard 80 et 443.

NIVEAU_debutant

Cliquez pour avoir une définition de ces niveaux

 

Attention
Ce tutoriel concerne uniquement l’installation de Teamviewer sur le Raspberry Pi. Pour l’installation de TeamViewer sur des machines sous Windows, Android ou Linux… RTFM

TeamViewer : prenez la main à distance sur votre Raspberry Pi

Comment ça marche ?

principe2En pratique chacune des deux machines se connecte à un serveur tiers appelé ici TeamViewer Maître chez TW (en rouge). Comme ils utilisent des ports standard, il n’y a pas de ports visibles ouverts, donc moins d’attaques. Ensuite c’est le serveur qui se charge de transférer les informations d’une machine à l’autre.

Lors de l’établissement d’une connexion, TeamViewer détermine le type de connexion optimal. Après authentification via les serveurs TW, une connexion directe est établie dans 70 % des cas via UDP ou TCP (et ce même derrière les passerelles normalisées, les routeurs NAT et les pare-feux). Les autres connexions sont acheminées par le biais du réseau de routeurs redondant de TW via TCP ou tunnel HTTP. Il n’y a donc pas besoin d’ouvrir des ports pour pouvoir travailler avec TeamViewer !

Vu côté utilisateur, c’est comme si les deux machines étaient directement reliées (en bleu). C’est une des différences fondamentales avec tightvncserver ou x11VNC, qui réalisaient une liaison en direct entre les deux machines.

Secret pour tout le monde

Comme décrit ci-dessous, même chez TeamViewer, exploitant des serveurs de routage, personne ne peut lire les données chiffrées échangées.

Le trafic TeamViewer est sécurisé par des échanges de clés publiques/privées RSA et un chiffrement de session AES (256 bits). Cette technologie est basée sur les même standards que les technologies HTTPS ou SSL et est considérée comme parfaitement sécurisée selon les normes actuelles. Comme la clé privée ne quitte jamais l’ordinateur client, ce procédé permet d’assurer que les ordinateurs intermédiaires (y compris les serveurs TeamViewer) ne peuvent pas déchiffrer les données. La clé publique du cluster maître est déjà intégrée dans chaque client TeamViewer. Ceci permet de chiffrer les messages envoyés au cluster maître et de vérifier sa signature. L’infrastructure à clé publique PKI empêche efficacement les attaques intermédiaires du type « man in the middle » (homme du milieu).

chiffrement-et-auth_600px

Par ailleurs, avec le chiffrement, le mot de passe n’est jamais transmis directement, mais selon le procédé « challenge-response » (stimulation/réponse) et n’est mémorisé que sur les ordinateurs locaux. Pendant l’authentification, le mot de passe n’est jamais transmis directement grâce à l’utilisation du protocole SRP (Secure Remote Password). Uniquement un vérificateur de mot de passe est stocké sur l’ordinateur local.

Et… c’est sûr ?

Les identifiants TeamViewer sont générés directement et automatiquement par TeamViewer à l’aide des caractéristiques matérielles de l’ordinateur. Les serveurs TeamViewer contrôlent la validité de cet identifiant à chaque connexion.

La protection contre les attaques par force brute

Dans la pratique, ce sont cependant souvent des attaques très primitives qui s’avèrent les plus dangereuses. Dans le contexte de la sécurité informatique, une attaque par force brute est souvent la tentative de deviner, par des essais répétés, un mot de passe qui protège l’accès à une ressource. Grâce à la performance croissante des ordinateurs disponibles sur le marché, le temps nécessaire pour deviner un mot de passe long est considérablement réduit. Pour dissuader les attaques par force brute, TeamViewer augmente de façon exponentielle le temps d’attente entre les tentatives de connexion.

protection

Ainsi, pour 24 tentatives, 17 heures sont nécessaires. Le temps d’attente entre les tentatives de connexion n’est réinitialisé qu’une fois le mot de passe entré avec succès. TeamViewer protège  contre des attaques provenant d’un ordinateur spécifique, mais aussi contre celles provenant de plusieurs ordinateurs. Ces attaques sont connues sous le nom d’attaques botnet, qui tentent d’accéder à un identifiant spécifique.

Installation de TeamViewer sur le Raspberry Pi

Raspbian Jessie en mode graphique

teamviewer_05aBon, on va passer à la pratique, si vous le voulez bien…

Il y a quelque temps il n’était pas forcément facile de trouver le logiciel sur le site de TeamViewer, la version destinée au Raspberry Pi est accessible sous forme de paquet .deb sur cette page : https://www.teamviewer.com/iotcontest. Il est aussi accessible à présent sur la page des téléchargements Linux.

Commencez comme toujours par la mise à jour de votre version de Raspbian :

sudo apt-get update
sudo apt-get upgrade

page_raspi

Mais bon, une fois trouvé on va pouvoir l’installer. Si vous préférez le mode graphique (quelle idée ! 🙂 ) allez sur la page et cliquez sur le bouton Download…

Plus sérieusement dans un terminal lancez a récupération du paquet .deb :

wget http://download.teamviewer.com/download/linux/version_11x/teamviewer-host_armhf.deb

pi@raspberrypi:~ $ wget http://download.teamviewer.com/download/linux/version_11x/teamviewer-host_armhf.deb
--2016-08-25 15:36:49--&amp;nbsp; http://download.teamviewer.com/download/linux/version_11x/teamviewer-host_armhf.deb
Résolution de download.teamviewer.com (download.teamviewer.com)… 46.163.100.214, 46.163.100.216, 46.163.100.213, ...
Connexion à download.teamviewer.com (download.teamviewer.com)|46.163.100.214|:80… connecté.
requête HTTP transmise, en attente de la réponse… 301 Moved Permanently
Emplacement&amp;nbsp;: https://download.teamviewer.com/download/linux/version_11x/teamviewer-host_armhf.deb [suivant]
--2016-08-25 15:36:49--&amp;nbsp; https://download.teamviewer.com/download/linux/version_11x/teamviewer-host_armhf.deb
Connexion à download.teamviewer.com (download.teamviewer.com)|46.163.100.214|:443… connecté.
requête HTTP transmise, en attente de la réponse… 302 Found
Emplacement&amp;nbsp;: https://downloadeu2.teamviewer.com//download/linux/version_11x/teamviewer-host_11.0.63329_armhf.deb [suivant]
--2016-08-25 15:36:49--&amp;nbsp; https://downloadeu2.teamviewer.com//download/linux/version_11x/teamviewer-host_11.0.63329_armhf.deb
Résolution de downloadeu2.teamviewer.com (downloadeu2.teamviewer.com)… 178.162.205.111, 2a00:c98:2050:a031:1::1
Connexion à downloadeu2.teamviewer.com (downloadeu2.teamviewer.com)|178.162.205.111|:443… connecté.
requête HTTP transmise, en attente de la réponse… 200 OK
Taille&amp;nbsp;: 6231798 (5,9M) [application/octet-stream]
Sauvegarde en&amp;nbsp;: «&amp;nbsp;teamviewer-host_armhf.deb&amp;nbsp;»

teamviewer-host_arm 100%[=====================&amp;gt;]&amp;nbsp;&amp;nbsp; 5,94M&amp;nbsp;&amp;nbsp; 462KB/s&amp;nbsp;&amp;nbsp; ds 14s

2016-08-25 15:37:03 (450 KB/s) — «&amp;nbsp;teamviewer-host_armhf.deb&amp;nbsp;» sauvegardé [6231798/6231798]

Une fois le paquet récupéré on peut l’installer :

sudo dpkg -i teamviewer-host_armhf.deb

pi@raspberrypi:~ $ sudo dpkg -i teamviewer-host_armhf.deb
Selecting previously unselected package teamviewer-host.
(Reading database ... 118080 files and directories currently installed.)
Preparing to unpack teamviewer-host_armhf.deb ...
Unpacking teamviewer-host (11.0.63329) ...

dpkg: dependency problems prevent configuration of teamviewer-host:
teamviewer-host depends on libqt5gui5 (&amp;gt;= 5.2.1); however:
Package libqt5gui5 is not installed.
teamviewer-host depends on libqt5widgets5 (&amp;gt;= 5.2.1); however:
Package libqt5widgets5 is not installed.
teamviewer-host depends on libqt5qml5 (&amp;gt;= 5.2.1); however:
Package libqt5qml5 is not installed.
teamviewer-host depends on libqt5quick5 (&amp;gt;= 5.2.1); however:
Package libqt5quick5 is not installed.
teamviewer-host depends on libqt5webkit5 (&amp;gt;= 5.1.1); however:
Package libqt5webkit5 is not installed.
teamviewer-host depends on libqt5x11extras5 (&amp;gt;= 5.2.1); however:
Package libqt5x11extras5 is not installed.
teamviewer-host depends on qtdeclarative5-qtquick2-plugin (&amp;gt;= 5.2.1) | qml-module-qtquick2 (&amp;gt;= 5.2.1); however:
Package qtdeclarative5-qtquick2-plugin is not installed.
Package qml-module-qtquick2 is not installed.
teamviewer-host depends on qtdeclarative5-controls-plugin (&amp;gt;= 5.2.1) | qml-module-qtquick-controls (&amp;gt;= 5.2.1); howev
dpkg: error processing package teamviewer-host (--install):
dependency problems - leaving unconfigured
Errors were encountered while processing:
teamviewer-host

Zut ! Il manque des dépendances ! Et le paquet ne s’installe pas 🙁 On va forcer l’installation des paquets manquants : (voyez l’option -f sur cette page pour plus d’explications)

sudo apt-get -f install

pi@raspberrypi:~ $ sudo apt-get -f install
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Correction des dépendances... Fait
Les paquets supplémentaires suivants seront installés :
libqt5core5a libqt5dbus5 libqt5gui5 libqt5network5 libqt5opengl5
libqt5printsupport5 libqt5qml5 libqt5quick5 libqt5sql5 libqt5sql5-sqlite
libqt5webkit5 libqt5widgets5 libqt5x11extras5 libxcb-icccm4 libxcb-image0
libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xkb1
libxkbcommon-x11-0 qml-module-qtquick-controls qml-module-qtquick-dialogs
qml-module-qtquick-layouts qml-module-qtquick-privatewidgets
qml-module-qtquick-window2 qml-module-qtquick2 qttranslations5-l10n
Les NOUVEAUX paquets suivants seront installés :
libqt5core5a libqt5dbus5 libqt5gui5 libqt5network5 libqt5opengl5
libqt5printsupport5 libqt5qml5 libqt5quick5 libqt5sql5 libqt5sql5-sqlite
libqt5webkit5 libqt5widgets5 libqt5x11extras5 libxcb-icccm4 libxcb-image0
libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xkb1
libxkbcommon-x11-0 qml-module-qtquick-controls qml-module-qtquick-dialogs
qml-module-qtquick-layouts qml-module-qtquick-privatewidgets
qml-module-qtquick-window2 qml-module-qtquick2 qttranslations5-l10n
0 mis à jour, 27 nouvellement installés, 0 à enlever et 0 non mis à jour.
1 partiellement installés ou enlevés.
Il est nécessaire de prendre 17,4 Mo dans les archives.
Après cette opération, 70,6 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n]

Répondez O : Cette commande va forcer l’installation des dépendances nécessaires et vous pouvez ensuite relancer l’installation du paquet .deb. Cette fois ça devrait bien se passer 😉

pi@raspberrypi:~ $ sudo dpkg -i teamviewer-host_armhf.deb
(Lecture de la base de données… 119449 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de teamviewer-host_armhf.deb …
Removed symlink /etc/systemd/system/multi-user.target.wants/teamviewerd.service.
Dépaquetage de teamviewer-host (11.0.63329) sur (11.0.63329) …
Paramétrage de teamviewer-host (11.0.63329) …

Paramétrage de l’installation

Sur le bureau de votre Raspberry Pi apparait cette fenêtre :

teamviewer_01A moins que vous ne soyez pas d’accord avec les termes de la licence (ah bon, vous les lisez, vous ?) cliquez sur le bouton Accepter l’accord de licence.

Ceci entraîne l’affichage d’une icône TeamViewer dans la barre des tâches :

teamviewer_04et l’affichage d’une fenêtre vous permettant d’autoriser les connexions distantes et vous donnant l’identifiant de votre Raspberry Pi ainsi que le mot de passe pour la connexion.

teamviewer_02

Vous noterez aussi la présence d’une nouvelle entrée de menu qui vous permettra de lancer TeamViewer :

teamviewer_03A partir de ce moment votre Raspberry Pi est accessible par TeamViewer !

Accès depuis une machine windows

Sur la machine Windows il faudra installer dans un premier temps la version de TW correspondante.

Lancez TW :

teamviewer_07_local2Saisissez l’identifiant du RasPi et cliquez sur Connexion à un partenaire.

teamviewer_08_local2Saisissez maintenant le mot de passe que vous avait donné le RasPi lors du lancement de TW…

teamviewer_09_localVous voici connecté(e) au Rasberry Pi distant, dans la session en cours. C’est à dire que comme avec x11VNC toutes les actions (clavier/souris) réalisées sur une des machines est instantanément reproduite sur l’autre…

Accès depuis une machine Linux

Sur la machine Linux il faudra installer dans un premier temps la version de TW correspondante.

Lancez TW, les étapes pour se connecter sont exactement les mêmes que pour Windows (voir ci-dessus) :

teamviewer_12_debianIci la connexion au Raspberry a été faite sur une machine sous Debian/LXDE.

Accès depuis un smartphone Android

Sur un smartphone Android il suffit d’installer l’application TeamViewer for Remote Control.

appli_android
Une fois que c’est installé démarrez l’appli :

android_connect

Cliquez sur Connecter (en bas à gauche de l’écran) puis renseignez l’ID du Raspberry Pi et son mot de passe (il vous est demandé quand vous validez l’ID)

Et ensuite…

screenshot_2016-08-25-19-51-49_600px

screenshot_2016-08-25-19-52-02_600px

screenshot_2016-08-25-19-52-18_600px

Vous pouvez contrôler votre Raspberry Pi depuis votre smartphone 🙂

Combien ça coûte ?

Alors là c’est simple : TeamViewer est gratuit pour un usage personnel ! Ça veut dire que si vous voulez prendre la main sur le Raspberry Pi de votre cousin qui habite à 300 Km (bon, faut pas qu’il ait une bande passante de merde trop faible quand même) ça ne vous coutera rien…

Seules les entreprises doivent prendre un compte payant (c’est d’ailleurs ce qui permet à TW de fournir le service gratuitement aux particuliers…)

Et le transfert de fichiers ?

Bin… c’est ce qui a retardé la sortie de cet article. D’un autre côté ça m’a permis de vérifier que si on sollicite TeamViewer sur un sujet technique, on obtient une réponse.

Je n’arrivais à transférer les fichiers ni sous Windows, ni sous Debian !

teamviewer_13_debian_600px

La fenêtre apparaît mais la partie droite (le Raspberry Pi) reste désespérément vide. Allez un ticket ouvert chez TW !

et quelques jours plus tard 🙂

Bonjour M. ,
Je vous remercie pour votre message et l’intérêt que vous portez à TeamViewer.
Merci de nous avoir informé de ce problème.
La situation a été vérifiée en interne, le transfert de fichier avec le Raspberry n’existe pas encore, la fonction devrait être donc grisée.
Cela devrait être corrigé dans le futur.
Vous souhaitant bonne réception et restant à votre disposition pour tout renseignement, je vous souhaite également une agréable journée.
Cordialement.
Romain

On devrait donc bénéficier de cette fonction dans le futur. Elle peut être utile pour récupérer à distance des logs ou des enregistrements de données…

Conclusion

Il y a encore d’autres fonctionnalités à explorer, par exemple créer un compte chez TW et enregistrer vos différentes machines… Mais je vous laisse bosser un peu aussi 🙂

Pour l’utilisation de TeamViewer sur un Raspbian Lite en mode headless, j’ai encore quelques soucis et j’ai contacté TeamViewer. Ça fera l’objet d’un prochain article…

Merci à doudy et Sylvain pour leurs interventions à propos de TeamViewer dans les commentaires de x11VNC ainsi qu’à Jean-Philippe (F5GKW) pour le relais du commentaire qu’il a laissé sur le blog de F8ASB :

En ce qui me concerne il manquait des dépendances (sur RPI3 et Jessie) donc :

sudo apt-get install libqt5gui5 libqt5widgets5 libqt5quick5 libqt5webkit5 libqt5x11extras5 qml-module-qtquick2

La résolution d’écran n’est pas terrible !
cela est dû au fait que si il n’y a pas de moniteur connecté ( ce qui est mon cas en utilisation à distance) le Raspi se met en mode basse résolution
Pour corriger cela , éditer le fichier /boot/config.txt et ajouter :
# forçage résolution sans écran pour teamviewer
hdmi_force_hotplug=1
hdmi_group=1
hdmi_mode=4
disable_overscan=1

vous allez voir,c’est plus confortable !

pour les divers modes HDMI (et vos propres essais ) je vous renvoie à :
https://www.raspberrypi.org/documentation/configuration/config-txt.md

Sources

Teamviewer sur Raspberry Pi

 

Configuration facile de Raspbian avec PiBakery

$
0
0

pibakery_copie_ecran_250pxVous aimez préparer des gâteaux ? Alors vous aimerez PiBakery 🙂 Mmm …. gâteau!
PiBakery est une nouvelle façon de préparer une image pour le Raspberry Pi. Un peu comme pour un gâteau… Vous mélangez les ingrédients et quand c’est prêt hop! on met au four (on écrit la carte micro SD, quoi).
PiBakery a été créé par David FERGUSON, un étudiant écossais de 17 ans.

novice

Cliquez pour voir la définition des niveaux.

PiBakery : configurez facilement votre Raspbian

Quelques conseils avant de commencer

  • Ne négligez pas la qualité des cartes micro SD que vous utilisez (voir cet article)
  • Préférez les carte de marque, vous aurez moins de surprises
  • Utilisez des cartes micro SD de 8 Go au minimum
  • Si vous pouvez, prévoyez 2 cartes micro SD, ça vous permet d’en préparer une autre pendant les tests de la précédente 😉

Comment ça marche ?

PiBakery est un programme astucieux qui permet aux utilisateurs de préparer une version personnalisée de Raspbian en lui ajoutant des ingrédients supplémentaires. Et vous n’avez besoin d’absolument aucune expérience avec les ordinateurs pour configurer votre image personnalisée de Raspbian.

pibakery_copie_ecran_600pxDans PiBakery, vous glissez-déposez les blocs (comme dans Scratch) pour ajouter des composants supplémentaires. PiBakery prépare ensuite la dernière version de Raspbian avec les modifs que vous avez faites, et écrit le résultat directement sur une carte microSD.

Comment l’idée a-t-elle germé ?

« L’idée de PiBakery m’est venue lorsque j’ai participé à un événement Raspberry Pi« , dit David. « Il fallait que je connecte mon RasPi au réseau, mais je n’avais ni moniteur, ni clavier ni souris. Il me fallait un moyen d’ajouter un réseau à mon Raspberry Pi sans devoir le démarrer et me connecter dessus.« 

« PiBakery résout ce problème, » explique t-il. « Vous pouvez simplement faire glisser les blocs que vous souhaitez utiliser avec votre Raspberry Pi, et il créera la carte micro SD pour vous. »

« Si vous avez déjà fait une carte micro SD en utilisant PiBakery, vous pouvez insérer cette carte dans votre lecteur de cartes SD connecté à votre ordinateur, et reprendre l’édition des blocs pour ajouter des logiciels supplémentaires, configurer de nouveaux réseaux sans fil, et modifier différents paramètres« , dit David. « Tout cela sans avoir à trouver un moniteur, un clavier ou une souris.« 

PiBakery est disponible pour Mac et Windows, avec une version Linux en préparation. Il peut être téléchargé directement à partir de son site Web d’origine. En plus des scripts et de l’interface permettant d’ajouter des bloc, il contient également Raspbian, ce qui fait que le téléchargement initial prend un certain temps (1 Go à télecharger). Par contre il rend le processus de construction de votre distribution et son écriture sur la carte micro SD remarquablement simple.

pibakery_success-500x394

David a écrit un guide pour la création de cartes SD personnalisés avec PiBakery (en anglais). PiBakery est un programme très facile à utiliser, et en suivant ce guide vous construirez rapidement une version personnalisée de Raspbian qui, par exemple, se connectera directement à votre réseau local WiFi… Et qui fonctionnera du premier coup 🙂

En arrière plan, PiBakery crée un ensemble de scripts qui s’exécutent lorsque le Raspberry Pi est démarré (soit juste la première fois, soit à chaque fois qu’il est mis sous tension). Ces scripts peuvent être utilisés pour paramétrer le réseau WiFi et s’y connecter et activer SSH.

D’autres options incluent l’installation d’Apache, le changement du mot de passe de l’utilisateur, l’exécution de scripts Python ou de scripts en ligne de commande.

L’utilisateur contrôle les scripts qui sont utilisés grâce à l’interface à base de blocs. Vous glissez-déposez les tâches que vous voulez le Raspberry Pi effectue à la mise sous tension. C’est du gâteau 😉

Moi j’aime bien PiBakery… et les gâteaux. Au fait, je vous ai parlé des gâteaux ? 😆

Mise en oeuvre de PiBakery

 

Attention : QWERTY
PiBakery applique ses modifications à une distribution Raspbian originale. Elle est donc en anglais et le clavier en QWERTY. Ceci ne pose pas de problème si vous vous connectez à distance. Mais pensez y si vous vous connectez directement sur le Raspberry Pi !

Télécharger Pi Bakery

C’est sur le site de PiBakery que ça se passe. Rendez vous à la page Download.

pibakery_download1tortueChoisissez la version qui vous intéresse. Ici à défaut de version Linux ce sera Windows… En fonction de la vitesse de votre liaison Internet, attendez le temps que le gigaoctet de données soit téléchargé. Si c’est aussi rapide que chez moi, vous avez tout le temps de siroter une bière un café…

Vous devriez alors disposer d’un fichier exécutable que vous retrouverez selon votre configuration dans le dossier Téléchargements ou dans un dossier que vous aurez choisi.

pibakery_download2

Installer PiBakery

Double-cliquez sur PiBakery.Setup.exe pour démarrer l’installation. Autorisez ce programme à apporter des modifications à votre ordinateur…

pibakery_download3PiBakery est distribué sous licence GNU. acceptez la licence et validez en cliquant sur le bouton Next >.

pibakery_download4A moins d’avoir de bonnes raisons de faire autrement, acceptez le dossier d’installation proposé par PiBakery. Au passage notez en bas de la fenêtre que cette installation nécessite au moins 4,5 Go de place libre sur le disque… C’est bon, on peut y aller ? Cliquez sur Next >.

pibakery_download5Si vous souhaitez que le programme installe un raccourci vers PiBakery sur votre bureau, cochez la case correspondante

pibakery_icone_bureau

Icône de PiBakery sur le bureau

et cliquez ensuite sur Next >.

pibakery_download6Allez un dernier effort ! On vérifie que les choix sont corrects. Si vous voulez modifier quelque chose cliquez sur le bouton < Back pour revenir en arrière, sinon cliquez sur Install.

pibakery_download7Et c’est parti, l’installation commence. Le programme commence par extraire les fichiers nécessaires, en particulier l’image de Raspbian…

pibakery_download8Après quelques minutes de patience (même pas le temps de finir ma bière mon café 😉 ) l’installation est terminée. Si vous souhaitez lancer PiBakery immédiatement laissez la case cochée et cliquez sur le bouton Finish.

Utiliser PiBakery

Et c’est parti ! PiBakery se lance…

pibakery_prog_01Bon… sur ma machine impossible d’agrandir la fenêtre (l’icône est grisée) et la fenêtre est donc figée à la dimension de 626×472… Pourquoi tant de haine ?

pibakery_prog_02Ce qui réduit la zone utilisable à 610×460 pixels (à peu près). Bon, faudra faire avec 😉

Au passage notez dans la barre du haut les 3 icônes disponibles :

pibakery_prog_09Vous pouvez exporter votre configuration pour la réutiliser plus tard avec Export. L’importation d’une configuration existante se fait avec Import. L’utilisation de ces deux fonctions est tout à fait classique et fait appel aux fonctions habituelles du système d’exploitation.

L’icône Write écrit le Raspbian personnalisé sur la carte micro SD.

Les blocs

Les blocs sont repérés (comme dans Scratch) par des couleurs. Amis daltoniens vous ferez comme moi, ignorez les couleurs et démerbrouillez-vous pour faire sans 🙂

pibakery_prog_03La première série de blocs concerne le moment où les actions seront exécutées. Lors du premier démarrage (First Boot) ou à chaque démarrage (Every Boot).

pibakery_prog_04La série de blocs suivants vous permet d’installer un serveur LAMP (Apache-MySQL-PHP), ou un paquet dont il faudra saisir le nom à la place de package-name. Vous pouvez aussi installer VNC (en indiquant un mot de passe) et lancer VNC sur le port par défaut, ou sur le port de votre choix.

pibakery_prog_05Avec les blocs Network, vous pouvez récupérer un fichier en ligne (Download File) ou configurer le WiFi.

pibakery_prog_06Settings donne accès à la configuration du nom de l’ordinateur (Set hostname), au démarrage en ligne de commande ou sur le bureau (Boot Option) et au paramétrage du mot de passe de l’utilisateur.

pibakery_prog_07Pi Zero OTG permet de définir le fonctionnement de l’OTG du Raspberry Pi Zero : En liaison Ethernet, relié à une mémoire de masse (Clé USB, disque dur USB), relié à une interface MIDI, en liaison série. On peut aussi dévalider l’OTG. Chacune de ces options nécessite un redémarrage.

pibakery_prog_08Enfin les blocs Other (Autres) vous permettent de lancer une commande, de supprimer fichiers ou dossiers, de redémarrer ou d’éteindre le RasPi ou encore d’exécuter un script Python.

Le bloc Reboot a une fonction particulière puisque pour les blocs qui nécessitent un redémarrage, c’est lui qui va relancer le système pour prendre en compte les changements.

Un exemple, un exemple, UN EXEMPLE !!

Le cahier des charges

PiBakery s’adresse à des novices pour leur permettre de configurer facilement leur Raspbian.

Voici le cahier des charges que je vous propose :

Au premier démarrage

  • Changer le nom de la machine pour qu’elle s’appelle pibakery
  • Modifier le mot de passe utilisateur en pibakery
  • Démarrer en mode graphique sans être loggué (desktop)
    Par défaut la connexion est faite sur l’écran graphique. Ce choix permet de vérifier le fonctionnement de PiBakery ce qui ne serait pas le cas si on ne changeait rien 😉
  • Installer VNC Server avec comme mot de passe pibakery (pourquoi faire compliqué?)
  • Lancer VNC Server

Sauvegarder la configuration en l’exportant.

Tester la configuration.

Changer le nom de la machine

pibakery_exemple_01Dans la rubrique Startup, cliquez (bouton gauche) sur le bloc On First Boot. Maintenez le bouton enfoncé et faites glisser le bloc dans la zone claire.

pibakery_exemple_02Dans la rubrique Settings, faites glisser le bloc Set hostname to sous le bloc On First Boot. Lorsque vous êtes dans la zone d’attractivité du bloc On First Boot la pointe qui se trouve sous celui-ci s’illumine. Vous pouvez lâcher le bouton de la souris, votre bloc va venir s’accrocher sous le bloc supérieur. Cliquez dans la zone de texte et remplacez le texte existant par pibakery. Validez la modification du nom de machine avec la touche Entrée.

pibakery_exemple_03En cas d’erreur sur le bloc choisi, cliquez sur le bloc à supprimer et emmenez le en bas de la fenêtre, vers la poubelle. Le couvercle de celle-ci s’ouvre, lâchez le bloc, il disparait dans la poubelle… Essayez… Juste pour voir comment ça fonctionne 🙂

Modifier le mot de passe utilisateur

pibakery_exemple_04Dans la rubrique Settings, prenez le bloc Set user password to et amenez le sous le bloc précédent. Modifiez le mot de passe en pibakery.

Démarrer en mode desktop

pibakery_exemple_05Toujours dans Settings, amenez le bloc Set Boot Option sous le bloc précédent. Mettez le mode de démarrage en mode graphique (Desktop).

Installer VNC Server avec comme mot de passe pibakery (pourquoi faire compliqué?)

 

pibakery_exemple_06

Dans la rubrique Programs, prenez le bloc Install VNC Server et amenez le sous le bloc précédent. Modifiez le mot de passe en pibakery. Ensuite amenez le bloc Run VNC Server sous le précédent, laissez le port par défaut.

Préparer la distribution

Comme un des blocs nécessite un redémarrage, allez dans la rubrique Other.

pibakery_exemple_07

Amenez le bloc Reboot sous le précédent. Notre « script » est prêt.

Sauvegarder la configuration

Cliquez sur l’icône Export. Par défaut PiBakery vous propose le nom de fichier recipe.xml. Remplacez le par un nom qui représente mieux votre configuration, ce sera plus facile quand vous en aurez plusieurs. Par exemple pibakery_vnc_mode-texte.xml.

Tester la configuration

Cliquez sur l’icône Write. (je ne sais pas si c’est dû à ma machine, vous me direz si ça fait pareil chez vous… mais ici les délais sont très longs entre le clic, l’apparition de la fenêtre de lancement d’écriture, l’affichage du nom de la clé…)

pibakery_exemple_08 

ATTENTION !
Il vous appartient de vérifier PLUTÔT DEUX FOIS QU’UNE que la lettre affichée correspond bien à la carte micro USB que vous souhaitez préparer. TOUTES les données présentes sur la carte micro SD seront écrasées. Si la lettre est celle d’un disque dur ou d’une clé USB ce sont les données présentes sur ces supports qui seront effacées !
EN AUCUN CAS FRAMBOISE314 NE POURRA ÊTRE TENU POUR RESPONSABLE DE PERTES DE DONNÉES CONSÉCUTIVES A L’UTILISATION DE PiBakeri…

Ici la carte micro SD est bien en J: (vérifié dans l’explorateur de fichiers) et le nom de volume est boot car elle a déjà été utilisée sur un Raspberry Pi.

Cliquez sur Start Write pour lancer l’écriture de la distribution personnalisée sur la carte.

pibakery_exemple_09Une fenêtre d’avertissement s’ouvre. Elle correspond à l’avertissement ci-dessus concernant l’effacement des données. Soyez certain(e) d’avoir bien vérifié avant de cliquer sur OUI !

pibakery_exemple_10L’écriture des données sur la carte commence, elle prend quelques minutes (nan ça vaut pas le coup d’ouvrir une bière de faire couler un café).

pibakery_exemple_11Après quelque temps Write successful apparait. Yessss

Mais avec une erreur ! Damned !

Mais qu’a-t-il bien pu se produire ?

Après réflexion et pas envie de réinstaller PiBakery comme conseillé, je décide de

  1. Redémarrer ma machine
  2. Lancer PiBakery en mode administrateur (sous Win32DiskImager il faut être en admin sinon pas d’accès à la carte micro SD !

Après un reboot du PC je relance PiBakery, importe la config précédemment sauvegardée (oups c’était une bonne idée 🙂 ) et on y retourne Start Write

pibakery_exemple_12Bon, cette fois Write Sucessful mais pas de message d’horreur euh… d’erreur.

Démarrage du Raspberry Pi

Après le démarrage redimensionnement de la partition, reboot

Redémarrage et ouverture d’une fenêtre mode texte avec en titre PiBakery  qui me dit qu’elle traite le premier script et install VNC Server.

Reboot… Démarrage normal.

Sur le PC démarrage de RealVNC Viewer, connexion sur le port 5901, mot de passe pibakery et…

pibakery_exemple_13Bon, jusque là ça fonctionne.

Pour Info
Un répertoire PiBakery a été créé dans la partition FAT sur la carte micro SD. Vous pouvez y accéder à partir d’une machine Windows si vous souhaitez décortiquer les modifications amenées par PiBakery 🙂

Retour à la case config pour essayer d’ajouter le paramétrage du réseau WiFi

Paramétrage du WiFi

PiBakery permet de préconfigurer le WiFi. Le test suivant consistera donc à insérer le bloc de configuration du WiFi dans la séquence First Boot. A l’issue de la configuration First Boot, il faudra redémarrer le Raspberry Pi pour prendre les changements en compte.

Cela signifie qu’il faut penser à lancer le serveur VNC lors de chaque boot suivant  (Every Boot) sinon… il ne fonctionnera pas 🙂

Préparation de la configuration

Je vous laisse préparer la configuration en suivant la copie d’écran ci-dessous :

pibakery_exemple_13Dans les paramètres WiFi indiquez le nom de votre réseau (ici MAISON) et votre mot de passe (ici 🙂 non mais vous ne croyez quand même pas que j’allais vous le donner 😀 ).

J’ai laissé le lancement de VNC Server au premier démarrage, vous pouvez l’enlever si vous voulez, puisque le Raspberry Pi va redémarrer à la fin de cette configuration On First Boot.

Allez on y croit ! envoyez la config sur la carte micro SD :

pibakery_exemple_14

Test de la configuration

Pour vérifier la configuration du WiFi, pas de demi-mesure ! j’ai débranché le câble Ethernet… Il ne reste donc comme possibilité de liaison que le WiFi.

Insérez la carte dans le connecteur micro SD du Raspberry Pi et mettez sous tension.

pibakery_demarr_01Au tout premier démarrage de Raspbian, le système de fichiers est étendu à la totalité de la carte micro SD, puis la machine redémarre.

pibakery_demarr_02Jusque là tout va bien…

pibakery_demarr_03PiBakery joue bien son rôle et commence la config First Boot

pibakery_demarr_04Il configure le WiFi…

pibakery_demarr_05Installe VNC Server…

pibakery_demarr_06Et redémarre le Raspberry Pi.

pibakery_demarr_09Ma foi, ça correspond bien au script que nous avons écrit pour le First Boot.

pibakery_demarr_07Le serveur VNC est lancé par le script Every Boot.

pibakery_demarr_08Et on aboutit enfin au bureau avec l’obligation de s’authentifier pour accéder à Raspbian. c’est bien le choix que nous avions fait…

 

Attention : QWERTY
Si vous testez directement sur le Raspberry Pi, souvenez vous qu’il est toujours
en QWERTY 🙂 le login est pi mais le mot de passe est  pibqkery ! et non pas pibakery 😉

Connexion depuis un PC avec Real VNC pour vérifier que VNC fonctionne ainsi que le WiFi :

pibakery_demarr_10La connexion se passe bien depuis le PC avec VNC Viewer.

pibakery_demarr_11Et le WiFi a été correctement configuré par PiBakery, puisqu’on voit ici que le câble Ethernet est débranché (eth0 : Link is down) et que le Raspberry Pi est bien connecté au réseau MAISON sur lequel il a pris une adresse IP.

Modifier une carte micro SD créée par PiBakery

Insérez la carte micro SD dans votre lecteur de carte SD. Lancez PiBakery :

pibakery_detect_01Cette fenêtre vous indique que PiBakery a détecté une carte de sa « fabrication ». Il vous demande si vous souhaitez y apporter des modifications. Répondez Oui.

PiBakery recharge et réaffiche vos scripts, sauf le First Boot qui a déjà été exécuté.

Et après

Vous avez maintenant des bases pour commencer à vous amuser avec PiBakery. Tenez compte que cette solution est encore jeune et que parfois il y a des choses qui demandent à être améliorées.

N’hésitez pas à laisser un message à David pour lui faire part de vos remarques…

Conclusion

Comme Denis j’ai cherché comment lancer une mise à jour de Raspbian à chaque démarrage… Mais sans succès.

J’ai essayé

sudo apt-get udate && sudo apt-get upgrade -y

sur une seule ligne ou sur 2 lignes séparées mais sans résultat.

PiBakery est ouvert et il est possible de créer des blocs qui seront disponibles pour tous les utilisateurs. Un des premiers blocs additionnels pourrait être celui de la mise à jour 🙂

Et puis si on peu émettre un souhait ? J’aimerais bien aussi un bloc qui installe Samba et partage /home/pi 🙂

Merci à Nicolas qui m’a signalé ce projet vu sur Korben.info et à Denis qui m’a informé de l’existence de son article (paru sur Pi4You) sur Facebook 🙂

Sources

PiBakery – foolproof custom Raspbian setup

Test de PiBakery, Logiciel d’aide à l’installation de Raspbian

 

Interdire l’écran noir de Jessie Lite

$
0
0

noir_250pxS’il y a un truc qui m’agace (pas vous ?) lorsque je travaille m’amuse avec Raspbian Jessie, c’est que systématiquement au bout de 10 minutes l’écran devient noir 🙁
Oui, je sais, vous me direz il fait encore son « papy ronchon » mais quoi ? je suis sur le Raspberry Pi, je vais lire une doc sur le PC, boire une bière un café, et au retour BIM! l’écran est devenu noir…

Supprimer l’Écran noir avec Jessie Lite

NIVEAU_debutant

Cliquez pour avoir une définition de ces niveaux

Oh il y a plein de bonnes raisons pour éteindre l’écran… Diminuer la consommation de l’écran, ne pas abîmer les cristaux liquides à la longue (avant on nous disait que c’était pour ne pas marquer le tube cathodique 🙂 ). Et alors, c’est mon écran, je fais ce que je veux avec et si ça me plait à moi que les cristaux liquides soient abîmés ? D’abord ils n’ont qu’à faire des écrans plus solides.

Ctrl Alt DelEt puis ça me gonfle à chaque fois que je reviens sur le RasPi de devoir appuyer sur la touche CTRL… Ah oui tiens au passage si vous faisiez ESPACE ou ENTRÉE ce sont des touches qui ont une action et selon ce que vous étiez en train de faire avant que cette %$#!@& d’écran passe en veille ça peut avoir une interaction, pas toujours souhaitée. Alors que la touche CTRL rallume l’écran et ne provoque rien, puisque ce n’est pas un caractère 😉

Mais bon, on n’est pas là pour ça

Donc pour calmer la mauvaise habitude de Jessie, voici ce que je vous propose :

Si vous venez de créer votre carte avec win32DiskImager sous Windows, ouvrez le dossier correspondant à votre carte micro SD. Dans ce dossier, ouvrez le fichier cmdline.txt (voir encadré ci-dessous) et ajoutez à la fin de la ligne : consoleblank=0 et… c’est tout. Au prochain redémarrage Jessie laissera l’écran allumé tout le temps que vous le souhaitez.

 

N'utilisez pas n'importe quel éditeur de texte !
Pour éditer cmdline.txt sous Windows, n’utilisez surtout pas un traitement de texte ou le bloc note. Ces programmes modifient ou ajoutent les codes ASCII et votre fichier sera inutilisable sur le Raspberry Pi. Préférez des programmes respectueux des codes 😉 . J’utilise NotePad++ mais chacun fera selon ses habitudes.

Et puis si votre carte micro SD est déjà en fonction sur un Raspberry Pi, passez par nano et ajoutez de même consoleblank=0 à la fin du fichier cmdline.txt.

pi@raspberrypi:~ $ sudo nano /boot/cmdline.txt

Conclusion

Voilà vous savez maintenant comment contrer la fâcheuse habitude qu’à Raspbian Jessie d’éteindre votre écran.

Bon… En fait ça me fait tout drôle de finir un article aussi court 😀 j’ai pas l’habitude…
Du coup je vous propose un petit bonus ? Allez chiche !

Activer Num Lock au démarrage avec Jessie Lite

num_lockDans la même série des trucs qui me font ch…aque fois enrager, il y a le pavé numérique ! Mais pourquoi tant de haine ? Ils ne peuvent pas le mettre systématiquement en route ? Trois fois sur quatre je me fais b…ien avoir ! Je tape une adresse IP et zou le curseur est parti se promener (ou pas).

On va arranger ça. Ouvrez le fichier /etc/kbd/config pour lui apporter une (toute petite) modification.

pi@raspberrypi:~ $ sudo nano /etc/kbd/config

Cherchez les lignes ci-dessous et enlevez le signe dièse # qui est devant LEDS=+num. Au prochain démarrage le pavé numérique de votre clavier sera activé.

# Turn on numlock by default
LEDS=+num

Conclusion 2

Voili voilou… Mais ça me semble toujours un peu… Lite allez je vous en remets une tranche et c’est gratuit ma bonne dame !

T’as pas l’heure ?

Pas que ce soit une obsession, mais j’aime bien savoir l’heure qu’il est. Des fois ça sert quand on doit déclencher une action, vérifier qu’une machine est à l’heure…

Afficher l’heure dans le terminal de Jessie Lite

Pendant que vous êtes en train de modifier le fichier /etc/kbd/config on va lui apporter une autre modification. Ah… vous avez déjà refermé nano, tant pis pour vous, y a plus qu’à le rouvrir. Bah avec la flèche vers le haut ça va tout seul 🙂 sauf… si la flèche est sur le pavé numérique et que vous l’avez activé au démarrage 😀 Faisez gaffe quand même ! (oui je sais…)

Cherchez les lignes ci-dessous et enlevez le signe dièse # qui est devant DO_VCSTIME=yes. Au prochain démarrage l’heure s’affichera dans le coin supérieur droit de l’écran.

# Display a clock in the right upper corner of the console by running vcstime
DO_VCSTIME=yes

horloge_600pxet au prochain démarrage, l’heure s’affiche 🙂

Conclusion 3

Cette fois on dit que c’est fini ! Vous avez ces possibilités à disposition, à vous de voir si elles serviront dans votre cas, ou pas.

I2C, plus de 30 ans et toujours d’actualité.

$
0
0

figureI2C01Episode 1 – Dans le domaine des bus de transmission série (SPI, 1Wire et autres), le bus I2C est certainement le plus connu. Il se décline sous différentes appellations (I2C, SmBus, 2Wire ou TWI) et, sur le fond, ils se ressemblent tous à quelques variantes près (fréquences ou niveaux de tension). Ces variantes existent principalement pour échapper à la licence I2C et de la redevance associée.

NIVEAU_debutant

Introduction

Le bus I2C (Inter Integrated Circuit) a été créé dans le début des années 80 par la société Philips (actuellement I2C est pris en charge par NXP). On trouve des centaines de boîtiers différents avec une interface I2C.
On peut classer ces circuits en trois grandes familles (les applications grands publics, les applications professionnelles et les applications à usages généraux).

Quelques exemples de circuits disponibles dans ces domaines :

  • contrôles de tonalité, contrôles de volume, sélecteurs de sources,

  • convertisseurs A/D, convertisseurs D/A,

  • commandes d’amplificateur, fading, compact disc,

  • synthétiseurs de fréquences, PLL, circuits de FI,

  • décodeurs stéréo, RDS,

  • décodeurs PAL / SECAM / NTSC,

  • circuits de réception TV,

  • générateurs DTMF, générateurs de mélodie,

  • mémoires RAM et E2PROM,

  • expandeurs d’entrées / sorties,

  • commandes d’afficheurs LED, LCD, etc…

  • horloges temps réel,

  • etc…

Pour mener à bien notre expérimentation, il nous fallait des composants I2C et de préférence des circuits faciles à mettre en œuvre. Un petit tour dans l’atelier et dans le tiroir circuits intégrés I2C, il n’y avait que l’embarras du choix. Nous avons retenu les candidats suivants :

– une RAM (Random Access Memory) PCF8570,
– une E2PROM (
Electrically-Erasable Programmable Read-Only Memory) PCF8582,
– un capteur de température DS1621.

Vous pouvez utiliser tout ou partie des composants I2C (cela vous donne 7 possibilités).

Le Bus I2C

Nous allons pas vous présenter le BUS I2C, d’autres l’ont très bien fait. En effet, on trouve sur la toile des centaines de pages sur le sujet et il existe des ouvrages entiers consacrés au bus i2c.
Vous pourrez, par exemple, lire l’article WikiPedia, ou bien, l’article du site de Christian Tavernier.

Nota : Pourquoi le site de CT ?
Car c’est à travers ces articles de la presse électronique que j’aie découvert le monde des micro-processeurs (6800, 6809 et autres 68000 de Motorola). A l’époque le clavier était composé d’une vingtaine de boutons poussoirs et de six afficheurs 7 segments (2 pour les données et 4 pour les adresses) et le reste c’était de l’assembleur. Séquence nostalgie !

La figure ci-dessous représente le synoptique de notre base d’expérimentation.

figureI2C02 Figure 2 : Synoptique

Rappel :
Le bus i2c est un bus de type série, synchrone et half-duplex. Il est composé de trois fils, à savoir :
SDA (Serial Data Line), transmission des données dans les deux sens,
SCL (Serial Clock Line), signal d’horloge pour la synchronisation,
GND (Ground), il faut bien une référence.

Les informations transitent sur un même fil mais jamais en même temps.
Toutes les transmissions (écriture ou lecture) sont initiées par le maître et adressées à un esclave via sont adresse.

C’est un bus lent, à l’origine la fréquence de transmission était fixée à 100 kbits/s (standard mode). Depuis d’autres fréquences de fonctionnement sont apparues 400 kbits/s (fast mode), 1 Mbits/s (fast mode +), 3.4 Mbits/s (high-speed mode) et 5 Mbits/s (Ultra-fast mode). Le mode ultra-fast n’est plus bidirectionnel, le maître ne fait que des écritures.

Configurer le bus I2C

Généralités

En préparant cet article, nous avons consulté nos notes et des sites web pour définir les procédures de configuration du bus i2c. On constate que l’on trouve tout et même parfois n’importe quoi !
Pour clarifier la situation, nous avons utilisé une nouvelle installation de raspbian (2016-05-27-raspbian-jessie.img) sur notre Raspberry Pi et nous avons examiné les différentes étapes de l’installation. Après création de la carte SD, démarrage, paramétrages (extension du fichier système, localisation, fuseau horaire, clavier, région WiFi et accès réseau) et les re-démarrages correspondants, nous avons un système propre et vierge de toutes autres installations et mises à jour.

Si l’on examine les fichiers etc/modules et etc/modprobe.d/raspi-blacklist.conf, nous constatons que le premier contient la ligne :

i2c-dev

Le second est vide (pas d’interdiction de chargement de modules noyau).

En exécutant la commande console :

lsmod

Nous obtenons la liste des modules actifs du noyau :

Module   Size   Used by
...
i2c_dev  5859   0 
...

Le module i2c_dev gère les accès /dev/entries.

On peut obtenir plus d’informations sur le module par la commande :

modinfo i2c_dev

Activation I2C

Mode graphique

Pour activer l’interface i2c, il suffit de faire les opérations suivantes à la souris :

Menu → Préférences → Configuration du Raspberry Pi

Dans la fenêtre affichée, il faut se rendre dans l’onglet Interfaces et cliquer sur le bouton radio «Activé» de la ligne I2C puis sur le bouton Valider.

Pour terminer l’opération, il faut rebooter le Raspberry Pi.

Mode console

Pour activer l’interface i2c, il suffit de saisir dans la console Linux :

sudo raspi-config

Puis il faut sélectionner l’option 9 (Advanced Options) puis A6 (I2C) puis <Oui> et <Ok>. Pour sortir de l’application utilisée <Finish>.

Pour terminer l’opération, il faut rebooter le Raspberry Pi.

Contrôle

Si l’on examine les fichiers etc/modules et etc/modprobe.d/raspi-blacklist.conf, nous constatons que le premier contient la ligne :

i2c-dev

Le second est vide (pas d’interdiction de chargement de modules noyau).
Le contenu des deux fichiers n’a pas changé par rapport à la situation précédente.

En exécutant la commande console :

lsmod

Nous obtenons la liste des modules actifs du noyau :

Module       Size   Used by
...
i2c_bcm2708  4770   0
...
i2c_dev      5859 0 
...

Le module i2c_bcm2708 est le pilote de bas niveau du bus i2c.

On peut obtenir plus d’informations sur le module par la commande :

modinfo i2c_bcm2708

Si l’on regarde les messages du noyau avec la commande :

dmesg | grep i2c

On obtient les informations suivantes :

[ 5.580941] i2c /dev entries driver
[ 9.097842] bcm2708_i2c 20804000.i2c: BSC1 Controller at 0x20804000 (irq 77)
            (baudrate 100000)

On voit que le bus i2c est disponible à la fréquence standard de 100 kbits/s.

Une autre information utile est disponible par la commande :

ls -l /dev/i2c*

On obtient l’information suivante :

crw-rw---- 1 root i2c 89, 1 sept. 2 15:57 /dev/i2c-1

Dans la suite, on se servira du chiffre 1 de /dev/i2c-1 pour l’accès au bus i2c.

Compléments

Vous pouvez ajouter ou retirer des modules du noyau avec les commandes :

sudo modprobe -a [nom_module]
sudo modprobe -r [nom_module]

(a comme add et r comme remove).
Ces modifications restent actives tant que le système n’a pas été redémarré ou éteint.

La liste des modules à charger au démarrage se trouve dans le fichier /etc/modules. Chaque ligne représente un module à charger, sauf les lignes vides ou les lignes précédées par un #.
Attention : les modules sont chargés dans l’ordre dans lequel ils sont listés.

Il existe également une liste de modules que le noyau n’a pas le droit de charger qui sont listés dans le fichier /etc/modprobe.d/blacklist.

Nota :
Si l’on explore, un peu, la liste des fichiers de Linux, on constate que pour activer ou désactiver l’interface i2c, il suffit de modifier le fichier /boot/config.txt.

...
# Uncomment some or all of these to enable the optional hardware interfaces
dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on
...
dtparam=i2c_arm=on   #active l'interface i2c
dtparam=i2c_arm=off  #désactive l'interface i2c

Il faudra rebooter pour que la modification soit prise en compte. Cette procédure est une alternative à la modification via l’interface graphique ou via sudo raspi-config.

On pourra également changer la fréquence du bus i2c en ajoutant dans /boot/config.txt la ligne ci-dessous :

...
# Uncomment some or all of these to enable the optional hardware interfaces
dtparam=i2c_arm=on
dtparam=i2c_baudrate=400000
#dtparam=i2s=on
#dtparam=spi=on
...

Avec cette modification, la fréquence du bus devient 400 kbits/s.

Outils

Pour utiliser notre interface i2c, il nous faut des outils que l’on peut installer par les commandes suivantes :

sudo apt-get update
sudo apt-get install i2c-tools

On a, maintenant, à notre disposition des commandes pour explorer le bus i2c.

i2cdetect

Syntaxe :

i2cdetect
Usage: i2cdetect [-y] [-a] [-q|-r] I2CBUS [FIRST LAST]
       i2cdetect -F I2CBUS
       i2cdetect -l
  I2CBUS is an integer or an I2C bus name
  If provided, FIRST and LAST limit the probing range.

La première commande que nous utiliserons est i2cdetect avec la syntaxe i2cdetect -y 1.

Pour plus de détail sur la commande, vous pouvez consulter la page i2cdetect

pi@raspberrypi:~ $ i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- -- 

La commande n’a pas détecter d’adresses i2c sur le bus, ce qui est normal, car nous n’avons pas implanter de composants pour l’instant. On constate, également, que la commande n’a pas balayé l’ensemble des adresses du bus (0x03 à 0x77).

En effet, la norme i2c prévoit que certaines adresses sont réservées :
0x00 à 0x02 : appel général, CBUS et autres bus
0x78 à 0x7B : adressage sur 10 bits
0x7C à 0x7F : device ID

Nous disposons ainsi de 117 adresses utilisables pour notre bus i2c donc conforme avec notre plage de balayage de i2cdetect..

Nota :
L’adresse 0x03 (utilisation future) devrait également faire partie des adresses réservées.
Les adresses 0x4 à 0x07 sont utilisées par des composants hautes vitesses.

Si l’on veut scruter l’ensemble des adresses, il faudra utiliser la commande i2cdetect -a 1.

pi@raspberrypi:~ $ i2cdetect -a 1
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1.
I will probe address range 0x00-0x7f.
Continue? [Y/n] 
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 

Avertissement : Certaines options de i2cdetec sont à utiliser avec précautions.

On peut, également, obtenir la liste des bus disponibles par i2cdetect -l

pi@rasp10:~ $ i2cdetect -l
i2c-1 i2c         20804000.i2c                   I2C adapter

Ou, sur les fonctionnalités implémentées par i2cdetect -F 1.

pi@rasp10:~ $ i2cdetect -F 1
Functionalities implemented by /dev/i2c-1:
I2C                              yes
SMBus Quick Command              yes
SMBus Send Byte                  yes
SMBus Receive Byte               yes
SMBus Write Byte                 yes
SMBus Read Byte                  yes
SMBus Write Word                 yes
SMBus Read Word                  yes
SMBus Process Call               yes
SMBus Block Write                yes
SMBus Block Read                 no
SMBus Block Process Call         no
SMBus PEC                        yes
I2C Block Write                  yes
I2C Block Read                   yes

Mais i2cdetect n’est pas la seule commande disponible, elle est venue avec quelques copines. Nous n’utiliserons que les commandes ci-dessous pour nos tests.

i2cdump

Affiche le contenu d’une zone.

Syntaxe :

i2cdump
Usage: i2cdump [-f] [-y] [-r first-last] I2CBUS ADDRESS [MODE [BANK [BANKREG]]]
  I2CBUS is an integer or an I2C bus name
  ADDRESS is an integer (0x03 - 0x77)
  MODE is one of:
    b (byte, default)
    w (word)
    W (word on even register addresses)
    s (SMBus block)
    i (I2C block)
    c (consecutive byte)
    Append p for SMBus PEC

Pour plus de détail sur la commande, vous pouvez consulter la page i2cdump

i2cget

Lecture d’une adresse.

Syntaxe :

i2cget
Usage: i2cget [-f] [-y] I2CBUS CHIP-ADDRESS [DATA-ADDRESS [MODE]]
   I2CBUS is an integer or an I2C bus name
   ADDRESS is an integer (0x03 - 0x77)
   MODE is one of:
     b (read byte data, default)
     w (read word data)
     c (write byte/read byte)
     Append p for SMBus PEC

Pour plus de détail sur la commande, vous pouvez consulter la page i2cget

i2cset

Ecriture à une adresse.

Syntaxe :

i2cset
Usage: i2cset [-f] [-y] [-m MASK] [-r] I2CBUS CHIP-ADDRESS DATA-ADDRESS [VALUE] ... [MODE]
  I2CBUS is an integer or an I2C bus name
  ADDRESS is an integer (0x03 - 0x77)
  MODE is one of:
    c (byte, no value)
    b (byte data, default)
    w (word data)
    i (I2C block data)
    s (SMBus block data)
    Append p for SMBus PEC

Pour plus de détail sur la commande, vous pouvez consulter la page i2cset

Base d’expérimentation

Schéma électronique

figurei2c03Nous avons un schéma un peu plus touffu que les fois précédentes mais rien de bien compliqué.
Toutes les pins SDA et SCL des composants i2c sont reliées à la broche SDA ou SCL de notre Raspberry PI. L’alimentation est également prélevée sur la carte et pour finir toutes les broches gnd sont reliées entre-elles.

Remarque 1 : Les deux résistances de soutirage, entre l’alimentation et les lignes SDA et SCL (ET câblé), nécessaires au fonctionnement du bus ne sont pas prévues sur le schéma car implantées sur la carte Raspberry Pi.

Remarque 2 : Pour éviter d’avoir des phénomènes d’oscillations avec les circuits intégrés numériques, il est préférable de prévoir un condensateur de découplage (100 nF) sur la broche d’alimentation (câblage à faire au plus près du circuit intégré).

Câblage

figurei2c04Pour réaliser notre base d’expérimentation, il nous faut :
– un Raspberry Pi,
– un cobbler avec sa nappe,
– une plaque de prototypage rapide,
– un PCF8570 (RAM),
– un PCF 8582 (E2PROM),
– un DS 1621 (température),
– trois condensateurs 100 nF,
– des fils de liaison mâle/mâle.

Nota : Pour le câblage des adresses des circuits i2c, il faut consulter la documentation technique des composants. Les trois fiches techniques (datasheets) sont jointes dans le zip des sources.

Tests

Il n’y a pas de secret pour exploiter nos composants connectés au bus i2c, il faudra lire et relire des fiches techniques (FT).

Nota :
Il ne faut jamais se contenter de la première page de la datasheet car souvent cela ressemble plus à un publicité, pas toujours très réaliste, qu’à un document technique. Mais c’est juste mon avis !

Composants

DS1621

Le DS1621 est un thermomètre digital et un thermostat permettant des mesures de température dans la plage -55°C et +125°C avec une précision de mesure de 0.5°C (on peut améliorer l’affichage par calcul).
L’alimentation électrique peut se faire dans la plage 2.7V à 5.5V ce qui est dans la plage d’utilisation de notre carte (3.3V).
Les fréquences d’utilisation sont de 100 kHz (standard mode) ou 400 kHz (fast mode) voir FT page 15.
L’adresse sur 7 bits du composant est 1001A2A1A0 soit 0x48 à 0x4F (FT page 8).

Nota :
Pour l’exploitation du composant, on utilise une adresse sur 8 bits sous la forme 1001A2A1A0S (S=0 pour l’écriture ou S=1 pour la lecture).

Information : La fiche technique donne également la procédure et les chronogrammes i2c pour sa mise en œuvre .

PCF8570

Le PCF8570 est une mémoire volatile (RAM) de 256 octets (8 bits).
L’alimentation électrique se fait dans la plage 2.5V et 6.0V.
La fréquence d’utilisation se limite au standard mode, c’est à dire 100 kHz (FT page 10).
L’adresse sur 7 bits du composant est 1010A2A1A0 soit 0x50 à 0x57 (FT page 12).

Information : La fiche technique donne également la procédure et les chronogrammes i2c pour sa mise en œuvre

PCF8582

Le PCF8582 est une mémoire non volatile effaçable et programmable électriquement (EEPROM ou E2PROM) de 256 octets (8 bits).
L’alimentation électrique se fait dans la plage 2.5V et 6.0V.
La fréquence d’utilisation se limite au standard mode, c’est à dire 100 kHz (FT page 11).
L’adresse sur 7 bits du composant est 1010A2A1A0 soit 0x50 à 0x57 (FT page 7).

Avertissement :
Le nombre de cycle écriture / effacement est limité à 1.000.000 de cycle (valeur théorique). Cela peut paraître énorme mais dans une boucle infinie cette limite peut être atteinte très rapidement. Alors attention !

Information :La fiche technique donne également la procédure et les chronogrammes i2c pour sa mise en œuvre.

Remarque : Le PCF8570 et PCF8582 ont la même plage d’adressage

i2cdetect

La commande i2cdetect -y 1 nous donne :

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00: -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- -- 
50: 50 51 -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

La recherche nous donne trois adresses de composants en hexadécimal 0x48, 0x50 et 0x51. Mais qui est qui ?

Pour le DS1621, nous avons pour A2 = 0 (grd), A1 = 0 et A0 = 0 ce qui nous donne une adresse 0b1001000 = 0x48.
Pour le PCF8570, nous avons pour A2 = 0, A1 = 0 et A0 = 0 ce qui nous donne une adresse 0b1010000 = 0x50.
Pour le PCF8582, nous avons pour A2 = 0, A1 = 0 et A0 = 1 (+3.3V) ce qui nous donne une adresse 0b1010001 = 0x51.

Si l’on fait la même manipulation en fixant la vitesse du bus à 400 kbits/sec, nous obtenons le résultat suivant :

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00: -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- -- 
50: -- 51 -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

Notre mémoire E2PROM (ad : 0x50) n’est plus détectée. Malgré une vitesse de 400 kbits/s notre RAM est toujours détectée. Par contre, les écritures et les lectures de la RAM s’avèrent être des plus aléatoires.
Pour le capteur de température (DS1621) tout est normal car prévu pour fonctionner à cette vitesse.

i2cdump

La commande i2cdump permet d’afficher le contenu mémoire du composant.

PCF8570

Pour afficher l’ensemble des données de notre RAM, on utilise la commande :

i2cdump -y 1 0x50 b

Le paramètre b signifie que l’affichage se fait sous la forme d’octets.

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f 0123456789abcdef
00: 00 00 04 00 06 00 00 00 82 00 40 00 80 00 04 00 ..?.?...?.@.?.?.
10: 80 00 00 04 00 00 02 00 00 00 00 00 00 01 00 01 ?..?..?......?.?
20: 10 88 00 00 00 00 00 00 00 08 42 00 10 00 00 00 ??.......?B.?...
30: 00 09 00 02 00 80 00 04 00 41 00 00 08 00 00 08 .?.?.?.?.A..?..?
40: 00 00 80 00 00 08 00 00 00 00 00 10 00 00 00 80 ..?..?.....?...?
50: 80 02 00 80 02 00 00 02 00 00 20 00 00 10 09 80 ??.??..?.. ..???
60: 20 10 20 00 00 00 00 00 00 00 00 00 80 00 00 01 ? .........?..?
70: 00 00 10 20 10 00 00 8c 00 00 20 01 00 10 00 00 ..? ?..?.. ?.?..
80: 00 04 02 00 00 01 04 00 00 00 01 00 10 00 00 08 .??..??...?.?..?
90: 50 04 00 20 30 00 08 00 00 01 01 00 00 02 00 80 P?. 0.?..??..?.?
a0: 00 00 10 00 10 00 00 04 20 01 02 00 08 00 00 00 ..?.?..? ??.?...
b0: 02 00 00 00 00 00 00 01 00 02 00 00 28 00 00 00 ?......?.?..(...
c0: 40 00 00 00 00 a0 00 00 80 20 00 00 99 00 08 00 @....?..? ..?.?.
d0: 10 20 80 00 02 00 00 00 00 10 40 08 00 00 00 10 ? ?.?....?@?...?
e0: 00 00 00 02 00 80 00 08 00 00 00 08 30 28 00 10 ...?.?.?...?0(.?
f0: 04 00 02 00 22 00 00 80 80 00 00 00 00 20 00 00 ?.?."..??.... ..

A la mise sous tension, le contenu de la RAM est complètement aléatoire.

Pour afficher l’ensemble des données de notre RAM au format word (2 octets), on utilise la commande :

i2cdump -y 1 0x50 w

Le paramètre w signifie que l’affichage se fait sous la forme de word (2 octets).

     0,8  1,9  2,a  3,b  4,c  5,d  6,e  7,f
00: 0000 0400 0004 0600 0006 0000 0000 8200 
08: 0082 4000 0040 8000 0080 0400 0004 8000 
10: 0080 0000 0400 0004 0000 0200 0002 0000 
18: 0000 0000 0000 0000 0100 0001 0100 1001 
20: 8810 0088 0000 0000 0000 0000 0000 0000 
28: 0800 4208 0042 1000 0010 0000 0000 0000 
30: 0900 0009 0200 0002 8000 0080 0400 0004 
38: 4100 0041 0000 0800 0008 0000 0800 0008 
40: 0000 8000 0080 0000 0800 0008 0000 0000 
48: 0000 0000 1000 0010 0000 0000 8000 8080 
50: 0280 0002 8000 0280 0002 0000 0200 0002 
58: 0000 2000 0020 0000 1000 0910 8009 2080 
60: 1020 2010 0020 0000 0000 0000 0000 0000 
68: 0000 0000 0000 8000 0080 0000 0100 0001 
70: 0000 1000 2010 1020 0010 0000 8c00 008c 
78: 0000 2000 0120 0001 1000 0010 0000 0000 
80: 0400 0204 0002 0000 0100 0401 0004 0000 
88: 0000 0100 0001 1000 0010 0000 0800 5008 
90: 0450 0004 2000 3020 0030 0800 0008 0000 
98: 0100 0101 0001 0000 0200 0002 8000 0080 
a0: 0000 1000 0010 1000 0010 0000 0400 2004 
a8: 0120 0201 0002 0800 0008 0000 0000 0200 
b0: 0002 0000 0000 0000 0000 0000 0100 0001 
b8: 0200 0002 0000 2800 0028 0000 0000 4000 
c0: 0040 0000 0000 0000 a000 00a0 0000 8000 
c8: 2080 0020 0000 9900 0099 0800 0008 1000 
d0: 2010 8020 0080 0200 0002 0000 0000 0000 
d8: 1000 4010 0840 0008 0000 0000 1000 0010 
e0: 0000 0000 0200 0002 8000 0080 0800 0008 
e8: 0000 0000 0800 3008 2830 0028 1000 0410 
f0: 0004 0200 0002 2200 0022 0000 8000 8080 
f8: 0080 0000 0000 0000 2000 0020 0000 0000

On peut également afficher une partie du plan mémoire avec la commande :

i2cdump -y -r 0x06-0x2b 1 0x50 b
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f 0123456789abcdef
00: 00 00 82 00 40 00 80 00 04 00                   ..?.@.?.?.
10: 80 00 00 04 00 00 02 00 00 00 00 00 00 01 00 01 ?..?..?......?.?
20: 10 88 00 00 00 00 00 00 00 08 42 00             ??.......?B.

PCF8582

Pour afficher l’ensemble des données de notre EEPROM, on utilise la commande :

i2cdump -y 1 0x51 b

Le paramètre b signifie que l’affichage se fait sous la forme d’octets.

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f 0123456789abcdef
00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................

Nota :
Une mémoire EPROM ou EEPROM est considérée comme vierge lorsque tous ces octets sont à 0xff (tous les bits sont à 1).

DS1621

La même commande pour le capteur de température, vous donnera n’importe quoi car elle n’a pas de signification physique.

i2cset

La commande i2cset permet d’écrire une donnée vers le composant.

PCF8570

Pour écrire une données (octet) 0x46 (caractère F en ascii) à l’adresse mémoire 0x00 du composant 0x50, on utilise la commande :

i2cset -y 1 0x50 0x00 0x46 b

On peut vérifier le résultat avec de l’écriture avec la commande :

i2cdump -y -r 0x00-0x0f 1 0x50 b

Affichage de la plage 0x00 à 0x0f de notre RAM.

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f 0123456789abcdef
00: 46 00 04 00 06 00 00 00 82 00 40 00 80 00 04 00 F.?.?...?.@.?.?.

On retrouve bien notre F dans le dump dans les colonnes de droite.

On peut utiliser d’autres bases de numérotation :

i2cset -y 1 0x50 0x01 0162 b

Ecrit en octal à l’adresse 0x01.

i2cset -y 1 0x50 0x02 97 b

Ecrit en décimal à l’adresse 0x02.

De même, il est possible d’écrire plusieurs octets à la suite avec la commande :

i2cset -y 1 0x50 0x03 0x6d 0142 111 0x69 0x73 0x65 0x33 0x31 i

Attention : Il y a un mélange de décimal, d’octal et d’hexadécimal.

Cette commande envoie les octets 0x6d, 0142, 111, 0x69, 0x73, 0x65, 0x33 et 0x31 à partir de l’adresse mémoire 0x03 de la RAM (ad : 0x50). Le caractère i précise que l’on transmet un bloc de données selon le format i2c.
Ce type d’écriture de données est limité à 8 octets.

Une dernière écriture avec la commande :

i2cset -y 1 0x50 0x0b 0x34 b

On peut vérifier le résultat avec i2cdump -y -r 0x00-0x0f 1 0x50 b (affiche la plage 0x00 à 0x0f de notre RAM).

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f 0123456789abcdef
00: 46 72 61 6d 62 6f 69 73 65 33 31 34 80 00 04 00 Framboise314?.?.

Avec toutes ces manipulations, nous venons d’écrire Framboise314 (en ascii) dans notre mémoire RAM.

Il est possible d’écrire directement des données sur 2 octets (word au sens i2c) par la commande :

i2cset -y 1 0x50 0x10 0x1680 w
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f 0123456789abcdef
00: 46 72 61 6d 62 6f 69 73 65 33 31 34 80 00 04 00 Framboise314?.?.
10: 80 16 00 04 00 00 02 00 00 00 00 00 00 01 00 01 ??.?..?......?.?

On retrouve nos données aux adresses 0x11 et 0x10

Remarque : Si l’on coupe l’alimentation de la RAM toutes les données seront perdues.

Nota :
Vous pouvez stocker en mémoire des valeurs numériques (int, short int ou float) mais il vous faudra décoder la valeur et faire une sauvegarde des différents octets qui composent la valeur. De même, il faudra recomposer les valeurs numériques à partir de ces octets.

PCF8582

Il suffit de faire les mêmes opérations pour l’EEPROM que celles de la RAM en changeant l’adresse 0x50 par 0x51.
On aura finalement dans l’EEPROM les données suivantes :

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f 0123456789abcdef
00: 46 72 61 6d 62 6f 69 73 65 20 33 31 34 ff ff ff Framboise 314...
10: 80 16 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ??..............

Par contre, une coupure de l’alimentation ne fera pas perdre les informations.

DS1621

Avant d’envoyer des données vers le DS1621 (thermomètre + thermostat), il faut savoir quoi et où ?
La documentation technique viendra de nouveau à notre secours (page 10) et vous trouverez également page 9 les chronogrammes des différentes lectures / écritures correspondant au DS1621.

Les différents registres

Vous trouverez les différents registres avec leurs descriptions page 10 de la documentation. Les commandes dont nous aurons besoin sont les suivantes :

Red Temperature (ad : 0xaa) : Registre à lecture seule. Il contient le résultat de la dernière conversion de température. (utilisé dans le paragraphe suivant)
Access Config (ad : 0xac) : Registre à lecture / écriture. Il définit les conditions de fonctionnement et de contrôle du circuit.
La signification de l’octet à joindre à cette adresse est décrite page 5 de la documentation techniques.
Le seul bit qui nous intéresse est le bit0 ou lsb qui permet la conversion de température en continue ou en coup par coup (0=continue et 1=coup par coup).

Pour nos tests, nous fixerons cet octet de configuration à 0x00.

Read Counter (ad : 0xa8) : Registre à lecture seule. Il lit la valeur de Count_Remain. Cette valeur est utilisée dans le calcul de la température donnant une approximation supérieur au 1/2 degré.
Read Slope (ad : 0xa9) : Registre à lecture seule. Il lit la valeur de Count_Per_C. Cette valeur est utilisée dans le calcul de la température donnant une approximation supérieur au 1/2 degré.
Start Convert T (ad:0xee) : Registre à lecture /écriture. Il déclenche la conversion de la température.

Le temps de conversion de la température est de 750 ms (page 15).

Information : Dans notre application, nous n’utiliserons pas la fonction thermostat.

Commandes

Pour configurer notre thermomètre, il suffit d’envoyer la commande :

i2cset -y 1 0x48 0xac 0x00 b

On écrit 0x00 (mesure en continue) dans le registre 0xac (accès configuration) à l’adresse du composant 0x48.

Pour démarrer les mesure :

i2cset -y 1 0x48 0xee

Nous exploiterons la lecture des données du capteur de température dans le chapitre suivant.

i2cget

La commande i2cget permet de lire une donnée du composant.

DS1621

Comme nous venons de mettre en service notre capteur de température, il ne nous reste plus qu’à lire les données. On obtient la valeur de la température par la commande :

i2cget – y 1 0x48 0xaa w

Un exemple de réponse du DS1621 :

pi@rasp10:~/dev/sagaI2C_01/bash $ i2cget -y 1 0x48 0xaa w
0x8013

A quoi correspondant cette donnée ?
Comme d’habitude nous trouvons la réponse dans la documentation technique page 4. La température est codée sur deux octets. L’octet de poids fort représente la température entière et l’octet de poids faible la température décimale.

0x8013&nbsp;: 0x13 octet poids fort et 0x80 octet poids faible
  Octet poids fort                 Octet poids faible
S  2⁶ 2⁵ 2⁴ 2³ 2² 2¹ 2⁰       2-¹ 2-2 2-3 2-4 2-5 2-6 2-7 2-8
0  0  0  1  0  0  1  1         1   0   0   0   0   0   0   0
^
Bit de signe 0 = positif ou 1 = négatif
Température entière  = 2⁴ + 2¹ + 2¹ = 19°C
Température décimale = 2-¹ = 0.5°C
Température lue      = 19.5°C

Si S = 1, les bits 2⁶ à 2⁰ de l’octet de poids fort représentent la valeur de la température en complément à 2.
Le complément à 2 correspond au complément à 1 + 1.

Exemple :

0x00ff: 0xff octet poids fort et 0x00 octet poids faible
Octet poids fort = 11111111
Complément à 1   = 00000000
Complément à 2   = 00000000 + 00000001 = 00000001
Soit -1°C

Autres lectures de température :
Température positive

i2cget – y 1 0x48 0xaa w   #température
i2cget – y 1 0x48 0xa8 b   #Count_Remain
i2cget – y 1 0x48 0xa9 b   #Count_Per_C

Résultats des lectures :

0X8012   #Température 18.5°C
0x07     #Count_Remain soit 7 en décimal
0x10     #Count_Per_C sit 16 en décimal

Avec Count_Remain et Count_Per_C, on peut obtenir température calculée plus fine par la formule :

                                                        (Count_Per_C - Count_Remain)
Température calculée = température entière lue - 0.25 + ----------------------------
                                                                Count_Per_C

Soit une température calculée de 18.3125°C. Tous les chiffres inférieures au dixième de degré n’ont pas de signification physique.
Pour ces mesures, nous retiendrons les valeurs suivantes :

Température lue      = 18.5°C
Température calculée = 18.3°C

Température négative

i2cget – y 1 0x48 0xaa w #température
i2cget – y 1 0x48 0xa8 b #Count_Remain
i2cget – y 1 0x48 0xa9 b #Count_Per_C

Résultats des lectures :

0X80e2   #Température -29.5°C
0x01     #Count_Remain soit 1 en décimal
0x10     #Count_Per_C sit 16 en décimal
Température lue      = -29.5°C
Température calculée = -29.3°C

PCF8570

Avec tout ce que l’on a vu précédemment, nous avons oublié nos deux mémoires.
Pour lire un octet dans la RAM, on peut utiliser la commande :

i2cget -y 1 0x50 0x00 b

Ce qui nous donne :

0x46   #F de Framboise314

PCF8582

Pour lire un octet dans l’EEPROM, on peut utiliser la commande :

i2cget -y 1 0x51 0x00 b

Ce qui nous donne :

0x46   #F de Framboise314

Commentaire

Avec tout ce que nous venons de voir et si vous disposez de la datasheet du composant, vous pouvez exploiter tous les périphériques i2c existants.

I2C et bash

Pour illustrer tout ce que nous venons de voir, nous vous proposons un script bash qui lit la température du DS1621 toutes les secondes et affiche dans la console la température lue ainsi que la température calculée.

Programme

Pour saisir ce programme, il faut saisir dans la console :

nano i2c01.sh

Cette commande ouvre un fichier teste vide appelé i2c01.sh (pour la sauvegarde faire ctrl-o et pour sortir ctrl-x).
Le contenu du programme et ses commentaires sont représentés ci-dessous.

#!/bin/bash
#Programme lecture capteur de température DS1621 via bus i2c
#nom programme       : i2c01.sh
#logiciel            : bash
#cible               : raspberry Pi
#date de création    : 06/09/2016
#date de mise à jour : 08/09/2016
#version             : 1.0
#auteur              : icarePetibles
#référence           :
#Remarques           : Pour fonctionner, il faut être sous super utilisateur
#                      Il faut rendre le fichier exécutable avec
#                      sudo chmod +x i2c01.sh
#                      exécution : ./i2c01.sh
#
ATTENTE=1                                           #attente entre 2 mesures
                                                    #temps de conversion du DS1621
                                                    #750 ms
LC_NUMERIC=C                                        #définit le séparateur décimal
                                                    #en . au lieu de , car printf
                                                    #utilise les paramètres régionaux
#Procédure de netoyage et sortie
cleanup()                                           #sortie
{
    echo
    echo Fin script                                 #message de fin
    exit                                            #sortie
}

#programme principal
echo Début du script                                #IHM
echo Mesure de température avec capteur DS1621      #IHM
echo ctrl-c pour sortir de la boucle                #IHM
echo

#Setup pin et direction - Cature Control-C SIGHUP SIGKILL
trap "cleanup" SIGHUP SIGINT SIGTERM                #capture SIGNAL et lance la
                                                    #la procédure cleanup
#initialisation DS1621
i2cset -y 1 0x48 0xac 0x00                          #configuration
i2cset -y 1 0x48 0xee                               #démarre la converssion
#traitement des mesures
while true                                          #boucle infinie
    do                                              #faire
#lecure des registres du DS1621
        lecture=`i2cget -y 1 0x48 0xaa w`           #lecture température
        lecture=$(($lecture))                       #pour permettre le calcul
        counter=`i2cget -y 1 0x48 0xa8 b`           #lecture Count_Remain
        counter=$(($counter))                       #pour les calcul
        slope=`i2cget -y 1 0x48 0xa9 b`             #lecture Count_Per_C
        slope=$(($slope))                           #pour le calcul
        corr=$(echo "scale=3; -0.25+($slope/1-$counter/1)/($slope/1)" | bc -l)
                                                    #correction pour le calcul
#octets de poids faible et valeur décimale de la température
        lsb=$((($lecture>>8)/128))                  #extraction bit 2^7
        if [ $lsb -eq 1 ]                           #si bit poids fort = 1
        then
            decimal=0.5                             #partie décimale = 0.5°C
        else
            decimal=0.0                             #partie décimale = 0.0°C
        fi
#octet de poids fort, test >0 ou <0 et valeur entière de la température
        entier=$(($lecture&0x00ff))                 #pour le calcul
        signe=$(($entier/128))                      #extraction bit 2^7
        if [ $signe -eq 1 ]                         #si = 1 alors température <0
        then
            entier=$(($entier^0xff))                #complément à 1 par xor
            entier=$(echo "scale=0; ($entier+1)*(-1)" | bc -l)
                                                    #complément à 2
        fi
        temp_lue=$(echo "scale=1; $entier/1+$decimal/1" | bc -l)
                                                    #calcul température lue
#calcul la valeur de la température à partir de |temp_lue|, counter et slope
        if [ $entier -eq 0 ]                        #température = 0
        then
            temp_cal=0                              #init
            temp_cal=$(($temp_cal))                 #pour le calcul
            temp_cal=${temp_cal/.*}                 #conversion float to int
        else                                        #température <> 0
            if [ $lecture -eq 33023 ]               #cas particulier de 0x80FF
            then                                    #pb de float to int
                temp_cal=0                          #init
                temp_cal=$(($temp_cal))             #pour le calcul
                temp_cal=${temp_cal%.*}             #float to int
            else                                    #tous les autres cas
                temp_cal=${temp_lue%.*}             #valeur entière de temp_lue
            fi
        fi
        temp_cal=$(echo "scale=1; $temp_cal/1+$corr/1" | bc -l)
                                                    #température corrigée par calcul
#affichage des données
        printf "Température lue      : %.1f °C\n" $temp_lue
        printf "Température calculée : %.1f °C\n" $temp_cal
                                                    #nécessaire pour afficher
                                                    #correctement les nbres entre
                                                    #-0.9 et 0.9
        echo                                        #saut de ligne
        sleep $ATTENTE                              #attente
    done                                            #fin do
#Fin du script

Les commentaires du script sont auto-suffisants à la compréhension.

Exécution du programme

Pour exécuter ce script bash, il faut le rendre exécutable avec la commande :

sudo chmod +x i2c01.sh

Et pour l’exécuter :

./i2c01.sh

Pour sortir de la boucle de mesure, il suffit de faire ctrl-c au clavier.

Quelques copies d’écrans

figurei2c05 figurei2c06

Un peu d’habillage

Tous les programmes de la série « saga » affichaient leurs résultats dans la console Linux en mode texte. Ce type d’affichage n’est pas très « sexy », pour remédier à cette situation nous allons mettre en œuvre tput qui est disponible par défaut dans la distribution Raspbian.

tput

Programme

Pour saisir ce programme, il faut saisir dans la console :

nano i2c06.sh

Cette commande ouvre un fichier teste vide appelé i2c06.sh (pour la sauvegarde faire ctrl-o et pour sortir ctrl-x).
Le contenu du programme et ses commentaires sont représentés ci-dessous.

#!/bin/bash
#Programme lecture capteur de température DS1621 via bus i2c
#nom programme       : i2c06.sh
#logiciel            : bash
#cible               : raspberry Pi
#date de création    : 06/09/2016
#date de mise à jour : 08/09/2016
#version             : 1.0
#auteur              : icarePetibles
#référence           :
#Remarques           : Pour fonctionner, il faut être sous super utilisateur
#                      Il faut rendre le fichier exécutable avec
#                      sudo chmod +x i2c06.sh
#                      exécution : ./i2c06.sh
#
echo -e "\e[8;12;40t"                               #fenêtre terminal 12x40
ATTENTE=1                                           #attente entre 2 mesures
                                                    #temps de conversion du DS1621
                                                    #750 ms
#
LC_NUMERIC=C                                        #définit le séparateur décimal
                                                    # en . au lieu de , car printf
                                                    #utilise les paramètres régionaux
#affichage écran
tput smcup                                          #sauve screen
clear                                               #efface écran
tput civis                                          #curseur invisible
tput cup 1 5                                        #curseur lig 1 col 6
tput setaf 4                                        #écrire en bleu
tput bold                                           #écrire en gras
echo "MESURE TEMPERATURE AVEC DS1621"               #IHM
tput sgr0                                           #annule attributs
tput cup 4 5                                        #lig 4 col 5
echo -e "Température lue      : \c"                 #IHM
tput cup 5 5                                        #lig 5 col 5
echo -e "Température calculée : \c"                 #IHM
tput cup 8 10                                       #lig 8 col 10
echo -e "Tapez \c"                                  #IHM
tput setaf 5                                        #écrire en magnenta
tput bold                                           #écrire en gras
echo -e "q\c"                                       #IHM
tput sgr0                                           #annule les attributs
tput setaf 0                                        #écrire en noir
echo -e " pour quitter\c"                           #IHM
#initialisation DS1621
i2cset -y 1 0x48 0xac 0x00                          #configuration
i2cset -y 1 0x48 0xee                               #démarre la converssion
#traitement des mesures
while true                                          #boucle infinie
    do                                              #faire
#lecure des registres du DS1621
        lecture=`i2cget -y 1 0x48 0xaa w`           #lecture température
        lecture=$(($lecture))                       #pour permettre le calcul
        counter=`i2cget -y 1 0x48 0xa8 b`           #lecture Count_Remain
        counter=$(($counter))                       #pour le calcul
        slope=`i2cget -y 1 0x48 0xa9 b`             #lecture Count_Per_C
        slope=$(($slope))                           #pour le calcul
        corr=$(echo "scale=3; -0.25+($slope/1-$counter/1)/($slope/1)" | bc -l)
                                                    #correction pour le calcul
#octets de poids faible et valeur décimale de la température
        lsb=$((($lecture>>8)/128))                  #pour le calcul
        if [ $lsb -eq 1 ]                           #si bit poids fort = 1
        then
            decimal=0.5                             #partie décimale = 0.5°C
        else
            decimal=0.0                             #partie décimale = 0.0°C
        fi
#octet de poids fort, test >0 ou <0 et valeur entière de la température
        entier=$(($lecture&0x00ff))                 #pour le calcul
        signe=$(($entier/128))                      #extraction bit 2^7
        if [ $signe -eq 1 ]                         #si = 1 alors température <0
        then
            entier=$(($entier^0xff))                #complément à 1 par xor
            entier=$(echo "scale=0; ($entier+1)*(-1)" | bc -l)
                                                    #complément à 2
        fi
        temp_lue=$(echo "scale=1; $entier/1+$decimal/1" | bc -l)
                                                    #calcul température lue
#calcul la valeur de la température à partir de |temp_lue|, counter et slope
        if [ $entier -eq 0 ]                        #température = 0
        then
            temp_cal=0                              #init
            temp_cal=$(($trmp_cal))                 #pour le calcul
            temp_cal=${temp_cal/.*}                 #conversion float to int
        else                                        #température <> 0
            if [ $lecture -eq 33023 ]               #cas particulier de 0x80FF
            then                                    #pb de float to int
                temp_cal=0                          #init
                temp_cal=$(($temp_cal))             #pour le calcul
                temp_cal=${temp_cal%.*}             #float to int
            else                                    #tous les autres cas
                temp_cal=${temp_lue%.*}             #valeur entière de temp_lue
            fi
        fi
        temp_cal=$(echo "scale=1; $temp_cal/1+$corr/1" | bc -l)
                                                    #température corrigée par calcul
        tput cup 4 28                               #lig 4 col 28
        tput setaf 1                                #écrire en rouge
        tput bold                                   #gras
        printf '%.1f' $temp_lue                     #affiche temp_lue avec format
                                                    #nécessaire pour afficher
                                                    #correctement les nbres entre
                                                    #-0.9 et 0.9
        tput sgr0                                   #annule attributs
        tput el                                     #efface jusqu'à la fin de ligne
        tput cup 4 33                               #curseur lig 4 col 33
        echo -e " °C\c"                             #IHM
        tput cup 5 28                               #lig 5 col 28
        tput setab 7                                #fond blanc
        printf "%.1f" $temp_cal                     #affiche temp_cal avec format
        tput sgr0                                   #annule attributs
        tput el                                     #efface jusqu'à la fin de ligne
        tput cup 5 33                               #curseur lig 5 col 33
        echo -e " °C\c"                             #IHM
        tput cup 8 0                                #curseur lig 8 col 0
        read -n 1 -t $ATTENTE -s saisie             #saisie clavier 1 carc, time out
#             ^    ^           ^                     et non visible
#             |    |           n'affiche pas le caractère saisie
#             |    time out en cas de non saisie, utiliser pour l'attente entre
#             |    2 mesures du DS1621
#             saisie 1 caractère
        if [ "$saisie" = "q" ]                      #si q
        then
            break                                   #sortie boucle infinie
        fi
    done                                            #fin do
echo
tput cnorm                                          #curseur visible
tput rmcup                                          #restaure screen
echo -e "\e[8;25;90t"                               #taille fenêtre 25x90
                                                    #à adapter à votre taille de
                                                    #fenêtre terminal console
echo                                                #saut de ligne
#Fin du script

Le programme de lecture et de calcul est le même que dans l’exemple précédent, les modifications portent uniquement sur l’affichage.

Exécution

Pour exécuter ce script bash, il faut le rendre exécutable avec la commande :

sudo chmod +x i2c06.sh

Et pour l’exécuter :

./i2c06.sh

Pour sortir de la boucle de mesure, il suffit de faire q au clavier.

Quelques copies d’écrans

figurei2c07 figurei2c08

Ne juger pas le côté design des fenêtres, mais elles montrent juste quelques possibilités de gestion semi-graphique de tput. Pour plus d’informations sur le programme tput, une recherche sur la toile avec votre butineur favori vous fournira toutes les options possibles.

tput et banner

Une autre possibilité d’affichage de nos résultats de mesure peut se faire par l’utilisation du logiciel banner. Banner affiche le texte passé en paramètre sous forme de bannière.
Le logiciel banner n’est pas présent dans la distribution Raspbian. Dans cette distribution, il s’appelle sysvbanner et pour l’installer il faut faire :

sudo apt-get update
sudo apt-get install sysvbanner

Programme

Pour saisir ce programme, il faut saisir dans la console :

nano i2c08.sh

Cette commande ouvre un fichier teste vide appelé i2c08.sh (pour la sauvegarde faire ctrl-o et pour sortir ctrl-x).
Le contenu du programme et ses commentaires sont représentés ci-dessous.

#!/bin/bash
#Programme lecture capteur de température DS1621 via bus i2c
#nom programme       : i2c08.sh
#logiciel            : bash
#cible               : raspberry Pi
#date de création    : 06/09/2016
#date de mise à jour : 08/09/2016
#version             : 1.0
#auteur              : icarePetibles
#référence           :
#Remarques           : Pour fonctionner, il faut être sous super utilisateur
#                      Il faut rendre le fichier exécutable avec
#                      sudo chmod +x i2c08.sh
#                      exécution : ./i2c08.sh
#
echo -e "\e[8;25;90t"                               #taille écran 25x90
ATTENTE=10                                          #attente entre 2 mesures
                                                    #temps de conversion du DS1621
                                                    #750 ms
LC_NUMERIC=C                                        #définit le séparateur décimal
                                                    #en . au lieu de , car printf
                                                    #utilise les paramètres régionaux
mesure(){                                           #lecture data DS1621
#lecure des registres du DS1621
        lecture=`i2cget -y 1 0x48 0xaa w`           #lecture température
        lecture=$(($lecture))                       #pour permettre le calcul
        counter=`i2cget -y 1 0x48 0xa8 b`           #lecture Count_Remain
        counter=$(($counter))                       #pour les calcul
        slope=`i2cget -y 1 0x48 0xa9 b`             #lecture Count_Per_C
        slope=$(($slope))                           #pour le calcul
        corr=$(echo "scale=3; -0.25+($slope/1-$counter/1)/($slope/1)" | bc -l)
                                                    #correction pour le calcul
#octets de poids faible et valeur décimale de la température
        lsb=$((($lecture>>8)/128))                  #extraction bit 2^7
        if [ $lsb -eq 1 ]                           #si bit poids fort = 1
        then
            decimal=0.5                             #partie décimale = 0.5°C
        else
            decimal=0.0                             #partie décimale = 0.0°C
        fi
#octet de poids fort, test >0 ou <0 et valeur entière de la température
        entier=$(($lecture&0x00ff))                 #pour le calcul
        signe=$(($entier/128))                      #extraction bit 2^7
        if [ $signe -eq 1 ]                         #si = 1 alors température <0
        then
            entier=$(($entier^0xff))                #complément à 1 par xor
            entier=$(echo "scale=0; ($entier+1)*(-1)" | bc -l)
                                                    #complément à 2
        fi
        temp_lue=$(echo "scale=1; $entier/1+$decimal/1" | bc -l)
                                                    #calcul température lue
#calcul la valeur de la température à partir de |temp_lue|, counter et slope
        if [ $entier -eq 0 ]                        #température = 0
        then
            temp_cal=0                              #init
            temp_cal=$(($temp_cal))                 #pour le calcul
            temp_cal=${temp_cal/.*}                 #conversion float to int
        else                                        #température <> 0
            if [ $lecture -eq 33023 ]               #cas particulier de 0x80FF
            then                                    #pb de float to int
                temp_cal=0                          #init
                temp_cal=$(($temp_cal))             #pour le calcul
                temp_cal=${temp_cal%.*}             #float to int
            else                                    #tous les autres cas
                temp_cal=${temp_lue%.*}             #valeur entière de temp_lue
            fi
        fi
        temp_cal=$(echo "scale=1; $temp_cal/1+$corr/1" | bc -l)
                                                    #température corrigée par calcul
}

BG_BLUE="$(tput setab 4)"               #commande couleur arrière plan
FG_WHITE="$(tput setaf 7)"              #commande couleur écriture

#lit la taille de la fenêtre terminal
terminal_size(){
    terminal_cols="$(tput cols)"        #nbre col fenêtre terminal
    terminal_rows="$(tput lines)"       #nbre lig fenêtre terminal
}

#calcul la taille de la bannière (banner)
banner_size(){
    banner_cols=0                       #initialisation
    banner rows=0                       #initialisation
    while read
    do
        [[ ${#REPLY} -gt $banner_cols ]] && banner_cols=${#REPLY}
#               ^     ^                      REPLY = contenu de read si l'on
#               |     >(supérieur)           affecte pas la valeur saisie à une
#               nbre de caractères de REPLY  variable
        ((++banner_rows))               #incrémente banner_rows
    done < <(banner "100.0^C")          #structure type de la température
#        ^ ^
#        | envoie résultat du processus
#        redirection
}

#affiche la température à l'écran
display_temp(){
    local row=$temp_row                 #variable locale
    while read
    do
        tput cup $row $temp_col         #coordonnées du curseur
        echo -n "$REPLY"                #affiche le contenu de REPLY
#             ^
#             sans retour à la ligne
        ((++row))                       #incrémente row
    done < <(banner "$temp_ban")        #différentes lignes de la température
#        ^ ^
#        | envoie résultat du processus
#        redirection
}

#efface l'écran par remplissage de blancs
clear_screen(){
    tput home                           #curseur position 0, 0 (haut gauche)
    echo -n "$blank_screen"             #rempli l'écran avec des spaces
}
#calcul de la colonne d'affichage
cal_coord(){
    if [[ ${#temp_ban} -eq 7 ]]         #si nbre carac de température = 7
    then
        temp_col=$(($temp_colB))        #valeur pour la structure type
        tput cup $temp_row $temp_col    #position curseur
    elif [[ ${#temp_ban} -eq 6 ]]       #si nbre carac de température = 6
    then
        temp_col=$(($temp_colB + 4))    #correction car < à la tructure de base
        tput cup $temp_row $temp_col    #position curseur
    elif [[ ${#temp_ban} -eq 5 ]]       #si nbre carac de température = 5
    then
        temp_col=$(($temp_colB + 8))    #correction car < à la structure de base
        tput cup $temp_row $temp_col    #position curseur
    fi                                  #ces corrections permettent d'avoir un
}                                       #affichage centré

#sortie de la boucle infinie par ctrl-c
trap 'tput sgr0; tput cnorm; tput rmcup || clear; exit 0' SIGINT
#           ^           ^           ^        ^              ^
#           |           |           |        efface écran   Ctrl-c
#           |           |           restaure contenu écran
#           |           curseur normal
#           désactive tous les attributs

#sauve le contenu de l'écran et rend le curseur invisible
tput smcup; tput civis
#      ^           ^
#      |           curseur invisible
#      sauve contenu écran
terminal_size                           #lit taille fenêtre terminal
banner_size                             #calcul taille banner
temp_row=$(((terminal_rows - banner_rows) / 2))
                                        #centrage pour les lignes
temp_colB=$(((terminal_cols - banner_cols) / 2))
                                        #centrage pour les colonnes
blank_screen=''                         #création variable
for ((i=0; i < (terminal_cols * terminal_rows); ++i))
do
    blank_screen+=" "                   #espace pour remplir l'écran
done

echo -n ${BG_BLUE}${FG_WHITE}           #fixe couleurs avant et arrière plan

#programme principal
#initialisation DS1621
i2cset -y 1 0x48 0xac 0x00                          #configuration
i2cset -y 1 0x48 0xee                               #démarre la converssion
#boucle infinie
while true
    do
        mesure                                      #lit et calcul les températures
        clear_screen                                #efface écran
        tput cup 1 38                               #curseur lig 1 col 38
        echo -n "Capteur DS1621"                    #IHM
        temp_ban=$(printf "%.1f^C" $temp_cal)       #température à afficher en
                                                    #bannière via banner
        cal_coord                                   #position bannière
        display_temp                                #affiche la température
                                                    #calculée en bannière
        tput cup 23 1
        printf "Température mesurée : %.1f°C" $temp_lue
        tput cup 23 69
        echo -n "<ctrl-c pour sortir>"
        sleep $ATTENTE                              #attente
    done                                            #fin do
#Fin du script

Le programme de lecture et de calcul est le même que dans l’exemple précédent mais il est regroupé dans un sous-programme mesure(). Certaines subtilités utilisées dans le script sont commentées dans le programme.

Exécution

Pour exécuter ce script bash, il faut le rendre exécutable avec la commande :

sudo chmod +x i2c08.sh

Et pour l’exécuter :

./i2c08.sh

Pour sortir de la boucle de mesure, il suffit de faire ctrl-c au clavier.

Quelques copies d’écrans

figurei2c09 figurei2c10

Banner n’est pas en mesure d’afficher le signe ° (il n’est pas dans les caractères de base du code ASCII), nous avons utilisé le symbole ^ pour palier à ce petit défaut. Il existe d’autres logiciels similaires à banner mais nous n’avons pas fait de tests avec ceux-ci.

Conclusion

figure13Nous arrivons à la fin de l’épisode 1 de la saga I2C qui portait sur la découverte du bus I2C, son activation ainsi que la mise en œuvre d’un capteur de température, d’une RAM et d’une EEPROM. La mise en forme de l’affichage sous forme semi-graphique nous a permis d’avoir une présentation plus agréable des résultats.
Le prochain épisode portera sur l’utilisation du capteur DS1621 sous une forme similaire mais avec les langages Python et C/C++.

A tous présents et à venir. Salut !

Sources

Vous pouvez télécharger les sources et la documentation :
http://psl.ibidouille.net/Images_forum/raspberryPi/sagaI2C_01.zip

Liens

Bus I2C
Manuel de l’utilisateur i2c

Autres articles de la série saga

Saga Blink – saison 1
Saga Blink – saison 2
Saga Push Button

Prendre la main à distance sur le Raspberry Pi 3 avec VNC sur une tablette

$
0
0

ap_pi3_250pxPourquoi illustrer cet article avec la lune et un appareil photo me direz vous ? A l’origine c’est une question de David, astrophotographe qui souhaite piloter depuis une tablette le Raspberry Pi en charge de commander son réflex …
En fait ça pourra servir à bien d’autres applications d’où la rédaction de cet article qui explique comment transformer votre framboise en point d’accès WiFi et vous y connecter à distance depuis une tablette, un smartphone…

Pour mettre en place le tout je me suis inspiré d’un article de Phil MARTIN que je vous conseille si vous lisez l’anglais.

Matériel et logiciels utilisés :

  • Raspberry Pi 3
  • Raspbian PIXEL edition 20160923 mise à jour
  • hostapd
  • dnsmasq
NIVEAU_avancé

Cliquez pour avoir une définition de ces niveaux

Prendre la main en WiFi sur le Raspberry Pi 3

Le cahier des charges

David utilise un télescope équipé d’un réflex pour faire des photos du ciel. Il souhaite prendre la main à distance sur le RasPi à partir d’une tablette connectée en WiFi, pour piloter le la prise de vue « comme s’il était sur le Raspberry Pi lui-même ». Il utilise DslrDashboard un logiciel qui commande le réflex via le port USB et affiche à l’écran une prévisualisation de l’image captée par le réflex.

live_view_600px

Le RasPi étant isolé au milieu du jardin, il n’y a pas lieu de prévoir une connexion filaire à Internet (sinon tout ça ne servirait à rien 🙂 ) donc pas de routage non plus pour renvoyer la connexion Internet sur le WiFi…

connection_screen_600pxPar contre il faut être en mode graphique pour afficher les informations fournies par DslrDashboard. Désolé pour les tenants du tout texte 🙂

 Comment qu’on fait ?

Un Point d’accès WiFi

telescope

Télescope – Image prise de jour… Bin oui de nuit vous n’auriez rien vu 🙂 Image http://www.webastro.net

Le télescope est placé à distance (à l’extérieur) et le réflex est connecté à un Raspberry Pi qui dirige les opérations.
Nous allons dans un premier temps créer un point d’accès WiFi sur le Raspberry Pi. J’ai utilisé un Raspberry Pi 3 avec WiFi intégré mais la solution est valable pour un autre modèle de Raspberry Pi, voire un Raspberry Pi 3 dont le WiFi a été désactivé et qui a été équipé d’une clé WiFi.

Pourquoi ? Parce qu’une clé WiFi avec une « vraie » antenne a une portée bien plus grande qu’un Pi3 avec sa toute chtite antenne 😀

ap_pi3_02

A gauche l’antenne WiFi du Raspberry Pi, c’est ce tout petit parallélépipède… La portée est forcément plus courte qu’avec une vraie antenne.

Installer hostapd

hostapd est le paquet qui permet d’utiliser le périphérique WiFi intégré au Raspberry Pi 3 comme un point d’accès. Il fonctionne également avec les clés USB reconnues par Raspbian.

On va commencer par le sempiternel et néanmoins obligatoire

sudo apt-get update
sudo apt-get upgrade

 

Une fois la mise à jour terminée on peut installer hostapd

pi@raspberrypi:/etc $ sudo apt-get install hostapd
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés&amp;amp;amp;amp;nbsp;:
 libnl-route-3-200
Les NOUVEAUX paquets suivants seront installés&amp;amp;amp;amp;nbsp;:
 hostapd libnl-route-3-200
0 mis à jour, 2 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 559 ko dans les archives.
Après cette opération, 1 473 ko d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] o

Allez soyez gentil(le) dites lui voui et validez.

Nous voilà donc avec hostapd installé. Problème : qui va gérer l’adressage du WiFi… hein ? Dans les versions actuelles de Raspian, la configuration de l’interface est gérée par dhcpcd par défaut. Nous devons lui dire d’ignorer wlan0, car nous allons le configurer avec une adresse IP statique.

 

Attention !
Si vous êtes connecté(e) au Raspberry Pi via WiFi, pensez d’abord à vous connecter via Ethernet, via le port série ou branchez un clavier. Sinon lorsque vous allez configurer le WiFi vous allez être déconnecté(e) sauvagement 🙂
raspberry_pi_ap

Access-point réalisé avec un Raspberry Pi de première génération

Ouvrez le fichier de configuration de dhcpcd avec la commande sudo nano /etc/dhcpcd.conf et ajoutez la ligne suivante à la fin du fichier:

denyinterfaces wlan0

Cette ligne doit être au-dessus des lignes concernant les interfaces que vous avez peut-être ajoutées dans dhcpcd.conf !

Maintenant, nous pouvons configurer wlan0 avec une IP statique. Ouvrez le fichier de configuration d’interface avec la commande

sudo nano /etc/network/interfaces

 

et modifiez la section wlan0 pour qu’elle ressemble à ceci:

allow-hotplug wlan0
#iface wlan0 inet manual
# wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface wlan0 inet static
address 172.16.0.1
netmask 255.255.255.0

Choisissez une adresse IP qui soit dans la plage des adresses privées. C’est le cas pour l’adresse que j’ai choisie : 172.16.0.1 mais vous pouvez choisir celle que vous voulez (pourvu qu’elle soit dans la plage des adresses privées). J’ai volontairement utilisé une adresse IP en 172 pour bien différencier ce réseau du réseau 192.168.x.x  de la maison.

Redémarrez dhcpcd avec la commande

sudo service dhcpcd restart

puis rechargez la configuration de wlan0 avec la commande

sudo ifdown wlan0; sudo ifup wlan0

Après ce redémarrage du réseau les nouveaux paramètres sont pris en compte, un ifconfig confirme que wlan0 a bien pris l’adresse prévue.

ifconfig_wlan0

Bon… On peut continuer et paramétrer hostapd.

Paramétrage de hostapd

ap_pi3_01

Pour utiliser notre Raspberry Pi 3 comme point d’accès, il faut configurer hostapd. Créez un nouveau fichier de configuration pour hostapd :

sudo nano /etc/hostapd/hostapd.conf

et écrivez (ou collez 🙂 ) les paramètres suivants dans ce fichier :

# Nom de l'interface WiFi que nous avons configurée
interface=wlan0

# Utiliser le pilote nl80211 avec le pilote brcmfmac
driver=nl80211

# Nom du réseau qui sera diffusé
ssid=Pi3-AP

# UUtiliser la bande 2,4 GHz
hw_mode=g

# Utiliser le canal 6
channel=6

# Activer le 802.11n
ieee80211n=1

# Activer WMM
wmm_enabled=1

# Activer les canaux en 40MHz avec un intervalle de garde 20 ns
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]

# Accepter toutes les adresses MAC
macaddr_acl=0

# Utiliser WPA pour l'authentication
auth_algs=1

# Exiger que les clients connaissent le nom du réseau
ignore_broadcast_ssid=0

# Utiliser WPA2
wpa=2

# Utilisez une clé pré-partagée
wpa_key_mgmt=WPA-PSK

# Mot de passe pour accéder au réseau
wpa_passphrase=raspberry

# Utiliser le chiffrage AES, au lieu de TKIP
rsn_pairwise=CCMP

Je vous sens impatient(e) de vérifier si ça fonctionne 🙂 A ce stade de l’installation on peut le faire en exécutant la commande

sudo /usr/sbin/hostapd  /etc/hostapd/hostapd.conf

 

ap_pi3_07

Capture d’écran sur smartphone en fin de configuration : ici le smartphone s’est bien connecté à PI3-AP car dnsmasq est en fonction…

Si tout s’est bien passé jusqu’à présent, vous devriez être en mesure de voir le réseau PI3-AP sur un smartphone ou une tablette !

Si vous essayez de vous y connecter vous ne recevrez pas d’adresse IP jusqu’à ce que nous mettions en place dnsmasq dans l’étape suivante. Utilisez Ctrl+C pour arrêter l’exécution de hostapd.

Notre configuration n’est pas encore tout à fait terminée, parce que nous devons aussi dire à hostapd où il doit aller chercher le fichier de configuration lors de son démarrage.

Ouvrez le fichier de configuration par défaut de hostpad avec la commande :

sudo nano /etc/default/hostapd

 

et trouvez la ligne

# DAEMON_CONF = ""

remplacez la  par

DAEMON_CONF = "/etc /hostapd/hostapd.conf"

Installer dnsmasq

dnsmasq est un serveur combiné DHCP et DNS qui est très facile à configurer. Si vous voulez quelque chose d’un peu plus « lourd », vous pouvez utiliser le serveur isc-dhcp-server et le paquet bind9 respectivement pour le DHCP et DNS , mais pour ce que nous avons à faire, dnsmasq fonctionne très bien.

Installez dnsmasq avec la commande habituelle

sudo apt-get install dnsmasq

Le fichier de configuration installé en même temps que dnsmasq contient une foule de renseignements sur la façon de l’utiliser (lisez-le si vous voulez aller plus loin avec dnsmasq), mais la majorité de ces paramètres est inutile pour ce que nous voulons faire. Je vous conseille de le renommer (plutôt que de le supprimer), et de créer un nouveau fichier dnsmasq.conf :

 

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.org
sudo nano /etc/dnsmasq.conf

Puis collez les lignes suivantes dans le fichier que vous aurez ouvert avec nano :

interface=wlan0 # Utiliser l interface wlan0
listen-address=172.16.0.1 # Specifier l adresse à écouter
bind-interfaces # Lier à l interface pour etre sur; de ne rien envoyer ailleurs
server=8.8.8.8 # Renvoyer les demandes DNS au DNS de Google
domain-needed # Ne pas router les noms courts
bogus-priv # Ne pas router les adresses privees
dhcp-range=172.16.0.50,172.16.0.150,12h # Distribuer des adresses IP entre 172.16.0.50 et 172.16.0.150 avec une duree de bail de 12 heures 

Bon… On y est presque !

Il nous reste à démarrer les services :

sudo service hostapd start
sudo service dnsmasq start

Voilà… Vous devriez pouvoir vous connecter au Raspberry Pi en utilisant le WiFi intégré.

Premiers tests du point d’accès WiFi

Déconnectez le câble Ethernet du Raspberry Pi pour les tests. Laissez connecté le câble HDMI pour le moment… Vous pouvez redémarrer le Raspberry Pi pour repartir de zéro.

Sur le Raspberry Pi ouvrez le menu de configuration du Raspberry Pi et dans l’onglet Interfaces, activez le serveur VNC :

ap_pi3_08

Vous devriez vois apparaître l’icône VNC dans la barre des tâches du Raspberry Pi, à droite. Cliquez sur cette icône pour ouvrir la fenêtre de gestion du serveur.

ap_pi3_09

Super ! L’adresse IP du serveur VNC est bien celle de notre WiFi 🙂

Sortez votre tablette, c’est le moment !

tablette

Sur votre tablette ou smartphone, installez l’appli VNC. Dans les paramètres de la tablette/smartphone, accédez au WiFi : vous voyez le point d’accès Pi3-AP (si vous ne le voyez pas c’est que vous avez raté quelque chose dans les épisodes précédent… Reprenez calmement depuis le début)

Connectez vous à l’access-point. Cette fois ça doit aller jusqu’au bout, car dnsmasq distribue une adresse IP à votre smartphone/tablette.

Allez je vous emmène directement là où ça fait mal. Ouvrez Minecraft dans le menu Jeux.

minecraft_0Mais pourquoi tant de haine ? L’écran de Minecraft reste désespérément noir 🙁 !

Réfléchissez… Bon Dieu ! Mais c’est… bien sûr ! Eh oui… certaines applications écrivent directement dans la mémoire d’image (framebuffer) pour aller plus vite et… les pixels apparaissent sur l’écran du Raspberry Pi mais pas sur l’écran distant !

Heureusement Monsieur VNC a pensé à nous et rajouté une fonction (encore expérimentale avec cette version) qui permet de récupérer le contenu du framebuffer pour l’envoyer à la machine distante. Voyons voir…

vnc_optionsRouvrez la fenêtre de VNC serveur sur le Raspberry Pi, cliquez en bas à gauche sur le bouton Plus… puis dans le menu choisissez Options > Dépannage. Vous obtenez la fenêtre ci-dessus dans laquelle vous cocherez Utiliser le mode de capture direct (expérimental). Je vous l’avais bien dit, que c’était expérimental, non ? Donc pas la peine de m’écrire pour protester si « Ça marche pas » ou « Ça marche mal » ou encore « Ça plante« …  Je n’y suis pour rien, je n’y peux rien et je ne peux rien y faire 😀

Rouvrez Minecraft :

minecraft

Et là devant vos yeux ébahis se produit un de ces miracles de la technologie moderne : L’écran de Minecraft s’affiche… Elle est pas belle la vie ?

Essais de l’access-point avec prise en main à distance

Voici arrivé le grand moment, on va tester le point d’accès pour de vrai ! débranchez tout, emmenez le Raspberry Pi au fond du jardin euh… non pas dans la cabane au fond du jardin 🙂

Branchez la batterie sur le Raspberry Pi, à moins que vous ayez le secteur ?

Réveillez la tablette ou le smartphone, connectez vous au Raspberry Pi et… quoi encore ?

ap_pi3_06Quoi ? Elle ne vous plait pas l’image que vous obtenez ? Quoique… Si on regarde de plus près, l’image de fond mesure normalement 1900×1200 pixels environ et les icônes seraient énormes dans ce cas 🙁 On va en avoir le cœur net ! Capture d’écran et sortez le double-décimètre

720x480Effectivement c’est un peu court, jeune homme ! 720 par 480 pixels… Ne serait-ce pas la résolution de la télé ? Diable, c’est comme si le Raspberry Pi  avait démarré sur la sortie composite (analogique).

Bin oui… comme le Raspberry Pi n’a pas trouvé d’écran HDMI il est passé automatiquement en analogique. Mais il y a une solution :

communication_600px

On va faire croire à la framboise qu’elle est branchée sur un écran HDMI et forcer la résolution à une valeur qui nous sied. Le Raspberry Pi va générer en interne un écran aux bonnes dimensions, qui sera envoyé à la tablette/smartphone.

Ouvrez le fichier /boot/config.txt, repérez et modifiez les lignes suivantes :

# uncomment if hdmi display is not detected and composite is being output
hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
hdmi_group=2
hdmi_mode=28

hdmi_mode=28 correspond à 1200×800 pixels. Si vous voulez une autre résolution RTFM ou utilisez une de celles-ci

hdmi_mode=9    800×600
hdmi_mode=16   1024×768
hdmi_mode=23   1280×768
hdmi_mode=28   1280×800
hdmi_mode=35   1280×1024
hdmi_mode=51   1600×1200
hdmi_mode=69   1920×1200

Alors qu’est-ce que ça donne après un redémarrage ?

1280x800

Voilà, vous avez maintenant un Raspberry Pi sur lequel vous pouvez vous connecter en WiFi et utiliser le mode graphique 🙂

Vidéo

 

Conclusion

J’espère qu’avec ces informations ceux d’entre vous qui souhaitez accéder en mode graphique à un Raspberry Pi auront la réponse à leurs questions.

lune_600px

Au départ c’était une question pour de l’astrophoto. Si vous avez d’autres applications n’hésitez pas à les mentionner dans les commentaires ci-dessous et pourquoi pas envoyer quelques copies d’écrans ? je les ajouterai à la suite de cet article 🙂

Sources

 

 

14 trucs à connaître pour personnaliser Raspbian PIXEL

$
0
0

pixel_screenshot_01_250pxUne nouvelle version de Raspbian est sortie fin septembre 2016. Simon LONG, de la Fondation Raspberry Pi a travaillé sur cette nouvelle version depuis 2 ans et il a ajouté plusieurs nouvelles fonctionnalités. La plus visible est la nouvelle apparence du bureau, appelé PIXEL comme (Pi Improved Xwindows Environment, Lightweight = Environnement Xwindows amélioré du Pi, Léger). Fallait y penser 😆

  • Démarrer PIXEL en mode console
  • Ne plus afficher le splash creen de PIXEL
  • Remplacer le splash screen de PIXEL
  • Ajouter un moniteur de température à la barre de tâches de PIXEL
  • Changer le fond d’écran de PIXEL
  • Remettre le logo Raspberry Pi en fond d’écran de PIXEL
  • Mettre mon logo en fond d’écran de PIXEL
  • Trouver les icônes de PIXEL
  • Supprimer la mise en veille de PIXEL
  • Supprimer les boîtes d’aide de PIXEL
  • Activer le terminal administrateur dans PIXEL
  • Épingler le terminal administrateur dans la barre d’applications de PIXEL
  • Ajouter Flash à Chromium
NIVEAU_debutant

Cliquez pour avoir une définition de ces niveaux

13 trucs à connaître pour personnaliser Raspbian PIXEL

Les nouveautés de PIXEL

Il y a beaucoup de nouveautés dans l’interface utilisateur (UI), des modifications à la fois fonctionnelles et visuelles …

  • Un nouvel écran de démarrage
  • De superbes images de fond
  • Un nouveau jeu d’icônes
  • De plus grandes « poignées » pour déplacer et redimensionner les fenêtres (ça m’énerve depuis des années 🙂 )
  • Les fenêtres ont maintenant des coins arrondis
  • Un nouveau des polices pour une meilleure typographie

Je pense que la nouvelle apparence est en soi une grande amélioration et je l’apprécie beaucoup.  « Attraper » le coin d’une fenêtre pour la redimensionner a toujours été un peu plus difficile que ce que ça aurait dû être et je trouve très bien la nouvelle taille de la zone sensible.

Alors, qu’y a-t-il d’autre de neuf ?

Il y a d’autres modifications, par exemple l’utilisation de Chromium comme navigateur par défaut et la pré-installation de RealVNC. L’ajout de Chromium est une excellente nouvelle qui cela signifie que je peux utiliser un Raspberry Pi 3 pour les hangouts de Google + dont je me sers beaucoup quand je dois travailler, pour communiquer et collaborer avec d’autres personnes. Je peux maintenant le faire depuis l’atelier tout en surveillant twitter et en faisant du contôle qualité sur les Pro HATs – tout ça en utilisant le même Raspberry Pi 3. (C’est Alex qui parle 🙂 )

Je veux personnaliser PIXEL !

On aime tous personnaliser notre environnement informatique, alors comment faire avec PIXEL si vous souhaitez le modifier à votre sauce ? On pourrait dire en franglais customiser PIXEL ou faire du Tunig sur PIXEL 🙂 Comment faire ? Voici quelques conseils que j’ai regroupés montrant de quelle façon que vous pouvez modifier ou personnaliser votre PIXEL/Raspbian.

Truc 1 – Je veux démarrer en mode console, comme avant !

Si vous préférez le look rétro du Raspberry Pi avec les messages de démarrage qui défilent, plutôt que le nouvel écran de démarrage (Splash Screen), il y a deux façons d’y parvenir …

En mode graphique

config_01Utilisez l’application Raspi-config sous sa forme graphique.Ouvrez le menu, cliquez sur Préférences puis Configuration du Raspberry Pi.

config_02Dans la ligne Boot, validez vers la Console au lieu de vers le Bureau. Confirmez votre choix en cliquant sur le bouton Valider. Acceptez le redémarrage et vous verrez avec des yeux embués de larmes 🙂 réapparaître le défilé des messages au démarrage.

config_03 

Bonus
Allez, cadeau !
Avec la nouvelle version de Raspbian : PIXEL si vous avez activé VNC avec le mode capture directe vous aurez sur votre écran distant l’affichage de la console en mode texte et vous pouvez l’utiliser à distance.

config_04

Truc 2 – Je veux démarrer en mode console, comme avant !

Ahhhh je vous vois déjà venir ! Il s’est planté, il a fait un copier-coller du titre précédent et il a oublié de le modifier… Que nenni bande de mauvaises langues ! Je vous propose juste une deuxième méthode pour démarrer le Raspberry Pi… comme avant 😛
Et elle est encore plus simple : il suffit de supprimer “quiet splash” dans /boot/cmdline.txt

sudo nano /boot/cmdline.txt

config_05Dans la ligne qui s’affiche déplacez vous pour trouver quiet splash et supprimez ces 2 mots. Terminez en sauvegardant vos modifications : CTRL+X   validez avec O puis ENTRÉE

 

Attention !
Le fichier cmdline.txt ne doit comporter qu’une seule ligne !

Truc 3 – Je ne veux pas afficher le « Splash Screen » de PIXEL

Le splash screen c’est cette image qui apparait brièvement après l’initialisation du système et avant le lancement du bureau.

bootSi ce « splash screen » ne vous plait pas faites comme ci-dessus, modifiez le fichier /boot/cmdline.txt mais ne supprimez que splash 🙂

Truc 4 – Je veux mettre mon Splash Screen à moi dans PIXEL

Ahhh en fait ce n’est pas qu’il ne vous plait pas ce splash screen… Vous voudriez mettre le vôtre à la place… Effectivement pour une entreprise, une école ou pour se faire connaître sur une animation Raspberry Pi ça serait sympa !

Où qu’il est, mais où ?….

splash_origine_600pxVoilà le vrai visage du splash screen tel que vous le trouverez ici :
/usr/share/plymouth/themes/pix/splash.png
Il mesure 1024×768 pixels (cliquez sur l’image ci-dessus pour le voir en taille réelle).

L’image que vous allez mettre à la place doit s’appeler splash.png et avoir la même taille. Pour les tests je vous propose celle-ci (pub 🙂 )

splash_314

Cette image mesure 600×450 pixels… Cliquez dessus pour accéder à l’image qui a les bonnes dimensions 🙂

Je vous conseille de faire une sauvegarde du splash screen d’origine

sudo cp /usr/share/plymouth/themes/pix/splash.png /usr/share/plymouth/themes/pix/splash.png.org

Ce qui vous permettra de revenir en arrière si vous le souhaitez. Ensuite en supposant que vous ayez rangé le nouveau splash screen dans /home/pi :

sudo mv /home/pi/splash_314-2.png /usr/share/plymouth/themes/pix/splash.png

Au prochain démarrage vous verrez votre splash screen à vous sur l’écran du Raspberry PI…

config_06

Cliquez pour voir une animation GIF (20 Mo soyez patient(e) ) du démarrage avec les modifs. Désolé pour le flou par moment, la caméra n’arrive pas à faire le point sur un écran noir 🙁

Truc 5 – Je veux ajouter un moniteur de température dans la barre de tâches de PIXEL

thermometre_ecranBin oui, surtout si vous avez un Raspberry Pi 3… Des fois il a des chaleurs 🙂 On peut savoir si le CPU dépasse la température maxi lorsque le firmware affiche un thermomètre en haut à droite de l’écran.
Par précaution j’équipe mes Raspberry Pi 3 d’un radiateur. J’ai différents modèles équipés d’un double-face thermoconducteur, en aluminium ou en cuivre.

ap_pi3_01Après si on veut se rassurer, on peut décider d’afficher la température dans la barre des tâches.

Faites un clic avec le bouton droit de la souris sur la barre des tâches (celle qui est tout en haut de l’écran).

config_07Dans ce menu qui apparait cliquez sur Ajouter/Enlever des éléments du tableau de bord.

config_08Vous arrivez sur cette fenêtre qui affiche les applets présentes sur la barre des tâches. Ici on est en haut de la liste. Ça correspond à la partie gauche de la barre des tâches.

Cliquez sur le bouton Ajouter en haut à droite de la fenêtre.

config_09Dans la liste qui apparait sélectionnez Moniteur de température, puis cliquez sur le bouton Ajouter en bas de la fenêtre Ajouter un … au de bord.

config_10Votre Moniteur de température se retrouve à l’extrême droite de la barre des tâches. Cliquez à nouveau sur le bouton Ajouter et sélectionnez cette fois Espace.config_12

Validez pour insérer l’espace à droite de votre moniteur de température. Cliquez sur le bouton Monter et faites monter l’espace au dessus du moniteur de température.

Ajoutez encore un espace et laissez-le cette fois tout en bas de la liste.

config_11Voilà la température de votre CPU s’affiche en haut à droite de l’écran. Vous allez pouvoir surveiller ses poussées de fièvre 🙂 Allez lancez une vidéo, pour voir ?

Truc 6 – Je veux changer le fond d’écran du bureau de PIXEL

wallpapersParce que vous ne les trouvez pas beaux les wallpapers de PIXEL ?
Ce sont des images mises à disposition par Greg Annandale, un des développeurs de la Fondation .
On y trouve des paysages, des lumières, du sable et de l’eau…
Mais on peut comprendre que vous souhaitiez afficher autre chose sur votre écran. Un peu comme les collines verdoyantes de Windows qui ont rendu malade toute une génération d’utilisateurs de l’informatique…

Mais y sont où, mais y sont où les wallpapers… la la la la… la

Pour commencer il faut savoir où ils sont rangés, les rouleaux de papier peint…

Ils sont dans le dossier   /usr/share/pixel-wallpaper

Pour modifier le fond d’écran faites un clic droit sur le fond d’écran.config_13Ce menu va s’ouvrir. Sélectionnez Préférences du bureau en bas du menu.

config_14Vous accédez à cette fenêtre. La ligne Fond d’écran vous permet de changer à volonté le fond d’écran.

Et vous faites quoi comme taille ?

Ce sont des images PNG qui mesurent 1920 x 1280 pixels . Donc si vous voulez utiliser vos propres fonds d’écran, vous savez ce qu’il faut faire 🙂

Tiens… Justement il y a quelques jours on a eu un superbe coucher de soleil sur Le Creusot… Si, si ça arrive ! du coup j’ai sorti l’appareil photo et pris une image depuis la fenêtre du bureau dans lequel je framboise…

fond_ecran_maison_600px

Cliquez pour avoir l’image en taille réelle

et une fois intégrée dans la liste et sélectionnée ça donne ceci :

pixel_screenshot_01_600pxIl est pas beau mon fond d’écran 🙂 ?

Truc 7 – J’l’aimais bien, moi, la framboise au milieu du bureau

Ah, nostalgie quand tu nous tiens… Bon je vais voir ce qu’on peut faire 🙂

Alors… l’image de la framboise qui nous intéresse se trouve ici :

/usr/share/raspberrypi-artwork/raspberry-pi-logo-small.png

On va aller la chercher avec Appearence Settings :

config_15Pour le moment c’est l’image road.jpg qui est affichée en plein écran.

config_16Cliquez sur le nom de l’image sur la ligne Picture et allez cliquer sur /usr/share/raspberrypi-artwork/raspberry-pi-logo-small.png

config_17puis juste au dessus dans Layout (à la framboise 🙂 ) choisissez Centre image on screen

config_18sinon vous aurez une framboise géante à l’écran… Mais bon ça peut vous plaire…

pixel_screenshot_03_600pxVoilà vous voici revenu(e) à votre écran habituel… Ça va mieux ?

Truc 8 – Et si je veux remplacer la framboise par mon logo en fond d’écran ?

Ahhh… ça c’est une question à moi… Quand je participe à une animation Raspberry Pi, j’aime bien avoir le logo de framboise314 en fond d’écran… (non?)

pixel_screenshot_02_600pxCommencez par copier votre logo sur le Raspberry Pi. Rangez le dans le dossier /usr/share/raspberrypi-artwork (pour rester dans la logique du système…). Vous n’avez pas de logo sous la main ? Bon… je vous offre le mien (pub 🙂 )

logo_framboise314_600px

Cliquez sur l’image pour avoir le logo en taille normale.Ce logo est l’œuvre de Quentin (Développeur Web et Mobile – Développeur Cordova – Chef de Projet (Méthode Agile)) dont vous pouvez consulter le site professionnel.

Retournez dans le menu Appearence Settings et sélectionnez votre logo, sélectionnez aussi Centre image on screen   et… admirez 😀 :

Truc 9 – Et les icônes… c’est où qu’elles se cachent ?

Vous avez sans doute remarqué que les icônes de la barre des tâches, dumenu, et du gestionnaire de fichiers ont suni une cure de jouvence. Sam Alder et Alex Carter, les esponsables de tous les dessins animés et graphiques que vous voyez le site Web de la Fondation, ont été mis à rude épreuve ces derniers mois, avec Eben qui avait un regard vigilant pour faire en sorte que chaque pixel soit exactement la bonne couleur! Il fallait quelque chose qui ait l’air professionnel pour être apprécié par les personnes qui utilisent le bureau du Raspberry Pi pour un travail sérieux, mais avec juste une touche d’espièglerie, et Sam et Alex ont fait un excellent travail.

Certaines des icônes que vous ne voyez pas sont encore plus jolies, ça vaut presque la peine d’installer des applications éducatives ou d’ingénierie juste pour que ces catégories apparaissent dans le menu… 🙂

icones_600pxToutes les nouvelles icônes sont dans ces dossiers et vous pouvez y accéder pour votre information ou pour installer des applications …

Truc 10 – On pourrait pas supprimer la mise en veille ?

Il suffit de demander 🙂

Ouvrez le fichier lightdm.conf

 sudo nano /etc/lightdm/lightdm.conf

Cherchez la section [SeatDefaults], repérez la ligne

#xserver-command=X

Enlevez le # qui se trouve en début de ligne pour activer l’envoi de commandes au serveur X et modifier la ligne comme suit :

xserver-command=X -s 0 -dpms

DPMS c’est Display Power Management Signaling = Gestion de l’alimentation du moniteur vidéo. Il faut lui dire qu’on ne veut pas de délai avant extinction du moniteur en cas d’inactivité du serveur X. C’est le rôle du -s 0, le 0 signifiant qu’on désactive la mise en veille du moniteur.

Truc 11 – J’en ai marre des boites d’aide…

config_20Chaque fois que vous passez la souris sur une icône ou un item de menu, une boîte d’information s’ouvre pour vous dire à quoi ça sert.. Si ça vous agace vous pouvez faire disparaître ces boîtes.

Ouvrez le fichier  ~/.themes/PiX/gtk-2.0/gtkrc

 

sudo nano ~/.themes/PiX/gtk-2.0/gtkrc

 

et ajoutez la ligne gtk-enable-tooltips = 0 au début du fichier :

config_21

Au prochain démarrage de LXDE vous ne verrez plus les boîtes d’aide apparaître.

Truc 12 – Activer le Terminal Administrateur

Utilisateur de Debian, j’aime bien le terminal Administrateur (chacun ses goûts). Sur une machine de test ça évite de passer par sudo, su et tout le toutim… Sauf que… Sur Raspbian Jessie il n’apparait pas dans la liste des outils.

config_22Dans Menu > Préférences cliquez sur Main Menu Editor.

config_23Sélectionnez Accessoires dans la partie gauche de la fenêtre et cochez la case en face de Root Terminal.

config_24Le terminal administrateur apparait maintenant dans le menu Accessoires.

Pour les plus curieux on trouve le terminal administrateur dans /home/pi/.loca:/share/applications :

config_31

Truc 13 – Mettre le terminal administrateur dans la barre de tâches

Sous Debian j’ai aussi l’habitude de faire un glisser-déplacer du terminal administrateur et de le poser à portée de main dans la barre des taches… Ici… ça ne fonctionne pas 🙁

Voyons comment ajouter un lanceur d’applis pour le terminal administrateur dans la barre d’applications, cette zone où il y a déjà le gestionnaire de fichiers, le terminal, Mathematica et Wolfram.

Faites un clic droit avec la souris dans cette zone (par exemple sur le lanceur du terminal).

config_26Dans le menu qui s’ouvre, cliquez sur Barre de lancement d’applications Settings.

config_28Et voici la fenêtre de gestion de la barre de lancement d’applications. Par exemple pour ajouter la calculatrice si vous vous en servez souvent, ouvrez la catégorie Accessoires, cliquez sur Calculator puis sur le bouton Ajouter et vous retrouvez la calculatrice dans la liste des lanceurs et… dans la barre d’applications. Super !

Euh… ouais super ! mais il est où le terminal administrateur ? Zut il n’est pas dans les accessoires ! Mais au moins vous avez vu comment ajouter n’importe quelle appli dans la barre d’applications.

Pour le terminal administrateur on va se le faire à la mano…

config_25Ouvrez le fichier /home/pi/.config/lxpanel/LXDE-pi/panels/panel et cherchez cette partie du fichier :

 

Plugin {
  type=launchbar
  Config {
    Button {
      id=pcmanfm.desktop
    }
    Button {
      id=lxterminal.desktop
    }
    Button {
      id=wolfram-mathematica.desktop
    }
    Button {
      id=wolfram-language.desktop
    }
  }
}

Auquel on va rajouter un bouton pour lancer le terminal administrateur :

Button {
    id=gksu.desktop
}

Après modification vous devriez avoir ceci :

config_29Et si on regarde dans la barre d’applications :

config_30On a bien ajouté le terminal administrateur. Mais maintenant que vous savez faire vous pourrez ajouter ce que vous voulez à la barre d’applications 😀

Truc 14 – Ajouter le plugin FLASH dans Chromium sur PIXEL

La Fondation vient d’annoncer (12 oct. 2016) la disponibilité de Flash pour Chromium.

adobe-flash-player-logoPour l’installer c’est tout simple :

sudo apt-get update
sudo apt-get install rpi-chromium-mods

Il faudra autoriser l’utilisation du plugin Flash

flash1_600px

et vous pouvez naviguer sur des pages ayant du contenu Flash et visualiser ce contenu :

flash3_600pxflash2_600px

Conclusion

On trouve souvent que le système avec lequel on travaille/s’amuse/passe trop de temps ne répond pas vraiment à toutes nos attentes. Avec Linux (donc avec Raspbian) il est possible d’adapter le système à nos besoins/envies. Ce n’est pas toujours immédiat mais en cherchant un peu de nombreuses possibilités sont offertes.

Dites vous toujours que si vous pensez à une modification, vous n’êtes sans doute ni le premier ni le dernier à y avoir pensé et que ça doit exister « quelque part« . Reste à trouver ce « quelque part« .

Avec ces quelques options vous pourrez déjà commencer à adapter votre système mais il y en a plein d’autres à explorer. Si vous trouvez des « trucs », des « Tips » ou des « Tweaks » n’hésitez pas à les partager dans les commentaires ci-dessous 🙂 même un simple lien vers un forum ou un blog offrant une solution sera le bienvenu.

C’est sur le blog d’Alex Raspi.tv que j’ai trouvé une partie des trucs de cet article.

Sources

Pixel Tips and Tweaks – how to Tweak Aspects of the new Raspbian Skin


Watchdog pour mon Raspberry Pi

$
0
0

chien_de_gardeCet article à pour but de décrire les différentes étapes pour installer un watchdog sur votre Raspberry Pi. En effet il existe beaucoup d’articles (très peu en français) et certains ne fonctionnent pas (ou plus).

En d’autre termes : j’ai galéré pour l’installer, alors autant faire partager mon expérience.

Mais d’abord c’est quoi un « Watchdog » ?

 

NIVEAU_confirmé

Cliquez pour avoir la définition des niveaux.

 

C’est quoi un « Watchdog » ?

Un Watchdog : ou comme beaucoup l’auront compris un « Chien de garde ». Est un mécanisme qui permet de vérifier que votre système n’est pas défaillant. Et réagir (ou pas) s’il y a défaillance. En terme plus simple, pour notre cas, faire redémarrer automatiquement le Raspberry Pi si ce dernier est planté.

Bref lui dire « Tu te plantes, et bien redémarre tout seul !« 

Ce système, qui nous est accessible via les standards Linux va vous être décrit ci-dessous.

Je vois déjà les commentaires du genre. « Mais un Raspberry Pi, ça plante jamais… et un Linux encore moins« . Certes, mais deux raisons à cela : d’une part ce qui peut faire « planter » nos Raspberry Pi, ce sont souvent les programmes que nous avons réalisés (boucle infinie oubliée, les « stack overflow », et j’en passe…). Et d’autre part, si votre Raspberry Pi se situe au fin fond du Morvan à plus d’une heure de route et qu’il ne répond plus. Ou qu’en pleine tempête de neige votre génial portail automatique, construit à base de Raspberry Pi, vous ignore…. Vous serez bien content qu’il se soit débrouillé tout seul pour redémarrer. Et dans ce cas là un bon redémarrage ne fait pas de mal. Je pense aussi aux portiers automatiques (sonnette / interphone / ouverture gâche) de certaines immeubles qui utilisent des Raspberry Pi : Sans cette option les conséquences sont non négligeables.

 Installation du Watchdog

Là ce sont des commandes de base que vous connaissez tous, au moins pour la première :

# Installation du paquet
sudo apt-get install watchdog
# Lancement de l'application au démarrage de l'OS
sudo update-rc.d watchdog enable

Configuration du Watchdog

C’est là que cela devient compliqué. En effet le Watchdog tout seul ne fonctionne pas. Il va falloir le paramétrer.

# Installation du paquet de configuration
sudo apt-get install watchdog chkconfig
sudo chkconfig watchdog on
sudo /etc/init.d/watchdog start

Et modifier les fichiers de configuration :

sudo nano /etc/watchdog.conf

Décommenter les lignes suivantes :

watchdog-device = /dev/watchdog
interval = 4
realtime = yes
priority = 1

CTRL+X pour sortir et sauvegarder avec ‘Y’ (ou ‘O’)

sudo nano /etc/systemd/system.conf

Décommenter les lignes suivantes :

RuntimeWatchdogSec=14

CTRL+X pour sortir et sauvegarder avec ‘Y’ (ou ‘O’)

Configuration du Kernel

Non ce n’est pas un gros mot et comme vous voyez ce n’est pas fini.

Ici on va configurer le Kernel pour faire en quelque sorte une sonde qui va être exposée au Watchdog. Bref donner à manger au toutou.

Création d’un nouveau fichier

sudo nano /etc/modprobe.d/bcm2835_wdt.conf

Qui contient les lignes suivantes :

alias char-major-10-130 bcm2835_wdt
alias char-major-10-131 bcm2835_wdt

CTRL+X pour sortir et sauvegarder avec ‘Y’ (ou ‘O’)

Édition du module avec ajout de lignes :

sudo nano /etc/modules

Ajout de la ligne suivante :

bcm2835_wdt

Et lancement de notre nouvelle sonde :

sudo modprobe bcm2835_wdt
sudo service watchdog restart

Après tout cela vous aurez compris qu’un redémarrage s’impose.

 

Remarque
bcm2835_wdt  fait visiblement référence à un composant du Raspberry Pi 2 et Pi 3. Ce composant semblait être différent sur la version Pi 1 d’où mes problèmes pour trouver des tutos à jour.

Test du Watchdog

A cette étape le watchdog est donc démarré et scrute toute les 14 secondes.
Si la commande /dev/watchdog ne reçoit pas de signal au bout de 14 secondes, le Raspberry Pi redémarre.

Pour tester on va lancer un truc de hackeur pour planter notre Raspberry.

Il s’agit d’un « forkbomb« . Suite de commandes infinies qui se terminent jamais.

 :(){ :|:&amp;amp; };:

Personnellement j’ai lancé cette commande et il ne se passait rien alors j’ai testé, retesté etc.

En fait la commande marchait mais le Raspberry Pi est stable et ne plante pas facilement. Il fallait juste être patient. En effet il faut bien parfois jusqu’à 3 à 4 minutes avant que le « forkbomb » plante réellement le Raspberry Pi.

Ça y est vous avez votre chien de garde à l’affût d’un plantage de votre framboise préférée.

Sources

Datasheet

BCM2835

Processeur ARM

Personnaliser Raspbian Jessie PIXEL : encore 3 trucs

$
0
0

tux_statueLors de la sortie de PIXEL je vous avais proposé 14 trucs pour personnaliser votre système.
Cet article a été beaucoup lu et a généré des commentaires et des questions.
Voici encore quelques trucs qui vous permettront d’adapter votre système au mieux de vos besoins : Utiliser les bureaux virtuels, afficher l’icône de Chromium et modifier la résolution vidéo. Voilà ce que vous trouverez dans cet article.

NIVEAU_debutant

Cliquez pour avoir le détail des niveaux

3 trucs pour personnaliser Raspbian PIXEL

Utiliser plusieurs bureaux virtuels avec Raspbian PIXEL

Michel m’a fait remarquer que les bureaux virtuels qu’il utilisait sous Debian ont disparu de Raspbian. Il aimerait bien les retrouver car il a ses habitudes de travail et voudrait les retrouver sur son Raspberry Pi.

virgo-bureaux-virtuels-windows

Je vous propose de rajouter cette fonctionnalité qui pourra vous intéresser si vous n’avez pas deux écrans -ou plus 🙂 – (pas la place, pas les moyens, pas envie…). Tout le monde n’en a pas forcément l’utilité, mais c’est fortement utilisé pour regrouper les fenêtres par activités, par exemple, un bureau pour loger le navigateur internet et le client messagerie instantanée, un bureau de travail pour Python, Scratch…

Installer le gestionnaire de bureaux virtuels

bureaux_virtuels_01

Faites un clic avec le bouton droit de la souris sur la barre des tâches. Dans le menu qui s’ouvre sélectionnez Ajouter/Enlever des éléments du tableau de bord.

bureaux_virtuels_02La fenêtre Préférences du tableau de bord s’ouvre. Cliquez sur le bouton Ajouter (colonne de droite de la fenêtre). La liste des éléments qu’il est possible d’ajouter s’affiche. Sélectionnez Gestionnaire de bureaux virtuels et cliquez sur le bouton Ajouter en bas de cette fenêtre.

bureaux_virtuels_03Le gestionnaire de bureaux virtuels apparait en haut à droite de l’écran ainsi que dans la liste des applets, en bas cette fois. Je vous conseille d’ajouter au moins un espace pour décaler légèrement l’icône. Cliquez à nouveau sur le bouton Ajouter et sélectionnez Espace (tout en bas de la liste) puis à nouveau le bouton Ajouter en bas de la fenêtre. Ça  ne sert pas à grand chose… mais c’est plus joli 🙂 Vous pouvez aussi déplacer l’icône avec les boutons Monter et Descendre. Veillez à avoir un espace avant et un espace après. Toujours pour l’esthétique.

Vous remarquerez que dans le dessin du bureau virtuel est représentée la fenêtre qui est ouverte sur l’écran, mais en miniature. Cliquez sur le bureau virtuel. Rien ne se passe 🙁
Bin oui, on a mis l’icône en place mais rien pour gérer ces bureaux. Il faut installer obconf pour cela.

obconf = OpenBox Configuration   dixit Ubuntu :

Openbox est un gestionnaire de fenêtres extrêmement rapide, souple et agréable. Cette interface graphique minimale est cohérente à plus d’un titre. Très légère, elle se suffit à elle-même et permet également d’accélérer considérablement la réactivité de Gnome lorsqu’elle remplace Metacity. Elle n’a pas de tableau de bord par défaut, mais il est possible d’accéder aux fenêtres avec le raccourci alt+tab, ou en ajoutant un tableau de bord personnalisé.:-) Openbox est un outil puissant qui n‘a de limite que l‘imagination de l‘utilisateur !

Faites la mise à jour de votre distribution (sudo apt-get update et sudo apt-get upgrade) puis installez obconf :

pi@raspberrypi:~ $ sudo apt-get install obconf
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés&nbsp;:
libglade2-0
Les NOUVEAUX paquets suivants seront installés&nbsp;:
libglade2-0 obconf
0 mis à jour, 2 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 240 ko dans les archives.
Après cette opération, 941 ko d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n]

Repondez vouiii et l’installation démarre. C’est assez rapide.

Une fois l’installation terminée, vous retrouverez obconf dans le menu Préférences. Vous pouvez aussi le lancer à partir d’un terminal en tapant obconf.

bureaux_virtuels_11La fenêtre de configuration d’OpenBox s’ouvre. Vous allez avoir accès à tout un tas de paramètres de votre bureau PIXEL. Je vous laisse les explorer. Ici nous nous occupons des bureaux virtuels 🙂

bureaux_virtuels_04_600px

A gauche de la fenêtre cliquez sur Bureaux pour accéder à la fenêtre de réglage.

bureaux_virtuels_05_600pxOn voit que le Nombre de bureaux est ici fixé à… 1 ! Ceci explique pourquoi on ne peut pas changer de bureau 😉
Changez la valeur et passez là à 2 (vous pouvez en mettre plus si besoin).

bureaux_virtuels_06_600pxVous obtenez 2 bureaux dont les noms sont… (bureau sans nom). Cliquez sur le premier et nommez le. J’ai appelé le mien Internet. Faites de même pour le second. Je l’ai appelé Programmation.

bureau de Raspbian PIXEL avec un navigateur chrome et une fenêtre GpredictSur le bureau de PIXEL j’ai ouvert un navigateur Chromium et une fenêtre Gpredict (en ce moment Soyouz est en train de s’amarrer à l’ISS 🙂 ça me permet de suivre le trajet de l’ISS). Si on regarde en haut à droite de l’écran on voit le premier bureau et les deux fenêtres qui sont ouvertes dessus :

bureaux_virtuels_08Remarquez que les fenêtres respectent les proportions des vraies fenêtres et que Chromium a même droit à une icône. Cliquez sur une des fenêtres miniatures et emmenez la sur le bureau voisin… Sur l’écran du Raspberry Pi la fenêtre disparait et se retrouve sur l’autre bureau. Ce sera pareil sur l’écran quand une fenêtre sort de l’écran, on change automatiquement de bureau… Pour passer d’un bureau à l’autre cliquez sur l’icône correspondante… Tout simplement ! Ramenez la fenêtre que vous aviez déplacée à sa place 🙂

Evitons de nous fatiguer !
fatigueNe le répétez pas, je vous donne un raccourci qui évite de tendre le bras jusqu’à la souris, de déplacer la souris pour amener le curseur en haut à droite de l’écran et enfin de cliquer sur une des deux icônes… Sur le clavier CTRL + ALT + flèche droite ou CTRL + ALT + flèche gauche font la même chose beaucoup plus rapidement et sans faire de gestes inutiles 😀

bureaux_virtuels_09_600pxSur le deuxième bureau Programmation j’ai ouvert Scratch et le simulateur Sense Hat. Regardons comment tout cela apparait dans nos icônes.

bureaux_virtuels_10Ici encore les fenêtres du bureau sont similaires à celles de l’écran réel. Le bureau actif est coloré en bleu, l’inactif est gris. Comme vous le remarquerez, l’utilisation des bureaux virtuels se limite aux fenêtre ouvertes qui peuvent apparaître sur les différents bureaux. En ce qui concerne les icônes posées sur le bureau elles seront les mêmes quel que soit le bureau ouvert.

Afficher l’icône de Chromium dans la barre des tâches de PIXEL

bureaux_virtuels_12Ça ne vous agace pas, vous d’avoir deux icônes différentes pour la même application ?
Moi, si ! Pourquoi diable se sont-ils évertués à enjoliver l’interface graphique, à ajouter une icône de Chromium, pour finalement laisser dans la barre des tâches un machin sensé représenter un globe terrestre et la navigation Web ?

Je vous propose de remédier à cela et d’afficher l’icône de Chromium dans la barre des tâches.

icone_chromium_01

Commencez par faire un clic avec le bouton droit de la souris dans la barre de lancement d’applications (par exemple sur l’icône Internet). Cliquez sur Barre de lancement d’applications settings.

icone_chromium_02

La fenêtre de paramétrage de la barre de lancement d’applications s’ouvre, normalement Web Browser est sélectionné par défaut dans la colonne de gauche (Lanceurs). Si ce n’est pas le cas, faite un clic dessus.

icone_chromium_03

Cliquez sur le bouton Enlever de la colonne centrale et l’icône du Web Browse disparait.

icone_chromium_04

Dans la colonne de droite (Applications Installées), cliquez sur la catégorie Internet pour la dérouler et choisissez Navigateur Web Chromium.

icone_chromium_05

Cliquez sur le bouton Ajouter dans la colonne centrale. Le navigateur Web se retrouve dans la colonne des Lanceurs. Mais il est en bas de la colonne et l’icône ne sera pas à sa place habituelle.

icone_chromium_06

Utilisez le bouton Monter pour amener l’icône du navigateur à sa place habituelle, en haut de la liste.

icone_chromium_07Votre bureau est maintenant orné d’une icône représentant vraiment le navigateur Chromium.

Modifier la résolution de la sortie vidéo de Raspbian PIXEL

Alors là j’avoue, cette astuce a déjà été publiée sur le blog. Il m’a semblé intéressant de l’extraire de l’article dans lequel elle figure pour la présenter dans cette série de trucs à connaître.

Le problème : Mon Raspberry Pi est connecté sur un écran iiyama dont la résolution est 1920×1080. Super car la full HD du Raspberry Pi est bien utilisée. Sur mon PC, celui sur lequel j’écris en ce moment, j’utilise VNC viewer pour me connecter au Raspberry Pi, afficher son écran et réaliser les merveilleuses copies d’écran que vous voyez dans cet article…
Le hic, c’est que mon PC est connecté à un écran HP dont la résolution n’est que de 1680×1050 pixels… Vous devinez la suite : je ne peux jamais avoir la totalité de mon écran de Raspberry Pi affiché sur le PC 🙁
Obligé de jongler avec les ascenseurs, la position de la fenêtre pour trouver la zone qui m’intéresse.

Vous me direz pourquoi ne pas croiser les écrans ? La réponse est : parce que ! Du coup la solution c’est de diminuer un peu la résolution du Raspberry Pi pour faire ce genre de manip afin que l’écran qui s’affiche puisse tenir intégralement sur l’écran du PC.

On va forcer la résolution à une valeur qui nous sied sur le Raspberry Pi. Le Raspberry Pi va afficher un écran aux bonnes dimensions, qui sera envoyé au PC via VNC Viewer.

Ouvrez le fichier /boot/config.txt, repérez et modifiez les lignes suivantes :

# uncomment if hdmi display is not detected and composite is being output
hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
hdmi_group=2
hdmi_mode=28

hdmi_mode=28 correspond à 1200×800 pixels. Si vous voulez une autre résolution RTFM ou utilisez une de celles-ci

hdmi_mode=9 800×600
hdmi_mode=16 1024×768
hdmi_mode=23 1280×768
hdmi_mode=28 1280×800
hdmi_mode=35 1280×1024
hdmi_mode=51 1600×1200
hdmi_mode=69 1920×1200

Alors qu’est-ce que ça donne après un redémarrage ?

1280x800Impeccable maintenant ça tient sur mon écran de PC et je vais économiser des déplacement de fenêtres… et de l’énergie 🙂

 Conclusion

L’avantage avec Linux c’est qu’on peut adapter le système à ses besoins ou à ses goûts. Ces trois « trucs et astuces » pour Raspbian PIXEL vous permettront de mieux profiter de votre Raspberry Pi.

Si vous connaissez d’autre manips pour personnaliser sa distribution, n’hésitez pas à en faire part dans les commentaires ci-dessous.

Installation de Raspbian pour le Raspberry Pi sur carte micro SD avec Etcher

$
0
0

etcher_250pxEtcher (graveur) est un outil récent destiné à la création de cartes SD pour le Raspberry Pi (mais pas que).
Il existe déjà des outils comme Win32DiskImager, réservé aux seuls utilisateurs de Windows. Etcher est disponible aussi pour Mac et Linux.

Cette image indique aux utilisateurs que ce tutoriel est à destination des débutants

Cliquez pour être informé(e) sur les niveaux

Alors pourquoi utiliser Etcher ? Chez resin.io il y a des milliers d’utilisateurs qui mettent en œuvre  un processus de mise en route de système. Jusqu’à récemment, Les étapes qui sont nécessaires pour « graver » une carte SD posaient problème. Il y avait des utilitaires différents pour chaque type de machine Mac/Windows/Ubuntu et plusieurs manuels à maintenir, sources d’erreurs lors des étapes de conception de produits.
Étonnamment rien qui corresponde à cette problématique n’était disponible. Resin.io a donc conçu Etcher, une application pour graver des carte SD, simple pour les utilisateurs finaux, extensible pour les développeurs, et qui fonctionne sur toutes les plateformes.
Une autre innovation est que Etcher ne sélectionne pas de disque dur. Vous ne pourrez donc pas accidentellement détruire les données présentes sur un disque dur, ce qui n’est pas vrai avec les autres solutions disponibles.

Etcher est open source et réalisé avec JS, HTML, node.js et Electron.

Installer Raspbian pour le Raspberry Pi sur carte micro SD avec Etcher en 3 clics

Il faut quand même que je précise que ces trois clics sont ceux que vous ferez dans Etcher… Il faudra quand même quelques clics supplémentaires pour choisir l’image, valider…

Installation d’Etcher

L’installation d’Etcher ne pose normalement pas de problème particulier.

Télécharger Etcher

Rendez vous sur la page d’Etcher un bouton Download est affiché en haut de la page. Ciquez dessus :

Copie d'écran du haut de la page du site Etcher : Un bouton Download sous lequel est proposé un choix de téléchargement pour Mac, Linux en 32 et 64 bits et Windows 32 et 64 bitsJ’ai choisi de télécharger la version Windows 64 bits, c’est celle qu’utilisera un débutant sur le Raspberry Pi, dont la machine de bureau est -encore- sous Windows 😉 Je clique sur Etcher for Windows x64 (64-bit). Vous adapterez à votre cas…

Fenêtre de télachargement d'Etcher. Le fichier se nomme Etcher-win32-x64.exe. Sa taille est de 81,3 Mo et il y a également le lien de téléchargement. Un bouton Enregistrer le fichier permet de démarrer le téléchargementLa classique fenêtre de téléchargement s’ouvre, cliquez sur le bouton Enregistrer le fichier, choisissez le dossier dans lequel vous souhaitez copier le fichier.

Installer Etcher

Quand le téléchargement est terminé, double cliquez sur le fichier téléchargé.

Page d'accueil de l'installeur d'Etcher. Il ya un bouton Install qui permet de démarrer l'installation

Cliquez sur le bouton Install pour démarrer l’installation

Cette copie d'écran montre ce qui se passe pendant l'installation d'Etcher.

L’installation commence, elle ne dure que quelques secondes. Ici j’ai ouvert la fenêtre Détails.

Sur cette copie d'écran on voit que le logiciel Etcher a bien été installé. La case à Start Etcher est cochée par défaut. Il y a un bouton FINISH qui permet de sortir du logiciel d'installation et de lancer Etcher si la case est cochée

L’installation est finie. Le bouton Start Etcher est coché par défaut. Décochez le si vous ne voulez pas démarrer Etcher tout de suite, sinon cliquez sur le bouton Finish.

L’icône Etcher sur le bureau

Icône d'Etcher telle qu'elle apparait sur le bureau. Elle est ornée du "bouclier" indiquant que l'application est exécutée en tant qu'administrateurSur le bureau vous trouverez l’icône d’Etcher, un disque vinyle…

Allez dans les propriétés et indiquez que le programme doit être exécuté en administrateur. Pour accéder aux cartes SD c’est mieux.

Installer Raspbian sur la carte SD

Sélectionner l’image

Première étape, la sélection de l’image à graver sur la carte SD

Premier écran d'Etcher. Sur la partie gauche la première étape est en surbrillance. Il y a le dessin d'un disque sous lequel on lit dans un bouton : Select ImageOuvrez Etcher en cliquant sur l’icône présente sur le bureau. La fenêtre ci dessus s’ouvre. Le bouton le plus à droite est en surbrillance bleue : Select Image. Cliquez dessus.

Copie d'écran montrant une liste affichée dans une fenêtre Windows. C'est l'image 2016-09-23-raspbian-jessie.img qui a été choisie pour l'installation sur la carte micro SDVous accédez à la fenêtre habituelle permettant de sélectionner un fichier. Choisissez l’image à transférer sur la micro SD. Validez.

Copie de la fenêtre d'Etcher. La phase Select Drive (étape 2) a été sautée dans la mesure où il n'y a qu'une carte SD connectée au PC. C'est l'étape 3 qui est en surbrillance : Flash Image avec un bouton Bleu à cliquer pour démarrer l'opération : Flash!Dans mon cas une seule carte micro SD a été détectéePhoto d'un mini adaptateur micro SD vers USB. Une carte de 16 Go dépasse du lecteur de carte micro SD. J’utilise le lecteur de carte micro SD ci contre, présent dans le blister de certaines cartes EVO lors de l’achat. Sur la photo c’est une carte 16 Go qui est en attente, alors que vous voyez dans Etcher qu’il a détecté une carte J: de 32 Go.
Pusqie la carte proposée par Etcher J: 32 Go est bien celle sur laquelle je veux transférer l’image de Raspbian est la bonne, je peux cliquer sans arrière pensée sur le bouton Flash!

Copie d'écran de la Fenêtre d'Etcher. Le bouton Flash! de l'image précédente a été remplacé par l'indication Starting...Le bouton Flash! indique brièvement Starting…

Copie d'écran de la Fenêtre d'Etcher. Le bouton Flash! de l'image précédente a été remplacé par une barre de défilement qui indique 14% sur cette image.Et c’est parti… Le bouton Flash a été remplacé par une barre de défilement qui indique ici 14% du transfert effectué. Sous la barre apparaissent les informations du temps restant et de la quantité de données transférées.

Copie d'écran de la Fenêtre d'Etcher. Le transfert de l'image sur la carte SD continue. La barre de défilement indique 80% sur cette image.Le transfert se déroule normalement… On en est à 80%

Copie d'écran de la fenêtre d'Etcher. Le transfert des données est terminé. Une nouvelle phase commence. Sur cette image la barre de défilement indique la vérification du fichier qui est réalisée à 6%Lorsque le transfert est terminé commence la phase de vérification. Etcher va comparer le contenu de la carte SD à l’image présente sur votre disque dur pour confirmer que l’opération de « gravure » de la carte micro SD s’est bien déroulée. Vous pouvez dévalider cette vérification dans les options (voir plus bas dans cet article). La validation allonge le temps de l’opération mais vous garantit que la carte micro SD est exactement la copie de l’image  qui est sur votre disque dur.

Copie d'écran de la Fenêtre d'Etcher. La barre de défilement est remplacée sur cette image par le texte Unmounting...A l’issue de la vérification (qui s’est bien terminée ici puisqu’aucune erreur n’a été signalée 🙂 ) Etcher va « démonter » proprement la carte micro SD du système. C’est l’équivalent de l’opération d’éjection d’une clé USB par exemple. Le système n’écrit pas en temps réel les données sur le périphérique externe. Certaines données peuvent encore être présentes dans le système (en mémoire tampon) et si on retire brutalement la clé (ou la carte micro SD dans notre cas) elle peut être devenue inutilisable si toutes les opérations d’écriture ne sont pas terminées.

Copie d'écran de la Fenêtre d'Etcher. La fenêtre indique FLASH COMPLETE ! et propose de re-flasher une carte SD en choisissant de garder la même image ou de changer d'image.C’est terminé. Vous pouvez créer une autre carte micro SD en cliquant sur Use Same Image ou changer d’image en cliquant sur Use new image.

Si vous n’avez pas d’autre carte à graver, vous pouvez sortir d’Etcher.

Options d’Etcher

Copie d'écran de la fenêtre d'Etcher. C'est la fenêtre des options qui a été ouverte. Les cases à cocher sont cochées par défaut : Rapporter les erreurs, Démonter automatiquement si la gravure est réussie, Valider l'écriture en cas de succès. La case Unsafe mode est décochée et marquée comme DangereusePour ouvrir cette fenêtre d’options, il faudra cliquer sur la roue dentée présente en haut à droite de la fenêtre d’Etcher. Les options sont cochées par défaut : Rapporter les erreurs, Démonter automatiquement en cas de succès et valider l’écriture en cas de succès.

Il est déconseillé (et dangereux) de cocher Unsafe mode car rien ne garantira que l’opération de gravure de la carte micro SD s’est bien déroulée.

Absence de carte micro SD

Copie d'écran de la Fenêtre d'Etcher. Ici Etcher n'a pas détecté de carte SD. Le bouton central a été remplacé par l'indication "Connect a drive" invitant l'utilisateur à insérer une carte micro SD dans le lecteurEn cas d’absence de carte SD (ou si Etcher ne l’a pas détectée) le bouton central indique qu’il faut connecter un lecteur : Connect a drive.

Conclusion

Avec Etcher vous ne risquez pas d’abîmer un de vos disques durs. Vous disposez d’un utilistaire unique pour vos différentes machines que ce soit un Mac ou un PC sous Windows ou Linux.

Un lien vers le blog creativpi qui a présenté Etcher le même jour 🙂

Sources

Microbit -> Contre la montre

$
0
0

micro-bit-featuredVous avez déjà pu découvrir le micro:bit, puis appris à l’utiliser et programmé un jeu aléatoire.

Cette fois nous allons apprendre à créer une minuterie, pour pouvoir défier nos amis grâce à notre micro:bit ou tout simplement réaliser une minuterie normale.

Cahier des charges

  • L’appui simultané sur les 2 boutons remet le minuterie à 0
  • L’appui sur le bouton A Démarre la minuterie
  • Les secondes défilent sur l’afficheur à LED
  • L’appui sur le bouton B Arrête la minuterie

Etape 1: Configuration de votre minuterie

La minuterie est remise à 0 lorsque les boutons A et B sont pressés ensemble.

1

  • Cliquez sur « Ajouter un événement » et créer un nouvel événement onPressAandB.

2

  • Cliquez sur l’onglet «Bibliothèque», puis «Globals», et créer une nouvelle variable appelée time .

3

  • Vous souhaitez que lorsque les boutons A et B sont pressés ensemble, la variable time prenne la valeur 0. Pour ce faire, faites glisser votre variable time dans votre événement  onPressAandB.

4

  • Cliquez sur update puis # number  et entrez 0 .

5

Voici à quoi votre code devrait ressembler :

6

  • Vous devez également afficher le temps (variable time) . Pour cela, faites glisser un bloc say, cliquez sur la flèche value et choisissez votre variable time.

7

  • Cliquez sur «run» pour tester votre code. Appuyez simultanément sur les boutons A et B (en dessous du micro: bit) pour mettre la minuterie à 0.

8

Étape 2: Démarrage et arrêt de la minuterie

Nous allons utiliser le bouton A pour démarrer la minuterie, et le bouton B pour l’arrêter.

  • Votre minuterie doit démarrer lorsque le bouton A est enfoncé. Ajouter un nouveau onPressA à votre script.

9

  • La minuterie devra compter tant que le bouton B n’a pas été enfoncé. Pour ce faire, faites d’abord glisser un bloc while vers votre nouvel événement onPressA.

10

  • Cliquez sur la flèche, et choisissez ! value.

11

  • Vous pouvez ensuite faire glisser un buttonBPressed dans la value vide située dans votre while.

12

Tout code à l’intérieur de ce while sera exécuté en boucle, tant que le bouton B n’aura été enfoncé.

  • Ajoutez un wait de 1000ms, cela permet de compter le temps en secondes.

13

  • Pour augmenter votre time glissez le dans la variable, cliquez sur la flèche puis sur left + right .

14

  • Cliquez maintenant sur left et choisissez votre time.

15

  • Cliquez sur right et entrer 1. Cela ajoutera 1 à la valeur actuelle du time .

16

  • Voici à quoi votre code devrait ressembler :

17

  • Cliquez sur «run» pour tester votre code.
  • Appuyez sur les boutons A et B simultanément pour remettre votre minuterie à 0
  • Appuyez sur le bouton A pour démarrer votre minuterie
  • Appuyez et maintenez le bouton B pour arrêter votre minuterie.

18

Défiez vos amis !

Utilisez la minuterie pour défier vos amis. Par exemple, vous pouvez voir combien de temps il leur faut pour dire l’alphabet à l’envers, ou nommer 10 capitales.

Vidéo d’aide

Article inspiré de: https://www.codeclubprojects.org/en-GB/microbit/against-the-clock/

Une mise à jour de sécurité pour Raspbian

$
0
0

maj_jessie_01Les plus observateurs d’entre vous ont sans doute remarqué que l’image de Raspbian-PIXEL disponible dans l’espace Téléchargements a été mise à jour le 25 novembre 2016.
Lorsqu’une version majeure de l’OS est diffusée, on s’aperçoit habituellement dès que la communauté les utilise qu’il y a quelques petits bugs et problèmes.

Mise à jour de Raspbian Jessie PIXEL

===== traduction d’un article paru sur le blog de la Fondation =====

La Fondation rassemble les correctifs et produit une version 1.1 quelques semaines plus tard. Il n’y a pas d’annonce sur ces correctifs, car il n’y a pas réellement de nouvelle fonctionnalité. Ce sont juste des correctifs apportés pour que les choses fonctionnent comme prévu à l’origine.

Cependant, dans le cas présent, il y a eu quelques changements importants. Ils ne seront pas remarqués par de nombreux utilisateurs, mais pour ceux qui les remarqueront et qui seront impactés voilà quelques explications…

Pourquoi ces modifications ?

Si vous suivez les actualités concernant la technologie, vous avez vu au cours des derniers mois des histoires au sujet de botnets fonctionnant sur des dispositif de l’Internet des objets (IoT). Les pirates utilisent les mots de passe par défaut sur les webcams et autres systèmes pour créer un réseau capable d’envoyer suffisamment de requêtes à un site Web pour le bloquer (attaque DDOS).

maj_jessie_02

La Fondation a toujours essayé de garder le Raspberry Pi aussi ouvert que possible. Il y a un compte d’utilisateur par défaut (pi) avec un mot de passe par défaut (raspberry), et ce compte peut utiliser sudo pour contrôler ou modifier ce qu’il veut sans mot de passe. Ceci facilite la prise en main par les débutants. Il y a également un port SSH ouvert par défaut, afin que les personnes qui utilisent un Raspberry Pi à distance puissent simplement installer la dernière image Raspbian, brancher et utiliser leur Raspberry Pi sans configurer quoi que ce soit.

Malheureusement, les pirates utilisent de plus en plus les accès comme ceux-ci dans pour prendre discrètement le contrôle des appareils. En général, cela n’a pas posé trop de problème avec les Raspberry Pi. Si un Raspberry Pi est sur un réseau privé chez vous, il est peu probable qu’un attaquant puisse l’atteindre. Si vous mettiez un Raspberry Pi sur un réseau public, il fallait être conscient des risques que vous courriez et penser à changer le mot de passe par défaut ou à désactiver SSH.

Mais la menace de piratage est maintenant à un point tel qu’il faut changer d’approche. Même si la Fondation déteste imposer des restrictions aux utilisateurs, son approche relativement détendue de la sécurité pourrait causer des problèmes importants. Avec cette version, ils ont apporté quelques petits changements pour améliorer la sécurité, ce qui devrait suffire à rendre extrêmement difficile la prise de main sur un Raspberry Pi, sans rendre la vie trop difficile aux  utilisateurs.

Qu’est ce qui a changé?

D’abord, SSH sera désactivé par défaut sur les images de Raspbian. SSH (Secure SHell) est un protocole réseau qui permet de se connecter à distance à un ordinateur Linux et de le contrôler à partir d’une interface ligne de commande distante. Comme mentionné plus haut, de nombreux propriétaires de Raspberry Pi l’utilisent pour installer un Raspberry Pi « headless » (sans écran ni clavier) et le contrôlent à partir d’un autre PC.

Auparavant, SSH était activé par défaut.  Les utilisateurs de Raspberry Pi « headless » pouvaient ainsi facilement mettre à jour leur carte SD. L’activation ou la désactivation de SSH nécessite toujours l’utilisation de raspi-config ou de l’application Raspberry Pi Configuration, mais pour y accéder, il faut un écran et un clavier connectés au Pi lui-même, ce qui n’est pas le cas dans les applications « headless ». Le système fournit donc un mécanisme simple permettant d’activer SSH avant le démarrage d’une image.

La partition de démarrage d’un Raspberry Pi est accessible depuis n’importe quelle machine possédant un lecteur de carte SD, sous Windows, Mac ou Linux. Si vous voulez activer SSH, il vous suffit de placer un fichier appelé ssh dans le répertoire /boot/. Le contenu du fichier n’a pas d’importance : il peut contenir n’importe quel texte à votre choix, ou même rien du tout. Lorsque le Raspberry Pi démarre, il cherche ce fichier. S’il le trouve, il active SSH puis supprime le fichier. SSH peut encore être activé ou désactivé à partir de l’application Raspberry Pi Configuration ou raspi-config; C’est simplement un moyen supplémentaire de l’activer si vous ne pouvez pas facilement exécuter l’une de ces applications.

Fenêtre de configuration du Raspberry Pi montrant SSH activé

Cliquez pour agrandir

Le risque avec un port SSH ouvert est que quelqu’un puisse y accéder et se connecter; Pour ce faire, il faut disposer d’un compte d’utilisateur et d’un mot de passe. D’origine, toutes les installations de Raspbian ont le compte d’utilisateur par défaut ‘pi‘ avec le mot de passe ‘raspberry‘. Si vous activez SSH, il faut vraiment changer le mot de passe de l’utilisateur ‘pi‘ pour empêcher qu’un pirate utilise les valeurs par défaut. Pour encourager cela, vous aurez des avertissements lors du démarrage. Si SSH est activé et que le mot de passe de l’utilisateur ‘pi‘ est encore ‘raspberry‘, un message d’avertissement s’affiche chaque fois que vous démarrez le Raspberry Pi, que vous soyez en mode graphique ou en ligne de commande. Il n’y a pas d’obligation de modifier le mot de passe, mais vous serez averti chaque fois que vous démarrez si votre Raspberry Pi est potentiellement à risque.

Message d'avertissement de Raspbian indiquant que SSH est activé et que le mot de passe n'a pas été changé

Cliquez pour agrandir

Traduction : SSH est activé et le mot de passe par défaut de l’utilisateur ‘pi’ n’a pas été modifié.
C’est un risque pour la sécurité – Connectez vous comme utilisateur ‘pi’ et exécutez Raspberry Pi Configuration pour mettre un nouveau mot de passe.

La Fondation espère que ces changements (relativement mineurs) ne causeront pas trop d’inconvénients, mais ils rendront plus difficile la tâche des pirates voulant attaquer le Raspberry Pi.

Y a t-il quelque chose que je dois faire pour protéger mon Raspberry  Pi ?

A ce stade il ne faut pas paniquer ! Il n’y a pas d’information disant que des Raspberry Pi ont été utilisés dans les botnets ou « détournés » en grand nombre. Votre propre Raspberry Pi n’est certainement pas piraté actuellement.

Cependant c’est une bonne pratique de se protéger pour éviter des problèmes à venir. La Fondation suggère donc d’utiliser l’application Raspberry Pi Configuration ou raspi-config pour désactiver SSH si vous ne l’utilisez pas et changer le mot de passe pour l’utilisateur ‘pi‘ si c’est encore ‘raspberry‘.

Pour modifier le mot de passe, vous pouvez soit cliquer sur le bouton Modifier le mot de passe dans la configuration graphique du Raspberry Pi, soit taper passwd sur la ligne de commande, puis suivre les instructions.

Fenêtre de configuration du mot de passe

Cliquer pour agrandir

Cette question a provoqué beaucoup de discussions à la Pi Towers. La Fondation avait de bonnes raison d’adopter une approche « détendue » et elle est plutôt réticente à la changer. Cependant, ils pensent que ces changements sont nécessaires pour protéger les utilisateurs des menaces potentielles actuelles et à venir, espèrent que vous pouvez comprendre ce raisonnement.

Comment puis-je obtenir les mises à jour?

La dernière version de Raspbian avec l’image de PIXEL est disponible sur la page de téléchargements du site Web de la fondation. Notez que l’image non compressée fait plus de 4Go, et certains unzippers un peu anciens ne parviennent pas à la décompresser correctement. Si vous avez des problèmes, utilisez 7-Zip sur Windows et The Unarchiver sur Mac. Ce sont toutes les deux des applications gratuites qui ont été testées et décompressent le fichier correctement.

Pour mettre à jour votre image de Jessie existante avec toutes les corrections de bugs et ces nouvelles modifications de sécurité, tapez ce qui suit dans un terminal ou en ligne de commande :

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install -y pprompt

Puis redémarrez le Raspberry Pi

Sources

Raspbian

A security update for Raspbian PIXEL

Viewing all 170 articles
Browse latest View live




Latest Images