RaspberryPI - Kodi

Posted on sam. 02 mai 2015 in Projets

Présentation du projet

J'ai un Raspberry PI B première génération sur lequel j'ai installé il y à longtemps ArchArm et XBMC le tout permettant de visionner sur ma télé les données de mon NAS.
Je vous l'accorde j'ai un télévision SAMSUNG avec SmartHUB mais voila je l'ai interdit sur le réseau, pour par exemple un micro qui fonctionne en permanence et que l'on ne peut pas arrêter, un butineur de très mauvaise qualité, bref SmartHUB je m'en passe.

Dernièrement le Raspberry PI a pris un petit coup de jeune :-) la version 2 B avec son nouveau SOC est vraiment intéressant à un prix humm.... 45€ avec un bloc alim 2A.

Pré-requis

  • un raspberry PI 2B
  • un bloc alimentation de 5V 2A
  • une carte microSD 8 Go
  • un câble Ethernet
  • un dongle USB WI-FI
  • un clavier sans fil
    clavier.png

Réalisation du projet

Préparation de la carte microSD

Je vais utiliser mon portable sous Arch pour préparer la carte microSD. Je pars du principe que vous avez les connaissance minimum pour correctement identifier votre carte microSD.

    fdisk -l

me permet de trouver ma carte

    Disque /dev/mmcblk0 : 7,4 GiB, 7948206080 octets, 15523840 secteurs
    Unités : secteur de 1 × 512 = 512 octets
    Taille de secteur (logique / physique) : 512 octets / 512 octets
    taille d'E/S (minimale / optimale) : 512 octets / 512 octets
    Type d'étiquette de disque : dos
    Identifiant de disque : 0x417ee54b

donc vous remplacerez /dev/mmcblk0 par l'identifiant de votre carte.

Ce que nous allons faire : * Création d'une partition primaire de 100M au format FAT * Création d'une partition prenant tout la place disponible restante au format Linux

Voila le déroulé des actions à effectuer :

    phil@asus~ $sudo fdisk /dev/mmcblk0

    Bienvenue dans fdisk (util-linux 2.26.1).
    Les modifications resteront en mémoire jusqu'à écriture.
    Soyez prudent avant d'utiliser la commande d'écriture.

