Transformer son raspberry en console de streaming

Depuis quelques années, nous avons vu apparaître sur le marché Steam LinkNvidia Shield et autres consoles de streaming. Ces consoles s’appuient sur la puissance de votre PC pour streamer des jeux et pouvoir en bénéficier sur tous vos téléviseurs, vos tablettes et vos téléphones. Aujourd’hui, nous allons voir comment obtenir la même expérience avec un budget moins élevé : nous allons transformer notre Raspberry Pi en console de streaming.

Pour ce faire, nous allons utiliser la technologie GameStream de Nvidia et le projet open source Moonlight.

Prérequis

Pour pouvoir utiliser GameStream, il nous faudra quelques prérequis :

  • Une carte graphique compatible : GeForce GTX 1080, 1070, 1060, Titan X, 900, 700, 600, 900M, 800M, 700M ou 600M
  • Une bonne connexion entre le PC et le Raspberry (filaire ou routeur 802.11n double bande)
  • GeForce Experience 2.1.1 ou supérieur installé sur le PC (téléchargeable ici)
L’installation de Steam est optionnelle mais elle nous permettra de bénéficier de l’expérience Big Picture. Nous pourrons retrouver toute notre bibliothèque de jeux et les lancer facilement.

Pour activer GameStream, ouvrez GeForce Experience et allez dans la partie « Paramètres ». Cliquez ensuite sur « Shield » et assurez-vous que GameStream est activé.

Activation de GameStream

Une fois ces installations effectuées, nous pouvons passer à l’installation de Moonlight.

Installation de Moonlight

Connectez-vous sur votre Raspberry. Nous allons commencer par ajouter la source pour récupérer Moonlight. Éditez le fichier /etc/apt/sources.list et ajoutez la ligne suivante :

