février 4

Ambilight avec Raspi et Arduino

Ambilight est un système, à base de ruban LED rgb disposé à l’arrière d’une télé, permettant de diffuser des couleurs en rapport avec le contenu de l’image affiché à l’écran.

Pour cela, j’utilise un Raspberry 3 avec le mediacenter Openelec (un Kodi prévu pour Raspi) connecté en USB à un Arduino Uno lui même connecté à un ruban de LED WS2812b.

J’ai fabriqué un cadre en bois avec des liteaux de 4X13 mm, fixé via les 2 vis VESA de la télé. Le ruban LED est collé sur les liteaux.
Les liteaux sont inclinés à 45° pour avoir un maximum de projection lumineuse à l’arrière de la télé.

Les fichiers 3D que j’ai créé pour ce montage sont disponible sur mon Thingiverse.

dans mon exemple, j’ai 29 LED en haut et bas et 17 à droite et gauche = 92 au total.

 

J’ai fais des pièces en 3D, tout est disponible sur mon Thingiverse.

Ruban LED

Le ruban est une suite de module de LED que l’on peut découpé et souder. Chaque module fait 33 mm, bien mesuré la longueur des liteaux haut/bas et droite/gauche en multiple de 33 mm, pour que le ruban arrive pile poil au bout.

Le ruban à un sens indiqué par une flêche, le logiciel utilisé par la suite permet de choisir la position de départ et le sens (horaire/anti), on est libre donc, pour ma part, je démarre en bas à droite (vu de l’arrière de la télé)

La ruse est de mettre des LED sur la longueur/largeur de l’écran ET PAS de la télé, si comme moi, elle comporte une bordure sur les bords.
Diviser donc la largeur de l’écran (en mm) par 33 pour avoir le nombre de LED à placer. Si ça tombe pas juste, ajuster au plus proche.

Le ruban comporte 3 connexion : +5V, GND, data, que j’ai relié à un domino fixé au cadre.

Arduino

le code vient de Tweaking4all et  utilise la librairie Adafruit NeoPixel, et fastLED, accessible via le gestionnaire de librairie d’Arduino.

#include <bitswap.h>
#include <chipsets.h>
#include <color.h>
#include <colorpalettes.h>
#include <colorutils.h>
#include <controller.h>
#include <cpp_compat.h>
#include <dmx.h>
#include <FastLED.h>
#include <fastled_config.h>
#include <fastled_delay.h>
#include <fastled_progmem.h>
#include <fastpin.h>
#include <fastspi.h>
#include <fastspi_bitbang.h>
#include <fastspi_dma.h>
#include <fastspi_nop.h>
#include <fastspi_ref.h>
#include <fastspi_types.h>
#include <hsv2rgb.h>
#include <led_sysdefs.h>
#include <lib8tion.h>
#include <noise.h>
#include <pixelset.h>
#include <pixeltypes.h>
#include <platforms.h>
#include <power_mgt.h>



/* t4a_boblight
 * (C) 2014 Hans Luijten, www.tweaking4all.com
 *
 * t4a_boblight is free software and can be distributed and/or modified
 * freely as long as the copyright notice remains in place.
 * Nobody is allowed to charge you for this code.
 * Use of this code is entirely at your own risk.
 */

#include "Adafruit_NeoPixel.h"

// DEFINITIONS

#define STARTCOLOR 0xFFFFFF  // LED colors at start
#define BLACK      0x000000  // LED color BLACK

#define DATAPIN    13        // PIN Arduino connecté à la broche DATA du WS2812
#define LEDCOUNT   92       // Nombre de LED du WS2812 utilisé
#define SHOWDELAY  20       //200 délai (en m/s) avant l'allumage (à reporter dans Hyperion)
#define BAUDRATE   500000    // Serial port 500000 étant prévu pour Arduino
#define BRIGHTNESS 100        // Max. luminosité en % (d'origine à 95)

const char prefix[] = {0x41, 0x64, 0x61, 0x00, 0x5B, 0x0E};  // = 91 LED indiqué par BoblightConfigMaker
char buffer[sizeof(prefix)]; // Temp buffer for receiving prefix data 

// Init LED strand, WS2811/WS2912 specific

// These might work for other configurations:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)

Adafruit_NeoPixel strip = Adafruit_NeoPixel(LEDCOUNT, DATAPIN, NEO_GRB + NEO_KHZ800);

int state;                   // Define current state
#define STATE_WAITING   1    // - Waiting for prefix
#define STATE_DO_PREFIX 2    // - Processing prefix
#define STATE_DO_DATA   3    // - Handling incoming LED colors

int readSerial;           // Read Serial data (1)
int currentLED;           // Needed for assigning the color to the right LED

void setup()
{
  strip.begin();            // Init LED strand, set all black, then all to startcolor
  
  strip.setBrightness( (255 / 100) * BRIGHTNESS );
  
  setAllLEDs(BLACK, 0);
  setAllLEDs(STARTCOLOR, 5);
  
  Serial.begin(BAUDRATE);   // Init serial speed
  
  state = STATE_WAITING;    // Initial state: Waiting for prefix
}


