Articles associés au tag ‘raspberry’

24 Oct
2016

Raspberry Pi – Horloge matériel et serveur NTP

Bonjour à tous,

Pour un besoin très particulier (donner l’heure à des dongles OTT dans un réseau multicast sans accès à un quelconque autre réseau), j’ai eut besoin d’un serveur NTP dans mon réseau interne.

2016-10-24-15-27-06Je me suis naturellement tourné vers un Raspberry, malheureusement j’avais un peu oublié le fait que le raspberry était dépourvu de hardware clock, mais pas de soucis, j’en avais un ou deux en rab pour mes projets Arduino.

J’avais donc en stock un DS3231 mais ce tuto est le meme pour le module DS1307 (suffit juste de changer le nom aux bons endroits).

Si vous voulez directement commander le meme, voici ou vous pourrez le trouver :

Aliexpress pour 60 centimes environs (Si vous n’etes pas pressé, ça prends entre deux semaines et deux mois)

Amazon pour un peu moins de 6 euros (Mais avec la livraison en un jour ouvré)

 

-Première étape, installation et paramétrage du module RTC.

 

La première étape consiste donc à connecter le module RTC à notre Raspberry grace aux GPIO.

Nous allons donc connecter GND et 5v pour l’alimentation du module et les pates SDA et SCL pour la communication i2c entre le RPI et le module RTC

Voici ce que donne le schémas de câblage à partir d’un Raspberry Rev 2 (Pour le plus vieux, les pins SDA et SCL diffèrent, reportez vous au schémas des pins GPIO de votre modèle de RPI pour être sur du câblage):

RPI Pin RTC Pin
Pin 4 (5V) VCC
Pin 6 (GND) GND
Pin 3 (SDA) SDA
Pin 5 (SCL) SCL

Et voici le schémas des GPIO du Raspberry B :

gpio-raspberry-b

 

Une fois le module correctement cablé, nous allons passer au paramétrage du système  :

Dans Raspbian, l’i2c est désactivé par défaut, nous allons donc l’activer via un terminal :

sudo raspi-config

Via le menu qui s’affiche, sélectionnez Advanced Options puis I2C.

Choisissez Yes, votre interface i2c est maintenant activé.

Nous allons vérifier maintenant que l’ensemble communique bien, pour ce faire, il va falloir installer les packets suivants :

sudo apt-get install python-smbus
sudo apt-get install i2c-tools

Grace à ces outils, nous allons lancer un scan i2c nous permettant de voir que notre module est bien reconnu :

sudo i2cdetect -y 1

Vous devriez voir ceci :

Si vous avez un vieux Raspberry, faites à la place :

sudo i2cdetect -y 0

 

Notre module RTC est bien présent à l’adresse 68.

 

Si cela ne fonctionne pas, vous pouvez essayer de charger les modules i2c-dev et i2c-bcm2708 à la main :

sudo modprobe i2c-dev
sudo modprobe i2c-bcm2708

Si cela fonctionne, vous pourrez alors ajouter ces modules dans /etc/modules en exécutant la commande suivante :

sudo nano /etc/modules

Et ajoutez à la fin du fichier les deux lignes suivantes :

i2c-dev
i2c-bcm2708

Au prochain redémarrage, les modules seront automatiquement chargés, et il ne sera pas nécessaire de faire un modprobe.

 

Nous avons maintenant une Horloge matériel correctement relié à notre Raspberry et bien reconnu.

Nous allons maintenant la déclarer à l’OS pour pouvoir ensuite l’utiliser :

echo ds3231 0x68 | sudo tee /sys/class/i2c-adapter/i2c-1/new_device

Comme je l’ai précisé plus haut, si vous avez un module DS1307, vous devrez taper ds1307 à la place de ds3231.

Nous pouvons maintenant afficher l’heure enrengistré dans le module RTC :

sudo hwclock

Si c’est la première fois que vous utilisez le module, vous devriez avoir une date au 1er janvier 2000.

Nous allons maintenant définir la date et l’heure au module RTC :

 

-Définir la date et l’heure du système depuis internet et l’enregistrer dans le module RTC:

