« Home | Nuevo video promocional de Pokémon Perla/Diamante » | Nueva DS Lite versión Pokémon » | Abierta la web de Dragon Quest Monster Joker » | Nuevos scans de Final Fantasy III » | Desvelados nuevos personajes de Mario Hoops 3on3 » | ¡Bienvenidos! »

Error en Nintendo WFC





Sacado de los foros de EOL (link) , nos enteramos que el famoso fallo que cortaba la conexión al principio de la tercera carrera, inicio de la cuarta en el Mario Kart tiene un origen en un fallo de programación de Nintendo, no en un fallo de los routers como se suponía. El texto ha sido publicado en EOL por marcansoft y os lo adjunto a continuación:

Errores en Mario Kart WFC (94030)
-
Cagada de Nintendo (detalles y solución)


Muchos hemos oido de gente con problemas al conectar a WFC con Mario Kart. En concreto, es típico que a la tercera carrera de un error 94030 y se desconecte. Pasa solo con ciertos (muchos) routers, y las soluciones generalmente son cambiar de router o actualizar el firmware, etc. Supongo que la mayoría pensamos que es la conexión a internet o el router que tiene fallos.

NO

El problema radica en un bug, o mas bien una omisión muy importante en el código de red del Mario Kart y de aparentemente otros (puede que todos) los juegos WFC. No se puede solucionar desde los servidores (a no ser que tengan un metodo de parchear el juego via online o algo similar), y no se me ocurre como a los programadores se les ha olvidado / la han cagado de esta forma.

Yo llevaba una semana con el Mario Kart, con los problemas de marras. Ni una sola vez habia conseguido acabar las 4 carreras al jugar online. Ni una. Entonces saqué el packet sniffer y me puse a investigar.

Descripción sencilla
En una red Ethernet o WiFi, las maquinas tiene una dirección MAC fija y (por lo general) inalterable. Para comunicarse con la maquina que tenga cierta IP, preguntan quien la tiene, y ese host debe contestar con su MAC.

La DS no lo hace. Repetid conmigo: la DS se salta a la torera un requerimiento muy importante de los estandares de TCP/IP y Ethernet. No es una chorrada ni un bug pequeño, es que directamente no implementa una parte importantísima.

Esto lo podeis comprobar haciendo ping a la DS. En lugar del típico error de tiempo de espera agotado, os dará error de ruta al host - como si hicierais ping a un host en la red local que no existiera - porque el PC no sabe a quien enviar el ping si no obtiene respuesta a las peticiones.

La perdida de conexión se produce a la tercera carrera porque los routers al parecer "olvidan" estas direcciones cada cierto tiempo, supongo que por motivos de optimización, para mantener las tablas limpias. El router obtiene la asignacion IP->MAC cuando la DS se conecta porque la DS en sí le pide la MAC al router (y este de paso guarda la de la DS), pero mas adelante cuando las borra, pregunta de nuevo y no obtiene respuesta. Se pierde la comunicación, la DS envia pero no recibe nada porque el router no sabe quien es la DS.

Esto no tiene nada que ver con DHCP por cierto. Con el 3CRADSL72 DHCP no funciona (es el que tengo yo), pero esto sí que es por un bug en el router (no envía las respuestas DHCP correctamente, y las envia en broadcast y a velocidad de 11Mbps aunque la DS le haya dicho lo contrario, y como la DS tiene un maximo de 2Mbps, pues no rula.) Pero esto se puede evitar simplemente poniendole IP fija.

Descripción técnica
La DS no responde a las peticiones ARP. Los routers hacen una limpieza de la caché de mapeos IP->MAC (tabla ARP) de vez en cuando, y cuando esto ocurre la DS no contesta a las nuevas peticiones, y el router no sabe a quien enviarle los paquetes.


Workaround / medio solucion

He hecho un programita para Linux que responde a las peticiones de ARP del router simulando ser la DS, para que el router pueda comunicarse con ella correctamente. Lo podeis bajar aqui (:
http://marcansoft.com/subidos/dsarp.c
Tendreis que compilarlo y ejecutarlo como root(usa raw sockets para simular ser la DS, y eso no va como usuario normal). Los parametros son la interfaz de red, la MAC de la DS, y la IP de la DS. Si alguien puede/quiere portarlo a Windows que lo haga, y así podra mas gente evitar los problemas. Usa las librerias PCAP, que tienen versión windows, pero la sección de generar el paquete ARP habrá que reescribirla para Win. Y creo que el XP no soportaba RAW sockets por "seguridad", asi que puede que haya que instalar algun driver que lo desbloquee.

para compilar, asi:
gcc -o dsarp dsarp.c -lpcap

Por supuesto hay que usarlo en la misma red en la que esta la DS. He comprobado que funciona: hoy es el primer dia que he acabado las 4 carreras.

Hola, tengo un router de ya.com 3CRADSL72 y el mario se me cuelga en la tercera carrera como bien dices. Qué puedo hacer? YACOM ha dado soluciones (actualización de firmware) a los que tienen un router 3com posterior, pero no a este que tengo yo (que si no me equivoco es el tuyo).
Podrias ayudarme por favor? no entiendo mucho de esto...
Muchas gracias!!
Laura

Publicar un comentario

Encuesta

    ¿Cuál es el mejor juego online de DS?
    Tetris DS
    Mario Kart
    Animal Crossing
    Metroid Prime Hunters
    42 Juegos de Siempre
    Starfox Command
    Lost Magic
    Diddy Kong Racing
    Tony Hawk's Downhill Jam
    Tony Hawk's American Sk8land

    Ver resultados

ChatBox




Créditos

¡Enlázanos!

Technorati

Firefox Publicidad