Member of The Internet Defense League

Information Hacking

Une musicbox Rpi3 sans…musicbox

Sunday, June 12, 2016

C’est en voulant utiliser la distribution Musicbox, qui permet de faire un juke box [connecté à une plateforme de streaming musical] sur Rapsberrypi, que j’ai été amené à monter la bête moi-même. La distribution Musicbox est en réalité une Raspbian qui intègre un serveur Mopidy, et la version en ligne n’est pas compatible avec le jeu d’instruction 64bits de la toute récente Rpi3. Pas grave, il suffit d’installer la dernière Raspbian, le serveur Mopidy, l’extension Spotify, un client http, une carte son HifiBerry (un shield Rpi avec sortie mini-jack) et tout fonctionne à merveille. Au point qu’avec un petit ampli 2X12 Watts et des enceinte haute fidélité (100 W RMS 93db/W/M - 8 Ohms), la qualité du son est… bluffante.

Courte recette pour monter sa Musicbox sans se prendre la tête. Avec un compte Spotify payant (Premium à 9,99€)

Ingrédients :

— Une Rpi3
— Une carte son Hifiberry DAC+ Standard phone jack version, 29,90€
— Une Raspbian (la plus récente est basée sur Debian Jessie)
— Un serveur Mopidy
— L’extension Spotify
— Un [ou plusieurs] client http de streaming : Mopify et Musicbox webclient dans cette recette

Durée de la recette : 1h de préparation - 5 minutes de cuisson

La recette :

Installer Raspbian sur une carte HDSC
Booter la Rpi3
Se connecter en ssh [compte par défaut : pi / password par défaut : raspberry]

— Ajout de la clef PGP de mopidy

wget -q -O - https://apt.mopidy.com/mopidy.gpg | sudo apt-key add -

— Mettre à jour la liste de paquets

sudo wget -q -O /etc/apt/sources.list.d/mopidy.list https://apt.mopidy.com/jessie.list

— Installer Mopidy

sudo apt-get update
sudo apt-get install mopidy

— Mises à jour

sudo apt-get update
sudo apt-get dist-upgrade

— Possibilité de lister toutes les extensions possibles de Mopidy :

apt-cache search mopidy

— Installer l’extension Spotify

sudo apt-get install mopidy-spotify

Configuration de la bestiole :

Le fichier de config créé par défaut après l’installation se trouve dans le home de l’utilisateur pi :