void loop()
{
  switch(state)
  {
    case STATE_WAITING:                  // *** Waiting for prefix ***
      if( Serial.available()>0 )
      {
        readSerial = Serial.read();      // Read one character
        
        if ( readSerial == prefix[0] )   // if this character is 1st prefix char
          { state = STATE_DO_PREFIX; }   // then set state to handle prefix
      }
      break;
      
      
    case STATE_DO_PREFIX:                // *** Processing Prefix ***
      if( Serial.available() > sizeof(prefix) - 2 ) 
      {
          Serial.readBytes(buffer, sizeof(prefix) - 1);
          
          for( int Counter = 0; Counter < sizeof(prefix) - 1; Counter++) 
          {
            if( buffer[Counter] == prefix[Counter+1] ) 
            {
              state = STATE_DO_DATA;     // Received character is in prefix, continue
              currentLED = 0;            // Set current LED to the first one
            }
            else 
            {
              state = STATE_WAITING;     // Crap, one of the received chars is NOT in the prefix
              break;                     // Exit, to go back to waiting for the prefix
            } // end if buffer
          } // end for Counter
      } // end if Serial
      break;
      
      
    case STATE_DO_DATA:                  // *** Process incoming color data ***
      if( Serial.available() > 2 )       // if we receive more than 2 chars
      {
        Serial.readBytes( buffer, 3 );   // Abuse buffer to temp store 3 charaters
        strip.setPixelColor( currentLED++, buffer[0], buffer[1], buffer[2]);  // and assing to LEDs
      }
  
      if( currentLED > LEDCOUNT )        // Reached the last LED? Display it!
      {
          strip.show();                  // Make colors visible
          delayMicroseconds(SHOWDELAY);  // Wait a few micro seconds
          
          state = STATE_WAITING;         // Reset to waiting ...
          currentLED = 0;                // and go to LED one
          
          break;                         // and exit ... and do it all over again
      }
      break; 
  } // switch(state)
  
} // loop


// Sets the color of all LEDs in the strand to 'color'
// If 'wait'>0 then it will show a swipe from start to end
void setAllLEDs(uint32_t color, int wait)
{
  for ( int Counter=0; Counter < LEDCOUNT; Counter++ )      // For each LED
  {
    strip.setPixelColor( Counter, color );      // .. set the color

    if( wait > 0 )                        // if a wait time was set then
    {
      strip.show();                     // Show the LED color
      delay(wait);                      // and wait before we do the next LED
    } // if wait
    
  } // for Counter
  
  strip.show();                         // Show all LEDs
} // setAllLEDs

On indique la pin Arduino connecté à DATA du ruban.

La vitesse du port à 500000 n’est pas conventionnel mais est adapté (d’après ce que j’ai compris) à la fréquence de fonctionnement d’Arduino.

La valeur hexa décimal à indiqué dans le code et qui doit correspondre (en autre) au nombre de LED utilisé. La calcul de cette valeur n’est pas très glamour :https://hyperion-project.org/threads/communication-issues-between-raspberry-and-arduino.507/
41, 64, 61 00 (les 4 premier byte ne changent pas)
ensuite, nombre de LED-1 en hexa, 92-1 = 5B
ensuite, la valeur XOR de 55 et de la valeur précédente (5B) E

Pour ma part, ça ne m’a pas aidé. Jai donc utilisé le logiciel BobLight ConfigMaker , prévu à la base pour le système BobLight.

La grosse ruse est que j’ai du indiqué dans ConfigMaker une valeur de LED inférieur de 1 au nombre réel de LED utilisé. Peut être du fait d’un calcul qui ne prend pas en compte la LED numéro 0 ?!?

Le GND d’Arduino est connecté au GND de l’alimentation des LED. L’alimentation d’Arduino est donc fourni par l’USB venant du raspberry.

Pour infos, chaque LED consomme environ 60 mA (si les 3 couleurs sont allumés ensemble), prévoir donc une alimentation en conséquence mais si dans mon cas, avec une alim de 2.5A ça fonctionne ?!?

Hyperion et Openelec

Hyperion est le système qui va gérer la liaison et les gestion des LED entre Openelec et Arduino.

Il faut donc l’installé sur le raspi qui contient Openelec.

On commence par rendre le dossier Flash accessible en écriture.

mount -o remount,rw /flash

On télécharge l’overlay qui gérera les sorties vers les leds

cd /flash/overlays/
curl -L --output enable-spi-overlay.dtb --get https://dl.dropboxusercontent.com/u/3669512/temp/enable-spi-overlay.dtb

on va ensuite modifier le fichier config.txt (présent sur la carte SD) pour activer le bus SPI

nano /flash/config.txt

A la fin du fichier, on rajoute les lignes suivantes:

device_tree_overlay=overlays/enable-spi-overlay.dtb
dtparam=spi=on

On reboot ensuite le raspberry

reboot

On télécharge et installe ensuite hyperion pour Raspi:

curl -L --output install_hyperion.sh --get https://raw.githubusercontent.com/tvdzwan/hyperion/master/bin/install_hyperion.sh
sh ./install_hyperion.sh

Hyperion démarre automatiquement avec Openelec, aucun de ses réglages n’est accessible depuis ce dernier.

Problème avec la version 8 de OpenElec

Le passage de la version 7 à 8 à supprimer 2 librairie de Openelec (/usr/lib/), indispensable pourtant à Hyperion :

  • libfontconfig.so.1.9.2
  • libfreetype.so.6.13.0

Comme ce dossier est protégé en écriture, il faut les mettre dans le dossier : /storage/hyperion/bin.
MAIS la ruse est qui faut les renommer en :

  • libfontconfig.so.1
  • libfreetype.so.6

pour que ça fonctionne ??

