RetroPie version 4 + manette 8bitdo

La version 4 de Retropie est sortie récemment, il est maintenant de plus en plus facile et intuitif de configurer les pads 8Bitdo!

Tant que vous en rencontrez pas un problème du au firmware des manettes. Ils peuvent être différents en fonction de la période ou vous l’avez acheté.

Le symptôme : tout fonctionne bien dans Emulator-Station, mais dès qu’on lance un jeu… Les boutons ne sont plus mappé de la même manière quel que soit l’émulateur utilisé (GB, Snes, NEo-Geo,  Megadrive, etc.).

Nous allons présenter une solution pour les pads NES30 Pro, FC30 Pro et SFC30. Le problème provient de la numérotation des boutons au niveau des firmwares, par exemple, dans certaine version le bouton Select sera « 10 » dans une autre « 21 ». Il suffit de modifier manuellement un fichier pour résoudre le problème.

Avec les version inférieurs à 4.0 :
/opt/retropie/configs/all/

Les fichier sont de type :
8BitdoSFC30Joystick.cfg,  8BitdoNES30.cfg ou 8BitdoNES30ProJoystick.cfg par exemple.

Avec la version 4.1 :
/opt/retropie/configs/all/retroarch/autoconfig/

Il faut remplacer le fichier par l’un de ceux-ci (pour le bluetooth) :
(8BitdoNES30.cfg8BitdoFC30Pro.cfg)

Pour le SFC30 (USB et Bluetooth) :
(8BitdoSFC30GamePadJoystick.cfgSFC30SFC30Joystick.cfg)

Copier/coller le contenu du fichier dans le votre (excepté la première ligne si le nom diffère un peu)

Note voici un lien utile avec un liste de .cfg pour un bon nombre de pads :
https://github.com/libretro/retroarch-joypad-autoconfig/tree/master/udev

Web 3.0 – Objet connecté et désentralisation

Internet tel que nous le connaissons est en constant développement depuis sa création, mais nous assistons actuellement à l’émergence de nouvelles possibilitées qui vont faire évoluer le web de demain vers de nouveau horizon. Quand on y pense, …, demain c’est bientôt aujourd’hui !

L’EtherNet

Capture du 2016-06-07 02:47:48Le web décentralisé, si vous ne connaissez pas encore le projet Ethereum, je vous conseil d’y jeter un oeil! Il serait long de tout résumer en quelques ligne, mais disons simplement qu’internet va devenir de plus en plus décentralisé. Et offrir de nouvelles possibilités, gestion de contrat automatisé, mode de paiement sécurisé, partage de contenu, processus de vote, …
Le projet est encore en cours de développement, mais il semble que la version publique approche.

Site officiel : https://ethereum.org/
Le site Fr : https://www.ethereum-france.com/

Exemple de projet :
Un projet de réseau social basé sur l’Ethereum : http://akasha.world/

L’internet des objets (Internet of Things)

L’internet des objets est en plein développement, de nombreux projets sont en cours et de plus en plus d’objets connectés devraient apparaitres sur le marché. Notez que rien qu’avec le Raspberry Pi, de beaux projets de création d’objet connecté sont possibles.

Avec les objets connectés et l’Ethereum, nous risquons de voir ce qui pourrais s’appeler web 3.0, avec par exemple : machine à café, laverie automatique, voiture, hotel, etc., connecté. Ce qui offrira un panel de possibilité novateur!

Installer un serveur Apache

apt-get install apache2 apache2-doc apache2-utils

Une fois l’installation terminé, le répertoire du serveur se trouve dans /var/www/

À partir de maintenant, si vous placez un fichier index.html à l’intérieur (il y en a un de base pour tester), il sera visible sur http://localhost ; http://127.0.0.1 ou à http://votre_adress_ip ou encore à http://votre_domaine (voir configuration du nom de domaine dans l’article suivant)

Si vous souhaitez rendre le contenu accessible depuis internet, il faut configurer votre routeur pour laisser passer un flux vers : votre_ip:80 soit par exemple 192.168.0.46:80
Et bien entendu connaître votre adresse ip internet afin de pouvoir vous y connecter à distance (voir astuce réseau mon adresse IP)

