From ∏ node
Jump to: navigation, search


V-2 = Version expérimentale de la ∏-BOX / Experimental version of the ∏-BOX


  • Administration locale via un point d'accès wifi ou LAN / local admin panel through wifi access point or LAN
  • Version stabilisée utilisant PiFmRds / stabilized version using PiFmRds
  • Fonctionne sur raspberry pi 2 / works on raspberry 2 (tested and approved), shall work on version 1 and 3 (untested)
  • Auto online & offline mode
  • Inputs : stream, line input, local files
  • Ouputs : line out, FM, upstream
  • RDS !!

IMPORTANT ! THE SOUNDCARD IS MANDATORY ! be sure to check the hardware prerequiste !



  • icecast server needed for upstream !


Download image

MD5 = ed9d32b326a1f0782521f3295c3fc52


L'installation se fait soit en téléchargeant l'image ici, soit étape par étape en suivant les instructions ci après / you can either install the pbox V-2 step by step, via git clone (see below) or just download the full image here


la V-2 est basée sur raspbian release 8.0 jessie / the V-2 is based on raspbian release 8.0 jessie

  • une fois le système installé : tout d'abord / once jessie is installed
  sudo apt-get update
  sudo apt-get upgrade
  • commencer par changer user + password + ssh password avec raspi-config / start by changing your ssh password & username + password in raspi-config
  sudo raspi-config
  • télécharger git sox et libav-tools oggfwd / download git
  sudo apt-get install git sox libav-tools oggfwd
  • installer avec pip3 beautifullsoup 4 / install bs4 with pip3
  sudo pip3 install bs4
  • installer le package via git clone / install packages via git clone
  git clone http://git.rybn.org/rybn/pibox_V2.git   
  cd pibox_V2
  sudo python3 go.py
  • Si vous souhaitez administrer la PiBox via le wifi (nécessite une carte wifi sur la PiBox), il faut installer les librairies suivantes / extra libraries to install to control the pibox through wifi : hostapd & udhcpd
  sudo apt-get install hostapd udhcpd
  • configurer le fichier / then configure the file /etc/hostapd/hostapd.conf
  sudo nano /etc/hostapd/hostapd.conf

et ajouter / and add the following

  • configurer le fichier / configure the file /etc/default/hostapd
  sudo nano /etc/default/hostapd

et modifier la ligne suivante / "then modify the following line" :


pour / for

  • configurer le fichier / then, configure the file /etc/udhcpd.conf
  sudo nano /etc/udhcpd.conf

en indiquant / adding the following

  # The start and end of the IP lease block
  start   #default:
  end  #default:
  # The interface that udhcpd will use
  interface   wlan0       #default: eth0
  # If remaining is true (default), udhcpd will store the time
  # remaining for each lease in the udhcpd leases file. This is
  # for embedded systems that cannot keep time between reboots.
  # If you set remaining to no, the absolute time that the lease
  # expires at will be stored in the dhcpd.leases file.
  remaining   yes     #default: yes
  #opt    dns
  option  subnet
  opt router
  #opt    wins
  #option dns   # appened to above DNS servers for a total of 3
  #option domain  local
  option  lease   864000      # 10 days of seconds
  • configurer le fichier / configure the file /etc/default/udhcpd
  sudo nano /etc/default/udhcpd

puis trouver la ligne / then find the line


et la commenter / and comment it

  • changer les paramètres de wlan0 dans / then change wlan0 parameters in : /etc/network/interfaces
 sudo nano /etc/network/interfaces

et modifier la ligne manual pour static / modify the following

  #iface wlan0 inet manual
  #    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
  iface wlan0 inet static
  • entrer / add :
  sudo update-rc.d hostapd enable
  sudo update-rc.d udhcpd enable
  • modifier le rc.local
  sudo nano /etc/rc.local

et ajouter

  #!/bin/sh -e
  # rc.local 
  # This script is executed at the end of each multiuser runlevel.
  # Make sure that the script will "exit 0" on success or any other
  # value on error.
  # In order to enable or disable this script just change the execution
  # bits.
  # By default this script does nothing.
  # Print the IP address 
  _IP=$(hostname -I) || true
  if [ "$_IP" ]; then
    printf "My IP address is %s\n" "$_IP"
  /usr/bin/python3 /home/pi/pibox_V2/go.py 2> /home/pi/pibox_V2/error_log.txt >/dev/null &
  exit 0

  • puis éteindre et redémarrer / then shutdown et restart
  sudo shutdown -r now

7 fichiers sont fournis dans le package / package contains 7 crucial files :

  • le script python3 : go.py
  • l'application PiFMRDS : pi_fm_rds
  • la page html : configuration.html
  • le javascript pour la page html : configuration.js
  • la feuille de style css pour la page html : configuration.css
  • le fichier de configuration de la pibox : configuration.conf
  • on trouve en plus / there is also: README, jquery-1.10.2.min.js


La configuration de la PiBox V-2 se fait par l'intermédiaire d'une page html à l'adresse (configurable) sur une connexion wifi ad-hoc dont l'ESSID est 'pibox' (configurable) ou via l'adresse de la pibox sur le réseau ethernet. La requête de cette page html nécessite un login et un mot de passe : "pibox" (configurable) et "pnodeaccesspass" (configurable).

