You are here

Raspberry PI como consola y media center (II)

isholgueras's picture
Submitted by isholgueras on Thu, 08/13/2015 - 21:16

Después del primer artículo que escribí para empezar con nuestra Raspberry para emulación de consolas continuamos con cómo instalar y configurar Retropie y Emulation Station 2.6 en la Raspberry 2.

Descarga de retropie 2.6

Lo primero será descargar Retropie 2.6 para nuestra versión de Raspberry. (Este link es para descargar Retropie 2.6 para RPi 2)

Con Win32DiskImager (desde windows) o con imagewriter en Linux la copiaremos al SSD. Es muy sencillo. Por comando, tanto en Windows como en Linux se puede hacer.

Tardará un poco en copiar.

Configuración principal de retropie 2.6

Una vez que esté copiada a la tarjeta SD, la insertamos en la Raspberry, conectamos el cable de RED y la enfuchamos a la corriente. De momento no necesitaremos conectar más cosas.

Una vez arrancada tenemos que averiguar cuál es la IP de la raspberry. En mi caso la raspberry arranca con la IP: 192.168.1.38, pero deberemos hacer varios ping a la subred hasta averiguar cuál es la rasberry. Una vez conectados, el usuario es pi y la contraseña es raspberry.

Expansión del sistema de ficheros

Una vez arrancada debemos expandir el sistema de ficheros para poder utilizar la totalidad de la tarjeta SD ejecutamos:

sudo raspi-config

Elegimos paso 1, expandir ficheros y decimos que sí queremos reiniciar el sistema operativo.

Instalación de paquetes básicos

Una vez haya arrancado, instalamos vim (o vuestro editor por consola favorito)

sudo apt-get install vim

Configuración de IP fija

Editamos /etc/network/interfaces. Comentamos la línea:

#iface eth0 inet dhcp

Y pegamos justo después lo siguiente:

iface eth0 inet static
address 192.168.1.180
netmask 255.255.255.0
gateway 192.168.1.1

Una vez esté hecho y guardado, reiniciamos la raspberry.

Subir juegos a la raspberry

La forma más cómoda de subir juegos a la Raspberry, sin duda, es por FTP. Con un cliente de Filezilla o WinSCP podremos subirlos cómodamente.

La ruta de subida de los juegos es:

/home/pi/RetroPie/roms

Aquí habrá una carpeta por cada una de las consolas o emuladores. Subimos por FTP y los veremos la próxima vez que reiniciemos la consola.

Configurar mando 360

Aquí seguiré paso a paso la configuración oficial en este vídeo de youtube: https://www.youtube.com/watch?v=0LMZFYzM9xc

Enchufamos el adaptador wireless del mando y encendemos la raspberry. Es importante que en los USB sólo esté enchufado el adaptador wireless del mando, pues podría fastidiar la configuración estandar. Ejecutamos el siguiente comando y nos deberá mostrar lo siguiente.

pi@retropie ~ $ lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 045e:0719 Microsoft Corp. Xbox 360 Wireless Adapter

Ejecutamos los siguientes comandos para comenzar la actualización.

cd ~/Retropie-Setup/
sudo ./retropie_setup.sh

Elegimos la opción U: Actualizar RetroPie-Setup script

Salimos y ejecutamos de nuevo el script. Esta vez elegimos la opción 3 - Setup- Y luego última opción. Driver xbox 360. Cuando termine mostrará el mensaje Installed xboxdrv and adapted /etc/rc.local. It will be started on boot. Esto nos indica que cada vez que arranque, se ejecutarán unos comandos escritos en este fichero. Ahora iremos a editarlos y configurarlos de otra forma distinta.

sudo vim /etc/rc.local

Comentamos la penúltima línea:

#xboxdrv --daemon --id 0 --led 2 --deadzone 4000 --silent --trigger-as-button --next-controller --id 1 --led 3 --deadzone 4000 --silent --trigger-as-button --dbus disabled --detach-kernel-driver &
exit 0

Editaremos el siguiente fichero:

sudo vim /etc/init.d/xboxdrv

Y escribiremos este script:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          xbox-controller
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start XBOX Controller Service
# Description:       Start the xboxdrv daemon with several options
#                    support up to 4 Controllers
### END INIT INFO

# Author: MasteRehm

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="XBOX Controller Service"
NAME=xboxdrv
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="-D -d --deadzone 4000 --dbus disabled --detach"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions

do_start()
{
        if [ $CONTROLLER_NUM -gt 4 ]; then
                echo -e "\n$CONTROLLER"; exit 1;
        fi
        start-stop-daemon -S -q -x $DAEMON -- $DAEMON_ARGS $CONTROLLER

# -- This workaround only works with 4 controllers connected.  It also is creating a name that
# does not match the minor device node.

#        # Workaround: xboxdrv daemon creates /dev/input/js[4-7] device files, if /dev/input/js[0-3] created on startup.
#        if [ -x /usr/bin/rename ]; then
#                sleep 1
#                if [[ `ls /dev/input/js*` =~ /dev/input/js[4-7] ]]; then rename 's/js4/js0/;s/js5/js1/;s/js6/js2/;s/js7/js3/' /dev/input/js*; fi
#        fi

# Rather than renaming files, it's better to clear the existing ones by stopping the driver
# and then when you start it again, everything will be correct.

    sleep 3
    do_stop
    sleep 3
        start-stop-daemon -S -q -x $DAEMON -- $DAEMON_ARGS $CONTROLLER
}