Utiliser les commandes suivantes pour activer, désactiver le serveur:
service apache start
service apache stop
service apache restart

Pour recharger le fichier de configuration alors qu’apache est déjà lancé, utiliser :
service apache reload

Pour activer et desactiver un module, utiliser :
a2enmod nomModule
a2dismod nomModule

nomModule est le nom d’un module présent dans /etc/apaches2/mods-available

Pour activer et desactiver un site WEB, utiliser :
a2ensite nomSite
a2dissite nomSite

nomSite est le nom d’un fichier de configuration du site présent dans /etc/apaches2/sites-available

Installer PHP et My-sql

apt-get install libapache2-mod-php5 php5 php-pear php5-xcache
apt-get install php5-mysql
apt-get install mysql-server mysql-client

++ si besoin : php5-curl php5-gd

Vous pouvez aussi ajouter phpmyadmin qui permet la gestion de base de donnée, etc., via une interface web.

apt-get install phpmyadmin

Puis éditer le fichier /etc/apache2/apache2.conf :
nano /etc/apache2/apache2.conf

Allez à la fin du document (vous pouvez utiliser CTRL+V pour aller plus vite) et ajouter ceci :

Include /etc/phpmyadmin/apache.conf

Enregistrer les modification et relancer le serveur :
service apache2 restart

Vous pouvez ensuite vous connecter à l’interface de gestion via un navigateur :
http://adresseIPounomdomain/phpmyadmin

Changer le Port du Web Server (Apache2):

Une fois votre serveur Apache installé, il est possible de modifier le port de destination (habituellement 80). Les modifications doivent être effectuées en tant que root (ou utiliser sudo avant les commandes indiquées).

Commençons par éditer le fichier correspondant :
nano /etc/apache2/ports.conf

Modifier la ligne :

NameVirtualHost *:80

Pour y mettre le port de votre choix, par exemple 1880 :

NameVirtualHost *:1880

Ensuite modifier :

Listen 80

Avec la valeur choisie pour votre nouveau port :

Listen 1880

Vous pouvez enregistrer les modifications et éditer le fichier suivant :
nano /etc/apache2/sites-enabled/000-default

editer la ligne suivante :

<VirtualHost *:80>

Pour y ajouter votre nouveau port :

<VirtualHost *:1880>

Sauvegarder et relancer le service apache:
service apache2 restart

Ouvrir votre navigateur internet et tester si le nouveau port est bien pris en compte :
http://votre-ip-adresse:1880
par exemple : http://192.198.0.54:1880

Note : Si vous utilisez Motion pour faire de la détection de mouvement ou un logiciel accédant à votre serveur web, il faudra modifier le fichier de configuration pour modifier le port.

nano /etc/motion/motion.conf

Et trouver la ligne suivante :
netcam_url http://localhost/cam_pic.php

Et modifier en fonction du nouveau port choisi
netcam_url http://localhost:1880/cam_pic.php

Sécuriser votre accès SSH

apt-get install openssh-client openssh-server

Pour améliorer la sécuriter de votre serveur SSH, commencez par éditer le fichier /etc/ssh/sshd_config et modifier le port de connexion, désactiver la connexion avec l’utilisateur root et si vous le souhaitez paramétrer l’authentification par système de clef.

Pour modifier le port de connection (par exemple 4922):

Port 4922

Pour désactiver la connection via root en dé-commentant la ligne et spécifiant ‘no’ :

PermitRootLogin no

Pour activer les Clefs d’authentifications dé-commenter les lignes suivantes :

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys

PasswordAuthentication no

Pour limiter le nombre d’utilisateur :

AllowUser Nom_Utilisateur1 Nom_Utilisateur2

Une fois les modifications effectués il ne reste plus qu’à redémarrer le service :

service ssh restart

Pour plus de sécurité, vous pouvez déterminer les machines du réseau autorisées à se connecter, il faut modifier les fichiers /etc/hosts.allow et /etc/hosts.deny et ajouter :