LibrairieHyperion
Source

Hyperion

Tout ce fait via le logiciel HyperionCron, écrit an JAVA, à installer sur un PC ou autre donc.

Un tuto en Français est disponible pour le réglages précis des LED :

On indique la rubrique  Hardware :

type = Adalight c’est la librairie Arduino

Output = /dev/ttyACM0, c’est la sortie USB du raspi

baudrate = 500 000, comme indiqué dans le code Arduino

delay = 20, j’ai mis pareil que dans le code Arduino mais je ne sais pas si c’est pertinent.

RGB Byte order = RGB

Le nombre de LED

direction = Le sens du ruban

1st LED offset = La position de la LED de départ

image process = la surface qui va détecter les couleurs sur l’écran, à tester donc.

Blackborder detection = 20, c’est pour qu’il détecte les bords de la vidéo même avec des bandes noir en haut et bas.

La rubrique Process permet de modifier la transition des couleurs et leurs valeurs.

Le paramètre Smoothing permet d’avoir un allumage des LED moins rapide. En cas d’éclair à l’image par exemple, pour avoir un rendu plus naturel.

Dans la rubrique grabber, cocher enabled. Je n’ai pas creusé plus les paramètres.

dans la rubrique external, cocher Kodi checker et indiquer l’adresse IP du raspi.

La rubrique SSH permet d’envoyer la configuration créé directement dans le Raspberry, dans le dossier /storage/.config/

Pour cela, il faut indiquer l’adresse IP de son Raspi, le username Openelec (root), le password (openelec) puis faire « connect ».

Penser à bien cliquer sur « Create Hyperion Configuration » avant d’envoyer cette configuration, via « Send config« .

Faire stop et start pour actualiser la config.

A noter que « inst/upd Hyperion » permet d’installer et de mettre à jour Hyperion sur le Raspi.

Voila, si pas d’erreur, à l’ouverture d’OpenElec le ruban s’allume en blanc 2  fois  puis selon les couleurs de l’interface choisi pour Openelec.

Raspberry et Arduino

J’ai concocté un support en 3D  permettant d’avoir cote à cote le Raspi et Arduino… dispo sur mon Thingiverse

décembre 22

Avoir le raspi à l’heure… Française

Comme beaucoup d’ordi, le Raspi utilise le protocole NTP pour ce mettre à la bonne heure et date grace au fichier ntp.conf qui contient une liste de serveurs dédiés à ça.
Problème, ça speak English comme d’ab, il faut donc le diriger vers d’autres serveurs.

Editer le fichier ntp.conf
sudo nano /etc/ntp.conf
de récupéer le nom du serveur pour la france à cette adresse
et de remplacer les serveurs indiqués  dans le ntp.conf par :
server 0.fr.pool.ntp.org
server 1.fr.pool.ntp.org
server 2.fr.pool.ntp.org
server 3.fr.pool.ntp.org

 

rebooter le raspi, lancer une console SSH avec la commande « date » pour voir le résultat.
Parfois, après un reboot du raspi, l’heure peut être mauvaise, pour forcer le service NTP à remettre la bonne heure, faire la commande :
sudo /etc/init.d/ntp restart
**

 

 

novembre 1

Installer un serveur DLNA sur le Raspi

Le protocole DLNA permet à n’importe quelle machine d’envoyer un flux audio/vidéo sur une autre machine, compatible avec ce protocole (TV, SmartPhone…).
C’est toute fois la machine réceptrice qui décode le flux et donc doit avoir le lecteur ou codec correspondant à la vidéo streamée.

Installer le miniDLNA

sudo apt-get install minidlna
sudo chown minidlna:minidlna /var/lib/minidlna

Créer un dossier « cache » pour stocker les miniatures et l’index des fichiers multimédia)
et « log » pour le fichier qui stocke les éventuelles érreurs.

sudo mkdir /var/{cache,log}/minidlna
sudo chown minidlna:minidlna /var/{cache,log}/minidlna

Editer le fichier de configuration de minidlna

Tous est expliquer dans le fichier

sudo nano /etc/minidlna.conf
media_dir=V,/media/DDexterne/films
db_dir=/var/cache/minidlna
log_dir=/var/log/minidlna
inotify=yes
notify_interval=300
listening_ip=[IP_du_raspi]
port=8200
friendly_name=nom_afficher_dans_le_réseau
root_container: . pour voir vidéos, images musique - V pour voir seulement les vidéos

Décocher les « # » devant les lignes que l’on souhaites configurer, en autre :

media_dir=V,/chemin_vers_ses_films
media_dir=V,/chemin_vers_mes_seriesTV
inotify = yes pour scanner les fichiers à chaque ajout
notify_interval: interval de scan, en secondes
port=port_pour_voir_le_scan

Editer le fichier sysctl ça ??

[…Alors que la plupart des solutions propose de créer une tâche cron pour reconstruire l’ensemble de la base de données à un moment précis, mais pratiquement aucun d’entre eux répondent que le correctif réel problème ou une dit que le noyau ou la version OS ne prend en charge la fonctionnalité inotify.
Aussi je n’aime pas l’idée de reconstruire la base de données de la médiathèque ensemble chaque jour ou chaque fois qu’un nouveau fichier est ajouté, comme idéalement, il devrait juste ajouter le nouveau fichier dans la base de données multimédia: source…]

Sert à augmenter le nombre d’entrées (dans la base de donnée multimedia) qu’inotify peut créer.

