avril 14

Compilation croisée (cross-compiling ) du Kernel pour le PI et PI2

compiler le kernel directement sur le raspberry prend “un certain temps” , je me suis décidé a automatiser l’opération sur mon Pc ( sous debian jessie) .

1er temps récupération des outils , sources du kernel et comme j’utilise aussi des afficheur TFT en SPI , intégration des modules pour les afficheurs

je place tous ces elements dans /home/Raid5/partage/raspberry et je récupère la dernière branche (rpi-4.2.y actuellement 4.2-rc5)

les fichiers compilé seront placé dans /home/Raid5/partage/raspberry/build

note : depuis le 19/01/2015 les drivers TFT sont intégrés dans le noyeau .

cd /home/Raid5/partage/raspberry
mkdir build build/boot build/V1 build/V2
git clone https://github.com/raspberrypi/tools
git clone https://github.com/raspberrypi/linux --branch rpi-4.2.y
cd linux/drivers/video/fbdev
 
ajouter source "drivers/staging/fbtft/Kconfig"
a la dernière ligne du fichier Kconfig

*****************
make menuconfig pour ajouter les drivers fbtft
*****************

on vas editer le .bashrc pour ajouter le chemin du compilateur:
nano ~/.bashrc
on ajoute :/home/Raid5/partage/raspberry/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin ( si vous etes en 64 bits )
a export PATH

2eme temp compilation :
– Pour le Raspberry PI A, A+, B, B+ :

cd /home/Raid5/partage/raspberry/linux/
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcmrpi_defconfig

#pour activer les modules fbtft ( device driver / graphics support / frame buffer device /  Support for small TFT LCD display modules )
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig 
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/home/Raid5/partage/raspberry/build/V1 modules 
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/home/Raid5/partage/raspberry/build/V1 modules_install
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/home/Raid5/partage/raspberry/build/V1 firmware_install
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_PATH=/home/Raid5/partage/raspberry/build/V1 dtbs
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_PATH=/home/Raid5/partage/raspberry/build/V1 dtbs_install

– Pour le Raspberry PI2 :

cd /home/Raid5/partage/raspberry/linux/
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig

#pour activer les modules fbtft ( device driver / graphics support / frame buffer device /  Support for small TFT LCD display modules )
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig 
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/home/Raid5/partage/raspberry/build/V2 modules 
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/home/Raid5/partage/raspberry/build/V2 modules_install
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/home/Raid5/partage/raspberry/build/V2 firmware_install
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_PATH=/home/Raid5/partage/raspberry/build/V2 dtbs
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_PATH=/home/Raid5/partage/raspberry/build/V2 dtbs_install

Aprés un apéro prolongé et/ou plusieurs café , une fois terminé

cp arch/arm/boot/Image /home/Raid5/partage/raspberry/build/V1/boot/kernel.img

ou pour un Raspeberry PI2

cp arch/arm/boot/Image /home/Raid5/partage/raspberry/build/V2/boot/kernel7.img

les modules se trouvent dans

/home/Raid5/partage/raspberry/build/V1/lib/modules/4.2.0+

ou pour le Raspberry PI2

/home/Raid5/partage/raspberry/build/V2/lib/modules/4.2.0+v7

et un petit script qui fait tout ( a copier dans /home/Raid5/partage/raspberry/build/build.sh) :

 

#!/bin/sh
cd /home/Raid5/partage/raspberry/linux
# compilation pour le A, A+ , B , B+
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcmrpi_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- clean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/home/Raid5/partage/raspberry/build/V1 modules
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/home/Raid5/partage/raspberry/build/V1 modules_install
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/home/Raid5/partage/raspberry/build/V1 firmware_install
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_PATH=/home/Raid5/partage/raspberry/build/V1 dtbs
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_PATH=/home/Raid5/partage/raspberry/build/V1 dtbs_install
cp arch/arm/boot/Image /home/Raid5/partage/raspberry/build/boot/kernel.img
# compilation pour le PI2
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- clean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/home/Raid5/partage/raspberry/build/V2 modules
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/home/Raid5/partage/raspberry/build/V2 modules_install
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/home/Raid5/partage/raspberry/build/V2 firmware_install
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_PATH=/home/Raid5/partage/raspberry/build/V2 dtbs
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_PATH=/home/Raid5/partage/raspberry/build/V2 dtbs_install
cp arch/arm/boot/Image /home/Raid5/partage/raspberry/build/boot/kernel7.img