~/.config/mopidy/mopidy.conf (ou bien /home/pi/.config/mopidy/mopidy.conf

La configuration de départ, générée par Modipy est assez simple et ressemble en général à ça :

[core]
cache_dir = $XDG_CACHE_DIR/mopidy
config_dir = $XDG_CONFIG_DIR/mopidy
data_dir = $XDG_DATA_DIR/mopidy
max_tracklist_length = 10000

[logging]
color = true
console_format = %(levelname)-8s %(message)s
debug_format = %(levelname)-8s %(asctime)s [%(process)d:%(threadName)s] %(name)sn %(message)s
debug_file = mopidy.log
config_file =

[audio]
mixer = software
mixer_volume =
output = autoaudiosink
buffer_time =

[proxy]
scheme =
hostname =
port =
username =
password =

Mon fichier mopidy.conf, après l’avoir modifié pour qu’on puisse se connecter dessus avec un navigateur en http [sur l’url musicbox.local:8080] ressemble à ça :

[core]
cache_dir = $XDG_CACHE_DIR/mopidy
config_dir = $XDG_CONFIG_DIR/mopidy
data_dir = $XDG_DATA_DIR/mopidy
max_tracklist_length = 10000

[logging]
color = true
console_format = %(levelname)-8s %(message)s
debug_format = %(levelname)-8s %(asctime)s [%(process)d:%(threadName)s] %(name)sn %(message)s
debug_file = mopidy.log
config_file =

[loglevels]
cherrypy = warning
pykka = info

[audio]
mixer = software
mixer_volume = 80
output = alsasink
buffer_time =

[proxy]
scheme =
hostname =
port =
username =
password =

[mopify]
enabled = true
debug = false

[musicbox_webclient]
enabled = true
musicbox = false
websocket_host =
websocket_port =
on_track_click = PLAY_ALL

[spotify_tunigo]
enabled = true
region =
sub_genres = true
cache_time = 3600

[spotify]
enabled = true
username = Drapher
password = ********
bitrate = 320
volume_normalization = true
private_session = false
timeout = 10
allow_cache = true
allow_network = true
allow_playlists = true
search_album_count = 20
search_artist_count = 10
search_track_count = 50
toplist_countries =

[mpd]
enabled = true
hostname = 0.0.0.0
port = 6600
password =
max_connections = 20
connection_timeout = 60
zeroconf = Mopidy MPD server on $hostname
command_blacklist =
listall
listallinfo
default_playlist_scheme = m3u

[http]
enabled = true
hostname = 0.0.0.0
port = 8080
static_dir =
zeroconf = $hostname

[stream]
enabled = true
protocols =
http
https
mms
rtmp
rtmps
rtsp
metadata_blacklist =
timeout = 5000

[m3u]
enabled = true
base_dir = $XDG_MUSIC_DIR
default_encoding = latin-1
default_extension = .m3u8
playlists_dir =

[softwaremixer]
enabled = true

[file]
enabled = true
media_dirs =
$XDG_MUSIC_DIR|Music
~/|Home
show_dotfiles = false
follow_symlinks = false
metadata_timeout = 1000

[local]
enabled = false

Le serveur quand on le lance, doit afficher ça :

INFO Starting Mopidy 2.0.0
INFO Loading config from builtin defaults
INFO Loading config from /home/pi/.config/mopidy/mopidy.conf
INFO Loading config from command line options
INFO Enabled extensions: mopify, spotify, mpd, http, stream, spotify_tunigo, m3u, softwaremixer, file, musicbox_webclient
INFO Disabled extensions: local
INFO Starting Mopidy mixer: SoftwareMixer
INFO Mixer volume set to 80
INFO Starting Mopidy audio
INFO Starting Mopidy backends: SpotifyTunigoBackend, SpotifyBackend, StreamBackend, M3UBackend, FileBackend
INFO Audio output set to “alsasink”
INFO Starting Mopidy core
INFO Logged in to Spotify in offline mode
INFO Starting Mopidy frontends: QueueManagerFrontend, MpdFrontend, HttpFrontend
INFO MPD server running at [::ffff:0.0.0.0]:6600
INFO HTTP server running at [::ffff:0.0.0.0]:8080
INFO Starting GLib mainloop

Stopper le service :

sudo service mopidy stop

Bref, jusque là, tout va bien, mais on ne peut toujours pas se connecter sur spotify pour faire jouer de la musique.

Installer le ou les clients http :

J’ai choisi d’installer deux clients http, le premier (musicbox client) parce que c’est celui de la distrib musicbox, et le second (mopify) parce qu’il est “beau”.

Installation de Mopify :

sudo pip install Mopidy-Mopify

Installation de Musicbox client :

pip install Mopidy-MusicBox-Webclient

La liste de tous les clients Mopidy est bien entendu sur le site de Mopidy

Là, ça fonctionne (en suivant mon fichier de conf, une fois le serveur mopidy lancé), il suffit de se connecter sur musicbox.local:8080 (en ayant bien entendu inscrit musicbox au préalable dans le fichier /etc/hostname et quitte à faire dans /etc/hosts)

clients-http-mopidy.png

Pour tester le son en sortie, il est possible de brancher un mini jack sur la sortie idoine de Rpi3 vers un ampli/enceintes, mais le son sera très mauvais, avec un volume faible. La carte son de la Rpi3 est franchement trop faiblarde.

Installation du shield Hifiberry DAC+ Standard phone jack version

Suffit de le pluger sur les GPIO de la Rpi3. Point.

hifiberry-dacplus-phone.png

Ensuite, la gestion des drivers est plutôt simple, très bien indiquée sur le site du vendeur

En gros :
— Retirer du fichier /etc/modules la ligne : snd_bcm2835
(pour que le driver de la Rpi3 soit désactivé)

— Editer /boot/config.txt et ajouter :
dtoverlay=hifiberry-dacplus

Créer le fichier /etc/asound.conf

Y insérer le code suivant :
pcm.!default {
type hw card 0
}
ctl.!default {
type hw card 0
}

— Rebooter la bête

— Tester avec la commande : aplay -l

Vous devriez avoir ça :

**** Liste des Périphériques Matériels PLAYBACK ****
carte 0: sndrpihifiberry [snd_rpi_hifiberry_dacplus], périphérique 0: HiFiBerry DAC+ HiFi pcm512x-hifi-0 []
Sous-périphériques: 1/1
Sous-périphérique #0: subdevice #0

C’est cuit ou presque.
Manque quand même que le serveur se lance tout seul au démarrage en tâche de fond, parce que sinon il y a obligation à le lancer à la mimine en ssh.

Le fichier de conf utilisé est celui de l’utilisateur pi, il faut donc le copier et remplacer le fichier mopidy.conf du démon mopidy :

Un copié-collé de votre mopidy.conf en sudo dans le /etc/mopidy/mopidy.conf ou bien un sudo cp ~/.config/mopidy/mopidy.conf /etc/mopidy/mopidy.conf

Pour installer mopidy en service système :

sudo systemctl enable mopidy

puis :

sudo dpkg-reconfigure mopidy

Le script du démon mopidy au démarrage se trouve dans /etc/init.d/mopidy

#!/bin/bash
# mopidy daemon
# chkconfig: 345 20 80
# description: mopidy daemon
# processname: mopidy
### BEGIN INIT INFO
# Provides: mopidy deamon
# Required-Start: $remote_fs $syslog $network
# Required-Stop: $remote_fs $syslog $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start mopidy daemon at boot time
# Description: Enable mopidy music server
### END INIT INFO

DAEMON_PATH=”/usr/bin/”

DAEMON=mopidy
DAEMONOPTS=”"

NAME=mopidy
DESC=”My mopidy init script”
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

case “$1” in
start)
echo “Starting Mopidy Daemon”
start-stop-daemon –start –chuid pi –background –exec /usr/bin/mopidy
–pidfile $PIDFILE –make-pidfile
— 2>/var/log/mopidy.log
;;
stop)
echo “Stopping Mopidy Daemon”
start-stop-daemon –stop –exec /usr/bin/mopidy –pidfile $PIDFILE
;;