sudo nano /etc/sysctl.conf
# minidlna server tweaks
fs.inotify.max_user_watches = 100000
# end of minidlna server tweaks

Démarrer le service et commencer à scanner les médias

sudo services minidlna stop

sudo service minidlna start

Pour que le service démarrage à chaque boot du raspi :

sudo update-rc.d minidlna defaults

Une fois fait, se connecter sur la console de gestion minidlna

ip_du_raspi:port_indiqué (ex: 192.168.0.40:8200)

Les fichiers sont aussi lisibles via le MediaPlayer de Windows
ou VLC, via liste de lecture/réseau local

VLC en lecteur DLNA

Ou des applis SmartPhone comme UpnPLay pour Android (gratuit et sans pub)

Amélioration

La cache de la médiathèque étant sur la carte SD du Raspi, si on débranche/rebranche, la médiathèque doit rescanner les médias et reconstruire le cache.
On peut choisir de déplacer le cache dans le dossier qui contient les média pour éviter ça.
Copier le fichier d’index vers un dossier caché, version Linux (nom commençant par un point) « .minidlna-cache » situé sur le disque-dur USB.
L’avantage c’est que si on affiche le contenu du disque via le réseau Windows par exemple, ce fichier sera invisible. Pas de risque de le supprimer donc.
sudo cp /var/cache/minidlna/files.db /media/500Go/.minidlna-cache/
En cas d’erreurs, vérifier que le fichier files.db à bien des droits à l’utilisateur minidlna.

En cas de problèmes

Droits CHMOD

Si le service est bien actif mais que aucun fichier n’est scanné, vérifier bien que votre dossier de média à bien des droits CHMOD au moins à 755.

La commande suivant permet de recréer la base de données média

sudo service minidlna force-reload

Si cela renvoie une erreur « permission non accordée… », vérifier que le dossier de cache à bien les droits de l’utilisateur et du groupe minidlna, au besoin modifier :

MiniDlna permissions

sudo chown -R minidlna:minidlna /media/500Go/.minidlna-cache
ou, au besoin, rajouter le minidlna au groupe de son utilisateur
sudo usermod -a -G pi minidlna
Ne pas hésiter à arrêter/démarrer le raspi (pas rebooter) pour prendre en compte les modifs.
Sudo halt

Scan

En cas de soucis avec des fichiers autres que vidéos ou audio (playlist, NFO…) qui bloqueraient le scan, une commande pour les supprimer :
find . -name "*.m3u" -exec rm '{}' \;
find . -name "*.M3U" -exec rm '{}' \;
find . -name "*.pls" -exec rm '{}' \;
find . -name "*.PLS" -exec rm '{}' \;

 

Catégorie : RASPBERRY PI | Commenter
octobre 27

BitTorrent Syncro sur le Raspberry

Faire la commande

pwd

Pour être sur du dossier sur lequel démarrage l’utilisateur (dans mon cas /home/pi)

Créer un dossier pour héberger BitTorrent Syncro

sudo mkdir /home/pi/btsync

Télécharger la dernière version de bitSyncro pour processeur ARM.
Dézziper le .gz et le .tar sur windows avant (il reste un fichier btsync et un fichier texte).
Copier le tout, via FTP, dans le dossier /home/pi/btsync

Ou, envoyer le .gz dans le dossier et l’extraire via la commande :

tar -zxvf derniere_version_bitsyncro.tar.gz

Se placer dans le dossier btsync

cd /home/pi/btsync

Démarrer le service

sudo ./btsync

Une fois fait, se connecter via son navigateur à l’adresse

ip-du-raspi:8888/gui

L’interface demande de créer un ID et passe, ensuite on peut choisir les dossiers à synchroniser.

Démarrer BitTorrent au boot

Pour que le service btsync démarre à chaque boot du raspi, il faut rajouter quelques trucs.

Créer un dossier caché contenant un dossier « autostart » :
/home/pi/.config/autostart
Créer et éditer un fichier « syncstart.desktop »
sudo nano /home/pi/.config/autostart/syncstart.desktop
Copier dedans ce code :
[Desktop Entry]

Type=Application

Exec=/home/pi/btsync/btsync

Voila, on peut rebooter tranquille.

En cas de problème d’heure sur le raspberry Pi

Sur un BitSync installé sur le Raspi, ça peut coincé si il se déconnecte car il se met à l’heure Américaine, si vous syncronisez avec un  serveur en France…. la solution est içi.

Source

 En cas de « plus de syncronisation »

J’ai eu le cas ou en déconnectant/reconnectant le disque-dur du Raspi, BitSync n’indique pas d’erreur MAIS ne télécharge/envoie plus rien.
Il suffit en fait de rebooter le serveur auquel il est connecté pour faire repartir le truc.

Source

Catégorie : RASPBERRY PI | Commenter
octobre 6

Partager un dossier du Raspi via Samba

Il faut d’abord installer le paquet SAMBA (protocole de partage sur Windows)

sudo apt-get install samba

Une fois fait, le Raspberry apparait dans le réseau Windows MAIS on ne peut rien faire !

Pour cette exemple; j’ai créer un dossier sur le bureau du Raspi (via SFTP ou la connexion accès à distance).

sudo mkdir /home/pi/Desktop/RaspBian

Avec des droits CHMOD à 777 afin qu’il soit modifiable (et les fichiers qu’il contiendra) via le réseau

sudo chmod 777 - R /home/pi/Desktop/RaspBian

