Box86 te permite ejecutar Steam y juegos X86 en Raspberry Pi

En Raspbian tenemos miles de aplicaciones para instalar, pero no las tenemos todas ¿Por qué? Pues porque esas aplicaciones no están preparadas para ejecutarse en un procesador con arquitectura ARM, diferente a la que tienen los ordenadores que tenemos en casa, que tienen una arquitectura X86.

Esto puede suponer un problema si queremos tener algo concreto como puede ser Steam o algún juego que todavía no es compatible con la Raspberry Pi. Pero con Box86 podemos solucionarlo.

Primero de todo, os voy a explicar un poco que es Box86 y como funciona. Luego veremos como instalarlo en nuestra Raspberry Pi y como instalar Steam, y para terminar hablaremos un poco del rendimiento y compatibilidad con programas y juegos X86 que nos da este programa.

¿Qué es Box86?

Como os he explicado antes, la arquitectura de la Raspberry Pi es ARM, y muchos de los juegos que hay actualmente en Linux solo están disponibles para arquitecturas X86. El lenguaje de programación y el código fuente puede ser exactamente el mismo para ambas versiones, pero al compilar dicho código, el resultado será diferente.

Uno de los problemas con los que nos encontramos es que al tratarse de programas comerciales, no disponemos del código fuente para poder compilarlo para ARM, por lo que la Raspberry Pi no entendería los binarios que se crean una vez compilado el programa o juego, por lo que no se puede ejecutar.

¿La solución? Usar un intérprete que cuando detecte una llamada a una librería del sistema operativo, haga que se ejecute con una librería en ARM en vez de en una librería X86, obteniendo el mismo resultado en la operación y pudiendo continuar con el programa.

¿Y qué hace box86? Pues exactamente lo que he explicado antes. Cuando se ejecuta una aplicación X86 el programa lo detecta, y va traduciendo esas llamadas a librerías del sistema de X86 a ARM, haciendo que esos programas se puedan ejecutar con un resultado muy similar, o incluso el mismo.

¿Y se nota en el rendimiento? Evidentemente. La arquitectura ARM funciona de forma diferente a la arquitectura X86. Si además tenemos un programa que se encarga de ir traduciendo las llamadas a todo lo que necesita el programa o juego que queremos instalar, pues todavía perderemos más rendimiento.

Esta es la idea que va también tras la ejecución de programas X86 en Windows 10 ARM. Solo que la diferencia es que, mientras que en Windows 10 ARM contamos con un equipo de desarrollo profesional que se encarga de esto, en Box86 solo contamos con programadores que lo hacen, mayormente, en su tiempo libre, por lo que no funcionará tan bien como en Windows 10 ARM.

¿Cómo se instala Box86?

Ahora que tenemos más o menos claro como funciona Box86 en Raspberry Pi, vamos a instalarlo y a probarlo.

Lo primero que necesitamos es tener todas las dependencias listas para ello. Para esto vamos a ejecutar el siguiente comando en la terminal:

sudo apt update && sudo apt install git build-essential cmake -y

Con esto instalaremos Git para poder copiar fácilmente el código fuente de Box86, las dependencias esenciales para poder compilar código fuente y Cmake para compilar el código fuente. Una vez se ha instalado todo nos toca descargarnos el código fuente de Box86. Que lo haremos desde la terminal poniendo lo siguiente:

cd
git clone https://github.com/ptitSeb/box86

Ahora que ya lo tenemos todo, solo nos queda compilar e instalar box86. Para compilar, usaremos los siguientes comandos en la terminal:

cd box86
mkdir build
cd build
cmake .. -DRPI4=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo
make
Terminal después de haber compilado Box86

Una vez ha terminado todo, procedemos con la instalación de Box86, que lo haremos en la terminal de la siguiente forma:

sudo make install

Con esto ya lo tendremos todo preparado para poder usar Box86. Pero como imagino que una de las primeras cosas que queremos probar son los juegos que tenemos comprados en Steam, pues vamos a instalarlo. Tengo que decir que solo funcionarán algunos de los juegos que sean nativos de Linux, así que tendremos que olvidarnos por completo de Proton, de momento.

Instalando Steam en Raspberry Pi

Hay algunas aplicaciones como Skype o Spotify que todavía no funcionan con Box86, aunque están trabajando en ello. Pero Steam más o menos funciona, y nos permite instalar todos los juegos que tenemos en la librería compatibles con Linux, aunque es posible que luego no nos funcionen, como me ha pasado a mí después de algunas pruebas. Pero vamos a ello.