do_stop()
{
    start-stop-daemon -K -o -q -x $DAEMON
    sleep 1
}

case "$1" in
  start)
    log_daemon_msg "Starting $DESC" "$NAME"
    do_start
     status=$?
    log_end_msg $status
    ;;
  stop)
    log_daemon_msg "Stopping $DESC" "$NAME"
    do_stop
     status=$?
    log_end_msg $status
    ;;
  status)
    status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
    ;;
  restart)
    log_daemon_msg "Restarting $DESC" "$NAME"
    do_stop
    case "$?" in
      0|1)
        do_start
        case "$?" in
            0) log_end_msg 0 ;;
            1) log_end_msg 1 ;; # Old process is still running
            *) log_end_msg 1 ;; # Failed to start
        esac
        ;;
      *)
        # Failed to stop
        log_end_msg 1
        ;;
    esac
    ;;
  *)
    echo "Usage: $SCRIPTNAME {start|stop|status|restart}" >&2
    exit 3
    ;;
esac

Lo habilitamos para que arranque al inicio:

sudo chmod +x /etc/init.d/xboxdrv
sudo update-rc.d xboxdrv start 90 2 3 4 5 stop 90 0 1 6

También, editamos el fichero /etc/default/xboxdrv que habilita varias variables para ver si queremos tener 1-4 mandos disponibles. Yo pongo 2.

sudo vim /etc/default/xboxdrv

Y pegamos el siguiente texto:

# How many Controllers? (support up to 4 Controllers)
CONTROLLER_NUM=2
case $CONTROLLER_NUM in
    1) CONTROLLER="-w 0 -l 2 --trigger-as-button --dpad-as-button"
    ;;
    2) CONTROLLER="-w 0 -l 2 --trigger-as-button --dpad-as-button --next-controller -w 1 -l 3 --trigger-as-button --dpad-as-button"
    ;;
    3) CONTROLLER="-w 0 -l 2 --trigger-as-button --dpad-as-button --next-controller -w 1 -l 3 --trigger-as-button --dpad-as-button --next-controller -w 2 -l 4 --trigger-as-button --dpad-as-button"
    ;;
    4) CONTROLLER="-w 0 -l 2 --trigger-as-button --dpad-as-button --next-controller -w 1 -l 3 --trigger-as-button --dpad-as-button --next-controller -w 2 -l 4 --trigger-as-button --dpad-as-button --next-controller -w 3 -l 5 --trigger-as-button --dpad-as-button"
    ;;
    *) CONTROLLER="incorrect amount of controller specified"
    ;;
esac

Tutorial utilizado: https://github.com/petrockblog/RetroPie-Setup/wiki/Setting-up-the-XBox36...

Comprobamos el driver de XBOX

Para comprobarlo, ejecutamos el comando:

jstest /dev/input/js0

Con esto, y conectando el mando al receptor, deberíamos ver  una línea similar a esta:

Axes:  0: -2312  1:     0  2:     0  3:     0 Buttons:  0:off  1:off  2:off  3:on   4:off  5:off  6:off  7:off  8:off  9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off

En la que vemos cómo se mueven los números y los botones cambian de off a on. Si no sale así, es posible que no hayamos quitado el script del /etc/rc.local, tengamos algún otro dispositivo conectado. Volver a revisar todos los pasos uno por uno hasta que js0 sea el mando que configuramos.

Si conectásemos un segundo mando y ejecutásemos el script con js1 en vez de js0 veríamos cómo se mueve también.

Otros

Si queremos forzar a que el audio vaya por el cable HDMI y no por la salida jack de la raspberry, editar /boot/config.txt y descomentar

hdmi_drive=2

Configurar el mando de la Xbox de forma fina puede ser algo tedioso debido a la cantidad de parámetros que tiene, pero en un próximo post os enseño cómo configurar el mando de XBOX incluso con los clásicos "Save state" y "Load state" de los emuladores.

Comments

Buenas,

Hace poco me inicié en el mundo de la raspberry, en un principio buscaba tener 3 SO en el cacharro (retropie, kodi y raspbian), pero me he dado cuenta de que la instalación de kodi que he realizado esta un poco regular ya que no me reconoce los usb, etc. Me gustaría saber cuando subiréis la 3º parte de este tutorial ya que creo que voy a hacer un borrón y cuenta nueva y seguir al pie de la letra este tutorial.

Gracias, un saludo y buen trabajo!!.

isholgueras's picture

Muchas gracias por estar interesados en el proyecto. 

Yo creo que ahora en octubre haré el tutorial de cómo terminar de configurar el mando de Xbox 360 y también el de configurar el Kodi.

 

Saludos!

Add new comment

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.