Pour partager ensuite ce dossier, il faut intervenir sur le fichier de configuration SAMBA du raspi. n

sudo nano /etc/samba/smb.conf
Dans la rubrique « global settings« , bien veiller à ce que le nom du groupe soit bien le même que sur votre Windows (par défaut workgroup)
Dans la rubrique « Autentification« , Il faut remplacer : security=user par security=share.
Si besoin, dé-commenter : wins support = yes
Puis, dans la rubrique « share definitions« ,  ajouter les lignes suivantes à la fin du fichier (path indique le chemin du disque externe):
[nom qui apparaitra dans le partage]
path = /home/pi/Desktop/RaspBian
browseable = yes
writable = yes
read only = no
guest ok = yes
force user = pi (si besoin, mettre votre login de connexion au raspi)
Ctrl+X, O, entrer pour quitter en validant
Redémarrer SAMBA
sudo /etc/init.d/samba restart

Retourner dans le partage de Windows et actualiser.
Le dossier RaspBian devrait apparaitre dans le partage RASPBERRYPI.

On pourrait sécuriser un peu le truc en créant un groupe d’utilisateurs et rajouter dans le fichier smb.conf, à la suite du partage :

force group = le_groupe

Cas des disque-dur monté

Un disque-dur monté dans Linux à des droits par défaut à 755, insuffisant donc pour être gérable via le réseau.

Impossible de changer ses droits, via chmod, s’il n’est pas démonté MAIS rien n’impêche de créer dedans, via mkdir, un dossier et de lui attribuer des droits à 777.

 

avec l’aide de coolpizza

octobre 5

Monter un disque-dur USB sur le raspberry

Le matériel

Le raspberry ne pouvant pas alimenter par lui même un disque externe, il faut la passer par un hub auto-alimenté.
Ou plus fort, en branchant le HUB (alimenté) au disque-dur ET au connecteur USB du raspi, avec un cable USB en Y (la partie la plus courte du cable sur le HUB), c’est le HUB qui alimente électriquement le Raspi en énergie, on se passe d’un transfo donc !
Installer la prise en charge des disque NTFS, ça peut prendre quelques minutes et rien n’est indiqué à la fin.
sudo apt-get install ntfs-3g
Pour vérifier, taper :
sudo fdisk -l
La ligne disk/dev/ nous donne le nom du point de montage temporaire du disque externe (sda, sdb…), le dossier « dev » montre points de montage des disques et partitions.
Dans le monde de linux, tous lecteurs externes (disque, clé) doivent se « monter » c’est à dire faire une liaison entre le point de montage et un dossier préalablement créé.
Sur certaines distribution néanmoins, les lecteurs externes sont automatiquement reconnus  dans le dossier « media » ou « mnt », c’est le cas avec la distribution RaspDebian par exemple.
ATTENTION : Même visible en FTP , on ne peut transférer dessus. Car ses droits lecture/écriture sont limités. Ils faut les modifier avec la commande CHMOD :
sudo chmod -R 777 /media/nom_du_DD/
(Bien mettre le / à la fin)

Le formatage

Un disque en NTFS n’est pas aussi bien géré qu’un disque au format ext3/4 (natif de Linux).
Des tests montrent que les débit d’écriture entre la carte SD du Raspi (ou une partition ext4) sont mauvais.
de plus,  le NTFS-3g  peut utiliser beaucoup de ressource processeur. Pour ma part, mon Raspi en syncro BitTorrent sur KimSufi (sur les initiés…) à un average load de +de 94% et -de 10Mib de mémoire de libre.
Mais le NTFS c’est quand même plus simple pour communiquer avec un PC Windows !

Si le disque ne se monte pas

sudo mkdir /media/nom_du_DD/

Ensuite, ce point de montage/dossier/, doit être attribuer au lecteur physique. Cela ce fait via son identifiant appelé UUID.

Pour afficher les UUID des différents lecteurs :
sudo blkid
(sudo blkid -g permet de mettre à jour le cache UUID)
PS:  l’UUID change à chaque formatage du disque

Monter le disque

Pour faire comprendre à Linux que l’on souhaite accéder, de manière temporaire ou permanente à  ce disque, on doit le  « monter » c’est  à dire lui attribuer un dossier.

De manière temporaire

sudo mount -t ntfs /dev/sda1 /media/nom_du_DD
Le sda1 étant trouvé avec la commande vu plus haut (…by-uuid) et non avec fdisk.
Fdisk donne sda et blkid sda1 (le chiffre correspond à la première partition du disque)

De manière définitif

On doit l’indiquer dans le fichier fstab (table de montage) de Linux.
Ouvrir et éditer :
sudo nano /etc/fstab
Se déplacer avec les flèches du clavier (il est préférable aussi de taper les chiffres et point sans passer par le pavé numérique du clavier)
et rajouter ces ligne :
#mon disque 2.5 externe de 500 Go
UUID=************** /media/nom_du_DD ntfs-3g defaults 0 0

defaults : permet de monter le disque au démarrage, de le mettre en lecture/écriture
On peut rajouter :

  • locale : pour la prise en charge des caractères Francais
  • umask : à 0022 met un droit CHMOD de 755
  • 0 0 : pour ne pas voir les infos de débogage et pour ne pas vérifier (scandisk) le disque
