USBIP, Raspberry Pi Raspbian, Kinect et S.A.R.A.H.

Dans cet article, je vais vous présenter comment transférer le signal d’un Kinect branché à un Raspberry Pi mais utilisé depuis Windows 7. Pour arriver à cette fin, nous allons utiliser le projet USBIP.

Serveur USBIP sur un Raspberry Pi

Installation

# aptitude install usbip usbip-source
# rpi-update

La dernière commande a mis mon RPI à la version de noyau 3.12.26+.

git clone git://github.com/raspberrypi/linux.git kernel --depth=1
cd kernel
wget https://raw.github.com/raspberrypi/firmware/master/extra/Module.symvers
make bcmrpi_defconfig
make

Cette dernière commande a pris 16 heures ! Vous compilez le noyau du RPI.

make modules
# make modules_install
# cp arch/arm/boot/Image /boot/kernel.img

Avec les commandes précédentes, vous aurez installé les modules de bases demandés par le nouveau noyau et mis en place ce dernier.

Ajouter à la fin du fichier .config :

CONFIG_USBIP_CORE=m
CONFIG_USBIP_VHCI_HCD=m
CONFIG_USBIP_HOST=m
CONFIG_USBIP_DEBUG=n

Continuer avec les commandes suivantes :

make LOCALVERSION=+ modules_prepare
make SUBDIRS=drivers/staging/usbip
# make SUBDIRS=drivers/staging/usbip modules_install
# depmod -a
# modprobe usbip-host

Et voilà, vous pouvez utiliser USBIP !

Quelques commandes utiles

Lister les périphériques

# usbip list -l

Partager un périphérique

# usbip bind --busid [BUS-ID]

Cette commande retourne

bind device on busid [BUS-ID]: complete

Pour ajouter usbip-host au démarrage :

Éditez /etc/modules ajouter sur une nouvelle ligne contenant :

usbip-host

Source : http://www.raspberrypi.org/forums/viewtopic.php?p=121691

Client USBIP sur Windows 7 64 bits

Attention, cette section du tutoriel n’est pas encore fonctionnelle

Installation

  • Lancez une session en tant qu’Administrateur
  • Récupérez une version corrigée de l’outil à l’adresse suivante : https://www.dropbox.com/s/oox021z1d7zblmu/usbip.zip
  • Avec l’outil cmd, exécutez :
    bcdedit /set testsigning on
  • Ouvrez le Panneau de configuration > Matériel et audio > Périphériques et imprimantes > Gestionnaire de périphériques
  • Faites un clic droit sur votre ordinateur > Ajoutez un matériel d’ancienne génération
  • Cliquez sur Suivant
  • Sélectionnez Installer le matériel que je sélectionne… (Option 2)
  • Cliquez sur Suivant
  • Cliquez sur Disque fourni
  • Cliquez sur Parcourir et rendez vous là où vous avez décompresser l’archive pour sélectionne le seul fichier sélectionnable
  • Continuez jusqu’à la fin de l’installation

 Utilisation

  • Ouvrez une invite de commande windows ou Powershell
  • Rendez vous dans le répertoire où vous avez décompressé l’archive

Pour lister les périphériques mis à disposition part [HOTE]

usbip -l [HOTE]

Pour importer tous les périphériques mis à disposition part [HOTE]

usbip -x [HOTE]

Pour importer un périphérique mis à disposition part [HOTE]

usbip -a [HOTE] [BUS-ID]

Source : http://sourceforge.net/p/usbip/discussion/418507/thread/7ff86875/?page=4

Utilisation d’Owncloud sur un Linux headless

J’ai cherché un petit moment comment utiliser OwnCloud sur un serveur Linux (Ubuntu). J’ai finalement choisi de passer par un montage webdav avec davfs2.

J’ai donc installé davfs2 :

#aptitude install davfs2

Comme j’avais besoin que le partage OwnCloud soit disponible au démarrage du serveur, j’ai effectué les réglages suivants.

Pour /etc/fstab

http://[serveur-owncloud]:80/owncloud/remote.php/webdav/[dossier] /[adresse-de-montage] davfs user,rw,auto,_netdev,file_mode=000 0 0
  • auto permet le montage automatique du partage
  • _netdev permet de monter le partage quand le réseau est disponible.
  • file_mode=000 permet à tout le monde d’écrire dedans