……………………. en cours d’écriture , la suite bientôt/V2

Catégorie : Software | Commentaires fermés sur Compilation croisée (cross-compiling ) du Kernel pour le PI et PI2
juillet 29

(Raspberry PI + PC linux + PC Windows ) x XBMC=Médiatheque Commune

Ayant déjà des PC Linux avec XBMC et une base données/fichiers commune , rajouter le pi dans ce réseau n’a pas posé de problème .
Par contre pour Windows c’est un un peu plus compliqué , en effet dans la base de données les chemins complets des fichiers audio/video sont stockés

Mon réseau :

– serveur linux : cerebra ( ip:192.168.0.252 ) , serveur de partage de fichiers et base de données MySql

– poste linux :  xbmc (ip : 192.168.0.53 , salon  ) , et xbmc2 (192.168.0.13 , chambre) , raspberry pi ( ip 192.168.0.170 , veranda) , blackbird (ip 192.168.0.4 , portable) , dreambox1 (ip : 192.168.0.50 ) , dreambox2 (ip : 192.168.0.52)

– poste Windows : phenix ( p 192.168.0.3, chambre )
je passe la partie installation serveur , postes xbmc linux , poste xbmc windows , je parlerai seulement des paramétrages  .
La seule chose a vérifier et d’installer la même version de XBMC sur chaque postes ( 14.2 dans mon cas ) .

Pensez Aussi a modifier dans tous le tuto mot_de_passe par votre mot de passe MySql et changer 192.168.0.252 par l’adresse de votre serveur fichiers/MySql

 

– Paramétrage Serveur :

a) Installer le serveur NFS , je suppose que MySql / PhpMyadmin est déjà installé

apt-get install nfs-kernel-server portmap

modification du fichier /etc/host.allow , ajouter :

portmap : 192.168.0.0/255.255.255.0

b) création des dossiers de partage dans dans mon cas :

/home/Raid5/NAS contient mes dossier ou je stocke films , serie TV et musique
/home/Raid5/Mediatheque : dossier vrac pas encore trié ou j’ai des films et Serie TV

on Édite le fichier /etc/exports

/home/Raid5/NAS 192.168.0.0/255.255.255.0(rw,all_squash,no_subtree_check,anonuid=1000,anongid=1000,sync)
/home/Raid5/Mediatheque 192.168.0.0/255.255.255.0(rw,all_squash,no_subtree_check,anonuid=1000,anongid=1000,sync)

Redémarrer le serveur.

– Parametrage 1Er poste Linux :

a )  Client NFS et montage partage
en étant connecté avec l’utilisateur xbmc en ssh :

mkdir -p /home/xbmc/nfsdata

en étant connecté avec l’utilisateur root en ssh :

mkdir /mnt/media1
chmod -R 777 /mnt/media1

Client NFS :

apt-get install nfs-common

modification /etc/fstab pour montage automatique des partages NFS :

# NFS sur serveur NAS
192.168.0.252:/home/Raid5/NAS /home/xbmc/nfsdata  nfs  rw,suid,nfsvers=3,hard,intr 0 0
192.168.0.252:/home/Raid5/Mediatheque /mnt/media1 nfs  rw,suid,nfsvers=3,hard,intr 0 0

attention depuis le passage a systemd sur les dernieres versions debian/ubuntu le fichier /etc/fstab est a modifier comme ci dessous :

# NFS sur serveur NAS
192.168.0.252:/home/Raid5/NAS /home/xbmc/nfsdata nfs noauto,x-systemd.automount,x-systemd.device-timeout=10,timeo=14,hard,intr,noatime 0 0
192.168.0.252:/home/Raid5/Mediatheque /mnt/media1 nfs noauto,x-systemd.automount,x-systemd.device-timeout=10,timeo=14,hard,intr,noatime 0 0

 

puis vérification que les montages fonctionnent :

mount -a