Pour fermer : Crtr+X, oui, entrée
Rebooter le raspi (sudo reboot)
ATTENTION :
Dans mon cas, au reboot du raspi, le disque n’est pas monté automatiquement.
par contre, si je débranche/rebranche l’alimentation, il se monte.
En cas de problèmes d’accès au disque ou de droits
Démonter le disque
sudo umount /media/nom_du_DD
et rebooter
Monter le disque en forçant la reconnaissance de l’utilisateur « pi » (ou autre au besoin):
sudo mount -t ntfs uid=pi,gid=pi /dev/sda1 /media/nom_du_DD
A ce stade, le disque externe est accessible via FTP ou par les programmes installés sur le raspi.
On peut allez plus loin et le gérer sur un réseau Windows, via le protocole SAMBA.

Liens utiles :

août 4

installer OwnCloud sur le raspberry Pi

Comme j’ai pas mal galérer pour le faire (j’ai peu de connaissance linux, mais j’ai progressé du coup), je partage cette expérience….
PS: Grand merci et bravo à TropFacile.net pour son site.

Pré-requis

  • Avoir installé la distribution raspbian sur le raspberry
  • Connecté au raspi un HUB USB (avec alimentation car le raspi ne peux pas alimenter seul un DD) connecté à un disque-dur externe USB, formaté en NTFS
  • Avoir monté à la sauce Linux ce disque-dur
  • Avoir installé un serveur Web (j’ai pris lamp que je trouve plus simple que Nginx) et ces dépendances (PHP, SQL…)
  • Avoir un Putty configuré pour accéder à son raspi
  • Avoir quelques bases sur les commandes Linux

installer OwnCloud

 
récupérer le lien de l’archive .bz2 sur le site dédié (via un clic-droit « copier l’adresse du lien). c’est la partie serveur qui nous intéresse.
télécharger l’archive (ça va à la base du raspi, dossier /home/pi)
sudo wget http://download.owncloud.org/community/owncloud-5.0.9.tar.bz2
Décompresser l’archive via
sudo tar -vxjf owncloud-5.0.9.tar.bz2
faire un ls pour voir le nom du dossier créé par la décompression, dans mon cas « owncloud »
déplacer le dossier dans le dossier /var/www (le serveur web)
sudo mv owncloud /var/www

donner des droits au dossier www

sudo chown -R www-data:www-data /var/www
A partir de la, on pourrait commencer l’installation de owncloud MAIS alors, il mettrait le dossier « data » (dédié au stockage des fichiers) dans le dossier www donc sur la carte SD, pas top en terme que capacité de stockage.
Dans mon cas, le disque-dur est monté dans un dossier DD500, dans /media/

Préparer le disque NTFS à recevoir OwnCloud

Le dossier « data », que OwnCloud va utiliser, à besoin de droits chmod 770 et doit laisser l’utilisateur www-data (apache) y avoir accès.

MAIS la ou c’est chiant, (et ou tous les tutos du net vous parle de modifier les droits via des commandes Linux chmod et chown) c’est que ces commande ne marche pas sur un disque formaté en NTFS, même avec le paquet ntfs-3g. Il faut donc impérativement fixer ces droits via le fichier /etc/fstab, dans la ligne qui monte le disque-dur.

De plus, il faut créer un groupe dédié au disque-dur en y incluant www-data.

Vérifier que le groupe www-data (et du coup son utilisateur du même nom) est bien présen.

cat /etc/group
Créer un groupe dédié au disque-dur (dd500)
sudo groupadd dd500
Récupérer l’id (identifiant) de ce groupe
cat /etc/group |grep dd500
Ajouter pi et www-data au groupe
sudo usermod -a -G dd500 pi
sudo usermod -a -G dd500 www-data

Editer le fstab, tout est sur une ligne. Valider par Ctrl+O,  fermer par Ctrl+X

sudo nano /etc/fstab
#mon disque DD500
UUID=01CDF632E2384A70 /media/DD500 ntfs-3g defaults,auto,gid=1002,umask=007,locale=fr_FR.utf8 0 0
Bien rajouter :
defaults, pour les paramètres de base
auto, pour le montage du disque au boot du raspi
gid, avec le numéro du groupe
umask, qui permet d’avoir des droits 770 sur le disque
locale, pour la prise en charge du Français
0 0, je ne me rappel plus

Redémarrer le raspi

sudo reboot

Vérifier, au cas ou, que le disque-dur est bien dans le groupe dd500

stat /media/DD500
Via FTP, créer un dossier owncloud/data dans le disque-dur .
ou en ligne de commande

sudo mkdir /media/DD500/owncloud/data
Vérifier que le CHMOD de » data » est bien sur 770 sous peine de message d’erreurs à l’installe de owncloud

Démarrer l’installation de Owncloud

Via votre navigateur, IP_du_raspi/owncloud
owncloud-install1
Dans « répertoire des données » indiquer :
/media/DD500/owncloud/data
pour la base MySQL, indiquer le login et passe mis à son l’installation de SQL
nom de la base = owncloud
ET VOILA ! à ce stade,  ça fonctionne MAIS j’ai eu un soucis… impossible d’uploader un fichier de plus de 2M.
Allons voir ça !

régler certains problèmes

Activer HTACCESS

sudo nano /etc/apache2/sites-enabled/000-default

A la rubrique Directory /var/www/
AllowOverride doit être All

Activer le mod_rewrite

a2enmod rewrite

ou, si pas de réponse

sudo /etc/httpd/httpd.conf

et mettre mod_rewrite sur enable

Modifier la limitation d’upload

