vendredi 22 avril 2016

Utiliser un écran DVI (SAMSUNG T220 par exemple...) avec un adpatateur HDMI -> DVI

Note : apartir de de "Jessie"  il semble qu'il ne soit plus nécessaire d'effectuer cette manip, la detection est automatique !


Acheter un cable HDMI vers DVI, par exemple :





$ sudo nano /boot/config.txt

gpu_mem=64
dtparam=i2c=on,i2s=on
hdmi_force_hotplug=1
hdmi_drive=1

force_turbo=1
dtoverlay=hifiberry-dacplus
disable_overscan=0
arm_freq=800
core_freq=250
sdram_freq=450
over_voltage=2

$ sudo reboot

et voila !




Le raspberry utilise le meilleur mode de l'écran, ici 1650 x 1080 (chouette non?)


mercredi 20 avril 2016

[EN COURS] Make a jukebox from scratch

En cours... de rédaction

 

Make a jukebox from scratch

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo reboot


$ uname -a
Linux xxxxxx 4.1.19+ #858 Tue Mar 15 15:52:03 GMT 2016 armv6l GNU/Linux

$ raspi-config

do what you want to , but enable device tree...and reboot


$ aplay -l

**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0



Only onboard sound device is listed

$ sudo nano /boot/config.txt
At the end of file :

# Enable audio (loads snd_bcm2835)
dtparam=audio=on
start_x=0
gpu_mem=0
dtparam=spi=on
#device_tree=


Replace by :

# Enable audio (loads snd_bcm2835)
dtparam=audio= 
dtoverlay=hifiberry-dacplus

# Raspi Config add
start_x=0
gpu_mem=0
dtparam=spi=on
#device_tree=


 $ sudo reboot
 $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_dacplus], device 0: HiFiBerry DAC+ HiFi pcm512x-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Only Hat DAC board sound device is listed, here an "Hifiberry Dac+" (pcm512x DAC family)
Connect your DAC to your HiFi amp (normaly: no pop no crack no noise), adjust HiFi amp volume to 1/10.


$ sudo apt-get update
$ sudo apt-get install mpd

Music Player Deamon is now installed...


$ sudo -H -u mpd alsamixer













Make your settings and then "Escape" to quit.




[EN COURS] Pouvoir régler alsaequal depuis le poste utilisant mpc

En cours... de rédaction

But:

Pouvoir ajuster l’égaliser audio depuis le client contrôlant mpd. 

Méthode:

On va modifier une commande de mpd afin que ce soit lui qui gère alsaequal. Pour ce faire il nous faudra recompiler les sources de mpd après y avoir fait quelques petites modifications.

Prérequis :

1- Avoir un mpd opérationnel avec alsaequal.

2- Installer l’environnement de développement.

Système à jour:
sudo apt-get update
sudo apt-get upgrade

 

Re-builder mpd:

Obtenir les sources:

Ici c'est la version 0.19.6, utiliser la dernière version

wget http://www.musicpd.org/download/mpd/0.19/mpd-0.19.6.tar.xz

tar xf mpd-0.19.6.tar.xz

cd mpd-0.19.6

Récupérer les librairies indispensable (ou pas):

sudo apt-get install libadplug-dev libao-dev libasound2-dev libaudiofile-dev libavahi-client-dev libavcodec-dev libavformat-dev libcurl4-gnutls-dev libfaad-dev libflac-dev libfluidsynth-dev libgme-dev libid3tag0-dev libjack-jackd2-dev libmad0-dev libmikmod2-dev libmodplug-dev libmp3lame-dev libmpcdec-dev libmpdclient-dev libmpg123-dev libopenal-dev libopus-dev libpulse-dev libresid-builder-dev libroar-dev libsamplerate0-dev libshout3-dev libsidplay2-dev libsidutils-dev libsndfile1-dev libsqlite3-dev libvorbis-dev libwavpack-dev libwildmidi-dev libyajl-dev

Générer le fichier de configuration du build:

./configure --enable-database --enable-libmpdclient --enable-upnp --enable-alsa --enable-audiofile --enable-curl --enable-nfs --enable-smbclient --enable-ffmpeg --enable-flac --enable-id3 --enable-soundcloud --enable-lame-encoder --enable-mad --enable-mpg123 --enable-pipe-output --enable-pulse --enable-recorder-output --enable-shout --enable-vorbis --enable-wave-encoder --enable-wavpack --enable-sqlite

Builder:

make

Installer le binaire:

sudo make install

-----------------------------------
Créer un lien vers le nouveau mpd