b) lancer une 1ere fois XBMC sur le poste linux , pour qu’il crée les paramètres par défaut  ( je suppose que l’utilisateur qui lance xbmc est xbmc , a changer si ce n’est pas le cas ) , sortir de xbmc et en ssh se connecter avec xbmc comme utilisateur

c) en etant connecté en ssh avec l’utilisateur xbmc

cd ~/.xbmc/userdata

effacer les fichier suivants ( si ils existent )  :  profiles.xml , sources.xml , advancedsettings.xml

supprimer le dossier Thumbnails puis création du lien qui va pointer sur le nouveau dossier

ln -s /home/xbmc/nfsdata/xbmcshared/Thumbnails Thumbnails

création sources.xml : nano   sources.xml

<sources>
    <programs>
        <default pathversion="1"></default>
    </programs>
    <video>
        <default pathversion="1"></default>
        <source>
            <name>Movies</name>
            <path pathversion="1">/home/xbmc/nfsdata/Videos/Movies/</path>
        </source>
        <source>
            <name>media1</name>
            <path pathversion="1">/mnt/media1/</path>
        </source>
        <source>
            <name>TV</name>
            <path pathversion="1">/home/xbmc/nfsdata/Videos/TV/</path>
        </source>
    </video>
    <music>
        <default pathversion="1"></default>
        <source>
            <name>Music</name>
            <path pathversion="1">/home/xbmc/nfsdata/Music/</path>
        </source>
    </music>
    <pictures>
        <default pathversion="1"></default>
        <source>
            <name>Pictures</name>
            <path pathversion="1">/home/xbmc/nfsdata/Pictures/</path>
        </source>
    </pictures>
    <files>
        <default pathversion="1"></default>
    </files>
</sources>

création profiles.xml : nano profiles.xml

<profiles>
    <lastloaded>0</lastloaded>
    <useloginscreen>false</useloginscreen>
    <autologin>-1</autologin>
    <nextIdProfile>1</nextIdProfile>
    <profile>
        <id>0</id>
        <name>Master user</name>
        <directory pathversion="1">special://masterprofile/</directory>
        <thumbnail pathversion="1"></thumbnail>
        <hasdatabases>true</hasdatabases>
        <canwritedatabases>true</canwritedatabases>
        <hassources>true</hassources>
        <canwritesources>true</canwritesources>
        <lockaddonmanager>false</lockaddonmanager>
        <locksettings>0</locksettings>
        <lockfiles>false</lockfiles>
        <lockmusic>false</lockmusic>
        <lockvideo>false</lockvideo>
        <lockpictures>false</lockpictures>
        <lockprograms>false</lockprograms>
        <lockmode>0</lockmode>
        <lockcode></lockcode>
        <lastdate></lastdate>
    </profile>
</profiles>

creation advancedsettings.xml : nano advancedsettings.xml

<advancedsettings>

<videodatabase>
   <type>mysql</type>
   <host>192.168.0.252</host>
   <port>3306</port>
   <user>root</user>
   <pass>mot_de_passe_sql</pass>
   <name>xbmc_video</name>
</videodatabase>

<musicdatabase>
   <type>mysql</type>
   <host>192.168.0.252</host>
   <port>3306</port>
   <user>root</user>
   <pass>mot_de_passe_sql</pass>
   <name>xbmc_music</name>
</musicdatabase>
<useddsfanart>true</useddsfanart>
<displayremotecodes>true</displayremotecodes>

</advancedsettings>

remplacer dans  <pass>mot_de_passe</pass>  par votre mot de passe MySql

d) copier dans /home/xbmc/nfsdata/Videos/TV quelques épisodes de séries

par défaut je crée un dossier par serie TV  par ex mkdir -p “/home/xbmc/nfsdata/Videos/TV/Doctor Who (2005)”

au niveau fichier ils sont tous de la forme: nom_de_la_serie.saisonxnumero_episode.le_nom_episode

par ex : Doctor.Who.(2005).1×01.Rose.avi.mkv  , Doctor.Who.(2005).7×13.Le.Nom.Du.Docteur.mkv

e) redemarrer le poste et verifier que tout fonctionne

– Parametrage autres postes Linux et Raspberry PI :

a) faire les etapes a) , b) , c) , e) de – Parametrage 1Er poste Linux 