Par défaut, l’envoie de fichier dans OwnCloud est limité à 2M.
J’ai vu beaucoup de tuto qui parlait souvent de modifier le fichier php.ini dans apache2 MAIS ça je changeait rien.

la ruse est de modifier le fichier .htacces (et donc de l’avoir activé) du dossier owncloud

sudo nano /var/www/owncloud/.htaccess

et de mettre  1024 M pour un upload de 1Go par exemple.


php_value upload_max_filesize 1024M
php_value post_max_size 1024M …

Redémarrer Apache

service apache2 restart

Accès en réseau via Windows (samba)

Si le disque-dur à été attribué au serveur web Apache, il ne sera pas accessible sur un réseau Windows par exemple.
Pour remédier à ça, il faut rajouter dans la configuration du partage samba, de forcer l’utilisateur www-data.
Sudo nano /etc/samba/smb.conf

Ajouter

force user = www-data
force group = www-data

Trucs en plus

Fixer son adresse IP

Par défaut, l’adresse IP du raspi est déterminé par le serveur DHCP de votre box.
En gros, il y a un certain nombre d’IP disponible par votre box et chaque appareil qui s’y connecte prend la première de la liste.
Il est donc logique, pour un appareil destiné à rester branché d’avoir une IP fixé définitivement.

Editer le fichier interfaces

sudo nano /etc/network/interfaces

remplacer la ligne avec DNS par

iface eth0 inet static
 address 192.168.0.25
 netmask 255.255.255.0
 gateway 192.168.0.254

Dans cette exemple, l’ip du raspi est fixé à 25 avec une box dont l’IP est 192.168.0.54 (FreeBox).

 

juillet 28

Installer RaspDebian sur le raspberry Pi (en cours)

Raspian est une distribution Linux spécialement conçu pour le raspberry Pi. Elle se présente sous a forme d’un fichier .img, à installer donc sur la carte SD (4 Go minimum) du Raspberry.

On télécharge l’image et on l’installe sur une carte SD via un WinDiskImager ou USBimageTool.
Ces deux logiciels présentes aussi l’avantage de pouvoir faire une copie de la carte, une fois l’installation faite. Je conseille donc de faire cette copie une fois l’installation de Raspian réussi et configuré comme on le souhaite.

On insère la carte SD, branche le cable HDMI sur un écran, la clavier/souris en USB et l’alim micro-USB (par de bouton on/off)
L’écran de démarrage s’affiche au bout de quelques secondes de défilement de code.

Par la suite, pour piloter le Raspi en SSH (pour taper du code linux) en SFTP (pour transférer des fichiers) ou en XRDP (pour voir le bureau du raspi dans une fenêtre Windows) je préconise vivement le logiciel BitVise.

raspdebian - config1

des infos en Anglais sont disponibles.

Pour rappel, on peut revenir sur cette écran avec la commande

sudo raspi-config

expand-rootfs :

Les images Raspian sont compressées pour faire plus ou moins 2.8Go. par défaut, si à l’installation on indique pas d’utiliser tout l’espace disponible de la carte, on ne pourra plus rien installer par la suite. Sous Linux, on parle « d’étendre le RootFs ». C’est une manip indispensable à faire donc.

configure-keyboard Set keyboard layout

Configurer le clavier. Permet d’avoir un clavier AZERTY en lieu et place du clavier QWERTY d’origine. Avec un clavier USB Microsoft ou un clavier sans fil Logitech, les réglages suivants ont fonctionné :

  • Clavier Generic 105 touches
  • Other => French => Keyboard layout := french / default
  • CTRL + ALT + Backspace => stoppe le serveur X => oui

change_pass Change password for ‘pi’ user

N’y touchez pas pour l’instant : utilisateur = pi
password = raspberry

change_locale Set locale

Régler les paramètres locaux (pour cocher la case, c’est la touche « espace » du clavier)

fr_FR en version UTF-8 convient bien.
=> Default locale = fr_FR.UTF-8
=> generation des locales : en_GB.UTF-8 et fr_FR.UTF-8

change_timezone Set timezone

Régler la zone horaire.
Euope => Paris

ssh Enable or disable ssh server

Activer le serveur SSH.
Indispensable à mon sens pour pouvoir ensuite avoir accès au raspi via un Windows, Mac ou Linux.

boot_behaviour Start desktop on boot?

Afficher le bureau en mode graphique au démarrage
pas indispensable si vous souhaitez ensuite paramètrer le raspi qu’avec un logiciel SSH

update Try to upgrade raspi-config

Mettre à jour raspi-config => Oui
Dans mon cas téléchargement de 7.3Mo

<Finish> et valider pour conclure cette première configuration. La machine reboote, et le redimensionnement de la partition (si demandé).

Source – Framboise314

Commandes Linux utiles

  • sudo reboot : pour redémarrer
  • sudo halt : pour arrêter le raspi
  • date : pour voir si le raspi est à l’heure
  • pwd : pour voir dans quelle dossier ou se trouve
  • htop : lister et gérer les processus (Plus de possibilités d’interaction) apt-get install htop
  • top : lister et gérer les processus.
  • atop : audit du système. apt-get install atop
  • iftop : bande passante LAN apt-get install iftop
  • bwm-ng : moniteur de bande passante simple en mode console apt-get install bwm-ng
  • df : (Disk Free) permet d’afficher à l’écran la taille de l’espace disque occupée et la taille de l’espace disque libre. ex : df -a
  • blkid : pour afficher l’UUID de chaque disque
  • dfc : (Autre version de df) apt-get install dfc
  • du : (Disk Usage) permet d’afficher la taille d’un répertoire et de tous les sous répertoires récursifs qu’il contient.
  • fdisk : Pour gérer les partitions.
  • ntfs-3g : Pour la gestion des disques en ntfs
  • secure-delete : apt-get install secure-delete
  • fslint : nettoie vos stockages de fichiers apt-get install fslint USE : /usr/share/fslint/fslint/

 