sudo /etc/init.d/mpd stop
cd /usr/bin
sudo mv mpd old_distro_mpd
sudo ln -s /usr/local/bin/mpd ./mpd
ls -ls mpd

Doit afficher:
0 lrwxrwxrwx 1 root root xx xxx  x xx:xx mpd -> /usr/local/bin/mpd

Copier votre fichier de configuration mpd:


sudo /etc/mpd.conf ~/mpd/mpd/mpd.conf
sudo chown -c tonnom ~/mpd/mpd/mpd.conf
sudo chgrp -c tongroupe ~/mpd/mpd/mpd.conf

Relancer le deamon

sudo /etc/init.d/mpd start

Lancer mpd avec le fichier de conf copié

sudo /usr/sbin/mpd ~/mpd/mpd/mpd.conf

-----------------------------------

#!/bin/bash

function seteq()
{
    amixer -D equal -q set '01. 31 Hz' $1
    amixer -D equal -q set '02. 63 Hz' $2
    amixer -D equal -q set '03. 125 Hz' $3
    amixer -D equal -q set '04. 250 Hz' $4
    amixer -D equal -q set '05. 500 Hz' $5
    amixer -D equal -q set '06. 1 kHz' $6
    amixer -D equal -q set '07. 2 kHz' $7
    amixer -D equal -q set '08. 4 kHz' $8
    amixer -D equal -q set '09. 8 kHz' $9
    amixer -D equal -q set '10. 16 kHz' ${10}
}

#function Speakers() { seteq 80 70 65 60 60 60 60 80 80 80 }
#function Disable()  { seteq 66 66 66 66 66 66 66 66 66 66 }
#function Notebook() { seteq 00 75 75 70 50 50 60 70 85 85 }

    case $1 in
        default)    seteq 66 66 66 66 66 66 66 66 66 66;;
        start)        seteq 70 70 60 50 45 50 60 70 80 70;;
        perfect)    seteq 60 65 75 70 65 55 60 65 70 65;;

        *) echo -e "seteq -- set alsaequal presets
    Presets:
        default)    seteq 66 66 66 66 66 66 66 66 66 66
        start)        seteq 70 70 60 50 45 50 60 70 80 70
        perfect)    seteq 60 65 75 70 65 55 60 65 70 65";;
   
    esac


vendredi 15 avril 2016

Monter manuellement les clés et disques USB

... pour éviter la valse des points de montages ...


Après reboot du raspberry, les points de montages peuvent changer. Une clé USB peut se retrouver à la place d'un disque dur, etc... Pour éviter ces changements, on peut fixer les points de montages en modifiant fstab avec l'utilisation des UUID.

Lister les identifiants des disques ou clés:

$ sudo ls -l /dev/disk/by-uuid

total 0
lrwxrwxrwx 1 root root 10 Jan  1  1970 0061-CDB9 -> ../../sda1
lrwxrwxrwx 1 root root 10 Jan  1  1970 5daed2dc-32cb-42f2-8edc-8a81358e57ec -> ../../sdb1
lrwxrwxrwx 1 root root 15 Jan  1  1970 ADC5-0D3A -> ../../mmcblk0p1
lrwxrwxrwx 1 root root 15 Apr 15 18:08 fd44c0ef-652e-48f8-8d31-a77b951d2226 -> ../../mmcblk0p3


Noter les identifiants (dans mon cas : 0061-CDB9 et 5daed2dc-32cb-42f2-8edc-8a81358e57ec)

Afficher la liste des points de montages:

$ mount -l

Repérez les points de montages USB:
...
/dev/sda1 on /mnt/USB3 type vfat (rw,nodev,noexec,noatime,nodiratime)
/dev/sdb1 on /mnt/USB type ext3 (rw,nodev,noexec,noatime,nodiratime)

...

Editez votre fstab:

$ sudo nano /etc/fstab

Ajouter et modifier sda1, sdb1 en fonction de votre configuration..

UUID=
0061-CDB9 /mnt/USB auto rw,nodev,nofail,noexec,noatime,nodiratime,iocharset=iso8859-1 0 1
UUID=
5daed2dc-32cb-42f2-8edc-8a81358e57ec/mnt/USB2 auto rw,nodev,nofail,noexec,noatime,nodiratime 0 1

J'ai aussi choisi "auto" comme type de format, raspbian se débrouille tout seul...
Et puis aussi penser à ajouter "iocharset=iso8859-1" pour les partition en vfat pour préserver les noms de fichiers avec des caractères accentués.


vendredi 8 avril 2016

Changer l'adresse MAC du Raspberry

