Raspberry Pi, cómo configurar dos mandos en RetroPie

como_configurar_dos_mandos_en_retropie

En la entrada Raspberry Pi, una consola de juegos con RetroPie vimos cómo configurar nuestra Raspberry para convertirla en una videoconsola retro y de este modo volver a disfrutar con aquellos juegos memorables de los 90. Con el tiempo, este artículo se ha posicionado como el más visitado del blog y el video más visto en el canal de YouTube, hasta la fecha, siendo además el que más comentarios ha recibido. Una de las dudas más recurrentes era cómo configurar dos mandos en RetroPie y esto es lo que vamos a ver.

RetroPie_Juegos_SNES

Dos jugadores en RetroPie (Emulador de Super Nintendo)

Estos comandos los he realizado sobre una Raspberry Pi 2 modelo B, utilizando la distribución RetroPie 3.0 BETA 4, para configurar dos mandos de Sony PlayStation 3 conectados a través de cable USB, pero deberían funcionar sin problemas en los demás modelos de Raspberry y usando otros modelos de mandos. También debería funcionar con otras distribuciones anteriores de RetroPie – quizás cambie la ruta de algunos ficheros, pero te explico cómo buscarlos – , aunque si puedes, recomiendo que actualices siempre a la última versión, que además de incluir mejoras de funcionalidad, también resuelve errores y seguramente ganarás en estabilidad.

Pasos para configurar dos mandos en RetroPie

Supongo que si estás leyendo estos pasos es porque ya tienes una Raspberry Pi configurada con RetroPie. Si no la tienes configurada o si no sabes cómo conectarte a tu Raspberry para ejecutar comandos, pásate por la entrada que comentaba al principio de este tutorial: Raspberry Pi, una consola de juegos con RetroPie, que allí te explico cómo hacerlo. Si ya lo has hecho, sigue leyendo…

Busca la herramienta retroarch-joyconfig y anota la ruta donde se encuentra ubicada:

sudo find / -name retroarch-joyconfig 

En RetroPie 3.0 BETA 4, el ejecutable se encuentra en dos rutas diferentes. Puedes usar el que quieras:

/opt/retropie/emulators/retroarch/bin/retroarch-joyconfig
/opt/retropie/emulators/retroarch/retroarch-joyconfig

Busca el archivo de configuración general para todos los emuladores:

sudo find / -name retroarch.cfg

Dependiendo de los emuladores que tengas instalados, verás una salida similar a esta:

/opt/retropie/configs/gb/retroarch.cfg
/opt/retropie/configs/sg-1000/retroarch.cfg
/opt/retropie/configs/gbc/retroarch.cfg
/opt/retropie/configs/atarilynx/retroarch.cfg
/opt/retropie/configs/atari7800/retroarch.cfg
/opt/retropie/configs/n64/retroarch.cfg
/opt/retropie/configs/doom/retroarch.cfg
/opt/retropie/configs/fba/retroarch.cfg
/opt/retropie/configs/all/retroarch.cfg
/opt/retropie/configs/videopac/retroarch.cfg
/opt/retropie/configs/atari2600/retroarch.cfg
/opt/retropie/configs/megadrive/retroarch.cfg
/opt/retropie/configs/psx/retroarch.cfg
/opt/retropie/configs/fds/retroarch.cfg
/opt/retropie/configs/vectrex/retroarch.cfg
/opt/retropie/configs/segacd/retroarch.cfg
/opt/retropie/configs/gba/retroarch.cfg
/opt/retropie/configs/pcengine/retroarch.cfg
/opt/retropie/configs/sega32x/retroarch.cfg
/opt/retropie/configs/mastersystem/retroarch.cfg
/opt/retropie/configs/quake/retroarch.cfg
/opt/retropie/configs/cavestory/retroarch.cfg
/opt/retropie/configs/msx/retroarch.cfg
/opt/retropie/configs/gamegear/retroarch.cfg
/opt/retropie/configs/mame-mame4all/retroarch.cfg
/opt/retropie/configs/snes/retroarch.cfg
/opt/retropie/configs/nes/retroarch.cfg
/opt/retropie/emulators/retroarch/retroarch.cfg