sshd : Ip/Netmask

Soit par exemple pour l’adresse ip 192.168.0.145 et le masque 255.255.255.0

sshd : 192.168.0.145/255.255.255.0
# ou encore pour tout autoriser :
sshd : All

Si vous utilisez les Clefs d’authentifications, vous devez penser à générer votre trousseau de Clef Publique/Privé :

ssh-ketgen -t rsa
(il est possible d’utiliser d’autre mode que rsa, par ex. dsa ou ecdsa)

Une passphrase/mot de passe vous est demandé lors de la génération des clefs et sera nécessaire pour vous connecter.

Gestion des Clefs d’authentification
Les clefs sont placées dans le répertoire ~/.ssh/

La clef privée ~/.ssh/id_rsa ne doit jamais être copié nul part. Elle doit rester strictement confidentielle.

La clef publique ~/.ssh/id_rsa.pub doit être copié sur les machines distantes ou vous souhaitez avoir accès.

La commande ssh-copy-id ou scp vous permet de copier les clefs directement sur les machines distantes :
ssh-copy-id -i .ssh/id_rsa.pub Utilisateur_distant@IP_distante
ou
scp .ssh/id_rsa.pub Utilisateur_distant@IP_distante :.ssh/id_rsa_hote1.pub

si vous avez modifier le port
ssh-copy-id -i .ssh/id_rsa.pub Utilisateur_distant@IP_distante:port

Soit par exemple :
ssh-copy-id -i .ssh/id_rsa.pub kenny@192.168.0.145
ou
ssh-copy-id -i .ssh/id_rsa.pub kenny@192.168.0.145:4922

Configuration Intranet / Réseau interne Wifi

Configurer le nom de domaine de vos machines pour pouvoir vous connecter directement sans utiliser l’adresse ip.

Cette méthode est valable pour les petits réseau interne / intranet avec peu de serveur :

Prenons un exemple avec 3 machines en réseau

192.168.1.1 correspondant au serveur DNS / Routeur wifi
192.168.1.20 à machine1
192.168.1.25 à machine2

Sur le serveur DNS et sur les différentes machines, dans /etc/hosts à la fin du fichier, ajouter toutes les machines présentent sur votre réseau :

127.0.0.1 nomdomaineauchoix
192.168.1.1 nomdomaineauchoix
192.168.1.20 machine1.nomdomaineauchoix
192.168.1.25 machine2.nomdomaineauchoix

Utilisez le même nom de domaine et un sous réseau pour chaque machine. La ligne 127.0.0.1 doit correspondre à votre machine, soit au nom de domaine de 192.168.1.1 dans l’exemple ci dessous.

En suivant notre exemple, le fichier /etc/hosts de machine1 correspondrait à ceci :

127.0.0.1 machine1.nomdomaineauchoix
192.168.1.1 nomdomaineauchoix
192.168.1.20 machine1.nomdomaineauchoix
192.168.1.25 machine1.nomdomaineauchoix

etc. pour machine2.

Le fichier /etc/interfaces du serveur DNS est comporte ceci :

iface wlan0 inet static
address 192.168.1.1
netmask 255.255.255.0
dns-search nomdomaineauchoix

*[pour la configuration du routeur/point d’acces voir hostapd dans l’article à ce sujet]

Sur les autres machines du réseau éditez /etc/network/interfaces et configurer une adresse ip fixe ainsi que les paramètre du routeur et le nom de domaine choisi pour la machine en question. Choisir eth0 ou wlan0 en fonction du type de connexion RJ45 ou wifi. Par exemple pour la machine1 en wifi :

iface wlan0 inet static
address 192.168.1.20
netmask 255.255.255.0
gateway 192.168.1.1
dns-search machine1.nomdomaineauchoix

wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
#effacer cette dernière ligne en cas d’utilisation de eth0

Sur le serveur dns configurer /etc/dnsmasq.conf en ajoutant :

domain-needed
expand-hosts
bogus-priv

interface=wlan0
domain=nomdomaineauchoix
cache-size=256

dhcp-range=192.168.1.2,192.168.1.254,255.255.255.0,24h