restart)
$0 stop
$0 start
;;

*)
echo “Usage: $0 {start|stop|restart}”
exit 1
esac

Les droits :

sudo chmod +x /etc/init.d/mopidy

Redémarrage pour tester la bestiole : vous vous connectez avec un navigateur sur http://musicbox.local:8080

Sélectionnez le client de votre choix. Lancez un morceau…

Et là, si votre Hifiberry est branchée à un mini jack vers RCA, sur un ampli équipé d’enceintes de qualité, vous risquez d’être bluffé. Le Ogg vorbis de spotify à 320Kbps est bien meilleur qu’un MP3 de base, et tous vos potes pourront choisir les morceaux qu’ils veulent faire jouer. Soirées sympathiques en vue…

Petite note complémentaire : sur IOS, la résolution de nom fonctionne très bien, mais pas sur androïd. Il faut donc que les équipements sous android se connectent au client http… via l’IP. Un scanner réseau pour repérer l’IP de la Rpi reste la solution la plus simple. Ou bien installer un écran sur la Rpi3 qui renvoie son IP…

Créer un lieu de hacking au sens large ?

Sunday, September 7, 2014

Les lieux d’échanges et de partage se font rares, et pourtant l’émergence des hackerspaces, fablabs, et désormais, des tiers-lieux — est en train de contredire cette affirmation. Malgré tout, une difficulté importante revient autour de ces lieux de création et d’échanges, et celle-ci réside dans l’obligation de maintenir un état d’esprit particulier pour ne pas “basculer”.

Ne pas “basculer” ? Oui, ne pas basculer d’un espace de hacking vers celui du club de hobbyistes ou vers la pme…

La règle du MIT