Paramétrons les bons fuseaux horaires de l’OS soit par le menu raspi-config soit par :

sudo dpkg-reconfigure tzdata

Choisissez bien le bon continent et la bonne zone.

Vous pouvez maintenant vérifier la date et l’heure du système en tapant dans un terminal :

date

Si vous etes à la bonne date/heure, nous allons maintenant l’écrire dans le module RTC :

sudo hwclock -w

 

 

-Définir la date et l’heure du système manuellement et l’enregistrer dans le module RTC:

Si votre Raspberry pi n’a pas accès à internet pour se synchroniser à une horloge précise, vous pouvez toujours utiliser la commande suivante pour définir une date arbitraire (ici le 24 Octobre 2016, à 16h15:00s) :

sudo date -s "Sep 24 2016 16:15:00"

Une fois l’horloge système réglé manuellement, nous allons l’écrire dans le module RTC (l’horloge matériel) :

sudo hwclock -w

 

-Configuration du système pour utiliser automatiquement le module RTC

Nous avons donc pu définir la date et l’heure de l’horloge matériel, voyons maintenant comment configurer le RPI pour qu’il utilise ce module à chaque démarrage:

Editez le fichier /etc/rc.local via la commande :

sudo nano /etc/rc.local

Et ajoutez les deux lignes suivantes avant la ligne exit 0  :

echo ds3231 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
sleep 2
hwclock -s
/etc/init.d/ntp start

Nous pouvons maintenant désactiver le service fake-hwclock qui tente de reproduire le fonctionnement d’une horloge temps réel quand on en dispose pas:

sudo update-rc.d fake-hwclock disable

Nous pouvons également désactiver le service NTP qui n’es pas nécessaire :

sudo update-rc.d ntp disable

 

 

Si par la suite on souhaite synchroniser la date et l’heure du système avec celle de serveurs de temp, on pourra utiliser la commande suivante :

sudo ntpd -qg

Sans oublier d’écrire ensuite l’heure dans le module RTC :

sudo hwclock -w

 

Nous avons maintenant un Raspberry Pi avec une Horloge matériel, si la pile bouton que vous avez inséré dans votre module RTC fonctionne, vous pouvez débrancher et rebrancher votre Raspberry, meme sans connexion internet il devrait rester à l’heure !!

 

 

-Seconde étape, installation et paramétrage du serveur NTP.

Commençons par installer les paquets nécessaire :

sudo apt-get install ntp ntpdate

On édite ensuite le fichier /etc/ntp.conf:

sudo nano /etc/ntp.conf

Ajoutez au serveur NTP l’accès a l’horloge RTC:

server  127.127.1.0 # local clock
fudge   127.127.1.0 stratum 10

Commentez la ligne :

restrict 127.0.0.1

Et ajoutez pour accepter toutes les requêtes NTP : (Si vous voulez vous limiter au réseau ex : 192.168.1.0/24 : restrict 192.168.1.0 mask 255.255.255.0)

restrict 0.0.0.0 mask 0.0.0.0

OPTIONNEL : Si vous voulez diffuser l’heure sur votre adresse réseau de broadcast :

broadcast 192.168.1.255

Vous pouvez maintenant redémarrer votre serveur NTP :

sudo /etc/init.d/ntp restart

 

Bon courage pour la suite …

11 Mar
2016

Raspberry Pi 2 ou 3 et Raspbian Jessie – VLC 2.2 et accélération matériel (hardware acceleration)

UPDATE : Raspberry Pi 2 ou 3 et Raspbian Pixel – VLC 2.4 et accélération matériel (hardware acceleration)

Aujourd’hui je vais enfin publier une mise à jour de l’article : Raspberry Pi 2 – VLC et accélération matériel (hardware acceleration)

RPI3

En effet, ce tuto à été fait à l’époque sur une Raspbian Wheezy avec un Raspberry PI 2.

Depuis la sortie du Raspberry Pi 3 et de Raspbian Jessie, je me devais de faire une ise à jour de ce tuto :

Donc allez chercher la version de Raspbian suivante : 2016-02-26-raspbian-jessie.img