Changer l'adresse MAC du Raspberry...
Utile si plusieurs bestioles sont sur le même réseau!

$ sudo nano /etc/network/interfaces

Ajouter "hwaddress ether xx:xx:xx:xx:xx:xx" après la directive iface de l'interface eth0
Changer xx:xx:xx:xx:xx:xx par la valeur qui vous convient.

On obtient quelque chose comme :

auto eth0
iface eth0 inet dhcp
      hwaddress ether EE:77:69:A2:1D:45

Régler le volume sonore de MPD an démarrage.

Régler le volume sonore de MPD an démarrage.

Au lancement de MPD le volume peut être à fond si il n'a pas de valeur par défaut configurée, et on obtient un "BROAAAARROOORROROOOAAAAAAA" dans les haut parleurs, sans compter qu'on peut griller l'étage de sortie de l'ampli, c'est très désagréable.
Alors voici la petite manip a faire pour mettre un niveau raisonnable au démarrage:

$ sudo amixer controls

Avec un DAC, on obtient quelque chose du genre:

numid=6,iface=MIXER,name='DSP Program'
numid=3,iface=MIXER,name='Analogue Playback Boost Volume'
numid=2,iface=MIXER,name='Analogue Playback Volume'
numid=10,iface=MIXER,name='Auto Mute Mono Switch'
numid=11,iface=MIXER,name='Auto Mute Switch'
numid=8,iface=MIXER,name='Auto Mute Time Left'
numid=9,iface=MIXER,name='Auto Mute Time Right'
numid=7,iface=MIXER,name='Clock Missing Period'
numid=5,iface=MIXER,name='Deemphasis Switch'
numid=4,iface=MIXER,name='Digital Playback Switch'
numid=1,iface=MIXER,name='Digital Playback Volume'
numid=20,iface=MIXER,name='Max Overclock DAC'
numid=19,iface=MIXER,name='Max Overclock DSP'
numid=18,iface=MIXER,name='Max Overclock PLL'
numid=16,iface=MIXER,name='Volume Ramp Down Emergency Rate'
numid=17,iface=MIXER,name='Volume Ramp Down Emergency Step'
numid=12,iface=MIXER,name='Volume Ramp Down Rate'
numid=13,iface=MIXER,name='Volume Ramp Down Step'
numid=14,iface=MIXER,name='Volume Ramp Up Rate'
numid=15,iface=MIXER,name='Volume Ramp Up Step'

numid identifie chaque réglages du mixer.

Dans le cas présent, et la plus part du temps le volume général est identifier en "1" (dans mon cas : 'Digital Playback Volume')

la commande suivante indique les paramètres:

$ sudo amixer cset numid=1

numid=1,iface=MIXER,name='Digital Playback Volume'
  ; type=INTEGER,access=rw-
-R-,values=2,min=0,max=255,step=0
  : values=170,170
  | dBscale-min=-103.50dB,step=0.50dB,mute=1

Le volume peut ici être réglé de 0 à 255, je test le volume désiré en jouant un morceau de musique et en exécutant la commande suivante avec des valeurs de volumes différentes:

$ sudo amixer cset numid=1 170
$ sudo amixer cset numid=1 150
$ sudo amixer cset numid=1 165
etc...

Ok, le volume me convient, j'enregistre les paramètres par défaut avec la commande:

$ sudo alsactl store

Et voila, un reboot, et ça doit être bon.

Vous pouvez ajuster aussi certains autres paramètres comme le 'Analogue Playback Boost Volume', ou le 'Analogue Playback Volume' qui peuvent être mis à 0 par défaut, etc...

Un égaliseur graphique pour MPD sur Raspberry

On peut nettement améliorer la qualité d'écoute en utilisant un égaliseur graphique.
L'article explique comment installer un égaliseur graphique à 10 bandes sur raspberry.


Un lecteur de musique dématérialisé pour moins de 100€

Un lecteur de musique dématérialisé pour 100€ (ou presque) :
 - Raspberry Py B+ 31€
 - Carte micro SD 16Go (ou moins...) 9€
 - Clé USB 64Go (Ex.:SanDisk Ultra Fit qui est minuscule pas trop chère et performante) 30€
 - Alimentation micro USB 9€
 - DAC (Ex.: Audiophonics PCM5122) 30€