Ce que ne comprennent pas toujours les acteurs ou promoteurs des fablabs eux-mêmes, surtout pour les plus novices, est l’orientation du lieu. Son état d’esprit, son organisation sociale, technique, logistique. Un fablab n’est pas seulement un lieu d’innovation. Un fablab n’est pas seulement un lieu avec des machines numériques qui peuvent fabriquer des objets. Un fablab n’est pas seulement un lieu pour prototyper. Un hackerspace n’est pas simplement la réunion de gens passionnés de hacking. Alors ? Qu’en est-il vraiment ?

Le principe d’origine du fablab est celui de l’éducation par les sciences et les techniques. La Fabfondation précise cet aspect central dans la constitution et l’organisation de ces lieux :

“A Fab Lab is also a platform for learning and innovation: a place to play, to create, to learn, to mentor, to invent. To be a Fab Lab means connecting to a global community of learners, educators, technologists, researchers, makers and innovators- -a knowledge sharing network that spans 30 countries and 24 time zones.”

Apprentissage, innovation, un lieu pour jouer, étudier, inspirer, inventer : les caractéristiques d’un fablab sont celles d’une nouvelle forme d’école, ou d’université populaire. Le principe central d’un fablab est celui d’une production collective, dans lieu ouvert au plus grand nombre, basé sur l’éducation au sens large, l’éducation populaire : comprendre, apprendre, échanger, partager, pratiquer, etc…

“Fab Labs  have to share a common set of  tools and processes.  

A prototyping facility is not the equivalent of a Fab Lab. A 3D printer is not a Fab Lab.

The idea is that all the labs can  share knowledge, designs, and collaborate across international borders. If I make something here in Boston and send you the files and documentation, you should be able to reproduce it there, fairly painlessly.  If I walk into a Fab Lab in Russia, I should be able to do the same things that I can do in Nairobi, Cape Town, Delhi, Amsterdam or Boston Fab Labs. The critical machines and materials : are identified in this listand there’s a list of open source software and freeware that we use online as well (embedded in Fab Academy modules here) But essentially it’s the processes and the codes and the capabilities that are important. So you want a laser cutter for 2D/3D design and fabrication, a high precision milling machine for making circuits and molds for casting, a vinyl cutter for making flexible circuits and crafts, a fairly sophisticated electronics workbench for prototyping circuits and programming microcontrollers, and if you can possibly find the funds, you’ll want the large wood routing machine for furniture and housing applications.  We are also testing fairly inexpensive, but robust and with fair resolution 3D printers—the most current favorite is listed in the inventory.”

La Fabfoundation stipule qu’installer une imprimante 3D ne fait en aucun cas un fablab, comme mettre en œuvre tous les outils pour faire du prototypage. Un ensemble de processus, de moyens techniques et une organisation particulière doivent être mis en œuvre. Et au delà, un état d’esprit pour faire “tourner la machine”

Un lieu qui doit permettre l’échange

Le hacking [dans sa conceptualisation originelle], est l’approche la plus adaptée aux lieux innovants tels que sont les fabLabs, hackerspaces ou tiers-lieux. Non pas par une pratique particulière dépendante d’outils spécifiques ou dédiés au hacking, mais par l’approche technique, sociale, scientifique des acteurs du lieu. Le hacking est une approche particulière, une pratique quotidienne différente : comprendre, étudier les choses pour les modifier, les détourner ou simplement les améliorer. Le hacking est lié au DiY de par sa vocation à permettre de faire soi-même, en cherchant des solutions pour parvenir à ses fins.

La bidouille est un savoir-faire, un savoir-être : si la pièce qui me manque pour finaliser mon objet est trop chère, n’existe pas, comment la réaliser moi-même ? J’ai envie d’un appareil qui n’est pas dans le commerce : je le fabrique. J’ai envie d’un mode de vie, je le conçois et je le maintiens. Je vérifie que ce serveur prévu pour afficher des informations précises peut afficher autre chose, je lui fais afficher autre chose. Cette approche du hacking amène de nombreuses pratiques et modes d’échanges. Via Internet, très longtemps, et désormais physiquement, dans des lieux dédiés.