Créez un Script de démarrage

Il est souvent nécessaire de lancer une application lors du processus de boot du rapsberry. Sans forcément avoir à vous connecter avec un compte utilisateur. Ceci-ci est particulièrement utile pour un Pi-Routeur, Pi-Cam, etc.

La commande update-rc.d permet d’ajouter un programme/service/script à la liste de démarrage système et de le terminer lors de l’arrêt.

Pour ajouter :

update-rc.d NOMDUSCRIPT defaults

Pour supprimer :

update-rc.d NOMDUSCRIPT remove
ou encore
update-rc.d -f NOMDUSCRIPT remove

Créer un script personnalisé :

Par exemple j’aimerai lancer l’appli python Rpi-Cam-Web-Interface au démarrage du système. Mais cet exemple est bien entendu adaptable à vos besoins personnalisés, il suffit de modifier légèrement le code. Pour commencer, éditez/créez le script dans /etc/init.d/Rpi-Cam

sudo nano /etc/init.d/Rpi-Cam

Et insérez le texte suivant :

#! /bin/sh
# /etc/init.d/Rpi-Cam

### BEGIN INIT INFO
# Provides: RPi-Cam
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Rpi-Cam boot script
# Description: Script de lancement de l’appli Rpi-Cam-Web-Interface lors du boot.
### END INIT INFO
# Pour qu’une commande soit toujours active insérez la ici

# Début du Script
case « $1 » in
start)
echo « Starting Rpi-Cam »
# Emplacement de l’application
/home/pi/destination-rpi-cam-dir/start.sh
;;

stop)
echo « Stopping Rpi-Cam »
# Emplacement de l’application
/home/pi/destination-rpi-cam-dir/stop.sh
# ou kill application you want to stop
#killall NOMAPPLI
;;

*)
echo « Usage: /etc/init.d/Rpi-Cam start|stop »

exit 1
;;

esac

exit 0

Une fois le fichier crée, donnez lui les droits d’exécution :
chmod 755 /etc/init.d/Rpi-Cam

Démarrer ou arrêter votre script :
sudo /etc/init.d/NOMDUSCRIPT start
sudo /etc/init.d/NOMDUSCRIPT stop
ou
sh /etc/init.d/NOMDUSCRIPT start
sh /etc/init.d/NOMDUSCRIPT stop

Il suffit de lancer la commande suivante pour ajouter le script à la liste de démarrage :
update-rc.d /etc/init.d/Rpi-Cam defaults

Pour plus d’info sur les options de configuration possible : https://wiki.debian.org/LSBInitScripts

Utilisation de Nano (éditeur de texte en mode console)

Pour diverse raison, vous pouvez être amené à utiliser nano pour éditer un fichier contenant du texte. L’une d’entre elle est l’étape de configuration de divers programmes.

Voici quelques commandes utiles à connaitre :

Sauvegarde : F3 ou CTRL + O (puis modifier nom du fichier si besoin et valider)
Quitter : F2 ou CTRL + X
Aide : F1 ou CTRL + G

Naviguer vers le bas : CTRL + V
Naviguer vers le haut : CTRL + Y
Aller à la fin du fichier : ALT + Maj + :
Aller au début du fichier : ALT + ALTGr + _

Couper une ligne entière : CTRL + K
Coller une ligne entière : CTRL + U
Copier : ? reste encore un mystère pour moi, du coup couper et coller la ligne 2x (une pour la remettre en place et une autre pour faire vos modif)

Créer un marque :
(avec la souris : doucle clic qq part)
ALT + A puis déplace curseur et cela surligne, il est possible de copier/couper/coller à partir de la sélection.

ouvrir en mode normal : nano nom_du_fichier
ouvrir en mode avec ligne et colonne : nano -c nom-du_fichier
ouvrir avec support souris (gpm) : nano -m nom_du_fichier
ouvrir avec une version backup du fichier : nano -B nom_du_fichier

Remplacer du texte : ALT + R
(demande le texte à rechercher, puis le texte de remplacement, scan texte et demande à chaque occurence si veut remplacer)