the PiBox V-2 administration is done through an html page, that you can access to the adress (can be changed) once connected to the wifi "pibox" (can be changed also) or through ethernet (all this can be set up and changed in the config file).

La requête de cette page html nécessite un login et un mot de passe : "pibox" (configurable) et "pnodeaccesspass" (configurable). / The page will ask for a login and password : "pibox" and "pnodeaccesspass" (can be edited)

Sur la page html de configuration, il y a trois parties / the administration html interface has 3 main panels

  • "Send a sound file to RPi"
  • "With Internet Access"
  • "Without Internet Access".



La partie "Send a sound file to RPi" permet d'envoyer un fichier à la RPi / the panel "Send a sound file to RPi" allows the user to upload a file to the V-2


La partie 'With Internet Access' permet de choisir une source en entrée / the "Without Internet Access" panel allows the user to select the input (one only)

  • fichiers (fichiers sonores) / files
  • entrée ligne (entrée carte son) / line in (sound card)
  • stream (flux sonore entrant en streaming). Nécessite d'entrer une adresse de stream. / stream : a stream adress is needed

et de choisir de une à trois sorties simultanées / choose between one and three simultaneous outputs

  • sortie ligne / line out
  • envoi d'un flux sonore en streaming. Nécessite d'entrer une adresse, un port, un point de montage, un mot de passe et un bitrate. / streaming : needs a icecast server, mountpoint, port, password
  • radiodiffusion FM. Nécessite d'entrer une fréquence (88 _> 108) / FM : choose the frequencuy of FM broadcast


La partie "Without Internet Access" permet de choisir une seule source en entrée parmi : / the part "Without Internet Access" own to choose one input option

  • fichiers (fichiers sonores) / soundfiles
  • entrée ligne (microphone) / line in (microphone)

et de choisir de une à deux sorties simultanées : /and choose several output modes

  • sortie ligne / line out
  • radiodiffusion FM. Nécessite d'entrer une fréquence / Broadcasting, need to enter the FM frequency

Un changement de configuration ou un changement d'état de la connexion à internet entraîne une reconfiguration à chaud du routage du son seulement si cela est nécessaire => plus de redémarrage nécessaire // V-1 / by saving parameters, a reconfiguration isautomated, you dont need to restart; idem if internet connexion changes. Not like V-1



  • pour faciliter l'accès à la P-box / to ease the wifi access


  • test de la stabilité, report des plantages, utilisation sur longue durée, etc ... / need reports on stability test, report bugs and some report on long term usage


  • implémentation de la connexion à l'admin serveur p-node (en plus de l'admin locale) / implementation of the pnode admin server panel


  • créer une page admin de la playlist / create an admin page of the playlist
  • accès à la page html en premier, sans mot de passe (sans revenir à la piratebox qui est trop lourd) / access to the file list adminstation on the html page
  • administration de la liste des fichiers de la playlist / admin panel of the files
    • insérer possibilité de supprimer un fichier / implement the possibuilty to erase a files
    • gérer mode de lecture : boucle, random, ones - mode de classement / playlist modes : shuffle / random etc ...
  • insérer accès la partie admin (avec mot de passse) / insert admin page at the bottom


  • ajouter input de la rtl sdr en plus / add rtl-sdr input

see here or here


"You can control PS (Program Name Service, or radio station name), RT (RadioText) and TA (Traffic Announcement flag) at run-time using a named pipe (FIFO). For this run Pi-FM-RDS with the -ctl argument"

   mkfifo rds_ctl
   sudo ./pi_fm_rds -ctl rds_ctl

Then you can send “commands” to change PS, RT and TA:

   cat >rds_ctl
   PS MyText
   RT A text to be sent as radiotext
   TA ON
   PS OtherTxt


and any other xp feature welcome on forks ! text to speech, tcpdumps, etc ... :))



Airtime is a simple, open source platform that lets you broadcast streaming radio on the web. https://www.sourcefabric.org/en/airtime/

To install it, install dependencies :

sudo apt-get install postgresql-9.4 python-virtualenv apache2 coreutils curl ecasound flac gzip libapache2-mod-php5 libcamomile-ocaml-data liquidsoap locales lsof monit mp3gain multitail patch php5-cli php5-curl php5-gd php5-json php5-pgsql php5-fpm php-apc php-pear pwgen python rabbitmq-server silan sudo sysv-rc tar unzip vorbisgain vorbis-tools zendframework icecast2
/!\ for debian jessie, you must install postgresql-9.4 and not postgresql without -9.4 else the calendar does'nt show up /!\

Clone the repository and launch the installer :

git clone https://github.com/sourcefabric/Airtime
cd Airtime
sudo ./install

Follow the configuration process, at the end, you'll see the IP adress of the pibox on wich you can connect with a browser to finish the configuration threw the proposed interface

Known Bugs

(clear when fixed)


  • daily reboot seems blocked sometimes by pifm

automatic switch to files when ping to google fail

  • there is a 5 seconds timeout to check if internet is ok, opening google.com web page, but on my pibox (b01), it keeps switching whereas internet is ok, I tried to put a 30 s timeout but it doesn't seem to have solve the pb