Installez la sur votre carte SD (il y a assez de tuto sur le net pour ça)

Démarrez votre Raspberry, et un écran de setup devrait apparaitre.

Paramétrer votre interfaces réseau, password… blabla …

Activer le … (Je m’ennuis)

Et connectez vous en SSH à votre Raspberry (Là le travail commence vraiment)

faites :

sudo apt-get update

Pour mettre à jour vos dépots, nous allons ensuite installer tous les packet nécessaire à la compilation de VLC :

sudo apt-get install vlc browser-plugin-vlc git libtool build-essential pkg-config autoconf liba52-0.7.4-dev libdvdread-dev libkate-dev libass-dev libbluray-dev lua5.2 libcddb2-dev libdca-dev libfaad-dev libflac-dev libmad0-dev libmodplug-dev libmpcdec-dev libmpeg2-4-dev libogg-dev libopencv-dev libpostproc-dev libshout3-dev libspeex-dev libspeexdsp-dev libssh2-1-dev liblua5.1-0-dev libopus-dev libschroedinger-dev libsmbclient-dev libtwolame-dev libx264-dev libxcb-composite0-dev libxcb-randr0-dev libxcb-xv0-dev libzvbi-dev libxcb-keysyms1-dev libsdl-image1.2-dev librsvg2-dev libsamplerate0-dev libudev-dev libmtp-dev libupnp6-dev libnotify-dev libdvbpsi-dev libgme-dev libebml-dev libgnomevfs2-dev libsidplay2-dev libva-dev libjack-jackd2-dev libchromaprint-dev libxpm-dev libncurses5-dev libsidplay1-dev libtar-dev libqt4-dev libncursesw5-dev libprotoc9 protobuf-compiler

Nous allons ensuite télécharger les sources de VLC via git :

git clone git://git.videolan.org/vlc.git

Pour enfin entrer dans le vif du sujet, la préparation et la compilation de VLC :

cd vlc
export ACLOCAL_ARGS="-I /usr/share/aclocal"
./bootstrap
./configure --prefix=/usr --enable-rpi-omxil --disable-ogg --disable-mux_ogg
make
sudo make install

Une fois installé, lancez vlc en cliquant sur « Menu » puis le sous-menu « Son et vidéo »

Dans VLC, cliquez ensuite sur « Outils » puis « Préférences »

Sur le menu du haut, cliquez sur « Audio« , puis dans « Module de sortie« , selectionnez « Sortie audio ALSA« .

Dans « Périphérique« , selectionnez « bcm2835 ALSA, bcm2835 ALSA Default Audio Device » voir screenshot :

Sur le menu du haut, cliquez ensuite sur « Vidéo« , puis dans « Sortie » sélectionnez « Sortie vidéo « OpenMAX IL » » voir screenshot :

Retournez dans le menu « Audio« , puis en bas à gauche de la fenêtre, cliquez sur « Tous » (Permet d’afficher plus de paramètres)

Dans l’onglet « Audio« , sur le champ « Ré-échantillonnage audio« , selectionnez « Désactiver » voir screenshot :

 

Vous pouvez maintenant profiter de votre player préféré !

Si vous avez des questions, n’hésitez pas !

 

9 Mar
2016

Raspberry PI – Raspbian et reverse proxy Nginx

Bonjour,

Si comme moi, vous commencez à avoir pas mal de services dispatché sur quelques serveurs et que vous en avez marre de router des ports vers ces différents services, voici la solution : le reverse proxy.

Je vais donc vous présenter comment installer et configurer Nginx en tant que reverse proxy.

Ce tuto est orienté Raspberry et Raspbian mais il fonctionnera également pour toutes les distributions à base de Debian (Ubuntu et consorts). Pour les autres distributions, vous n’aurez pas de mal à trouver comment installer Nginx (Par ex yum install nginx pour tous les système à base de RedHat/CentOs …)

Sans compter de l’avantage indéniable de ne plus router pleins de ports « non standard » pour accéder à tous vos services, vous augmenterez la sécurité :

-Non seulement vos différents services ne seront plus en frontaux sur le web