Et un lien pour compléter vos connaissances si besoin :
https://openclassrooms.com/courses/reprenez-le-controle-a-l-aide-de-linux/nano-l-editeur-de-texte-du-debutant

Raspberry Pi 3 – L’ultime solution pour le Retro Gaming !

Raspberry Pi 3 – L’ultime solution pour le Retro Gaming !

Mushberry_Splashscreen_HD2

Il vient de sortir il y a peut de temps et risque de faire parler de lui, le nouveau Raspberry Pi 3 a de quoi conquérir les fans de rétrogaming! En plus de sa configuration plus puissante (quadcore 64bit ARM 1,2Ghz et 1g Ram LPDDR2) il est doté d’un réceptieur Bluetooth et wifi intégré ! Ce qui permet une connectivité totale sans avoir à ajouter de Dongle ! Il est possible de connecter directement les manettes 8bitdo en bluetooth transformant ainsi notre petite Framboise en ultime machine pour le Retro Gaming High Tech !

Capture du 2016-04-23 19:59:49

 

Il vous suffit d’avoir une carte SD (8, 16 ou 32Gb cela dépend de votre utilisation et des jeux que vous allez installer*) avec Retro-Pie installé, un cable HDMI et un ou plusieurs gamepad(s) et vous voilà près à jouer (après une ou l’autre petite configuration bien entendu) !
*Les jeux Amiga, Atari, Nes, etc. ne sont pas aussi volumineux que des jeux Playstayion, Dreamcast, etc.

Pour l’instant (04/03/2016) avec la version 3.6, le bluetooth n’est pas encore au point, par contre le Wifi fonctionne. La mise à jour de Rétro Pi pour le Raspberry Pi 3 est maintenant disponible (10/03/16), nous allons pouvoir commencer à profiter pleinement des performences de la bête! Reste à voir si le bluetooth sera opérationnel !

(23/04/16) Nous y sommes 🙂 Avec la version 3.7 de RetroPie tout devient opérationnel, le Bluetooth fonctionne sans soucie et vous aller pouvoir relier vos manettes 8bitdo et jouer en moins de 10 minute!

Article expliquant comment configurer vos manettes 8bitdo

 


Note:
L’emulateur N64 est un peu lent ? Il y a apparement différentes astuces pour résoudre le problème :
– Au démarrage de l’émulateur (c’est à dire après avoir appuyé sur le nom du jeu) pressez le bouton X pendant 2 seondes pour sélectionner l’émulateur mupen64plus-gles2n64.

– Optimiser le partage de la mémoire avec le GPU (dans raspi-config, advanced-opion)

Cela apporte un petit plus, mais perso je n’ai pas encore optenu un résultat 100% fluide et cela dépend aussi des jeux (certain son fluide d’autre rame). Hors la N64, tous les autres émulateurs testés fonctionnent au top!

ehQwHCO2

Mesure de température avec la sonde DS18B20

Vous avez absolument besoin de connaître la température ambiante et le thermomètre est cassé.. Vous avez juste un Raspberry une sonde et un cerveau qui traine quelque part? Pas de problème on va trouver une solution rapidement! Pour réaliser des mesures de température avec votre Framboise, il vous faut :

 

Pour le niveau Hardware – Plan du montage (capteur ou sonde) :

Capture du 2016-04-10 21:58:50Pour le capteur : Il faut connecter la Pin 1 à la terre, la Pin 2 (donnée/data) au GPIO 4 et la Pin 3 à l’entrée 3,3V. Il faut ensuite placer la résistance de Tirage entre la Pin 2 et 3.

serveimage

Capture du 2016-04-11 10:31:18

(Pour la sonde contrairement au schema il n’y a pas de fil blanc.)

Pour la sonde : Comme elle est précablée,  chaque fil a déjà la bonne couleur. Il faut relier le Bleu à le Terre, le Rouge à 3,3V et le Jaune (donnée/data) à la Pin GPIO 4 (ou une autre mais il faudra modifier le code du programme ). La résistance de tirage est placée entre le fil Jaune et Rouge.

serveimage