Les trucs indispensable à faire

mettre le raspi sur une IP fixe

sudo nano /etc/network/interfaces

Remplacer

iface eth0 inet dhcp
Par
iface eth0 inet static
address 192.168.0.25
gateway 192.168.0.254
netmask 255.255.255.0
dans cette exemple, le raspi aura une IP 192.168.0.25 par rapport à la FreeBox est en passerelle (gateway) à l’IP 192.168.0.254.
Pour avoir ces infos sous Windows, faire un ipconfig /all dans la console dos.
remplacer évidement par vos infos.
Pour avoir l’adresse IP du raspi, taper dans le terminal du bureau ou via SSH :
ifconfig

Voir l’interface du raspi dans une fenêtre Windows

Windows dispose (dans programmes/Accessoires/connexion bureau à distance) d’un outils permettant de se connecter à d’autre machine.
il faut juste installer sur le raspi le système XRDP.

sudo apt-get install xrdp
une fois fait, sur le PC, ouvrir le programmes Windows (ou un autre prog de gestion à distance) et indiquer l’adresse IP du raspi, son ID et le passe.

installer un serveur Web (lamp)

Il y a 2 serveur web possibe : Nginx et lamp, à priori Nginx est plus performant mais Lamp est plus simple à mettre en place.

http://www.tropfacile.net/doku.php/raspberry-pi/comment-installer-un-serveur-web-lamp

Voir les paramètres du raspi dans une page Web (raspControl)

http://www.tropfacile.net/doku.php/raspberry-pi/comment-monitorer-son-raspberry

 

 

 

 

Catégorie : RASPBERRY PI | Commenter
juillet 28

Les base du raspberry Pi

Le raspberry Pi est un mini-ordinateur disponible sur un circuit imprimé au format carte de crédit.
Il fonction avec un processeur ARM et dispose de 512 Mo de RAM. La connectique est simple :

  • micro-usb pour l’alimentation, un simple transfo de tél portable suffit
  • lecteur de carte SD ou MMC
  • sortie vidéo VGA
  • sortie vidéo et audio HDMI
  • 2 ports USB
  • une sortie audio, jack 3.5
  • connecteur Ethernet
  • ports d’extensions pour connecter d’autres cartes électroniques.

Il conviendra donc aussi bien pour remplacer un ordinateur mais aussi pour des fonctions de domotiques, robotiques, multimédia et bien d’autres.

Infos et tutos

Plus de 50 trucs à faire avec un raspberry Pi

Wikipedia

Tuto sur les bases du raspberry Pi

TropFacile

MyMediaCenterExperience

Les images système

Différent système d’exploitation peuvent être installer dessus, sous réserve d’être léger et surtout compatible au processeur ARM.
Le plus connu étant raspdbian, une version de Debian (Linux) spécialement adaptée au Raspberry.

Les différents OS (au format .img) doivent êtres implémentés sur la carte SD avec des utilitaires du style.

Beaucoup de test soulogne l’importance du choix de la carte SD. Il ne faut pas descendre en dessous des class 6 pour avoir un Raspi rapide.
Beaucoup préconise une ScanDisk Pro class 10.

WinDiskImager

WinDiskDump

USBimageTool (mon préféré)

Ces logiciels permettent aussi de  sauvegarder sur un PC la carte SD avec l’OS et les réglages définis, permettant par exemple avec une même carte SD de pouvoir tester plusieurs systèmes.

A la première installation il est donc indispensable de le connecter en HDMI ou VGA sur un écran pour le configurer mais par la suite, on peut effectuer tous les réglages à distance via le protocole SSH et des commande Linux.
Les ordinateurs sous Linux ou Mac permettent d’envoyer des commandes SSH directement par leur terminal intégré mais si vous pilotez le Raspi depuis Windows à besoin de logiciel comme Putty WinsSFC ou mieux BitVise, un logiciel qui incorpore un terminal pour le code, un gestionnaire SFTP et une console d’accès à distance… un must have donc!

Editer les fichiers

Par la suite, vous serez surement amenez à modifier des fichiers textes au seins du raspi pour y écrire des commandes Linux.
Cette édition se fait grace au logiciel NANO (une sorte de NotePad à la sauce Linux)
Pour le maitriser, tous les détails chez notre ami Zero.

Voici les raccourcis les plus importants :

  • Espace : cocher une case
  • Ctrl + G : afficher l’aide ;

  • Ctrl + K : couper la ligne de texte (et la mettre dans le presse-papier) ;

  • Ctrl + U : coller la ligne de texte que vous venez de couper ;

  • Ctrl + C : afficher à quel endroit du fichier votre curseur est positionné (numéro de ligne…) ;

  • Ctrl + W : rechercher dans le fichier ;

  • Ctrl + O : enregistrer le fichier (écrire) ;

  • Ctrl + X : quitter Nano.

 

 

 

Catégorie : RASPBERRY PI | Commenter