-Mais en plus si l’un de vos services ne supporte pas le SSL, votre reverse proxy lui supporte très bien le SSL et peut meme rediriger automatiquement toutes les requêtes http en https.

Le tunnel ssl ne sera pas du client vers le service mais du client vers le reverse proxy, la connexion entre le reverse proxy et le service qui ne gère pas le ssl sera en http.

Nous avons donc deux types de liaisons :

|client|<==HTTPS==>|REVERSE_PROXY|<==HTTPS==>|serveur|
|client|<==HTTPS==>|REVERSE_PROXY|<==HTTP==>|serveur|

Voici un shémas représentant un client voulant accéder au service01http.

Il ouvre donc son navigateur et tape : http://service01http.mondomaine.com

Mais une redirection s’effectue par le reverse proxy et dans son navigateur apparait l’adresse : https://service01http.mondomaine.com

Shemas Reverse Proxy NGINX

Passons maintenant au vif du sujet.

 

Installation de Nginx :

Ouvrez

apt-get install nginx

Génération d’un certificat SSL autosigné (ceci va permettre de ne pas avoir de connexion en clair,cela évite de pouvoir récupérer les identifiants/password en clair sur votre réseau) :

sudo openssl genrsa -out /etc/nginx/nginx.key 2048
sudo openssl req -new -key nginx.key -out /etc/nginx/nginx.csr
sudo openssl x509 -req -days 3650 -in /etc/nginx/nginx.csr -signkey /etc/nginx/nginx.key -out /etc/nginx/nginx.crt

 

Les hôtes virtuels :

Imaginons que nous avons 4 services web sur 3 serveurs :

-Serveur_01 : Service_01_HTTP

-Serveur_02 : Service_02_HTTPS

-Serveur_03 : Service_03_HTTP + Service_04_HTTPS

Nous allons donc créer 4 entrées DNS sur notre nom de domaine :

service01http.mondomaine.com

service02https.mondomaine.com

service03http.mondomaine.com

service04https.mondomaine.com

Imaginons maintenant que pour le service02https nous voulons y accéder par deux adresses différentes :

service02https.mondomaine.com
service02httpsbis.mondomaine.com

Le but est donc d’accéder à ces 4 services en HTTPS (peu importe que le service supporte ou non le SSL)

 

Configuration des hosts :

Nous allons donc commencer par configurer Nginx :

sudo nano /etc/nginx/sites-available/reverse

Collez ensuite ceci :

# Certificats SSL
ssl_certificate /etc/nginx/nginx.crt;
ssl_certificate_key /etc/nginx/nginx.key;

server {
        # Redirection des requetes en HTTP vers HTTPS
        # Port en entree
        listen 80;
        # Redirection vers
        return 301 https://$host$request_uri;
}

server {
        # service01http
        listen 443;
        # J'active SSL
        ssl on;

        server_name service01http.mondomaine.com; # entree DNS
        location / { # pour le dossier racine (/), on active le mode proxy vers l'adresse spécifiée, sur le port spécifié
                proxy_pass http://192.168.1.2:80/;
        }
}

server {
        # service02https et service02httpsbis
        listen 443;
        ssl on;

        # On peut spécifier 2 noms de domaine différents qui auront le même comportement
        server_name service02https.mondomaine.com;
        server_name service02httpsbis.mondomaine.com;
        location / {
                proxy_pass https://192.168.1.3:443/;
        }
}

server {
        # service03http
        listen 443;
        # J'active SSL
        ssl on;

        server_name service03http.mondomaine.com; # entree DNS
        location / { # pour le dossier racine (/), on active le mode proxy vers l'adresse spécifiée, sur le port spécifié
                proxy_pass http://192.168.1.4:80/;
        }
}

server {
        # service04https
        listen 443;
        # J'active SSL
        ssl on;

        server_name service04https.mondomaine.com; # entree DNS
        location / { # pour le dossier racine (/), on active le mode proxy vers l'adresse spécifiée, sur le port spécifié
                proxy_pass https://192.168.1.4:443/;
        }
}

 