Note : si vous souhaitez tester rapidement le mieux est d’utiliser la Pin 7 ou GPIO4 du raspberry, ce qui évite d’avoir à effectuer des modifications sur le progamme d’exemple.

 

Au niveau Software :

Il existe une bibliothèque Python, qui vous permettra de réaliser des projets sympa!

Avec raspbian pour l’installer il suffit de taper :

 sudo apt-get install python-w1thermsensor
version python 3: python3-w1thermsensor

Vous pouvez glisser cette ligne dans le fichier /boot/config.txt pour ajouter le support OneWire au démarrage:
dtoverlay=w1-gpio

Pour tester si la sonde est bien connecté:

sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices
ls
cd 28-xxxxx (le nom du répertoire est différent en fonction de la Pin GPIO ou le capteur/sonde est branché, c’est pourquoi afin d’utiliser l’exemple de base le GPIO4 est recommandé)
cat w1_slave

Si vous ne trouvez pas w1_slave c’est que le cablage est mal fait et la sonde/capteur non reconnu(e) ou connecté(e). Vérifier et recommencer, n’hésitez pas à redémmarer pour rafraichir votre système.

Si tout c’est bien passé vous avez pu voir une série de chiffre sur 2 lignes et des indications ccr=xx YES et en dessous t=xxxxx par ex t=21548 (la température 21.548°C)

En lançant l’appli python ci-dessous vous obtiendez une série de mesure °C et °F toute les secondes. Le script peut être modifié facilement pour changer la durée.

# -*- coding: utf-8 -*-
import os
import glob
import time

os.system(‘modprobe w1-gpio’)
os.system(‘modprobe w1-therm’)

base_dir = ‘/sys/bus/w1/devices/’
device_folder = glob.glob(base_dir + ’28*’)[0]
device_file = device_folder + ‘/w1_slave’

def read_temp_raw():
f = open(device_file, ‘r’)
lines = f.readlines()
f.close()
return lines

def read_temp():
lines = read_temp_raw()
while lines[0].strip()[-3:] != ‘YES’:
time.sleep(0.2)
lines = read_temp_raw()
equals_pos = lines[1].find(‘t=’)
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_c = float(temp_string) / 1000.0
temp_f = temp_c * 9.0 / 5.0 + 32.0
return temp_c, temp_f

while True:
print(read_temp())
time.sleep(2)

 

Source: Le tutoriel d’Adafruit

Faire un Backup de votre carte SD

Backup / Installation d’image (sous linux) :

Une fois votre configuration mise à jour et tout vos logiciels installé, il est intéressant de faire un backup pour ne pas avoir à réaliser les mêmes étapes en cas de plantage ou nécessité d’une nouvelle installation. Pour réaliser les opérations suivantes, connectez-vous avec le compte root :

su root
sudo su root
ou noter sudo avant chaque commande

Pour faire un Backup de votre carte SD :

dd if=/dev/sdX of=SDCardBackup.img

Pour installer une image sur une carte SD :

dd bs=4M if=SDCardBackup.img of=/dev/sdX

L’option bs=4M règle la taille des blocs (Block Size) de la carte SD à 4Mo. Si vous rencontrez une erreur réduissez cette valeur à 1M.
L’option if= détermine la source et of= la destination.

 

Trouver l’adresse de votre carte SD :
Votre carte sera accessible dans le répertoire /dev/
Pour vous y rendre taper :

cd /dev

Puis pour afficher les différent disque disponible :

ls sd*
brancher votre carte SD et recommencer :
ls sd*

Vous allez logiquement découvrir l’emplacement de votre carte SD. Notez que vous pouvez aussi obtenir le même résultat encore plus facilement avec la commande :

df -h

Qui affiche la liste des disques, leur emplacement et leur espace disponible. Essayez avant et après avoir branché votre carte, vi votre carte est reconnue, vous trouvez un nouveau périphérique.

Il existe aussi des utilitaires graphiques de gestion des disques.

 

Pour windows

Utiliser un logiciel comme Win32DiskImager que vous pouvez télécharger ici : Win32DiskImager – SourceForge.