b) relancer la machine , normalement affiche les même medias que pour le 1er Poste

– Parametrage Poste Windows :

a) installer xbmc , le lancer pour la 1ere Fois  et quitter .

b ) installer “client NFS pour windows” , panneau de config , programmes et fonctionnalité , activer ou désactiver des fonctionnalités windows

c) ajouter les lettres réseau dans poste de travail “connecter un lecteur réseau ”
Lecteur  :  T   ,  dossier : 192.168.0.252:/home/Raid5/Mediatheque
Lecteur :  U , dossier : 192.168.0.252:/home/Raid5/NAS

d) repérer dossier de stockage paramètres de xbmc  C:\Users\thierry\AppData\Roaming\XBMC

remplacer thierry par ne nom de l’utilisateur qui a ouvert la session .

et copier les fichiers xml de l’etape – Parametrage 1Er poste Linux c)
sauf le fichier advancedsettings.xml qui doit contenir

<advancedsettings>
<videodatabase>
   <type>mysql</type>
   <host>192.168.0.252</host>
   <port>3306</port>
   <user>root</user>
   <pass>mot_de_passe</pass>
   <name>xbmc_video</name>
</videodatabase>
<musicdatabase>
   <type>mysql</type>
   <host>192.168.0.252</host>
   <port>3306</port>
   <user>root</user>
   <pass>mote_de_passe</pass>
   <name>xbmc_music</name>
</musicdatabase>
<useddsfanart>true</useddsfanart>
<allowd3d9ex>true</allowd3d9ex>
 <pathsubstitution>
  <substitute>
    <from>special://profile/Thumbnails/</from>
    <to>NFS://192.168.0.252:/home/Raid5/NAS/xbmcshared/Thumbnails</to>
  </substitute>
   <substitute>
    <from>/home/xbmc/nfsdata/Music/</from>
    <to>U:\Music\</to>
  </substitute>
   <substitute>
    <from>/home/xbmc/nfsdata/Videos/</from>
    <to>U:\Videos\</to>
  </substitute>
 </pathsubstitution>
</advancedsettings>

pareil remplacer mot_de_passe par votre mot de passe MySql

 

Catégorie : Software, XBMC | Commentaires fermés sur (Raspberry PI + PC linux + PC Windows ) x XBMC=Médiatheque Commune
juillet 14

RTC et TFT 1.8″ SPI ( 128×160)

Nouveau projet , ajouter une horloge RTC et un ecran TFT 1.8″ (128×160) Attention petite Erreur sur le typon de la Rev 1.0 , Rev 1.1 en cours

– Schéma au format Eagle : Rev 1.0

– Fichier Gerber : Rev 1.0

– Vue 3D (Sketchup) : (en cours de Dev…)

– Installer l’image de base voir ‘Image de Base Raspberry PI’

– Activer l’horloge RTC DS1307 :

Editer /etc/modules et rajouter :

rtc_ds1307

Lancer i2cdetect -y 0 et i2cdetect -y 1 , pour savoir sur quel Bus se trouve l’horloge I2C ( adr 68) , puis Editer  /etc/rc.local

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device
sudo hwclock -s

ou

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
sudo hwclock -s

Vérifier l’heure/date du Raspberry en tapant: date , Pour assigner la date/heure courante a la RTC tapez : hwclock -w .

Pour vérifier tapez date et ensuite hwclock -r , a 1 sec près on devrait avoir la même date/heure