[gist https://gist.github.com/Dramloc/45a884f56bedfd0274c888e1f12ab073 /]

Installez ensuite la clé GPG :

[gist https://gist.github.com/Dramloc/e09529095990fb01e8b57fd12889034a /]

Enfin, installez Moonlight :

[gist https://gist.github.com/Dramloc/f5a0f390830c13c9fde647d8f0f7c146 /]

Moonlight est maintenant installé. Nous sommes prêts à relier notre PC et le Raspberry et commencer le streaming.

Appairage et streaming

Pour appairer le Raspberry au PC, lancez la commande suivante :

[gist https://gist.github.com/Dramloc/da2247ca7ded6515a3011a4fa1f8b3a8 /]

Un code PIN doit s’afficher dans votre console et une fenêtre doit apparaître sur le PC. Rentrez le code PIN dans celle-ci.

Appairage Moonlight

Nous pouvons maintenant tester le streaming, lancez la commande suivante :

[gist https://gist.github.com/Dramloc/760df081f683a9de45c96737a2a4dbfe /]

Si vous avez Steam installé, Big Picture devrait se lancer sur votre ordinateur et une réplique de votre écran devrait apparaître sur l’écran relié au Raspberry.

Réplication des écrans

L’écran de gauche est relié au PC, celui de droite au Raspberry.

Vous pouvez lancer un jeu depuis Big Picture pour tester le fonctionnement. Pour quitter Big Picture, cliquez sur l’icône I/O en haut à droite et choisissez « Arrêter le streaming ».

J’ai rencontré quelques soucis lors du lancement de Moonlight. Si vous êtes aussi dans ce cas, essayez de mettre à jour GeForce Experience et les drivers Nvidia vers leur dernière version.

Si vous n’utilisez pas Steam, vous pouvez choisir l’application à lancer avec Moonlight en lançant la commande suivante :

[gist https://gist.github.com/Dramloc/7904666d544a3f815a62f7bf22278459 /]

Celle-ci vous fournira la liste des jeux compatibles détectés. Vous pouvez ensuite les lancer avec la commande suivante :

[gist https://gist.github.com/Dramloc/b13d6f05bb26ff04dacd935cf79e7bae /]

Configurations avancées

Votre installation devrait fonctionner mais il est possible que vous vouliez customiser certaines options pour améliorer votre station de jeu.

Qualité d’affichage

Par défaut, Moonlight se lancera en 720p et 60fps. Il est possible de modifier ces options (détail ici). Par exemple, vous pouvez utiliser la commande suivante pour lancer en 1080p :

[gist https://gist.github.com/Dramloc/5a9da0e27a09017232b72a95766d02e0 /]

Avec un Raspberry Pi 3 et une connexion filaire, j’ai pu faire tourner Moonlight en 1080p 60fps sans aucune lenteur !

Audio

Dans mon cas, Moonlight a toujours voulu utiliser la sortie audio HDMI (même en ayant configuré le jack par défaut avec raspi-config). J’ai dû utiliser la commande suivante pour utiliser la sortie jack :

[gist https://gist.github.com/Dramloc/25bc72e53dbc2fb2410994ca7ca7d3d0 /]

Connecter une manette

Pour pouvoir profiter pleinement de votre installation, nous allons voir comment installer une manette pour votre raspberry. Cette étape dépendra de votre manette mais je vais vous donner quelques configurations pour les manettes Xbox.

Si vous disposez d’une manette Xbox ou Xbox 360, le package xboxdrv devrait suffir. Pour l’installer :

[gist https://gist.github.com/Dramloc/9600c5b318ed5953731fbc9bdaf597b8 /]

Si comme moi vous avez une manette Xbox One, l’installation sera un peu plus compliquée. Il faudra installer la version de xpad supportant ces manettes :

[gist https://gist.github.com/Dramloc/1ca1ce6fd72a188c3a838704273158a7 /]

S’il vous manque des headers lors de l’installation de xpad, vous pouvez exécuter les commandes suivantes pour les installer :

[gist https://gist.github.com/Dramloc/07602ae23e6118ee49af9c0b45dab85b /]

Si tout ce passe bien, votre manette devrait être détectée après le reboot. Nous allons maintenant créer le mapping des touches de la manette, ce qui permettra d’avoir une configuration correcte des touches :

[gist https://gist.github.com/Dramloc/7406dc18aa44ab47095457e36d955350 /]

Suivez ensuite les instructions à l’écran en appuyant sur les touches demandées et votre manette sera entièrement configurée ! Vous pouvez ensuite spécifier un fichier de mapping à Moonlight de la façon suivante :

[gist https://gist.github.com/Dramloc/25e558b1d92df7e1be069fe3ea3df9de /]

Dans la partie précédente, votre manette ne sera peut-être pas associée à /dev/input/event0. Vous pouvez exécuter la commande suivante pour lister les contrôleurs détectés et voir l’handler associé :

[gist https://gist.github.com/Dramloc/d4351f2651be5529d87a38bec601e22a /]

Conclusion

J’espère que l’installation de votre console de streaming s’est bien passée. J’ai personnellement rencontré plusieurs problèmes au cours de celle-ci (principalement liés à la manette) mais le résultat en valait la chandelle. N’hésitez pas à laisser un commentaire si vous bloquez sur une étape.
Et sur ce, bon jeu !

10 réponses

  1. letailleur dit :

    Bonjour, peut on utiliser 2 manettes xbox one relier avec l’adaptateur sans fils en clé usb windows 10 ? Merci

    • Antoine Colmard dit :

      Bonjour, apparemment le support pour l’adaptateur Xbox One n’est pas encore arrivé.
      Cependant, certaines manettes Xbox One Wireless peuvent fonctionner directement via Bluetooth avec le raspberry sans avoir besoin de l’adaptateur.
      Il y a quelques opérations à effectuer pour que tout fonctionne, je te recommande de suivre les étapes sur cet article ou cette vidéo.
      Bon courage et n’hésite pas à nous faire des retours !

  2. Ludo dit :

    Bonjour,
    J’ai suivi votre tuto, et j’ai une erreur au moment de faire le mapping du contrôleur :
    sudo moonlight map -input /dev/input/eventx …

    erreur: no mapping available for xbox one pad (030000…) on /dev/input/eventx
    *** buffer overflow detected ***: moonlight terminated

    Avez vous une idée du problème ?

    Merci

    • Antoine Colmard dit :

      Bonjour Ludo,
      J’ai mis à jour vers la dernière version de moonlight (2.4.4) et je rencontre le même problème (nous ne sommes pas les seuls https://github.com/irtimmer/moonlight-embedded/issues/583).

      Pour ma manette j’ai pu passer l’étape de mapping (moonlight map ...).
      Peux-tu vérifier si l’id de ta manette (030000…) est présent dans le fichier /usr/share/moonlight/gamecontrollerdb.txt ?
      Si ce n’est pas le cas, il faudrait rajouter une ligne avec son id et le mapping. Pour faire ça, tu peux rechercher l’id sur internet ou utiliser la commande jstest /dev/input/js0 pour définir le mapping.

      Tiens-moi au courant si cela résout ou non ton problème.

  3. Meyer dit :

    Bonjour merci pour ce tuto que j’ai essayer de réaliser cependant j’ai un problème quand je veux installer moonlight.
    Pourriez vous m’aider ?

    Cordialement.

    sudo apt-get install moonlight-embedded
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    Some packages could not be installed. This may mean that you have
    requested an impossible situation or if you are using the unstable
    distribution that some required packages have not yet been created
    or been moved out of Incoming.
    The following information may help to resolve the situation:

    The following packages have unmet dependencies:
    moonlight-embedded : Depends: libssl1.0.0 (>= 1.0.0) but it is not installable
    Recommends: alsa-base but it is not going to be installed
    E: Unable to correct problems, you have held broken packages.

  4. Meyer dit :

    Merci ça a fonctionner par contre j’ai un autre soucis quand je fait :

    moonlight pair 192.168.0.28

    Connect to 192.168.0.28…
    Generating certificate…done

    Et il se connecte pas pourtant j’ai geforce experience a jour et le gamestream activé mon gpu c’est une 1080ti et un raspberry pi 3

    • Antoine Colmard dit :

      Salut,

      Tu peux peut-être essayer de juste faire moonlight pair (sans spécifier l’IP du pc)
      Si ça ne fonctionne pas tu peux essayer moonlight pair -debug qui devrait donner plus d’informations sur le problème potentiel.

  5. Meyer dit :

    Bonjour lorsque je fait moonlight pair -debug
    Il me met ça une solution?

    Merci d’avance

    moonlight pair -debug
    Moonlight Embedded 2.4.6 (PI;ALSA;EMBEDDED)
    Searching for server…
    Connect to 192.168.0.28…
    Request https://192.168.0.28:47984/serverinfo?uniqueid=f35162bf9845501e&uuid=4822e6b0-b9e7-4e3a-a8b8-756d89600f23

  6. ni-co-las dit :

    Bonjour,

    Suite à je pense une MAJ des drivers Nvidia, je ne peux plus lancer de jeux avec moonlight. Le jeux se lance sur mon pc mais cela fait planter mon raspberry. J’ai réinstallé la version des drivers Nvidia d’avant le soucis et j’ai même réinstaller mon Raspberry mais rien n’y fait. Cela plante à chaque lancement de jeux. Avez vous une solution ? Merci.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.