Lo primero que necesitamos es instalar algunas librerías que no tenemos en nuestro Raspbian. Para hacerlo de forma rápida, lo haremos desde la terminal de Linux así:

sudo apt update && sudo apt install libdbusmenu-gtk4 libnm0

Una vez que tenemos instaladas esas librerías, podemos proceder con la instalación de Steam, aunque no será una instalación al uso.

Lo primero que vamos a hacer es descargarnos el paquete de Steam de los repositorios de Debian. Es posible que la URL cambie con el tiempo debido a que el paquete se actualiza de vez en cuando. Así que, si el comando que os dejo a continuación falla, siempre podéis descargaros el último paquete desde esta carpeta de los repositorios de Debian. Para poder descargarnos el paquete de Steam podemos poner este comando en la terminal:

wget http://ftp.es.debian.org/debian/pool/non-free/s/steam/steam_1.0.0.64-1_i386.deb

Ahora que lo tenemos, si vamos a instalarlo de forma normal probablemente nos dé un error, por lo que vamos a descomprimir el paquete y vamos a copiar los archivos en nuestro Raspbian como si de una instalación se tratara. Esto lo haremos con los siguientes comandos en la terminal:

ar x steam*.deb
sudo tar xvf data.tar.xz -C /

De esta forma descomprimiremos el archivo data.tar.xz en la raíz de Raspbian, colocando todos los archivos de Steam en su sitio y encontrándonos con un acceso directo a Steam en la parte de juegos del menú de Raspbian.

Steam funcionando en Raspbian gracias a box86

Una vez hemos abierto Steam, veremos que no funciona su navegador web, por lo que no podremos usar la interfaz normal, teniendo que usar el Small mode para poder instalar los juegos que tengamos compatibles con Linux. Esto lo podemos cambiar desde el menú View que nos aparece en la parte de arriba de Steam. Una vez en ese menú, veremos que siempre que vamos a intentar instalar un juego Steam se sale una vez prepara el espacio de almacenamiento. Teniendo que volver a abrir Steam para que el juego comience a descargarse.

Actualizando los drivers de MESA

Ahora que tenemos instalado Steam, podemos descargarnos e instalar juegos. El problema es que los drivers gráficos que lleva Raspbian es posible que no sean compatibles con muchas de las funciones que los juegos necesitan. Para reducir los problemas podemos actualizar los drivers MESA, mejorando un poco el rendimiento y la compatibilidad.

En Raspberry Para novatos hemos hablado un par de veces de actualizaciones que se han hecho en estos drivers, por lo que solo nos queda actualizarlos nosotros y empezar a usarlos.

Lo primero que vamos a hacer es comprobar que versión de los drivers de MESA tenemos instalados. En Raspbian tenemos por defecto la versión 19.3.2, cuando actualmente la última es la 20.2. Para comprobar la versión tenemos que instalar las utilidades de MESA y ejecutar la utilidad que muestra la información de los drivers. Para instalar las utilidades, pondremos lo siguiente en la terminal:

sudo apt update && sudo apt install mesa-utils -y

Una vez han terminado de instalarse las utilidades, podremos comprobar desde la terminal que versión de MESA tenemos instalada. Hay que hacerlo desde un entorno de escritorio, ya que si no, no se podrá ejecutar esta utilidad al no poder detectar si los drivers están funcionando. Esto lo haremos poniendo en la terminal lo siguiente:

glxinfo | grep Version
Comprobando la version de MESA en una Raspberry Pi 4B con glxinfo

Si la versión es la 20, tendremos los últimos drivers de MESA, si no, os recomendaría actualizar.

Para empezar con la actualización de los drivers de MESA en Raspbian necesitaremos añadir el repositorio de códigos fuente de Raspbian, de forma que se puedan descargar todos los archivos necesarios para poder compilar estos nuevos drivers. Que lo haremos con el siguiente comando.

sudo sed -i -e 's/#deb-src http:\/\/archive.raspberrypi.org\/debian\/.*/deb-src http:\/\/archive.raspberrypi.org\/debian\/ buster main/' /etc/apt/sources.list.d/raspi.list

Ahora que ya lo tenemos, vamos a instalar todo lo necesario para poder compilar estos nuevos drivers MESA:

sudo apt update && sudo apt build-dep mesa -y

Como normalmente no vamos a volver a necesitar instalar más código fuente para nuestros programas en Raspbian, vamos a volver a deshabilitar este repositorio.