Maintenant un petit restart et votre reverse proxy est maintenant en ligne !

sudo /etc/init.d/nginx restart

 

Petit ajout, si Nginx n’arrive pas a redémarrer, c’est peut être à cause de la longueur de votre entrée DNS (server_name)

Pour y remédier faites :

sudo nano /etc/nginx/nginx.conf

Puis cherchez la ligne :

         #server_names_hash_bucket_size 64;

Décommentez là en enlevant le # :

         server_names_hash_bucket_size 64;

Et vous pouvez maintenant redémarrer Nginx :

sudo /etc/init.d/nginx restart

 

 

 

Si vous avez des soucis ou des questions, n’hésitez pas les commentaires sont fait pour ça :)

 

4 Mar
2016

Raspberry Pi – Raspbian, comment faire une rotation de votre sortie vidéo

Bonjour à tous,

Dans la suite de mon tuto permettant de lancer un navigateur en mode plein écran, je vais vous montrer comment effectuer une rotation de votre écran, dans mon cas, mon écran était positionné à 270° par rapport à la position absolu.

Raspberry rotation ecran

Pour ce faire, nous allons donc éditer le fichier :

sudo nano /boot/config.txt

Puis à la fin du fichier, ajoutez la ligne :

display_rotate=3

Si vous avez positionner votre écran autrement :

display_rotate=0        #Normal
display_rotate=1        #90 degres
display_rotate=2        #180 degres
display_rotate=3        #270 degres

Si vous voulez faire un flip horizontal ou vertical (effect miroir) :

display_rotate=0x10000  horizontal flip
display_rotate=0x20000  vertical flip

 

Bon courage à vous

 

 

4 Mar
2016

Raspberry Pi – Raspbian et midori ou firefox – ouverture automatique d’un navigateur en mode plein écran

Bonjour à tous,

Aujourd’hui je vais vous présenter une façon simple de démarrer votre raspberry pi en lançant automatiquement un navigateur (Dans notre cas Midori ou Firefox) en full screen (Souvent appelé le mode Kiosk).

Dashboard

Ce tuto à été fait avec Raspbian Jessie (Avant Raspbian pixel).

Ouvrez un terminal sur votre raspberry (En local ou via ssh).

Lançons ensuite au choix l’installation du navigateur (a vous de choisir votre navigateur préféré)

Pour Midori :

sudo apt-get install midori

Ou Chrome :

sudo aptitude install chromium-l10n chromium-browser

Ou Iceweasel :

sudo aptitude install iceweasel

Ou Firefox (Pour les derniers Raspbian à base de pixel) :

sudo aptitude install xdotool firefox-esr

Puis nous allons éditer le fichier :

sudo nano ~/.config/lxsession/LXDE-pi/autostart

Ajoutez les lignes suivante à la fin du fichier :

@xset s off
@xset -dpms
@xset s noblank

/home/pi/KIOSK.sh #Le script qui lancera votre navigateur

Créer un script (Nommons le KIOSK.sh) et placez le ou vous voulez (par ex /home/pi/)

sudo nano /home/pi/KIOSK.sh

Puis ajouter la ligne permettant de lancer votre navigateur avec une page spécifique

Pour Midori :

midori -e Fullscreen -a http://google.fr

Pour Chrome :

chromium --noerrdialogs --kiosk http://google.fr

Pour Iceweasel (Avant pixel) : (Attention depuis Raspbian Kiosk, Le mode Fullscreen ne fonctionne plus, de plus Iceweasel à été renommé par Firefox-esr)

iceweasel -url "http://google.fr" --display=:0 -fullscreen

Pour Iceweasel (Après pixel) : (Attention n’oubliez pas d’installer xdotool spécifié plus haut)

iceweasel -url "http://google.fr" --display=:0 -fullscreen

 

Un autre exemple pour ouvrir une nouvelle page avec plusieurs onglets :

Pour Iceweasel :

iceweasel --display=:0 -fullscreen -new-tab -url "http:/google.fr/" -new-tab -url "https//www.jjtronics.com"

 

 

N’hésitez pas si vous avez des soucis ou une autre façon de faire ;)