Distribution moode http://moodeaudio.org/
Lit pratiquement tous les formats (basé sur mpd http://www.musicpd.org/ )
Sortie jusqu'a 24 bits, 192 KHz (théoriquement 32 bits, 384 KHz)
Interface web compatible smartphone
Interface standard MPD (y en a plein, pour windows, linux, mac...)



Setup a raspberry seed box from scratch

Setup a raspberry torrent box from scratch
with transmission - samba (optimized for speed)- nginx for ssl access to transmission webgui :

!!! ScRaTcH !!! (buy raspberry, SD card, USB key, power supply, download install raspbian on SD, etc...)

Update your PI


sudo raspi-config
    do_what_you_want (server name!)

sudo apt-get update
sudo apt-get upgrade

Prepare folders


sudo mkdir /media/key
sudo mkdir /media/key/complete
sudo mkdir /media/key/incomplete
sudo mkdir /media/key/watch
sudo chmod 775 -R /media/key
sudo fdisk -l
sudo mount -t auto /dev/sda1 /media/key
sudo nano /etc/fstab

   /dev/sda1       /media/key      auto    noatime         0       0


Setup users


sudo useradd nas -m -G users
sudo passwd nas

Install Samba


sudo apt-get install samba
sudo smbpasswd -a nas
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.old
sudo nano /etc/samba/smb.conf
   [global]
       security = user
       workgroup = WORKGROUP
       server string = %h server
       netbios name = your_server_name

        socket options = IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072 TCP_NODELAY
        min receivefile size = 2048
        use sendfile = true
        aio read size = 2048
        aio write size = 2048
        write cache size = 1024000
        read raw = yes
        write raw = yes
        getwd cache = yes
        oplocks = yes
        max xmit = 32768
        dead time = 15
        large readwrite = yes

   [NAS]
       comment = NAS
       path = /media/key
       valid users =@users
       force group = users
       create mask = 0660
       directory mask = 0771
       read only = no

sudo /etc/init.d/samba start
sudo apt-get install transmission-daemon
sudo service transmission-daemon stop
sudo usermod -a -G debian-transmission nas
sudo chgrp -R debian-transmission /media/key
sudo chmod -R 775 /media/key
sudo mv /etc/transmission-daemon/settings.json /etc/transmission-daemon/settings.json.old
sudo nano /etc/transmission-daemon/settings.json
        "download-dir": "/media/key/complete",
        "incomplete-dir": "/media/key/incomplete",
        "rpc-username": "WHAT_YOU_WANT",
        "rpc-password": "WHAT_YOU_WANT",

sudo service transmission-daemon start

Install nginx


sudo apt-get install nginx
sudo mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.old

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

server {
       listen 80;
       server_name xxx;
       return 301 https://$host$request_uri;
}

server {
       listen 443 ssl;
       server_name xxx;
       access_log off;

       ssl_certificate /etc/nginx/ssl/nginx.crt;
       ssl_certificate_key /etc/nginx/ssl/nginx.key;

       location / {
               proxy_pass http://127.0.0.1:9091/transmission/web/;
               proxy_set_header Connection "";
               proxy_set_header Host $host;
               proxy_set_header X-Real-IP $remote_addr;
               proxy_pass_header X-Transmission-Session-Id;
       }

       location /rpc {
               proxy_pass http://127.0.0.1:9091/transmission/rpc;
               proxy_set_header Connection "";
               proxy_set_header Host $host;
               proxy_set_header X-Real-IP $remote_addr;
               proxy_pass_header X-Transmission-Session-Id;
       }
}

Or with http redirection to https:

server {
       listen 80;
       access_log off;
       server_name xxx;
       return 301 https://$host$request_uri;
}

server {
        listen 443 ssl;
        server_name xxx;
        access_log off;
        ssl_certificate /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key /etc/nginx/ssl/nginx.key;
        location / {
               proxy_pass http://127.0.0.1:9091/transmission/web/;
               proxy_set_header Connection "";
               proxy_set_header Host $host;
               proxy_set_header X-Real-IP $remote_addr;
               proxy_pass_header X-Transmission-Session-Id;
               }
        location /rpc {
               proxy_pass http://127.0.0.1:9091/transmission/rpc;
               proxy_set_header Connection "";
               proxy_set_header Host $host;
               proxy_set_header X-Real-IP $remote_addr;
               proxy_pass_header X-Transmission-Session-Id;
               }
        }

Build SSL keys


sudo mkdir -p /etc/nginx/ssl
sudo openssl req -x509 -nodes -days 36500 -newkey rsa:4096 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
sudo service nginx restart


Fix IP address


Optionl

Use fixed ip address

sudo nano /etc/dhcpcd.conf

# at the bottom of the file....
 interface eth0
 static ip_address=192.168.1.100/24
 static routers=192.168.1.254
 static domain_name_servers=8.8.8.8