Pour /etc/davfs2/secrets

/[adresse-de-montage] [utilisateur-owncloud] [mot-de-passe-owncloud]

Pour /etc/davfs2/secrets

dav_user [utilisateur-machine]
dav_group [groupe-machine]
use_locks       0

use_locks permet d’utiliser le partage, sinon OwnCloud n’est pas content.

Et voilà !

Attention cependant, les fichiers ne sont pas copiés, mais nous travaillons directement sur les données d’ OwnCloud.

Comment créer une carte audio virtuelle et diffuser le son de cette dernière

Je joue souvent avec des machines virtuelles. Dans le but d’améliorer mon installation domotique, j’ai dû installer une machine virtuelle sous Windows 7.  N’ayant pas trouvé comment récupérer facilement le son d’une machine virtuelle avec Archipel, façade de libvirt, côté hôte,  j’ai tenté une approche orientée invité (et donc logicielle côté machine virtuelle).

La première étape consiste à créer une carte sonore virtuelle qui s’occupera du son des applications à diffuser. La seconde étape consiste à diffuser le son.

Création d’un carte audio virtuelle

Sur la recommandation d’un ami, j’ai choisi VB Audio virtual cable. Téléchargez l’archive, pour moi c’était VBCABLEDriver_Pack42b.zip.  Décompressez-la puis lancez le programme d’installation en tant qu’administrateur. Si les nouvelles entrée et sortie sonores ne sont pas visibles, redémarrez.

C’est fini !

Diffusion du son

Le serveur

Pour le serveur, j’ai choisi Icecast (qui est aussi multi-plateforme). Le groupe derrière ce programme est le même que celui derrière le format audio OGG et le format vidéo Theora. Les flux générés par cette application sont aussi supportés par beaucoup de lecteurs audio comme VLC, OpenKarotz et Squeezebox pour ce que j’ai testé. Beaucoup d’autres lecteurs sont supportés, je vous propose d’essayer par vous-même. 😀

Téléchargez l’archive de l’application sur le site d’Icecast. Décompressez-la où vous installez vos programmes. Rendez vous dans le dossier etc et ouvrez le fichier icecast.xml avec votre éditeur de texte favoris.

Modifiez à votre guise les sections <authentication> et <hostname>. Souvenez-vous du <source-password>, vous en aurez besoin. Attention, il faut que les machines de votre réseau connaissent la machine sur laquelle vous installez Icecast avec le nom que vous choisissez. Vous pouvez mettre l’IP de la machine si vous n’utilisez pas de nom.

Ajoutez après la section d’exemple <mount> (mais en dehors des commentaires à ce sujet) le bout de code ci-dessous. N’oubliez pas de personnaliser le <mount-name>.

<mount>
  <mount-name>nom-que-vous-desirez</mount-name>
</mount>

J’ajoute ensuite Icecast aux programmes à lancer au démarrage car j’en ai besoin en permanence. Libre à vous d’en faire autant.

Lancez Icecast.

La passerelle entre votre carte son et le serveur

Pour connecter la carte son au serveur Icecast, j’ai trouvé Butt. Installez l’application. Lancez-là.

Allez dans Settings choisissez Cable output dans Audio Device. Ajoutez des informations pour le flux si vous le désirez.

Configuration
Configuration

Cliquez sur Add au niveau de Server.

  • Mettez le nom que vous désirez
  • Choisissez le type Icecast.
  • Entrez l’adresse que vous avez choisie pour <hostname> dans la configuration de Icecast
  • Tapez 8000 pour le port
  • Saisissez le mot de passe <source-password> défini dans <authentication> dans la configuration d’Icecast
  • Renseignez IceCast mountpoint avec le <mount-name> saisi dans la configuration d’Icecast
  • Mettez da,s IceCast user le mot source.
  • Cliquez sur ADD
Création d'un serveur
Création d’un serveur

Cochez Connect at startup puis cliquez sur Save settings.

Dans mon cas, j’ajoute aussi Butt aux programmes à lancer au démarrage car j’en ai besoin en permanence.

Cliquez sur le bouton Lecture. Info devrait maintenant afficher on live.

Vous pouvez maintenant vérifier que le son est bien diffusé en ouvrant le flux http://[valeur-de-hostname]:8000/sarah

Et voilà !