Batocera & iPhone hotspot

4 minute read

Anbernic 35xxH
En mi post anterior, mencioné que estoy usando la consola portátil Anbernic 35xxh para retrogaming. Este dispositivo ofrece un formato agradable, horizontal, compacto y práctico, lo que lo hace perfecto para jugar en cualquier lugar. Además, destaqué cómo Batocera mejora la experiencia de juego en general. Proporciona una interfaz de usuario mucho mejor y una integración fantástica con Retroarch, elevando el disfrute de los juegos clásicos.

Según se describe en la página principal del proyecto, RetroArch es una interfaz para emuladores, motores de juegos y reproductores multimedia, que te permite jugar a juegos clásicos en una amplia gama de dispositivos. Estos incluyen el Anbernic 35xxh, PS Vita, Nintendo 3DS o incluso una computadora.

RetroArch también ofrece varias características que no están disponibles en las consolas originales. Por ejemplo, te permite guardar estados de juego para NES, SNES, GBA y más. Además, puedes configurar una cuenta de RetroAchievements y mejorar tu experiencia de juego con logros creados por la comunidad, similares a los que se encuentran en consolas modernas como Xbox o PlayStation.

Para poder disfrutar de estas funcionalidades de Retroachievements debestar en línea en todo momento. Jugar en la Anbernic 35xxh en casa conectado a Wi-Fi es genial y funciona a la perfección; sin embargo, cuando estás en la calle hay algunos desafíos a tomar en cuenta. Por un lado, tienes que cambiar entre el Wi-Fi de tu casa y una conexión de hotspot en tu teléfono, pero Batocera no ofrece una lista de conexiones para elegir, al menos desde la interfaz de usuario. Por otro lado, aunque puedes establecer una conexión con tu teléfono, podría perderse durante el juego debido a la inactividad del tráfico, como tiende a pasar en el iPhone.

Para abordar el primer problema, investigué un poco y encontré un artículo en Reddit que sugiere una solución que básicamente es que existe una configuración que puedes usar para especificar una segunda (e incluso una tercera) conexión. Para hacer esto, necesitas conectar tu tarjeta SD a una computadora, editar el archivo de configuración de Batocera llamado batocera.conf ubicado en la carpeta raíz de la partición SHARED, o en caso de que te conectes a través de SSH, se encuentra en /userdata/system/batocera.conf. Completalo con los valores de tu Wi-Fi de casa y hotspot en la sección de red como se muestra a continuación:

# ------------ B - Network ------------ #

## Set system hostname, accessible via network share.
system.hostname=BATOCERA
## Wi-Fi country code (00 for World), see https://wiki.batocera.org/wifi_ssid#i_can_t_see_my_ssid_in_the_list_but_i_can_see_my_neighbor_s
#wifi.country=FR
## Activate Wi-Fi (0,1)
wifi.enabled=1
## Wi-Fi SSID (string)
wifi.ssid=HomeWifi
## Wi-Fi KEY (string)
## Escape your special chars (# ; $) with a backslash. eg. $ becomes \$

## Secondary Wi-Fi (not configurable via the user interface)
wifi2.ssid=iPhone
wifi2.key=iPhonePassword*

## Third Wi-Fi (not configurable via the user interface)
wifi3.ssid=HomeWifi
wifi3.key=HomeWifiPassword*

Para resolver el segundo problema, creé un script para generar una pequeña cantidad de tráfico cada minuto haciendo ping a un servidor conocido. Esto evita que el iPhone pierda la conexión. El script necesita ser agregado a los scripts de arranque de Batocera conectándote a tu dispositivo a través de SSH y copiando el siguiente script como /boot/postshare.sh, según lo sugiere la documentación de Batocera:

#!/bin/sh
#
# Script to keep the network connection active only if not connected to 'HomeWifi'
#

# IP to ping
SERVER=8.8.8.8

# Desired network SSID
DESIRED_SSID="HomeWifi"

# Function to check SSID and ping/reconnect if necessary
keep_network_alive() {
    # Get current SSID
    CURRENT_SSID=$(iw dev wlan1 link | grep 'SSID' | awk '{print $2}')

    # Check if the current SSID is not the desired one
    if [ "$CURRENT_SSID" != "$DESIRED_SSID" ]; then
        echo "Not connected to $DESIRED_SSID, checking internet connection..."
        if ! ping -c 1 $SERVER > /dev/null 2>&1; then
            echo "Internet connection down. Attempting to reconnect..."
            /sbin/ifdown wlan1 && /sbin/ifup wlan1
        else
            echo "Internet connection is active, but not on $DESIRED_SSID."
        fi
    else
        echo "Connected to $DESIRED_SSID. No action required."
    fi
}

case "$1" in
  start)
    echo "Starting network maintenance..."
    while true; do
      keep_network_alive
      sleep 60  # Check every 60 seconds
    done &
    ;;
  stop)
    echo "Stopping network maintenance..."
    # Find the process and kill the loop
    kill $(ps aux | grep '[k]eep_network_alive' | awk '{print $2}')
    ;;
  restart|reload)
    "$0" stop
    "$0" start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
esac

exit 0  

Aquí tienes que tener en cuenta que el script asume que la Wi-Fi de casa se llama “HomeWifi”. Debes ajustarlo con el nombre de tu red de casa paraq ue funcione, o mejorarlo para que se tome de forma dinámica desde el el archivo batocera.conf, pero esto último te lo dejo a ti.

En resumen, con algunas configuraciones adicionales y soluciones creativas, puedes mejorar significativamente tu experiencia de retrogaming en el Anbernic 35xxh. Desde optimizar la conectividad Wi-Fi hasta asegurar que tu conexión se mantenga estable, estas modificaciones te permitirán disfrutar de tus juegos clásicos sin interrupciones. ¡Feliz retrogaming!

Referencias

Leave a Comment