L’aspect central de ces nouveaux lieux est l’échange. Pas simplement l’échange d’informations, de savoirs ou de compétences mais aussi l’échange social. Cet aspect social réhabilite une longue tradition abandonnée autour de lieux différents tels que les MJC, bal populaires, guinguettes, jardins ouvriers, places du village etc… Chacun peut venir dans ces lieux, sans aucun prérequis : ni d’argent, ni d’âge, ni de compétences, de diplômes, etc… Le tiers-lieu, le fablab permettent aux citoyens de se ré-emparer de la technique, d’outils, de concepts, et ouvrent à chacun des possibilités qui sont la plupart du temps soigneusement accaparées par des “spécialistes” ou des “experts”.

Ces lieux ne sont pas, et ne doivent pas être un repaire d’ingénieurs ou de super-techniciens, petits génies de l’électronique ou de l’informatique : ils sont la possibilité pour tous de faire, réaliser ensemble, de manière horizontale, dans un échange dégagé des contraintes du jugement scolaire, social, professionnel, etc… Ce que les hackers ont toujours fait.

Tiers-lieu : l’espace de tous les possibles

Pour finir, le concept de tiers-lieu se doit d’être un peu mieux explicité : leur développement est en plein essor, leur potentiel, passionnant. Ce sont avant tout des espaces de socialisation, de rencontres. Ils peuvent s’orienter, se “thématiser” plus fortement selon leurs instigateurs, mais ils restent avant tout des lieux pour faire ensemble et échanger. De la même manière que les hackerspaces ou les fablabs, aucune limitation financière, sociale, n’est censée exister dans ces espaces qui peuvent réunir de nombreuses choses : fablabs, hackerspace, lieu de formation, espace de co-working, cantine ouverte, atelier partagé, espace de réparation, de recyclage, bibliothèque, centre-ressource, etc…

La réussite de ces lieux de hacking au sens large repose sur une unique chose : l’état d’esprit. L’ouverture, le partage, l’échange, la collaboration, le DiY, l’innovation, tous ces concepts très en vogue n’ont de vocation que s’ils coexistent dans l’esprit du hacking : horizontalité, do-ocratie, méritocratie, échange entre pairs, curiosité, humilité, apprentissage permanent, et refus de la financiarisation du procédé.

Radio Reflets #1 et #2 : Crise économique surveillance globale des populations

Thursday, February 21, 2013

La première émission de Radio Reflets du mois de janvier, sur la crise économique et financière peut être écoutée ICI . La deuxième de Radio Reflets a eu lieu le 25 février de 19h à 20h40, avec pour thème la surveillance. L’invité était Jérome Thorel, auteur d’un ouvrage sur le sujet, “Attentifs, ensemble ! L’injonction au bonheur sécuritaire”. L’émission sera disponible sous peu sur Reflets, ICI .

La radio sur le net, qui creuse les sujets, c’est Radio Reflets

Friday, January 18, 2013

Le magazine Reflets.info est un mag’ d’info hacking, et nous avons décidé de passer une fois par mois en mode audio : un thème, des invités, des chroniques, revues de presse, sketches et musique, le tout en public et en direct : c’est radio reflets

La première, la beta, s’écoute : ici

La prochaine a lieu le 25 janvier 2013 à 19h à la cantine, retransmise en direct sur Reflets, avec pour thème : où en est la crise financière ?
Il y aura deux traders et analystes financiers : Olivier Delamarche et Eric Valatini, ainsi que le secrétaire du collectif des atterrés, économiste, maître de conférence à Paris 13 et chercheur (en économie post-keynesienne) : Dany Lang. Venez nombreux, écoutez, ça va être surprenant :-)

eXcentr13 : premier “politic hacklab” français

Wednesday, December 5, 2012

Il y avait les fablabs, les hackerspaces, les makelabs, mais il n’y avait pas de politic hacklab.

C’est désormais chose faite avec eXcentr13. Un site d’information doublé d’un hacklab collaboratif en ligne et des rencontres autour du hacking politique sur Paris à venir : tout est en place pour que l’émergence des nouvelles voies de fonctionnements au sein de la société se traduisent concrètement. eXcentr13 est un collectif de hackeristes décidés à démonter, creuser tout ce qui constitue la société, de l’économie au social, en passant par les institutions . Du hacking au sen large à suivre de près…