2 Fév
2016

Raspberry PI – Contrôlez votre bureau graphique (le meme que la sortie HDMI)

Bonjour à tous,

 

Aujourd’hui je vais vous expliquer comment prendre le contrôle à distance du bureau de votre Raspbian sans ouvrir une nouvelle session graphique : Ceux qui ont testé des tutoriels avec Tightvnc par ex savent de quoi je parle.

En général, la plupart des tutoriels permettant de prendre le contrôle à distance du bureau ouvrent une nouvelle session graphique …

Vous vous retrouvez avec votre bureau mais si vous ouvrez un document, vous allez vous rendre compte que ce n’est pas le meme bureau que celui affiché sur la sortie HDMI du Raspberry.

Dans notre cas, nous voulons controler la meme interface graphique que celle présente sur la sortie HDMI du Raspberry : Nous allons utiliser le bon vieux x11vnc.

 

Commençons par l’installer :

sudo apt-get install x11vnc

Nous allons ensuite définir un mot de passe de connexion à la session VNC :

 

x11vnc -storepasswd

Puis pour nous simplifier la vie (Flemme spotted), nous allons le paramétrer pour qu’il se lance automatiquement au démarrage de la session graphique en créant un fichier de configuration d’autostart :

cd .config
mkdir autostart
cd autostart
nano x11vnc.desktop

Dans le fichier x11vnc.desktop, collez les lignes suivantes :

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=X11VNC
Comment=
Exec=x11vnc -forever -usepw -display :0 -ultrafilexfer
StartupNotify=false
Terminal=false
Hidden=false

Enregistrez et quittez l’éditeur nano(Ctrl-X, Y, <Enter>)

Puis redémarrez votre raspberry

sudo reboot

Lancez votre client vnc préféré (Par exemple realvnc)

Tapez l’adresse de votre raspberry suivis de : et du numéro de port (par défaut 5900) ex : 192.168.1.254:5900

Et vous pouvez lancer la connexion !

 

Si vous avez des soucis / des questions, n’hésitez pas ;)

 

JJ

Raspberry Pi 2 ou 3 et Raspbian Jessie - VLC 2.4 et accélération matériel (hardware acceleration)

Raspberry Pi 2 ou 3 et Raspbian Jessie – VLC 2.4 et accélération matériel (hardware acceleration)

Aujourd’hui je vais à nouveau publier une mise à jour de l’article : Raspberry Pi 2 – VLC et accélération matériel (hardware [&hellip

Raspberry Pi 2 ou 3 et Raspbian Jessie - VLC 2.2 et accélération matériel (hardware acceleration)

Raspberry Pi 2 ou 3 et Raspbian Jessie – VLC 2.2 et accélération matériel (hardware acceleration)

UPDATE : Raspberry Pi 2 ou 3 et Raspbian Pixel – VLC 2.4 et accélération matériel (hardware acceleration) Aujourd’hui je vais [&hellip

Compilation de la derniere version de FFMPEG

Compilation de la derniere version de FFMPEG

Bonjour à tous, Aujourd’hui un petit tuto pour avoir la dernière version de ffmpeg, ce tutoriel à été utilisé maintes [&hellip

Raspberry Pi 2 - VLC et accélération matériel (hardware acceleration)

Raspberry Pi 2 – VLC et accélération matériel (hardware acceleration)

UPDATE : Raspberry Pi 3 et Raspbian Pixel – VLC 2.4 et accélération matériel (hardware acceleration) Ayant un petit projet de [&hellip

FFMPEG - Diffuser un flux ip multicast en adaptative smooth streaming

FFMPEG – Diffuser un flux ip multicast en adaptative smooth streaming

Un petit script bien utile pour délivrer un flux video multicast en adaptative smooth streaming

Installation de Transform Manager

Installation de Transform Manager

Prérequis – résumé : Télécharger Transform Manager Télécharger IIS Media Services 4.1 Télécharger IIS Managment console Télécharger .NET Framework 3.5 [&hellip

Suivez moi !

Follow Me! Follow Me! Follow Me! Follow Me!

Chercher