Sitúate en el directorio donde se encuentra este archivo:

cd /opt/retropie/configs/all/

Ejecuta este comando para configurar el mando para el jugador 1:

/opt/retropie/emulators/retroarch/retroarch-joyconfig -o jugador1.cfg -p 1 -j 0

En el comando anterior, el parámetro -p viene seguido por un 1, que indica el número de jugador (player 1 = p1) y el parámetro -j viene seguido del puerto utilizado (port #0 para el jugador 1).

A continuación, si tienes conectados los dos mandos, los verás en las siguientes líneas identificados con su nombre y puerto:

RetroArch: udev_add_pad: [udev]: Plugged pad: Sony PLAYSTATION(R)3 Controller (054c:0268) on port #0.
RetroArch: udev_add_pad: [udev]: Pad #0 (/dev/input/event1) supports 0 force feedback effects.
RetroArch: udev_add_pad: [udev]: Plugged pad: Sony PLAYSTATION(R)3 Controller (054c:0268) on port #1.
RetroArch: udev_add_pad: [udev]: Pad #1 (/dev/input/event2) supports 0 force feedback effects.
RetroArch: input_joypad_init_first: Found joypad driver: "udev".
Found joypad driver: udev
Using joypad: Sony PLAYSTATION(R)3 Controller

Debemos pulsar algunos botones del mando y los joysticks, para asegurarnos que el mando elegido aún no ha sido configurado y a continuación pulsar la tecla Enter:

Joypads tend to have stale state after opened.
Press some buttons and move some axes around to make sure joypad state is completely neutral before proceeding.
When done, press Enter ... 

En este punto, toma el mando para el jugador 1 y asocia los botones a tu gusto:

Configuring binds for player #1 on joypad #0.

B button (down)
    Joybutton pressed: 14
Y button (left)
    Joybutton pressed: 13
Select button
    Joybutton pressed: 0
Start button
    Joybutton pressed: 3
Up D-pad
    Joybutton pressed: 4
Down D-pad
    Joybutton pressed: 6
Left D-pad
    Joybutton pressed: 7
Right D-pad
    Joybutton pressed: 5
A button (right)
    Joybutton pressed: 13
X button (top)
    Joybutton pressed: 12
L button (shoulder)
    Joybutton pressed: 10
R button (shoulder)
    Joybutton pressed: 11
L2 button (trigger)
    Joybutton pressed: 8
R2 button (trigger)
    Joybutton pressed: 9
L3 button (thumb)
    Joybutton pressed: 1
R3 button (thumb)
    Joybutton pressed: 2
Left analog X+ (right)
    Joyaxis moved: Axis 0, Value 20175
Left analog X- (left)
    Joyaxis moved: Axis 0, Value -25828
Left analog Y+ (down)
    Joyaxis moved: Axis 1, Value 30712
Left analog Y- (up)
    Joyaxis moved: Axis 1, Value -21459
Right analog X+ (right)
    Joyaxis moved: Axis 2, Value 27371
Right analog X- (left)
    Joyaxis moved: Axis 2, Value -21716
Right analog Y+ (down)
    Joyaxis moved: Axis 3, Value 20689
Right analog Y- (up)
    Joyaxis moved: Axis 3, Value -27627

Una vez configurado el primer mando, ejecuta el mismo comando, cambiando los parámetros, para configurar el mando para el jugador 2:

/opt/retropie/emulators/retroarch/retroarch-joyconfig -o jugador2.cfg -p 2 -j 1

Verás ambos mandos, pero la configuración se realizara sobre el segundo:

RetroArch: udev_add_pad: [udev]: Plugged pad: Sony PLAYSTATION(R)3 Controller (054c:0268) on port #0.
RetroArch: udev_add_pad: [udev]: Pad #0 (/dev/input/event1) supports 0 force feedback effects.
RetroArch: udev_add_pad: [udev]: Plugged pad: Sony PLAYSTATION(R)3 Controller (054c:0268) on port #1.
RetroArch: udev_add_pad: [udev]: Pad #1 (/dev/input/event2) supports 0 force feedback effects.
RetroArch: input_joypad_init_first: Found joypad driver: "udev".
Found joypad driver: udev
Using joypad: Sony PLAYSTATION(R)3 Controller

Joypads tend to have stale state after opened.
Press some buttons and move some axes around to make sure joypad state is completely neutral before proceeding.
When done, press Enter ... 
Configuring binds for player #2 on joypad #1.

[...]

Para finalizar, copia ambas configuraciones en el archivo de configuración general y reinicia la RPi para aplicar los cambios:

cat jugador*.cfg >> /opt/retropie/configs/all/retroarch.cfg
sudo reboot

Si visualizas el fichero anterior, verás que se ha copiado la configuración para ambos mandos al final del mismo. En mi caso, he configurado ambos mandos de la misma forma. Si tienes dos mandos de PS3, puedes incluso copiar éstas líneas al final de tu fichero retroarch.cfg y ahorrarte los pasos anteriores:

input_player1_joypad_index = "0"
input_player1_b_btn = "14"
input_player1_y_btn = "13"
input_player1_select_btn = "0"
input_player1_start_btn = "3"
input_player1_up_btn = "4"
input_player1_down_btn = "6"
input_player1_left_btn = "7"
input_player1_right_btn = "5"
input_player1_a_btn = "13"
input_player1_x_btn = "12"
input_player1_l_btn = "10"
input_player1_r_btn = "11"
input_player1_l2_btn = "8"
input_player1_r2_btn = "9"
input_player1_l3_btn = "1"
input_player1_r3_btn = "2"
input_player1_l_x_plus_axis = "+0"
input_player1_l_x_minus_axis = "-0"
input_player1_l_y_plus_axis = "+1"
input_player1_l_y_minus_axis = "-1"
input_player1_r_x_plus_axis = "+2"
input_player1_r_x_minus_axis = "-2"
input_player1_r_y_plus_axis = "+3"
input_player1_r_y_minus_axis = "-3"
input_player2_joypad_index = "1"
input_player2_b_btn = "14"
input_player2_y_btn = "13"
input_player2_select_btn = "0"
input_player2_start_btn = "3"
input_player2_up_btn = "4"
input_player2_down_btn = "6"
input_player2_left_btn = "7"
input_player2_right_btn = "5"
input_player2_a_btn = "13"
input_player2_x_btn = "12"
input_player2_l_btn = "10"
input_player2_r_btn = "11"
input_player2_l2_btn = "8"
input_player2_r2_btn = "9"
input_player2_l3_btn = "1"
input_player2_r3_btn = "2"
input_player2_l_x_plus_axis = "+0"
input_player2_l_x_minus_axis = "-0"
input_player2_l_y_plus_axis = "+1"
input_player2_l_y_minus_axis = "-1"
input_player2_r_x_plus_axis = "+2"
input_player2_r_x_minus_axis = "-2"
input_player2_r_y_plus_axis = "+3"
input_player2_r_y_minus_axis = "-3"
PS3_RetroPie_Configuration

Correspondencia botones PS3 en RetroPie

Has realizado una configurado de tus mandos que será común para todos los emuladores, pero sin quieres personalizar la configuración para un emulador en concreto, simplemente debes repetir los mismos pasos modificando el fichero sobre el que se copia la configuración final. Es decir, si quieres que esta configuración sólo tenga efecto en el emulador de Super Nintendo, deberías realizar todos los pasos y finalmente hacer:

cat jugador*.cfg >> /opt/retropie/configs/snes/retroarch.cfg
sudo reboot

Espero que te haya resultado útil este pequeño tutorial. Si tienes cualquier duda o problema durante el proceso, ¡deja tu comentario!

¡Nos leemos en Twitter! 😉

Miguel Angel Benítez Andrades

Apasionado de la tecnología, runner, marido y padre. De pequeño quería ser inventor y ahora escribo en un blog. Ingeniero en Informática.

También te puede interesar...

  • Mr Weirdo

    Hola Miguel, primero de todo gracias por los tutoriales, me están sirviendo de mucho.
    Ando configurando mi retropie 2.6 y he encontrado tu tutorial, que la verdad está genial y muy bien explicado.

    Tengo la duda siguente, estoy configurando un mando tipo nes de 8 botones. Cuando ejecuto el comando todo bien hasta que me pregunta por que pulse los L button (shoulder) en aldelante, que este gamepad no tiene… ¿sabes que es lo que debería hacer?

    Muchas gracias.

    • Hola Mr. Weirdo. ¡Gracias por tu comentario! me alegra que te resulten útiles los tutoriales. Cuando ejecutas el comando sólo tienes que dejar que pasen unos segundos para saltarte la configuración de los botones que no quieras configurar.

      ¡Saludos!

      • Mr Weirdo

        hola Miguel, muchas gracias por responder.
        Al final lo que hice fue actualizar a retropie 3.0 que viene con acceso a los menús de configuración desde los menus de emulationstation y configurar el retroarch desde ahí, y muy bien.
        La verdad es que es increíble lo bien que va 🙂

  • Pingback: Raspberry Pi, una consola de juegos con RetroPie - Babuleando()

  • area51delcorazon

    Hola,

    En mi caso no he necesitado configurar ningún emulador para poder usar dos mandos, ya que por defecto están operativos… Excepto con el Fire Burn Alpha. La Raspberry responde a los dos mandos, ya que puedo “poner” créditos desde cualquiera de ellos, pero a la hora de comenzar la partida tan sólo responde al Enter del teclado, que corresponde al start del jugador 1. Por más que le doy a las teclas no doy con la que activa al jugador 2. ¿Sabes de alguna solución para este problema?

    Mil gracias!!

    • ¡Hola de nuevo Rubén! Me lo apunto 🙂

      • area51delcorazon

        ¡Muchas gracias! ¡Quedo a la espera! 🙂

        Esta tarde he metido algunas roms de Megadrive y me he encontrado con otro problema referente a los controles. Por defecto los juegos no detectan mis mandos y tan sólo responden al teclado. He entrado en el menú de configuración desde el juego pulsando F1 y he configurado los mandos, pero por más que grabo la configuración ésta no se carga y al ejecutar de nuevo el juego ya no aparece. No sé qué estoy haciendo mal, ya no se me ocurre nada más 🙁

        • ¡Muy buenas Rubén! Entiendo que has seguido los pasos del tutorial para configurar los mandos. Ten en cuenta que los mandos pueden funcionar correctamente para moverte a través de Emulation Station pero no hacerlo para cada emulador. ¿Qué modelo de mando utilizas? He estado haciendo pruebas con los mandos de PS3 que tengo y tanto para Megadrive como para FBA no he tenido problemas.

          Para el caso del FBA, he modificado el emulador por defecto. En lugar de utilizar pifba, uso lr-fba. Puedes modificarlo desde la opción Select default emulator for fba del menú que aparece pulsando cualquier botón del mando antes de cargar una rom. Con los mandos de la PS3, el botón Select hace las función de Insertar Moneda de las recreativas y con el botón Start de cada mando se activa el jugador.

          Ya me dices Rubén. ¡Hablamos!
          Saludos

          • area51delcorazon

            Hola,

            Muchas gracias por tu contestación. Al final lo he solucionado poniendo en una de las ranuras un viejo mando de PS1 que tenía por casa con un viejo adaptador usb que compré en su día para poder usarlo en el ordenador (hasta ahora venía usando en la Raspberry dos mandos clones de la Super Nintendo). Ahora me funciona el emulador de la Megadrive y pueden jugar dos jugadores en los juegos de FBA. En mi caso utilizo el pifba, ya que si selecciono lr-fba éste no me reconoce el mando de la PS1. Sea como sea un problema resuelto ¡Bien! 🙂

            Pero no he solucionado todos mis problemas… Ahora me encuentro con el problema de que no sé cómo salir de un juego cuando emulo Megadrive. He probado todas las teclas del teclado y del mando y no logro salir.

            Muchas gracias por todo, y… ¡¡enhorabuena por tu blog!!

            Un saludo,
            Rubén.

          • Hola Rubén,

            También he notado comportamientos extraños al conectar/desconectar mandos y teclado mientras se ejecutan los emuladores. Lo mejor es tener la configuración que se vaya a utilizar antes de arrancar la Raspberry.

            Para salir de los emuladores hay que pulsar una combinación de botones, normalmente, Select+Start. Con el teclado no he probado. Échale un vistazo a este Wiki sobre la configuración de botones para cada tipo de mando: RetroArch Configuration. Y a este en concreto sobre el emulador de Megadrive: Megadrive. Por lo visto, si usas DGen tienes que establecer una configuración especial para salir del emulador (está al final de la entrada).

            Por cierto, ¿qué versión de RetroPie estás usando? ¿en qué modelo de Raspberry? ¡A ver si conseguimos dar con la tecla!

            Saludos.

  • Morpheus55

    Buenas,
    ante todo gracias por los tutoriales que has escrito. Muy utiles. Ya tengo todo el software (del primer tuto) instalado y ahora a configurar los controles, el tema es que yo tengo una botonera de dos jugadores, la configuracion es la misma?

  • Aitor Zorita

    gracias por todo… he probado tu metodo, pero no consigo que funcionen los joystick ni botones normales a traves del GPIO.. creo que estan bien conectados, ya que al configurar me marca todo bien, pero luego no funciona nada…te suena que puede ser???que datos necesitas???? raspberry pi 2, modelo B … 2 joysticks magneticos, 8 botones por jugador,conectados a GPIO como en este manual…https://www.raspberrypi.org/forums/viewtopic.php?t=83317

  • Alejandro

    Cómo hago para que me reconozca un mando saitek inalámbrico? Por más que lo intento no lo consigo.
    Muchas gracias por el tutorial, con otros mandos me ha funcionado de maravilla.

  • Jaime Villegas

    Hola Miguel Angel, muchas gracias por estos tutoriales, me han servido de mucha ayuda.

    Instalé los mandos de PS3 correctamente copiando la configuración que pones aquí, pero al ir a configurar mandos de la ps4 no encuentro el retroarch-joyconfig en el sistema, ni en el menú de retropie_setup.sh en la opción de Configure Input devices for RetroArch no tengo la opción para configurar el mando.
    He probado a buscar por la red el script pero no lo encuentro, no se que probar.

    Muchas Gracias de antemano

    Saludos a todos

    • Son Gokuu

      Encontraste solución? Es frustrante no ser capaz de configurar un simple mando pa un emulador…

  • Ricardo

    Hola,

    Quiero hacer lo mas verídica posible la máquina arcade que construiré, para eso quisiera incluir el validador de monedas.

    Alguien sabe como configurar (y conectar), si se puede, un validador de monedas a la Raspburry PI 3, usando el SW RetroPie??

    Gracias.

  • Son Gokuu

    A mí tampoco me encuentra el retroarch-joyconfig así que no puedo configurar el mando. Es ridículo que no se pueda por GUI

  • Jaime Villegas

    Hola, ya encontré la solución en cuanto al script retroarch-joyconfig. Lo han eliminado de Retropie en versiones anteriores, con lo cual, en estas versiones nuevas no aparece. Yo tuve que descargar RetroPie 2.6 donde si que viene, copiarlo e instalarlo en mi versión de Retropie. Cuando copié el script tuve que darle permisos de ejecución y listo, pude configurar los mandos con la aplicación.

    Un saludo

  • Alex López

    Hola Miguel Angel, me estoy volviendo un poco loco y no se como solucionarlo. Tengo un pad para dos jugadores que he construido con un ipac 2, pero no se como configurarlo para dos jugadores. El jugador uno lo configuro desde retropie en “configure input”, pero el segundo jugador no puedo ya que todo el pad me lo reconoce como un solo teclado.
    He intentado hacerlo como viene aqui metiendo los comandos que pone, pero no soy capaz.
    Hay alguna manera más sencilla de hacerlo?

    Muchas gracias

    • AlvaroFV

      Tengo exactamente el mismo problema, un mando X-Arcade (que lo reconoce como teclado) que no es posible configurar para los juegos de Neo-Geo (con PiFBA). El sistema lo he montado sobre una PI de la primerísima generación, me funciona el mando con el Mame y con la Super Nintendo, que son los otros sistemas que tengo activados. A ver si alguien que haya resuelto este problema nos puede echar una mano…

  • Menelao

    Hola Miguel, primero decirte que los tutoriales me han servido mucho para configurar la raspberry pi2 con retropie.

    EL tema es que estoy liado con el mapeado de teclas del emu de fba, el problema es el siguiente:

    Conecto al GPIO18 un sensor óptico para que cuando pase una moneda me meta créditos en el emulador, he asociado el GPIO18 con la tecla 5, tecla por defecto de los créditos de mame y funciona perfectamente.

    El problema me viene con el FBA y es que en este emulador la imagen que he utilizado ya esta configurado el crédito con la tecla rshit (que es el SELCT) y no se como hacer para cambiarlo y asociarlo a la tecla 5 (GPIO18) para hacer lo mismo en fba y neogeo. Me he metido en el archivo de configuración de pifba pero la asignación de teclas que sale no la entiendo la verdad.

    ¿Alguna idea?

    Muchas gracias

    • Menelao

      Bueno me respondo yo mismo, para hacer lo que quiero, es decir poner en el emulador de FBA/neogeo la entrada de créditos en el numero 5, es necesario editar el archivo retroarch.cfg que se encuentra en /opt/retropie/configs/all.

      En input_player1_select = rshift poner num5 y listo.

      Espero que sea de utilidad.
      PD supongo que lo que digo en la PD anterior también es necesario hacerlo.

  • Jesus

    Hola Miguel Ángel:

    Para los controles uso unos botones arcade con una placa GPIO. Configurado los controles en Retropie, dentro del emulador MAME, no tengo problemas en distribuir los botones, pero en cuanto a los joysticks, me los reconoce como Player 1 ambos…por lo que el player 2 mueve a player 1. ¿Alguna idea de qué puede estar sucediendo?
    Muchas gracias.
    Un saludo,

    Jesús.

    • Vicente

      Tengo el mismo problema que Jesus, pero yo lo tengo conectado con usb, todos los botones bien configurados y los joysticks funcionan los dos juntos.
      Un saludo Miguel Ángel y enhorabuena por tu labor.

      • Carlos Alonso Triana Garcia

        He estado buscando mucho por el internet y en el mame todos tienen el mismo problema que cuando se tiene 2 mandos arcade conectados con unos se mueven los 2. La unica respuesta o solucion que encontre es utilizar una placa para cada jugador o utilizar una placa pero que tenga dos cables USB una para cada jugar y que asi te pueda reconocer los 2 jugadores con su mando arcade independiente

  • Angel

    Hola a todos, bien, yo tengo un problema algo peculiar y es que quiero establecer un mando de xbox one (por cable) y uno de ps3 (conectado por bluetooth). Y a simple vista parece viable, de echo el mando de ps3 se comecta a la retro pie correctamente, el problema es el siguiente. Por un lado, hay veces que, al conectar el mando de PS3 y acceder al menu “core” (una vez ejecutado el juego) Al ir al apartado de configuracion de mando, el retropie se congela, es decir que se queda clavado sin poder quitar ni poder apagar ni reiniciar la raspberry. Pero el problema clave es que una vez se logra evitar el primer problema, al querer meter como player 1 el mando de xbox one y player 2 el mando de ps3 o viceversa, el mando que queda asignado como player 2 se muestra como “nombre del mando” (#1)(#2). El resultado es que, cuando juegas, aun configurado el segundo control, el player 1 maneja a ambos jugadores simultaneamente quedando el segundo mando sin funciones. Esto me pasa en la mame y aun en su propio menu de ajuste, al tratar de configurar el player 2, no me deja asignar los botones. Seguramente se trate de alguna linea de comando, que haya que configurar para que esto no pase, pero no ando muy ducho de linux y no se que apartado es el que hay que tocar para corregir este apartado. Por otro lado, he intentado ir a lo facil y meter dos mandos de Xbox One mediante cable, pero al arrancar retropie, este se colapsa y ni detecta uno ni detecta el otro. Es como si le faltase potencia a los usb para alimentar a los mandos. Bueno ahi esta expuesto mi problema, si algun alma caritativa puede echarme una mano se lo agradeceria muchisimo. Gracias de antemano.

    • Angel

      Me siento solo en este mundo. Sniff

Utilizamos cookies para mejorar nuestros servicios y experiencia de usuario. Si continua navegando, consideramos que acepta su uso. Leer más. ACEPTAR