sudo sed -i -e 's/deb-src http:\/\/archive.raspberrypi.org\/debian\/.*/#deb-src http:\/\/archive.raspberrypi.org\/debian\/ buster main/' /etc/apt/sources.list.d/raspi.list

Ahora vamos a descargarnos el código fuente de MESA:

cd
git clone --depth=1 https://gitlab.freedesktop.org/mesa/mesa/

Y ahora vamos a proceder a compilarlo. Este proceso tarda bastante, así que es recomendable tomárselo con calma y dejar a nuestra Raspberry Pi haciendo sus cosas, hasta que termine. Esto lo haremos con los siguientes comandos en la termianl:

cd mesa
mkdir build
cd build
CFLAGS="-mcpu=cortex-a72 -mfpu=neon-fp-armv8" CXXFLAGS="-mcpu=cortex-a72 -mfpu=neon-fp-armv8" meson --prefix /usr -Dplatforms=x11 -Dvulkan-drivers=broadcom -Ddri-drivers= -Dgallium-drivers=kmsro,v3d,vc4 -Dbuildtype=release build
sudo ninja install

Y ahora que ya tenemos todo compilado tenemos que instalar también los drivers DRM de Mesa. Lo primero que haremos será descargarnos el código fuente de estos drivers:

cd
git clone --depth=1 https://gitlab.freedesktop.org/mesa/drm

Y ahora, procederemos a la compilación de este código fuente:

cd drm
mkdir build
cd build
sudo meson --prefix="/usr" ..
sudo ninja install

Una vez lo tenemos todo, solo nos queda reiniciar y comprobar que estamos usando los últimos drivers de MESA, tal como he explicado antes. Para reiniciar lo mas sencillo es poner en la terminal lo siguiente:

sudo reboot

Probando Box86 en una Raspberry Pi 4B

La verdad es que ha sido una explicación un poco larga (a no ser que hayas venido directamente aquí), pero después de hacer todos los pasos, ya podemos probar algunos juegos X86 en nuestra Raspberry Pi. Y digo algunos porque este programa está avanzando poco a poco y todavía no tiene una buena compatibilidad con aplicaciones X86. Además, algunas de estas aplicaciones no funcionan correctamente aun pudiendo ejecutarlas.

Ya he comentado más arriba el caso de Steam, y como podemos ver en el repositorio de Box86, hay muchos juegos que no funcionar por un motivo u otro. Lo bueno es que hay juegos que funcionan, y algunos de estos lo hacen muy bien, sobre todo en una Raspberry Pi 4B.

Raspberry Pi Spain RAS-4-4G - Placa Base Pi 4 Modelo B / 4 GB SDRAM (1822096)
14.276 Opiniones
Raspberry Pi Spain RAS-4-4G - Placa Base Pi 4 Modelo B / 4 GB SDRAM (1822096)
  • Diseño moderno
  • La Raspberry Pi sin ventilador y de bajo consumo de energía funciona...

Después de instalar unos 15 juegos, no he tenido suerte con todos, ya que la mayoría no funcionaban por algún problema. Los que si me han funcionado son los siguientes: Not a Hero, Day of tentacle remastered, BIT TRIP Runner 2, y Killing floor, con diferentes resultados. Eso sí, las pruebas se han hecho a 720p, ya que a una resolución superior los FPS son muy bajos para poder jugar a cualquier cosa.

Not a Hero y BIT TRIP Runner 2 me han funcionado bien. No ha llegado a los 60 FPS que podemos disfrutar en un ordenador normal, pero podemos disfrutar jugando a esos juegos. Eso si, en BIT TRIP Runner 2 me salía el menú de pausa cada dos por tres.

También he probado Day of tentacle Remastered y, en una primera prueba con los drivers MESA 19.3.2 el juego no se veía, pero al actualizarlos, ya podía jugar sin problemas. Había partes donde el juego se ralentizaba bastante, sobre todo cuando había cambios muy bruscos en las animaciones, pero también podíamos disfrutar de una de las mejores aventuras gráficas de la historia en nuestra Raspberry Pi gracias a Box86.

El último juego al que más o menos pude jugar fue Killing floor. El juego funciona, pero, aun tratando de bajar todos los gráficos al mínimo, los FPS durante el juego lo hacen injugable.

Para terminar, decir que no se queda aquí la lista de juegos compatibles con Box86 en Raspberry Pi. Actualmente podemos jugar a juegos como Terraria y Shovel Knight sin problemas, solo tenemos que instalarlos y jugar. Y esta lista no hará más que crecer con el tiempo.

Más información:

[themoneytizer id=»32486-28″]