– activer les modules pour afficheurs TFT en fonction de son afficheur ( voir https://github.com/notro/fbtft/wiki) , en éditant /etc/modules :

# 1.8" 160x128
fbtft_device name=sainsmart18 rotate=90

# 2.2" 320x240
fbtft_device custom name=fb_ili9341  gpios=reset:25,dc:24,led:18 speed=16000000 rotate=90 bgr=1

Définir l’afficheur TFT par défaut  , Editez le fichier /boot/cmdline.txt et ajouter a la fin de la ligne : fbcon=map:10 fbcon=font:ProFont6x11

Editez /etc/inittab

#1:2345:respawn:/sbin/getty --noclear 38400 tty1
1:2345:respawn:/bin/login -f root tty1 </dev/tty1 >/dev/tty1 2>&1

remplacer root par votre utilisateur

pour tester l’afficheur copiez un fichier JPG dans /home et lancer

fbi /dev/fb1 -T 1 -noverbose -a /home/mon_fichier.jpg

l’image devrait s’afficher .Rebooter le système et après quelque secondes , l’afficheur vas fonctionner

 

[fbalbum url=https://www.facebook.com/media/set/?set=a.735748826484147.1073741846.459447040780995&amp;type=3]

Catégorie : Hardware | Commentaires fermés sur RTC et TFT 1.8″ SPI ( 128×160)
juillet 12

Pikeyd : Pi GPIO keyboard daemon i2c MCP3017

– Schéma au format Eagle Rev 1.0 16 touches , Rev 1.0 32 touches

– Fichier Gerber V16 touches , V32 touches

– Vue 3D (Sketchup) : pikey16 et pikey32

– cablage
cablage_16E cablage_32E

– Installer l’image de base voir ‘Image de Base Raspberry PI’

– sources du daemon pikeyd sur : https://github.com/mmoller2k/pikeyd

– lancement automatique du daemon (dans mon cas le daemon est situé dans /home/pikey) , editer le fichier ~/.bashrc

if [ -z "$SSH_CONNECTION" ]; then
/home/pikey/pikeyd -d
fi

– examples de configuration ( a copier dans ~/.pikeyd.conf ou /etc/pikeyd.conf)

fichier de configuration pour 16 touches ( version avec 1 seul mcp23017 )

# MCP23017 has two 8-bit banks
# interrupt GPIO4
XIO_A           4/0x20/MCP23017A
XIO_B           4/0x20/MCP23017B
# port A
KEY_LEFT        XIO_A:0
KEY_RIGHT       XIO_A:1
KEY_UP          XIO_A:2
KEY_DOWN        XIO_A:3
KEY_W           XIO_A:4
KEY_A           XIO_A:5
KEY_S           XIO_A:6
KEY_D           XIO_A:7
# port B
KEY_1           XIO_B:0
KEY_2           XIO_B:1
KEY_3           XIO_B:2
KEY_4           XIO_B:3
KEY_5           XIO_B:4
KEY_6           XIO_B:5
KEY_7           XIO_B:6
KEY_8           XIO_B:7

fichier configuration pour 2×16 touches ( version avec 2 mcp23017 )

# MCP23017 has two 8-bit banks
# interrupt GPIO4
XIO_A1          4/0x20/MCP23017A
XIO_B1          4/0x20/MCP23017B
XIO_A2          4/0x21/MCP23017A
XIO_B2          4/0x21/MCP23017B
# port1 A
KEY_0           XIO_A1:0
KEY_1           XIO_A1:1
KEY_2           XIO_A1:2
KEY_3           XIO_A1:3
KEY_4           XIO_A1:4
KEY_5           XIO_A1:5
KEY_6           XIO_A1:6
KEY_7           XIO_A1:7
# port1 B
KEY_8           XIO_B1:0
KEY_9           XIO_B1:1
KEY_0           XIO_B1:2
KEY_A           XIO_B1:3
KEY_B           XIO_B1:4
KEY_C           XIO_B1:5
KEY_D           XIO_B1:6
KEY_E           XIO_B1:7
# port2 A
KEY_F           XIO_A2:0
KEY_G           XIO_A2:1
KEY_H           XIO_A2:2
KEY_I           XIO_A2:3
KEY_J           XIO_A2:4
KEY_K           XIO_A2:5
KEY_L           XIO_A2:6
KEY_M           XIO_A2:7
# port2 B
KEY_N           XIO_B2:0
KEY_O           XIO_B2:1
KEY_P           XIO_B2:2
KEY_Q           XIO_B2:3
KEY_R           XIO_B2:4
KEY_S           XIO_B2:5
KEY_T           XIO_B2:6
KEY_ESC         XIO_B2:7

– Photos : Version 16 touches

PIKEY_16_001PIKEYD_16_002

Version 32 touches
PIKEYD_32_001PIKEYD32_PI

Catégorie : Hardware | Commentaires fermés sur Pikeyd : Pi GPIO keyboard daemon i2c MCP3017