octobre 5

Un monitoring simple pour le raspberry

Il est bien d’avoir accès aux infos de son raspi parfois SANS passer par l’installation d’un système de monitoring par le Web, qui nécessite un server apache et PHP.

Pour avoir ces infos via la console, EZmonitoring suffit.

Installation

A modifier selon la version et cours

wget --content-disposition http://www.ezservermonitor.com/esm-sh/downloads/version/2.2
unzip ezservermonitor-sh_v2.2.zip
chmod u+x eZServerMonitor.sh

Une fois fait, la commande

/eZServerMonitor.sh --all

Permet d’avoir toutes les infos.

Catégorie : RASPBERRY PI | Commenter
octobre 1

Resilio sur disque-dur Freebox

Resilio (ex BitTorrentSyncro) est un système permettant de synchroniser des dossiers entre divers appareils tel que Raspberry, NAS, PC…
Le pitch içi étant de synchroniser les dossiers  présents sur un serveur Linux avec ceux présents sur le disque-dur interne d’une Freebox revolution, via un raspberry Pi (version 1 dans mon cas) connecté en réseaux sur la Freebox.

Resilio Synchro

Installer d’abord une version Lite de Raspbian et la configurer (date, langue…).
Pour infos, le faite de placer un fichier appelé ssh (sans extension) à la racine de la carte permet d’avoir accès au Raspi directement.

Installer ensuite Resilio, la version varie selon que l’on utilise un Raspi 1 ou un Raspi 3.
Pensez à faire un apt-get update et upgrade avant.

Pour mettre Resilio au démarrage

sudo systemctl enable resilio-sync
sudo nano /usr/lib/systemd/user/resilio-sync.service
changer "WantedBy=multi-user.target" par "WantedBy=default.target"
sudo systemctl --user start resilio-sync

Ensuite, se connecter sur <ip-du-raspi>:8080/gui/

La belle interface de Resilio devrait apparaitre. Indiquer ensuite la clé, fourni par le Resilio source, et choisir le dossier de le Freebox qui sera syncronisé.

Montage du disque-dur Freebox

 

Créer un dossier dans le dossier « media » (dédié au disque externe) du raspi.

sudo mkdir /media/freebox
sudo mkdir /media/freebox/Rtorrent/

leurs donner des droits d’accès total

sudo chmod -R 777 /media/freebox/

Créer le montage

//mafreebox.freebox.fr/Disque\040dur\Rtorrent /media/freebox/Rtorrent cifs _netdev,rw,users,iocharset=utf8,uid=1000,gid=1000,credentials=/etc/freebox.credentials,sec=none,file_mode=0777,dir_mode=0777 0 0

uid et gid 1000 est l’utilisateur et groupe du Raspberry (afficher avec la commande id).

Si mafreebox.freebox.fr renvoie une erreur lors du montage, on peut remplacer par 192.168.0.254.

La 1er partie indique que le dossier Rtorrent situé sur le disque-dur de la Freebox. Le 2e partie indique de le dossier Rtorrent, inclus dans freebox, lui même inclus dans media sera syncronisé.

Monter le disque au démarrage du Raspi

Créer un fichier

sudo nano /etc/freebox.credentials

Ecrire dedans

username=
password=

Monter le disque dur, une fois pour toute

sudo mount -a

La commande df permet de voir si le disque-dur est bien monté.

Voila, dans mon cas, tout ce qui est téléchargé sur mon Rtorrent est synchronisé avec ma Freebox…. un bonheur !

source 1

source 2

Catégorie : RASPBERRY PI | Commenter
septembre 23

Ambilight avec OpenElec et WS2801

J’ai déjà fait un post sur Ambilight MAIS avec un Raspi un Arduino et un WS2812. Cette version est plus simple et utilise un Raspberry Pi 3 (avec OpenElec) et un ruban LED WS2801.

Pour le placement des LED sur la télé, voir ce post.

Branchement

Le Raspi et le ruban LED est alimenté via une petite alim ATX 5V/6A,

Le WS2801 contient 32 LED par mètre et consomme 1.8A par mètre (50mA/LED), avec toutes les LED en blanc (source)

bien que ma mesure, avec 89 LED allumé en blanc et le rapi ne consomme que 1 A.
Théoriquement on devrait avoir 0.05 X 89 = 4.45 A. J’ai testé avec une autre alim, c’est idem…. j’ai pas de réponse la dessus.

  • +5V sur le Raspi et le fil rouge du WS2801
  • GND sur le Raspi et le fil noir/rouge du WS2801
  • CI du WS2801 sur SPI_clock du Raspi
  • DI du WS2811 sur CPI_mosi du Raspi

Logiciel

Installer l’image d’Openelec pour raspberry.

Une fois fait, installer Hyperion. Même si on peut l’installer en ligne de commande, le plus simple est de passer par le logiciel Hypercon (en Java) à installer sur Windows.

Il permet d’installer Hyperion sur le raspi (via une connexion SSH) et surtout de paramétrer les LED et autres.

Dans la rubrique hardware :

  • type = WS2801
  • Output = /dev/spidev0.0
  • baudrate = 1000 000

Le reste dépend de votre configuration et choix.

Dans le rubrique Grabber :

  • internal frame garbber = enabled
  • External/Kodi checker = enabled
  • SSH/system = Openelec /LE

Dans la rubrique SSH :

Indiquer l’adresse IP de son Raspi, le username Openelec (root), le password (openelec) puis faire « connect ».

Faire « stop hyperion »

Cliquer sur « Create Hyperion Configuration » avant d’envoyer cette configuration, via « Send config ».

Faire « start hyperion » pour actualiser la config.

En cas de problème

Vérifier que les ports SPI du Raspi sont activés via le fichier config.tx présent sur la carte SD du raspi.

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

 

 

Catégorie : RASPBERRY PI | Commenter
février 4

Ambilight avec OpenElec 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 (LibreElec fonctionne aussi) connecté en USB à un Arduino Uno (un nano devrait aussi fonctionner) 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
Le port tty peut être trouvé en débranchant/branchant l’Arduino et taper la commande : dmesg -s 1024 pour le Raspi.
Cela affiche les derniers log 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).