Commande (m pour l'aide) : o

    Création d'une nouvelle étiquette pour disque de type DOS avec identifiant de disque 0xbfab1046.

Commande (m pour l'aide) : p

    Disque /dev/mmcblk0 : 7,4 GiB, 7948206080 octets, 15523840 secteurs
    Unités : secteur de 1 × 512 = 512 octets
    Taille de secteur (logique / physique) : 512 octets / 512 octets
    taille d'E/S (minimale / optimale) : 512 octets / 512 octets
    Type d'étiquette de disque : dos
    Identifiant de disque : 0xbfab1046

Commande (m pour l'aide) : n

    Type de partition
       p   primaire (0 primaire, 0 étendue, 4 libre)
       e   étendue (conteneur pour partitions logiques)

Sélectionnez (p par défaut) : p
Numéro de partition (1-4, 1 par défaut) : 1

    Premier secteur (2048-15523839, 2048 par défaut) : 

Dernier secteur, +secteurs ou +taille{K,M,G,T,P} (2048-15523839, 15523839 par défaut) : +100M

    Une nouvelle partition 1 de type « Linux » et de taille 100 MiB a été créée.

Commande (m pour l'aide) : t

    Partition 1 sélectionnée

Type de partition (taper L pour afficher tous les types) : c

    Type de partition « Linux » modifié en « W95 FAT32 (LBA) ».

Commande (m pour l'aide) : n

    Type de partition
       p   primaire (1 primaire, 0 étendue, 3 libre)
       e   étendue (conteneur pour partitions logiques)

Sélectionnez (p par défaut) : p
Numéro de partition (2-4, 2 par défaut) : 2

    Premier secteur (206848-15523839, 206848 par défaut) : 
    Dernier secteur, +secteurs ou +taille{K,M,G,T,P} (206848-15523839, 15523839 par défaut) : 

    Une nouvelle partition 2 de type « Linux » et de taille 7,3 GiB a été créée.

Commande (m pour l'aide) : w

~~~~{console}
La table de partitions a été altérée. Appel d'ioctl() pour relire la table de partitions. Synchronisation des disques.

Voila maintenant la carte est correctement partitionnée.

~~~~{console}
    fdisk -l

...

    Disque /dev/mmcblk0 : 7,4 GiB, 7948206080 octets, 15523840 secteurs
    Unités : secteur de 1 × 512 = 512 octets
    Taille de secteur (logique / physique) : 512 octets / 512 octets
    taille d'E/S (minimale / optimale) : 512 octets / 512 octets
    Type d'étiquette de disque : dos
    Identifiant de disque : 0xbfab1046

    Périphérique   Amorçage Début      Fin Secteurs Taille Id Type
    /dev/mmcblk0p1            2048   206847   204800   100M  c W95 FAT32 (LBA)
    /dev/mmcblk0p2          206848 15523839 15316992   7,3G 83 Linux

Les commandes suivantes s'effectuerons dans une console root

Formatage de la première partition en FAT

    mkfs.vfat /dev/mmcblk0p1

Création d'un répertoire

    mkdir boot

Montage de la partition

    mount /dev/mmcblk0p1 boot

Formatage de la deuxième partition en EXT4

    mkfs.ext4 /dev/mmcblk0p2

Création d'un répertoire

    mkdir root

Montage de la partition

    mount /dev/mmcblk0p2 root

Téléchargement du systeme d'exploitation

    wget http://archlinuxarm.org/os/ArchLinuxARM-rpi-2-latest.tar.gz

On dé-tar et l'on pose cela sur root

    bsdtar -xpf ArchLinuxARM-rpi-2-latest.tar.gz -C root

On s'assure que toutes les données dans les tampons en mémoire sont inscrite sur le disque.

    sync

Déplacement des fichiers de démarrage sur la première partition:

    mv root/boot/* boot

Démontage des partitions

    umount boot root

Insérer la microSD dans le Raspberry Pi, connecter le câble Ethernet, et l'alimentation 5V.

A partir de là le Raspberry Pi boot, il vous faut trouver quelle IP a été donnée.

    sudo nmap -v -sn 192.168.1.0/24

et la réponse se trouve dans la liste

    Nmap scan report for 192.168.1.57
    Host is up (0.0069s latency).
    MAC Address: B8:27:EB:E9:BE:E8 (Raspberry Pi Foundation)

lancer une connexion ssh

    ssh root@192.168.1.57

le mot de passe est 'root'

Configuration de ArchARM

Mise à jour du système

    pacman -Syu

Dans mon cas la mise à jour a installé un nouveau kernel on reboot

    reboot

changement du mot de passe root

    passwd

fuseau horaire

    date
    Sat May  2 19:20:16 UTC 2015
    rm localtime
    ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime
    date
    Sat May  2 21:21:09 CEST 2015

Création d'un utilisateur kodi

    useradd -m -g users -G wheel,storage,audio,video -c kodi -s /bin/bash kodi

et on s'occupe aussi de son mot de passe

    passwd kodi

supprimer l'acces root via ssh

Bon dois je le faire ou pas, je suis sur mon reseau local, le firewall du routeur ne permet pas l'accès au port 22.

dans le fichier /etc/ssh/sshd_conf et remplacer

    #PermitRootLogin yes

par

    PermitRootLogin no

sudo

    pacman -S sudo

puis on configure l'accès

    export EDITOR=nano;
    visudo

on supprimera le commentaire

    ## Same thing without a password
    %wheel ALL=(ALL) NOPASSWD: ALL

quelques outils.

    pacman -S mc
    pacman -S gst-plugins-base gst-plugins-ugly gst-libav gst-plugins-good gst-plugins-bad ffmpeg
    pacman -S alsa-firmware alsa-utils alsa-oss 

Réseau

L'accès s'effectue en Wi-Fi sur mon réseau local. Je passe en IP fixe cela permet de gagner quelques secondes lors du boot.

Installation du Wifi

Pour gérer la connexion j'utilise netctl, j'ai besoin d'installer

    pacman -S dialog dhclient wpa_supplicant ifplugd ifenslave

création du fichier de configuration

    nano /etc/netctl/wifi-maison-static

puis on modifie comme suit

    Description='Connexion WiFi maison static'
    Interface=wlan0
    Connection=wireless

    Security=wpa
    ESSID='votre ESSID'
    Key='votre passphrase'

    IP=static
    Address='192.168.1.35/24'
    Gateway='192.168.1.1'
    DNS=('192.168.1.1')

    # Uncomment this if your ssid is hidden
    #Hidden=yes

On test la connexion

    netctl start wifi-maison-static

s'il n'y a pas de retour d'erreur, pour le démarrage au boot

    netctl enable wifi-maison-static

Installation de Kodi

    pacman -S kodi-rbp
    pacman -S polkit udisk upower lsb-release

Création du fichier /etc/systemd/system/xbmc.service qui va nous permettre de démarrer kodi lors du boot.

    [Unit]
    Description = Starts an instance of KODI
    After = remote-fs.target

    [Service]
    User = kodi
    Group = kodi
    Type = simple
    ExecStart = /usr/bin/kodi-standalone -l /run/lirc/lircd
    Restart = on-failure

    [Install]
    WantedBy = multi-user.target

puis

    systemctl enable kodi

Il ne reste plus qu'a paramétrer kodi pour l'accès au partage réseau, et modifier les preferences de fonctionnement.

Pilotage de kodi

un clavier

Le petit clavier est reconnu sans problème

    dmesg 

me donne

    [  643.719669] usb 1-1.3: new low-speed USB device number    6 using dwc_otg
    [  643.850496] usb 1-1.3: New USB device found, idVendor=0c40, idProduct=8000
    [  643.857578] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    [  643.868503] usb 1-1.3: Product: 2.4GHz receiver
    [  643.874965] usb 1-1.3: Manufacturer: ELMCU
    [  643.902874] input: ELMCU 2.4GHz receiver as /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0/0003:0C40:8000.0005/input/input4
    [  643.918396] hid-generic 0003:0C40:8000.0005: input,hidraw0: USB HID v1.11 Keyboard [ELMCU 2.4GHz receiver] on usb-bcm2708_usb-1.3/input0
    [  643.960169] input: ELMCU 2.4GHz receiver as /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.1/0003:0C40:8000.0006/input/input5
    [  643.975794] hid-generic 0003:0C40:8000.0006: input,hidraw1: USB HID v1.11 Mouse [ELMCU 2.4GHz receiver] on usb-bcm2708_usb-1.3/input1

une partie des touches comme vol+, pause, sont bien reconnues le clavier est en qwerty

avec une tablette ou smartphone Android

Il existe deux applications pour piloter Kodi. Les deux sont disponibles dans le dépôt f-droid.org.