Última actualización el 2024-10-07 / Enlaces de afiliados / Imágenes de la API para Afiliados

15 comentarios en «Box86 te permite ejecutar Steam y juegos X86 en Raspberry Pi»

    • Buenas Enrique.

      Gracias por el aviso de que se ha actualizado el paquete de Steam y que la URL que había en el artículo ya no es válida. He corregido la entrada con una nueva URL y con un enlace por si falla el comando wget para poder descargarlo desde el navegador, o por lo menos poder copiar la URL para descargarla desde la terminal.

      Responder
    • Buenas.

      Para instalar otras aplicaciones tendrías que configurar el userspace de X86 y entonces poder descargar la aplicación de apt para ese entorno y así poder instalar lo que necesites. Seguramente exista el programa que quieres usar compilado para ARM o alguna alternativa funcional para ese programa que puedas usar en tu Raspberry Pi.

      Responder
  1. Hola, me da error cuando hay que poner «make» y luego «sudo make install»
    cc: error: unrecognized command line option ‘-marm’; did you mean ‘-fasm’?
    cc: error: unrecognized command line option ‘-mfpu=neon-fp-armv8’
    cc: error: unrecognized command line option ‘-mfloat-abi=hard’
    cc: error: unrecognized command line option ‘-marm’; did you mean ‘-fasm’?
    make[2]: *** [CMakeFiles/dynarec_arm.dir/build.make:63: CMakeFiles/dynarec_arm.dir/src/dynarec/dynablock.c.o] Error 1
    make[1]: *** [CMakeFiles/Makefile2:73: CMakeFiles/dynarec_arm.dir/all] Error 2
    make: *** [Makefile:141: all] Error 2

    Responder
    • Buenas jfrit85.

      El error que comentas puede deberse a varias cosas. La primera es la arquitectura del sistema operativo. Actualmente Box86 solo funciona en 32 bits, por lo que si tienes un sistema operativo de 64 bits el problema puede ser ese. Aquí tienes más información respecto a eso.

      Otra posibilidad es que estés intentando instalarlo en una Raspberry Pi que no es la 4B. En ese caso tienes que quitar de la línea de cmake la parte donde pone -DRPI4=1. Quedando esa línea de esta forma:
      cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo

      Si vas a instalar Box86 en una Raspberry Pi que no sea la 4 el rendimiento es bastante más bajo que en la 4B, haciendo esto poco recomendable, por lo que yo solo recomiendo probar en esa Raspberry Pi, y si es con overclock, mejor.

      Responder
    • Buenas DiAku.

      Esta solución es solo válida para programas que funcionen con Linux, y no para todos los programas. En tu caso te recomendaría probar con algún sistema operativo Android, ya que seguramente exista aplicación para poder acceder a PokerStars sin problema con este sistema operativo.

      Responder
      • Hola Sergio, gracias por responder. Pasa que necesito usar la versión de escritorio de PokerStars, no se podrá usar el Box86 + Wine para ejecutarlo? Gracias.

        Responder
        • Pues es una cosa que no tengo muy clara. Lo único que puedes hacer es probar tú y ver si hay suerte. Creo que el soporte de Wine es un poco precario con Box86, por lo que no te garantizo el funcionamiento del programa que quieres.

          Responder
  2. Hola, Me da el siguiente error después de hacer todo el proceso tal y como indicas:
    You are missing the following 32-bit libraries, and Steam may not run:
    libc.so.6

    esto sale al ejecutar steam osea que falla el programa, he probado–>
    sudo apt-get update
    sudo apt-get install libc.so.6

    Pero no lo encuentra,

    Responder
  3. Hola, todo sobre ruedas hasta que llego a actualizar los drivers Mesa

    meson.build:1783:2: ERROR: Invalid version of dependency, need ‘wayland-client’

    me dice eso después de ejecutar:
    cd mesa
    mkdir build
    cd build
    sudo meson –prefix=»/usr» .. <<<<<<<<aquí es donde falla
    sudo ninja install <<<<<<<< esto ya no deja

    Responder
    • Buenas Alberto.

      Después de un tiempo he visto que ese tutorial está incompleto y desactualizado, ya que ha cambiado la forma de compilar los drivers de MESA y me falta por añadir una cosa para que haya más juegos compatibles (compilar e instalar gl2es). Por el momento puedes ver como compilar una versión actualizada para los drivers de MESA en este artículo, haciendo compatibles más juegos.

      También tendría que añadir otro tutorial para añadir wine y así poder jugar a algunos juegos de Windows también, aunque no a todos.

      Responder

Deja un comentario