Está en la página 1de 41

Programa Actividad Nocturna • Realidad Aumentada • Desarrollo Android

ODROID
Año Tres
Num. #29
May 2016

Magazine

LAPROFUNDA
INTERNET
• CONFIGURA UN REPETIDOR TOR EN TU ODROID
• CONOCE LA INYECCION DE CODIGO INALAMBRICA
• Reproduce • Crea tu propio
tu música con smart car con
Cherry Music un ODROID-XU4
Qué defendemos...
Nos esmeramos en presentar una tecnología punta,
futura, joven, técnica y para la sociedad de hoy.

Nuestra filosofía se basa en los desarrolladores. Con-


tinuamente nos esforzamos por mantener
estrechas relaciones con éstos en todo el mundo.

Por eso, siempre podrás confiar en la calidad y


experiencia que representa la marca distintiva de
nuestros productos.

Simple, moderno y único.


De modo que tienes a tu alcance lo mejor.

Ahora estamos enviando los


dispositivos ODROID U3 a los
países de la UE! Ven y visita
nuestra tienda online!

Dirección: Max-Pollin-Straße 1
85104 Pförring Alemania

Teléfono & Fax


telf : +49 (0) 8403 / 920-920
email : service@pollin.de

Nuestros productos ODROID se pueden encon-


trar en: http://bit.ly/1tXPXwe
EDITORIAL
N
uestro tema de este mes es la seguridad en Internet y el
anonimato. La Web profunda es una gran parte de Inter-
net que no está indexada por los motores de búsqueda
tradicionales, y requiere de un navegador especial llamado Tor
para acceder a ella. Tor ofrece una experiencia de navegación
segura, dando a los usuarios ac-
ceso a repetidores especiales que
proporcionan una entrada y salida
seguras a la Web profunda. Tal y
como describe David en su artículo, un
ODROID se puede utilizar para configu-
rar un repetidor TOR de bajo coste que te pro-
porcionará servicios de navegación anónimos.
Puesto que la información financiera se trans-
fiere a través de la World Wide Web, es importante mantener
una red local segura. Una técnica muy común para monitorizar malicio-
samente el tráfico de un router es la inyección inalámbrica, Adrian nos detalla las formas
de proteger una red usando Kali Linux, una potente suite de pruebas de penetración.
Tobias analiza Atari Jaguar, Nanik nos presenta Android Support Library para mantener
la compatibilidad con versiones antiguas de Android, y Marian nos cuenta cómo monitori-
zar el sueño de un bebé. Nuestros proyectos de bricolaje incluyen la instalación de Cherry
Music, un Car PC integrado y la producción de realidad aumentada con una oCAM.
ODROID Magazine, que se publica mensualmente en http://magazine.odroid.com/, es la fuente de todas las cosas ODROIDianas. • Hard
Kernel, Ltd. • 704 Anyang K-Center, Gwanyang, Dongan, Anyang, Gyeonggi, South Korea, 431-815 • fabricantes de la familia ODROID de
placas de desarrollo quad-core y la primera arquitectura ARM “big.LITTLE” del mundo basada en una única placa.
Para información sobre cómo enviar articulos, contacta con odroidmagazine@gmail.com, o visita http://bit.ly/1ypImXs.
Únete a la comunidad ODROID con miembros en más de 135 países en http://forum.odroid.com/ y explora las nuevas tecnologías que te
ofrece Hardkernel en http://www.hardkernel.com/
NUESTRO MARAVILLOSO PRESONAL ODROIDIAN:

Rob Roy, Editor Jefe


Soy un programador informático que vive y trabaja en San Francisco, CA, en el diseño y desarrollo de aplicaciones web
para clients locales sobre mi cluster ODROID. Mis principales lenguajes son jQuery, angular JS y HTML5/CSS3.
También desarrollo SO precompilados, Kernels personalizados y aplicaciones optimizadas para ODROID basadas
en las versiones oficiales de Hardkernel, por los cuales he ganado varios Premios. Utilizo mi ODROIDs para diversos
fines, como centro multimedia, servidor web, desarrollo de aplicaciones, estación de trabajo y como plataforma de
juegos. Puedes echar un vistazo a mi colección de 100 GB de software ODROID, kernel precompilados e imágenes en
http://bit.ly/1fsaXQs.

Bruno Doiche, Editor Artístico Senior


¿Qué es lo que está haciendo últimamente nuestro amigo? Organizar todas sus colecciones de música que ha recibido en
los últimos 20 años. Pensamos que es sobre todo un intento de gusto frustrado, especialmente cuando vemos a Bruno pasar
de Death metal a Depeche Mode para niños. Pero, ¿Qué podemos hacer, verdad? ¡Al menos lo escucha con auriculares la
mayoría de las veces!
Además, es un poco mamón con David, que le da una paliza en el juego de cartas utilizando su propio servidor XMAGE
con ODROID. Pocos usuarios en el mismo servidor significa que Bruno pierde sus partidas más rápido que nunca.

Manuel Adamuz, Editor Español


Tengo 31 años y vivo en Sevilla, España, aunque nací en Granada. Estoy casado con una mujer maravillosa y tengo un
hijo. Hace unos años trabajé como técnico informático y programador, pero mi trabajo actual está relacionado con
la gestión de calidad y las tecnologías de la información: ISO 9001, ISO 27001, ISO 20000 Soy un apasionado de la
informática, especialmente de los microordenadores como el ODROID, Raspberry Pi, etc. Me encanta experimentar
con estos equipos y traducir ODROID Magazine. Mi esposa dice que estoy loco porque sólo pienso en ODROID. Mi
otra afición es la bicicleta de montaña, a veces participo en competiciones semiprofesionales.

Nicole Scott, Editor Artístico


Soy una experta en Producción Transmedia y Estrategia Digital especializa en la optimización online y estrategias
de marketing, administración de medios sociales y producción multimedia impresa, web, vídeo y cine. Gestiono
múltiples cuentas con agencias y productores de cine, desde Analytics y Adwords a la edición de vídeo y maqu-
etación DVD. Tengo un ODROID-U3 que utilizo para ejecutar un servidor web sandbox. Vivo en el área de
la Bahía de California, y disfruta haciendo senderismo, acampada y tocando música. Visita mi web http://www.
nicolecscott.com.

James LeFevour, Editor Artístico


Soy un especialista en medios digitales que disfruta trabajando como freelance en marketing de redes sociales y admin-
istración de sitios web. Cuanto más aprendo sobre las posibilidades de ODROID más me ilusiona probar cosas nuevas
con él. Me traslade a San Diego desde el Medio Oeste de los EE.UU. Continuo muy enamorado de muchos de los
aspectos que la mayoría de la gente de la Costa Oeste ya da por sentado. Vivo con mi encantadora esposa y nuestro
adorable conejo mascota; el cual mantiene mis libros y material informático en constante peligro.

Andrew Ruggeri, Editor Adjunto


Soy un ingeniero de sistemas Biomédicos anclado en Nueva Inglaterra que actualmente trabaja en la industria
aeroespacial. Un microcontrolador 68HC11 de 8 bits y el código ensamblador son todo lo que me interesa de los
sistemas embebidos. Hoy en día, la mayoría de los proyectos en los que trabajo están en lenguajes C y C ++, o en len-
guajes de alto nivel como C# y Java. Para muchos proyectos, utilizo placas ODROID, pero aún sigo intentando utili-
zar los controladores de 8 bits cada vez que puedo (soy un fan de ATMEL). Aparte de la electrónica, soy un amante de
la fotografía analógica y desarrollo la película friki con la que disfruto intentando hablar en idiomas extranjeros.

Venkat Bommakanti, Editor Adjunto


Soy un apasionado de los ordenadores desde la bahía de San Francisco en California. Procuro incorporar muchos de
mis intereses en proyectos con ordenadores de placa reducida, tales como pequeños modificaciones de hardware,
carpintería, reutilización de materiales, desarrollo de software y creación de grabaciones musicales de aficionados. Me
encanta aprender continuamente cosas nuevas, y trato de compartir mi alegría y entusiasmo con la comunidad.

Josh Sherman, Editor Adjunto


Soy de la zona de Nueva York, y ofrezco mi tiempo como escritor y editor para ODROID Magazine. Suelo experi-
mentar con los ordenadores de todas las formas y tamaños: haciendo trizas las tablets, convirtiendo Raspberry Pi en
PlayStations y experimentado con los ODROIDs y otros SoCs. Me encanta trabajar con los elementos básicos y así
poder aprender más, y disfrutar enseñando a otros escribiendo historias y guías sobre Linux, ARM y otros proyectos
experimentales divertidos.
INDICE
REPETIDOR TOR - 6

PRODUCCION DE ODROID - 9

CHERRY MUSIC - 10

INYECCION INALAMBRICA - 12

REALIDAD AUMENTADA - 19

JUEGOS LINUX: aTARI JAGUAR - 23

DESARROLLO ANDROID: ANDROID SUPPORT LIBRARY - 28

JUEGOS lINUX: bATTLE fOR THE sOLAR sYSTEM - 31

BABY NAP (PROGRAMA DE ACTIVIDAD NOCTURNA) - 32

CAR PC - 36

CONOCIENDO A UN ODROIDIAN - 40
REPETIDOR TOR

convierte tu ODROID
en un repetidor Tor
Protegiendo a la vez la libertad de un ODROID
por David Gabriel

T
Aunque los servicios de Internet de las grandes empresas son
or es un software gratuito que permite acceder a una
muy buenos, en algunos se cuelan intrusos impertinentes, Tor
red abierta muy útil en comunicaciones anónimas. El permite crear un repetidor de acceso libre de miradas indiscretas.
nombre deriva de las siglas del proyecto original, The
Onion Router. Protege tu privacidad redireccionando el tráfi-
co de Internet a una red de miles de repetidores, y evita las uti- zado utilizando los siguientes comandos:
lidades que supervisan redes y analizan el tráfico recopilando
datos mientras navegas. En otras palabras, te hace “invisible”, $ sudo apt-get update

de modo que los sitios web no saben tu ubicación por la direc- $ sudo apt-get upgrade

ción IP o por el proveedor de servicios de Internet (ISP). La


gente que monitoriza tu red no será capaz de ver las páginas Luego, instala la aplicación Tor y sus dependencias con el
web y los recursos a los que accedes. siguiente comando:
Todas las comunicaciones dentro de Tor están cifradas.
Cuando se envían los datos, éstos son cifrados varias veces en $ sudo apt-get install tor

la capa de aplicación, y anidados como si fueran capas de ce-


bolla. Las rutas de los datos incluyen repetidores escogidos al Opcionalmente, también puedes instalar Arm (acrónimo
azar. Cada repetidor descifra una capa de codificación reve- de: anonymizing relay monitor), que es una aplicación para
lando únicamente el siguiente repetidor y trasladando la in- controlar y configurar Tor. Su funcionamiento es similar
formación restante a éste. El proceso continúa hasta que el a una utilidad Linux llamada top, se puede instalar con el
último repetidor descifra los datos originales y los envía al des- siguiente comando:
tinatario sin revelar la dirección IP de origen.
La desventaja de usar Tor es que tu conexión de Internet se $ sudo apt-get install tor-arm

volverá más lenta de lo normal, debido a las continuas fases de


cifrado y descifrado y al paso por múltiples repetidores. La ve- Configuración
locidad de transferencia de información sería perceptiblemente Tor se puede personalizar modificando su archivo de con-
más baja. figuración. Puedes utilizar tu editor de texto favorito para edi-
tar el archivo /etc/tor/torrc y añadir las opciones comentadas
Instalación (con #) que se enumeran a continuación:
En primer lugar, asegúrate de que el sistema está actuali-

ODROID MAGAZINE 6
REPETIDOR TOR

Tu repetidor actuará como punto interme-


dio para enviar datos cifrados de un sitio a
otro, lo cual garantiza una conexión anóni-
ma y segura.

Log notice file /var/log/tor/notices.log # Log file destination


RunAsDaemon 1 # Start process in background as a daemon
ORPort 9001 # Port to be used by incoming connections
DirPort 9030 # Port to be used by directory connections
ExitPolicy reject *:* # Implies that your relay will be used for
# relaying traffic inside the Tor network, but
# not for connections to external websites or
# other services
Nickname odroid-tor-relay # Can be anything you like, so people
# don’t have to refer to your relay by key
RelayBandwidthRate 100 KB # Throttle traffic to 100KB/s (800Kbps)
RelayBandwidthBurst 200 KB # But allow bursts up to 200KB/s (1600Kbps)

Si instalas la aplicación Arm opcional, debes añadir las siguientes líneas de con-
figuración en el archivo que hemos mencionando anteriormente:

ControlPort 9051 # Port to be used by controller applica-


tions.
CookieAuthentication 1 # Authentication method to be used by the
# controller application
DisableDebuggerAttachment 0 # Required by Arm application to be able to
use
# commands like netstat to monitor the network
# traffic

A continuación, reinicia Tor para que la nueva configuración tenga efecto, para
ello usa el siguiente comando:

ODROID MAGAZINE 7
REPETIDOR TOR

$ sudo service tor restart

Si todo va bien, deberías ver una entrada en /varlog/tor/log como esta:

Jan 15 11:38:53.000 [notice] Tor has successfully opened a circuit.


Looks like client functionality is working.

Ten en cuenta que si tu red está protegida por un cortafuegos, tendrás que
configurarlo para que permita peticiones entrantes en los puertos, 9030 (para
el servicio de directorios) y 9001 (para el funcionamiento del repetidor). Puede
que tengas que recurrir a la Guía del usuario de tu cortafuegos para configurar
esta opción. Si has instalado Arm, puedes iniciarlo con el comando:

$ sudo arm

Aunque hay muchas opciones que se pueden configurar, las más interesantes
están relacionadas con los gráficos que puedes generar para monitorizar todo
el tráfico que pasa a través de tu repetidor. Consulta la ayuda de la aplicación
Arm, para obtener más información sobre cómo aprovechar todo su potencial.
Por defecto, Tor también soporta el protocolo Socket Secure (SOCKS), so-
bre el puerto 9050. Puedes configurar tu navegador para que sea un cliente Tor
y redirija todas las conexiones a través de repetidores Tor protegiendo así tu
privacidad y manteniendo el anonimato. En Firefox, por ejemplo, puedes ir a
Opciones> Avanzado> Red> Configuración, cambia la configuración del proxy
a manual y añade 127.0.0.1 con el puerto 9050 a la línea de “Servidor SOCKS”
y pincha en “Aceptar” para confirmar.
Para comprobar tu configuración, visita el sitio web del proyecto Tor http://
bit.ly/1oh1f82 usando un navegador. Te darás cuenta que la dirección IP públi-
ca que aparece en esta página será diferente a tu dirección IP real. Este es el
nodo de salida de tu petición, el cual garantiza que no se rastrea tu ubicación
o se muestra información personal. Ten en cuenta que los datos sólo se cifran
cuando estos pasan por la red Tor. Los datos se enviarán tal como están, así que
cualquier cosa que haya sido encriptada desde el principio seguirá estando así,
tras dejar el nodo de salida.
Si deseas desactivar esta función SOCKS y mantener tu ODROID sólo
como repetidor, agrega la siguiente línea al archivo /etc/tor/torrc y reinicia el
servicio Tor:

SocksPort 0 # Disable torsocks

El cliente Tor también puede utilizarse en otros sistemas operativos. La


configuración puede variar ligeramente dependiendo del sistema operativo y el
navegador, pero las opciones que acabamos de ver es un buen punto de partida
para empezar.

References
http://bit.ly/1cqlVa3 http://bit.ly/1PvVIqy
http://bit.ly/1U9oXqa http://bit.ly/1U9pgkM
http://bit.ly/19QYR47 http://bit.ly/1MOsQPE
http://bit.ly/1nBUETC

ODROID MAGAZINE 8
PRODUCCION ODROID

La Produccion de ODROID
Una retrospectiva De los Primeros Años de Hardkernel
editado por Rob Roy

P
or casualidad te ha preguntado alguna vez cómo se ha-
cen los ODROIDs. Aunque el proceso ha ido cambi-
ando con los años, aquí tienes un interesante análisis
de cómo era la primera línea de productos de Hardkernel, el
ODROID-X y el ODROID-Q, fabricados en julio de 2012.

Figura 4 – La soldadura SMT está terminada, y las placas es-


tán listas para someterlas al proceso de inspección

Figura 1 – El primer paso del proceso es una máquina llamada


“Solder cream printer”

Figura 5 - Inspección por rayos X para comprobar la calidad


Figura 2 - La maquina Surface Mount Technology (SMT) de la soldadura
monta los dispositivos sobe la PCB

Figura 6 – Líneas de fabricación, donde las PCBs son trasla-


dadas a otra máquina de soldadura para añadirle diferentes
Figura 3 – Las placas se introducen en una maquina de solda- conectores tras el proceso de análisis, y pasar por todas las
dura de reflujo. pruebas de funcionalidad.

ODROID MAGAZINE 9
CHERRY MUSIC

CherryMusic
Tu propio sistema streaming de
musica privado
por @synportack24

C
herryMusic es un servidor de streaming de música basado en CherryPy y
jPlayer. Reproduce archivos de música almacenados en tu PC, teléfono in-
teligente, tablet, ODROID o cualquier dispositivo que tenga instalado un
navegador compatible con HTML 5. CherryMusic está basado en AJAX, de modo
que no requiere actualizaciones de página, haciendo que sea muy rápido. La interfaz
de usuario basada en navegador funciona en cualquiera dispositivo móvil o de escri-
torio. Con multitud de funciones y características permite crear listas de reproduc-
ción, navegar por la música, configurar múltiples cuentas de usuario y mucho más.

Vista web móvil

Un sistema basado en CherryMusic se puede combi-


nar con cualquier sistema HTPC que encuentres. Es lige-
ro y se puede ejecutar fácilmente en segundo plano, sin
sobrecargar los procesadores. Para la configuración que
se describe en este artículo, he utilizado un ODROID-
XU4 como centro multimedia y un disco duro de gran
capacidad para almacenar todos los archivos de música.
Me permite transmitir música a cualquier dispositivo de
la casa, mientras que otros están libres para visualizar
simultáneamente vídeo por streaming utilizando Kodi.

Requisitos previos
Primero, debes reunir las siguientes dependencias de software:

Python (version 2.6 o 3.2)


git
screen

Las pueden instalar con el siguiente comando:

$ sudo apt-get install python git screen

Instalación
La instalación es simple y fácil. En primer lugar, accede al terminal (ssh o local) Página web de escritorio
del dispositivo que contiene los archivos de música. Luego, instala CherryMusic u-
sando los siguientes comandos:

$ cd ~
$ git clone -b master \

ODROID MAGAZINE 10
CHERRY MUSIC

https://github.com/devsnd/cherrymusic.git

El cual se instala en un subdirectorio llamado ~/cherrymusic.

La mejor manera de iniciar CherryMusic es utilizar la utilidad screen, que te


permite ejecutar CherryMusic en segundo plano. Esto se puede conseguir con el
siguiente comando:

$ screen -mS cherrymusic ~/cherrymusic/cherrymusic --setup --port 8080

El entorno de trabajo CherryPy incluye un servidor web, que se utiliza para eje-
cutar la interfaz de usuario basada en navegador. Si el puerto 8080 ya es utilizado por
otra aplicación, puedes seleccionar otro puerto cambiándolo en el anterior comando.
Puede que se te solicite descargar cherrypy, así que presiona “Y”. La insta-
lación finalizará cuando aparezca un prompt. Tu pantalla debería ser similar a la
siguiente Figura, momento en el que debes pulsar Ctrl + A + D para asegurarte de
que CherryMusic se está ejecutando en segundo
plano.
Abre un navegador, ya sea en el dispositivo que
tienes instalado CherryMusic, o en un disposi-
tivo conectado a la red e introduce la siguiente
dirección. Ten en cuenta que es necesario utilizar
el puerto HTTP correcto si no es el 8080:

https://<hostname-of-cherrymusic-de-
vice>:8080

Ahora puedes configurar CherryMusic. El “Me-


dia base directory” es el directorio que contiene los
archivos de música. El resto de ajustes se pueden
Instalación
dejar con los valores por defecto. Haz clic en “Save Configuration and start Cher-
ryMusic” para pasar a crear una cuenta de administrador.
¡Ya está! La próxima vez que te conectes, se te pedirá el nombre de usuario y contrase-
ña. Tras iniciar sesión con éxito, podrás transmitir a cualquier dispositivo toda tu música.

Aquí tienes unos cuantos comandos para experimentar:

Cambiar a Cherrymusic que se estaba ejecutando en segundo plano


screen -r cherrymusic

Detiene la ejecución de CherryMusic


pkill cherrymusic

Lecturas recomendadas
GitHub de CherryMusic Página de CherryPy
http://bit.ly/1NCqFtb http://bit.ly/1NlW5t3

Página de CherryMusic Librería jPlayer


http://bit.ly/1r1eeTf http://bit.ly/1VlDyzQ

ODROID MAGAZINE 11
INYECCION INALAMBRICA

Inyeccion inalambrica
Una manera practica de conocer 802.11
por Adrian Popa

E
n mi anterior artículo, aprendimos cómo configurar los
diferentes módulos WiFi ODROID en modo monitor,
lo cual nos permitía escuchar el tráfico inalámbrico me-
diante Kismet. En este artículo, probaremos la inyección de
tráfico y analizaremos redes abiertas que utilizan diversos méto-
dos de protección incluida la encriptación. Terminaremos con
algunos ataques que no implican romper el cifrado de la red.
Aunque este artículo es de carácter técnico, su objetivo es el
de mostrarte cómo funcionan las redes inalámbricas. No está
Las pruebas de inyección pueden ayudarte a mantener tu red
diseñado para convertirte en un “script kiddie” que no entienda segura de intrusos desconocidos
lo que están haciendo. Si no has leído el artículo sobre Kismet
de ODROID Magazine del mes pasado, disponible en http:// Al mismo tiempo, cualquier PA identificado a través de un
bit.ly/20YG7Yg, hazlo ahora, ya que vamos a partir de esa ex- paquete beacon también es añadido a la lista de puntos de ac-
periencia previa. Como siempre, penetrar en la red de alguien ceso para ser procesado posteriormente. Si un PA específico
sin su consentimiento está totalmente prohibido, de modo que es añadido por línea de comandos, BSSID y SSID, también
sólo hacer esto con tus propias redes. se agrega a la lista. Despues, para cada punto de acceso de la
lista, se envían 30 peticiones de sondeo directas. Una petición
Preparación de sondeo directa siempre será dirigida a un punto de acceso
El término “inyección” se utiliza para indicar que se está específico. El número de respuestas de sondeo recibidas más el
generando tráfico inalámbrico, basado en paquetes especial- porcentaje aparecen en pantalla, esto te indica si puedes comu-
mente diseñados que pasan por alto el tráfico regular de Inter- nicarte con el PA y a qué nivel.
net del adaptador inalámbrico. Esto significa que un programa
es capaz de generar paquetes con determinados campos y en-
viarlos al controlador a través de la interfaz de monitor, incluso
los envía aunque no sean compatible con el protocolo utilizado.
Para hacer nuestra primera prueba de inyección, necesita-
remos una interfaz de monitor y aireplay-ng, el cual cubrimos
en el anterior artículo sobre Kismet. Opcionalmente, puedes
especificar el canal en el que quieres operar cuando crees la in-
terfaz mon0:

$ sudo airmon-ng start wlan0 6


$ sudo aireplay-ng -9 mon0 Figura 1 - Una prueba de inyección en ejecución

El programa inicialmente envía peticiones de sondeo por Redes abiertas


radiodifusión. Estas son las peticiones que solicitan a cual- Vamos a examinar con más detenimiento cómo funcionan
quier punto de acceso (PA) que está escuchando para que las redes inalámbricas en condiciones normales, creando una
responda con una descripción de sí mismo. No todos los PA red abierta y analizando su tráfico. En mi router, configure una
responderán a este tipo de solicitudes. Se creará una lista con red de prueba llamada “ NASA-HQ-Guests”, puesto que “FBI-
todos los puntos de acceso que respondieron, ésta será uti- Surveillance-Van-3” ya estaba cogida.
lizada en los siguientes pasos. Si un PA responde, aparece un Para monitorizar una red específica puedes utilizar airo-
mensaje en pantalla indicando que la tarjeta puede inyectar dump-ng o Kismet, ambas herramientas hacen el mismo traba-
con éxito. jo. Para ver una lista de redes disponibles y sus clientes, ejecuta

ODROID MAGAZINE 12
INYECCION INALAMBRICA

el siguiente comando, se supone que tu interfaz de monito- pruebas realizadas, el módulo 0 WiFi parecía tener un menor
rización ya está activada: número de paquetes perdidos. No obstante, las pruebas fueron
realizadas en la misma habitación en la que estaba el punto
$ sudo airodump-ng mon0 de acceso, de modo que no puedo hacer comentarios sobre el
nivel que puedas conseguir.
Debería ver una lista de redes con sus ESSIDs, nombre de la
red, BSSID y las direcciones MAC del PA, junto con su poten- Guardé una captura de paquetes, está disponible en GitHub
cia, tipo de cifrado y el canal. En este caso, queremos capturar en http://bit.ly/242cdEq. Si la analizas la captura en Wire-
todo el tráfico de la red con el ESSID “NASA-HQ-Guests”, shark, te darás cuenta de lo siguiente:
que tiene el correspondiente BSSID “9C:C1:72:3A:5F:E” y
que opera en el canal 1: • Los paquetes 254, 256 y 258 representan el tráfico de aso-
ciación y autenticación de IEEE 802.11.
$ sudo airodump-ng --write open-network-NASAHQ --out- • Una vez asociado, el cliente realiza peticiones DHCP para ob-
put-format pcap --bssid 9C:C1:72:3A:5F:E1 --channel 1 tener una dirección IP: paquetes 268, 269. La operación DHCP
mon0
completa no está capturada.
• Tráfico ARP para detectar la dirección MAC de la puerta de
enlace: paquetes 431, 435.
Para mis pruebas, tuve un cliente, mi smartphone conecta-
• Peticiones Echo ICMP a 8.8.8.8, paquetes 437. Como puedes
do a la red inalámbrica, ejecuté los siguientes comandos:
observar se enviaron tres pings, pero sólo fuimos capaces de
capturar una solicitud y sin respuesta.
$ ping -c 3 8.8.8.8 • Respuesta DNS para una petición a www.google.com: paquete
$ ping -c 3 www.google.com 484.
$ ping -c 3 www.hardkernel.com • Respuesta Echo ICMP para un ping a Google, paquete 486 y
$ wget -p http://www.hardkernel.com/main/main.php la segunda petición, 616, seguida poco después por la tercera
petición: paquetes 627-629. Puedes observar que los paquetes
Los comandos realizan algunas pruebas básicas de conectivi- de peticiones han sido retransmitidos varias veces por la capa
dad y simulan un navegador cargando la página de Hardker- MAC. Esto es transparente para los protocolos de capa 3, pero
nel, suponiendo que no está almacenada en caché. Lo mejor de puede introducir latencia y ruido adicional.
todo, es que se puede repetir y genera unos 10 MB de tráfico. • Petición DNS para www.hardkernel.com, retransmitida 4 vec-
Si echas un vistazo a la captura de paquetes, quizás observes es: paquetes 638-641
• Petición Echo ICMP a la IP de Hardkernel, dos paquetes de
uno de estos dos escenarios.
tres: 728, 737, 738.
• Por último, una consulta DNS y la respuesta de www.hardker-
Escenario 1: verás un montón de tráfico de gestión, pero
nel.com, esta vez nos pide 8.8.8.8: paquetes 814, 816.
poco o nada de tráfico de datos. Esto me pasó la primera vez • Tráfico HTTP, empezando con un triple handshake - sólo dos
que lo probé y me esforcé bastante en intentar comprender la paquetes capturados: paquetes 818, 824, y un HTTP GET, pa-
causa. Sospeché problemas con la modulación, las interferen- quete 825.
cias de los vecinos, las transmisiones direccionales y de trayec- • Tráfico HTTP con una gran cantidad de retransmisiones, como
toria múltiple, aliens, ¡lo que fuese! Tras varias pruebas en el por ejemplo los paquetes: 925, 927, 929, 931.
ODROID-C1 con el Módulo 3 Wifi, realice la misma prueba • Desvinculación con la red Wi-Fi: paquetes 27219, 27223.
en un PC con la misma tarjeta wifi y fue capaz de capturar
el tráfico milagrosamente. Esto significa que posiblemente el Para hacer el análisis HTTP en Wireshark, puede buscar
problema estaba en la combinación del kernel y el driver. He peticiones GET y utilizar la opción “Follow TCP Stream”, o
ejecutado el kernel estándar en el C1 y he vuelto a hacer las bien puedes hacer un tratamiento en masa de todo el tráfico
pruebas, pero sigo sin tener resulados. El Módulo 0 y el Módu- HTTP entrando en File -> Export Objects -> HTTP. Aquí
lo 4 Wiffi no tienen estos problemas y permiten capturar el puede ver todas las consultas realizadas y puedes potencial-
tráfico en el C1 sin problemas. mente extraer datos, como las imágenes. Por desgracia, si in-
tentas guardar los datos del sitio, te darás cuenta que la mayoría
Escenario 2: verás un montón de tráfico de gestión y algo de las imágenes están dañadas y el texto está cortado. Esto se
de tráfico de datos. La cantidad de tráfico de datos que ves pue- debe a que el receptor no fue capaz de capturar todo el tráfico
de variar en función de la posición de la antena, en relación del medio inalámbrico. Esto es muy diferente en la captura de
con el punto de acceso y el cliente, su patrón de interferencia paquetes en Ethernet, donde se evitan las colisiones y el me-
inalámbrica actual, además de otros factores. Basándome en las dio generalmente es muy fiable. El análisis resumido del tráfico

ODROID MAGAZINE 13
INYECCION INALAMBRICA ANDROID DEVELOPMENT

capturado te puede mostrar las limitaciones a las que te en- Cómo es la asociación de red
frentas cuando intentas capturar tráfico cifrado, de modo que La asociación a una red inalámbrica conlleva básicamente
puedes hacerte una idea del resultado final. dos pasos, como se muestra a continuación:
Si escuchas una red abierta que no tenga tráfico activo, Una estación móvil envía peticiones de sondeo para descu-
posiblemente veas cosas interesantes de las estaciones acti- brir las redes 802.11 de sus proximidades. Estas solicitudes de
vas de la red. Por ejemplo, observarás algo de tráfico ARP, sondeo anuncian la tasa de datos soportada por las estaciones
transmisiones de NetBIOS de hosts Windows, paquetes móviles y sus capacidades 802.11 tales como 802.11n. Puesto
multidifusión UPnP/SSDP de dispositivos DLNA, como que la solicitud de sondeo se envía desde la estación móvil a la
reproductores multimedia o routers e incluso DNS multidi- dirección de destino de capa 2 y BSSID ff:ff:ff:ff:ff:ff, a veces
fusión (puerto 5353) de hosts Linux y Apple que anuncian representado como “Broadcast”, todos los PA que la reciban
sus capacidades. responderán.
Incluso si consigues pocos datos, todavía pueden serte Los PA que reciben la petición de sondeo la examinan para
útiles ya que puedes analizar las peticiones de usuario y re- ver si la estación móvil tiene al menos una tasa de datos com-
copilar contraseñas sin cifrar y cookies enviadas con las peti- patible. Si es así, se envía una respuesta de sondeo con el SSID,
ciones POST. Te animo a que analices mis datos capturados, nombre de la red inalámbrica, tasas de datos soportadas, tipos
de cifrado si se requiere y otras capacidades 802.11 del PA.
Una estación móvil elige las redes compatibles a partir de
las respuestas de sondeo que recibe. Además, la compatibilidad
también se puede basar en el tipo de cifrado. Una vez descubi-
ertas redes compatibles, la estación móvil intentará la autenti-
cación 802.11 de bajo nivel con los puntos de acceso compati-
bles. Recuerda que el mecanismo de autenticación 802.11 no
es igual que el WPA2 o el 802.1X, que se lleva a cabo una vez
que la estación móvil se autentifica y se asocia. Originalmente,
la autenticación 802.11 fue diseñada para el cifrado WEP, sin
embargo, se ha demostrado que este sistema de seguridad es
inseguro y por lo tanto esta en desuso. Por esto, los cuadros de
autenticación 802.11 están abiertos y casi siempre tienen éxito.
Una estación móvil envía un cuadro de autenticación
Figura 2 – Análisis de una red abierta 802.11 de bajo nivel a un PA, cambia la autenticación a a-
bierta y la secuencia a 0x0001.
o intentar capturar tus propios datos en una red abierta. El PA recibe la información de autenticación y responde a
¡Recuerda lo que puedes llegar a ver la próxima vez que te la estación móvil con el cuadro de autentificación fijando en
conectes a una red abierta en un restaurante o aeropuerto! abierto indicando una secuencia de 0x0002.
Si un punto de acceso recibe cualquier dato que no sea una
petición de sondeo o autentificación desde una estación móvil,
ésta no será autentificada. Entonces, responderá con una desau-
tentificación colocando a la estación móvil en un estado de no
autentificada y no vinculada. La estación tendrá que iniciar el
proceso de asociación desde el paso de autentificación de bajo
nivel. Llegado a este punto, la estación móvil se encuentra auten-
ticada pero no vinculada todavía. Algunos funciones 802.11 per-
miten que una estación móvil tenga autentificados de bajo nivel a
múltiples puntos de acceso. Esto acelera el proceso de asociación
cuando nos movemos entre varios puntos de acceso, conocido
como “roaming”. Una estación móvil puede estar autentificada
802.11 por múltiples puntos de acceso. Sin embargo, sólo puede
estar vinculada de un modo activo y transfiriendo datos a un
único punto de acceso a la vez.

Figura 3 – Proceso de Autentificación/asociación

ODROID MAGAZINE 14
ANDROID DEVELOPMENT INYECCION INALAMBRICA

Una vez que una estación móvil determina a qué PA desea Vamos a configurar nuestra red en modo no radiodifusión
asociarse, envía una solicitud de asociación al PA. La solicitud de y vamos a tener airodump-ng escuchando el tráfico, sólo para
asociación contiene los tipos de cifrado elegidos si fuera necesario redes abiertas en nuestro caso. Te darás cuenta que las redes
y otras funciones 802.11 compatibles. Si un punto de acceso re- ocultas aparecen generalmente como “< length: xx >” en lugar
cibe un cuadro de una estación móvil que está autentificada, pero
aún no asociada, responderá con un cuadro de desvinculación,
que coloca a la estación en un estado de autentificada pero no
vinculada.
Si los elementos de la petición de asociación se ajustan a las
características del PA, el AP crear un ID de asociación para la
estación móvil y responderá con una respuesta de asociación que
contiene un mensaje de éxito permitiendole el acceso a la red.
La estación móvil entonces se asociará con éxito al PA y la
transferencia de datos podrá empezar.
En WPA, WPA2 o 802.1x, se toman medidas adicionales
después de la fase de asociación y antes de que los datos empie-
cen a transmitirse.
Incluso después de que un cliente se conecte a un PA, éste
continúa enviando peticiones de sondeo, tanto “dirigidas”
como por radiodifusión, con el fin de descubrir nuevos y poten-
cialmente mejores puntos de acceso en sus inmediaciones. Las
solicitudes de sondeo dirigidas contienen el SSID de los puntos
de acceso conocidos por el cliente con la esperanza de que éstos
estén cerca. Alguien que esté escuchando en el medio inalám-
brico puede utilizar esto para obtener una lista de SSIDs fiables
de un cliente y utilizarlos para seguirles la pista, o simplemente
para crear puntos de acceso “dobles malicioso”. Puedes encon-
trar un video sobre este tema en http://bit.ly/1WLAkVH.
Figura 5 - Análisis de paquetes de una conexión con SSID oculto
SSIDs ocultos
Una forma de intentar proteger una red es ocultando su de SSID. Tan pronto como un cliente se encuentre en las
SSID. La mayoría de los routers tienen una opción para que inmediaciones, ni siquiera necesita conectarse ya que emitirá
puedas configurar tu SSID en modo “no-radiodifusión”. Esto peticiones de sondeo dirigidas, airodump mostrará el nombre
significa que el router emite señales, pero éstas contendrán un de la red. Es muy fácil, lo único que tienes que hacer es esperar.
SSID en blanco. Los clientes que deseen conectarse a la red
necesitan conocer el SSID de antemano y enviar peticiones de $ sudo airodump-ng -t OPN --channel 1 mon0
sondeo. En teoría, esto es genial, ya que el atacante tendría que
adivinar un SSID posiblemente complicado. Sin embargo, en Puedes ver cómo funciona esto echando un vistazo a la cap-
la práctica ofrece muy poca protección. tura de paquetes (figura 5). Para tu comodidad, la captura está
Cuando un cliente envía una petición de sondeo, éste re- disponible en http://bit.ly/1U9L2F4.
transmite los SSIDs que conoce. Esta transmisión también in-
cluye los SSIDs de los puntos de acceso ocultos. Cualquiera que Listas de acceso MAC
escuche pueden recopilarlos, ya que están sin cifrar incluso en Otra forma muy común de aumentar la seguridad en las
redes encriptadas. Ni siquiera es complicado revelar las redes redes es usar una lista de acceso MAC en el punto de acceso.
ocultas, airodump-ng lo hace por defecto. Esta lista especifica qué dispositivos pueden conectarse a la red.
Puesto que la dirección MAC es única y no cambia, permite al
administrador controlar los dispositivos que pueden unirse a
la red. Un atacante tendría que encontrar una dirección MAC
válida dentro de esa lista, y luego reemplazar su propia MAC
por una de la lista para poder unirse a la red.
Figura 4 - airodump completa el SSID cuando lo escucha

ODROID MAGAZINE 15
INYECCION INALAMBRICA ANDROID DEVELOPMENT

Si esto fuera un juego de adivinanzas, en el peor de los casos echar fuera a un usuario real, mediante el envío de un montón
el atacante tendría que pasar por las 2^48 direcciones, aunque de paquetes de desautenticación, como veremos más adelante.
en términos de probabilidad sería suficiente la mitad. Si se tar- Sin embargo, Conocer una MAC autorizada y contar con
un dispositivo con esa Mac en concreto son cosas diferentes.
Por suerte, es posible cambiar la dirección MAC de un adap-
tador WiFi, con NetworkManager o a través de macchanger:
$ sudo apt-get install macchanger
$ ifconfig wlan0
$ sudo macchanger --mac 88:30:8a:3f:44:b7 wlan0
$ ifconfig wlan0

Tabla 1 - Tiempo de búsqueda máximo en años para unos proveedores Hasta aquí mayoritariamente hemos analizado conceptos
teóricos de las redes inalámbricas. Estos te ayudarán a conver-
da 2 segundos en probar una dirección, serian necesarios unos tirte en un buen ingeniero de redes, pero aún no eres un “hax-
17 millones de años para pasar por todos ellas. Si el atacante tor”. Estudiada la teoría podemos pasar a la parte “133t”.
no está dispuesto a esperar tanto tiempo, podría probar con las
MAC de un proveedor en particular, como Apple, Samsung, Paquetes de desautentificación
HTC, etc, con la esperanza de conseguirla de un modo más Existe una forma sencilla y eficaz de causar problemas en tu
rápido. Los tres primeros bytes, 24 bits, de una dirección MAC sistema inalámbrico: inundar la red con paquetes de desauten-
representan el ID del proveedor, se puede consguir una lista de ticación. Estas señales dirigidas al punto de acceso provocarán
proveedores desde IEEE en http://bit.ly/1Idlxf2. que un cliente abandone la red. No existe ningún mecanismo
$ wget standards-oui.ieee.org/oui.txt de protección e encriptación alrededor de los paquetes de datos,
$ grep ‘(hex)’ oui.txt | grep -i Samsung | wc -l por lo que cualquier persona con un transmisor potente puede
suplantar estos paquetes y hacen que los clientes se desconec-
Incluso si aún sigue siendo demasiado tiempo, escanear un ten. Hay algunos casos legítimos en los que conviene hacerlo:
OUI, 24 bits, requiere algo más de 6 meses. Si aceleramos el Los sistemas de prevención de intrusiones inalámbricas
proceso usando múltiples tarjetas, la búsqueda se reduce con- (WIPS) envían paquetes de desautenticación falsos para desco-
siderablemente. Se podría llevar a cabo un ataque que podría nectar clientes conectados a otros puntos de acceso. Esto se hace
tener éxito en unos cuantos meses. para obligar a determinadas empresas o agencias gubernamen-
Es evidente que esta forma no es la usada por los hackers tales a conectarse a una serie de PA dentro de un área geográfica
para entrar en tu sistema. Vamos a ver una opción mucho más específica, tal como se describe en http://bit.ly/1T5lNi6.
rápida, escuchar una dirección MAC que ya tiene acceso. El Expulsar a tu suegra o al niño de la red. Probablemente
modo más simple para escuchar una red y ver qué clientes están sea más sencillo desde el propio punto de acceso, pero técnica-
asociados a ella es utilizar Kismet. Si hay poca actividad, ten- mente no es ilegal con los paquetes de desautenticación.
drás que esperar un tiempo, pero si estamos ante un punto de
acceso concurrido, los clientes se darán a conocer al instante. Existen algunos casos ilegítimos para usar los paquetes de de-
Disponer de una lista de clientes conectados significa tener una sautenticación:
lista de direcciones MAC autorizadas, de modo que puedes dar • Para revelar los SSID ocultos
por finalizada tu búsqueda rápidamente. Sin embargo, tener • Para capturar datos WPA y WPA2, obligando a los clientes a
dos dispositivos con la misma MAC en la misma LAN es un volver a conectarse
• Llevar a cabo ataques de Denegación de Servicio
gran problema, de modo que para entrar en la red tienes que
Para enviar un paquete desautentificación necesitas aireplay-ng:

$ sudo aireplay-ng -0 10 -a 9C:C1:72:3A:5F:E1\


-c 88:30:8A:3F:44:B7 mon0

Los parámetros son los siguientes:


-0 : Significa desautentificación
10 : El número de intentos a realizar. Cada intento envía 64 pa-
quetes al cliente y 64 paquetes al PA. Si se coloca un cero el
Figura 6 - Cambiando la dirección MAC

ODROID MAGAZINE 16
ANDROID DEVELOPMENT INYECCION INALAMBRICA

Figura 8 - ¡Hay muchas redes donde elegir!

$ sudo mdk3 mon0 b -c 11 -h 11 -w -g

Visitar la sede de Hardkernel


Hasta aquí hemos escuchado redes WiFi, expulsado gente y
Figura 7 - Ataque de Desautenticación testeado el alcance de las transmisiones. Ahora, vamos a probar
algo más atrevido; vamos a emitir puntos de acceso específicos
envío de paquetes de desautentificación será constante. e influir en dispositivos cercanos que pensaran que están en un
-a : es la dirección MAC del punto de acceso al que está co- lugar diferente. Vamos a visitar la sede central de Hardkernel
nectado el cliente. en Corea del Sur, ¡Abróchate el cinturón de seguridad!
-c : es la dirección MAC del cliente. Si se omite, aireplay enviará La geolocalización basada en red en dispositivos móviles
cuadros de radiodifusión para desconectar todos los clientes funciona recopilando las direcciones MAC de los puntos de
conectados al PA. Esta es la forma de hacer un ataque de de- acceso cercanos y enviando los datos a un servicio proveedor
negación de servicio.
de localización, que generalmente es Google si estás en An-
droid. El servicio de localización busca la lista de direcciones
Aunque aireplay es una herramienta muy potente, hay
MAC en una base de datos interna e informa de una ubicación
mejores. Por ejemplo, si instalas mdk3, descrita en http://bit.
aproximada. Es curioso que la ubicación de red no se basa para
ly/1psIKUw, tienes la posibilidad de desconectar todos los cli-
nada en la direcciones IP. Tal vez porque podrías conectarte a
entes inalámbricos desde todos los puntos de acceso visibles, o
Internet a través de una serie de túneles y el punto final podría
hacer otros tipos de ataques. Para instalarla, tienes que descar-
estar muy lejano geográficamente. Lo que vamos a hacer ahora
garla y compilarla por ti mismo:
es generar lo suficientes puntos de acceso usando mdk3 como
para engañar al dispositivo móvil.
$ git clone \
Para extraer la información del punto de acceso podemos
https://github.com/wi-fi-analyzer/mdk3-master
utilizar wigle.net, disponible en http://wigle.net/search. Re-
$ cd mdk3-master
llena las coordenadas y hacer clic en Search, que sólo está
$ make
disponible para usuarios registrados. Puede copiar y pegar los
$ sudo make install
resultados en un archivo de texto. He probado dos métodos,
pero el área pequeña es la que me funcionó:
Para desconectar todos los clientes que están conectados
a cualquier punto de acceso en el canal 6, puedes ejecutar el
Area grande:
siguiente comando:
320 puntos de acceso: http://bit.ly/1NHtIjX
Area pequeña:
$ sudo mdk3 mon0 d -c 6
45 puntos de acceso: http://bit.ly/217LBAa
¡Pero hay más! Mdk3 también puede emitir transmisiones
Puedes procesar el archivo y extraer sólo los BSSID y SSID:
de puntos de acceso falsos. Por ejemplo, yo he hecho público
puntos de acceso falsos con el cifrado WEP en el canal 11 con
$ cat hardkernel-small.txt | grep ‘infra’\
nombres aleatorios. Si esto no llega a bloquear o ralentizar los
| sed ‘s/infra.*//’ | sed -r ‘s/^map\s+//’\
ordenadores del tus vecinos, al menos, los desconcertará al in-
| sed -r ‘s/\t/ /’ > hardkernel-small-ssid.txt
tentar conectarse a una nueva red. Ten en cuenta que la fun-
ción de radiodifusión del PA no funciona correctamente con
Para que el ataque tenga éxito, la víctima tiene que tener
el Modulo 3 Wifi de ODROID, aunque sí que funciona muy
activada la localización por red, ajustando el WiFi en ahorro
bien con los otros dos módulos wifi.
de batería y no tener otras fuentes de ubicación disponibles.

ODROID MAGAZINE 17
INYECCION INALAMBRICA ANDROID DEVELOPMENT

Esto significa que el GPS debe estar apagado o no tener satélites Por lo tanto, coge tu ODROID, conéctalo a una batería,
GPS a la vista. Si el dispositivo está en modo de avión, ayudará inicia mdk3 y mételo en el microondas junto con un teléfono.
a mantener el bloqueo más tiempo, pero no es obligatorio. El ¿Suena como si fuera una historia de terror? ¡No te alarmes,
Wifi tiene que estar encendido y la víctima tiene que ser capaz aunque asegúrate de desconectar el microondas!
de acceder a Internet para poder comunicarse con el servicio de Dejé el teléfono y el ODROID en el interior durante unos
localización por red. Una típica víctima podría ser una tablet minutos y no pasó nada. Todavía tenía la misma ubicación en
sin conexión de datos 3G. el mapa. Sin embargo, cuando prácticamente me había rendido
y abrí la puerta del microondas, la ubicación cambio rápida-
Para empezar emitir redes con mdk3, utiliza el siguiente comando: mente a la sede de Hardkernel. Entonces, ¿qué había ocurrido?
Resulta que la conexión de datos inalámbrica que estaba us-
$ sudo mdk3 mon0 b -v\ ando había fallado, la señal no se recibía y el teléfono no podía
hardkernel-small-ssid.txt -g -t ponerse en contacto con el proveedor de ubicación. Sin embar-
go, mientras se encontraba en el microondas, había recopilado
Debería ver las redes que van apareciendo en tu lista de re- sufiencientes puntos de acceso coreanos como para pensar
des, pero si esperas y esperas un poco más ... parece que no firmemente que se encontraba en otra ubicación. Más inte-
sucede nada. Tuve que abrir Google Maps en mi teléfono y resante aún, el teléfono mantuvo su ubicación incluso cuando
apenas se movió. Esto ocurría porque las nuevas redes entraban se saco de la jaula de Faraday. Todavía podía ver los mismos
en conflicto en términos de ubicación, con las redes actuales de puntos de acceso y estaba algo confundido con el resto de su
mi zona y el servicio de ubicación no se aclaraba. En este estado alrededor, prefirió guardar la ubicación hasta que el ODROID
de “confusión”, el servicio de localización prefería mantener la dejó de transmitir.
ubicación actual original. Si no tienes muchas redes inalámbri-
cas a tu alrededor, puedes omitir el siguiente paso. Conclusión
En vista de las pruebas que hemos realizado, podemos ver
que 802.11 está muy lejos de ser seguro incluso cuando se
utiliza la robusta encriptación AES. Un atacante puede fácil-
mente desconectar cualquier objetivo, y con suficientes in-
tentos de desconexión puede forzar al objetivo a conectarse
a un punto de acceso diferente. El atacante puede realizar
ahora ataques man-in-the-middle contra la víctima, sin que la
víctima lo sepa. Un mecanismo de defensa contra algunos de
estos ataques es el estándar 802.11w (http://bit.ly/1rrivQh)
que añade cuadros de gestión protegida, pero no suele ser
compatible por todos los clientes.
En términos de privacidad, las redes inalámbricas son horri-
bles. Cada dispositivo transmite sus redes conocidas cada pocos
segundos, incluso si ya está conectado. Para solucionar esto, se
puede eliminar las redes conocidas de la configuración inalám-
brica o mantener el wifi apagado cuando no se esté utilizando.
Las redes ocultas y listas de acceso MAC sólo son eficaces
Figura 9 - Experimentando con la ubicación si a la red que estás intentando asegurar sólo se accede en raras
ocasiones. Por ejemplo, la wifi de tu casa de vacaciones. De lo
Para silenciar las redes de mi alrededor necesitamos algo más contrario, estas medidas se pueden considerar poco eficaces, ya
drástico - una jaula de Faraday. Se trata de una jaula metálica que se pueden evitar con muy poco esfuerzo.
que protege de las ondas electromagnéticas y puede eliminar Los servicios basados en puntos de acceso inalámbricos,
redes inalámbricas y datos 3G. ¿Cómo se construye una jaula tales como la ubicación son poco fiables ya que pueden ser en-
de Faraday casera? Probé con papel de aluminio, pero no fun- gañados con facilidad. Por ejemplo, si el teléfono de tu objetivo
cionaba. Necesitaba algo más robusto, como un microondas. tiene programas como Tasker que ejecuta acciones basándose
Si pongo mi teléfono en el interior del microondas, con la ali- en datos de localización, como desbloquear el teléfono cuando
mentación desconectada y cierro la puerta, puedo comprobar está cerca de un punto de acceso específico, puedes utilizar un
que la señal de la red de los puntos de acceso wifi disponibles ataque inalámbrico para abrir nuevas vías de ataque. Si tiene
disminuía significativamente. preguntas, comentarios y deseas más información, visita el hilo
de soporte en http://bit.ly/1r7wLNv.
ODROID MAGAZINE 18
REALIDAD AUMENTADA

realidad aumentada
Usando la oCam y el ODROID-XU4
por nowdac@withrobot.com

L
a realidad aumentada o RA, es y la orientación del mismo. Usando estos Empieza introduciendo el siguiente
una parte de la realidad virtual, datos, podremos colocar un personaje comando, que nos asegura que conta-
RV que se han convertido en algo virtual en la posición y postura correctas. mos con el último listado de paquetes:
muy de moda hoy día. En pocas pa- Para el marcador especial, utiliza-
labras, La RA superpone objetos artifi- remos ArUco que es una parte de la li- $ sudo apt-get update
ciales o información sobre una imagen breria OpenCV. Para más detalles sobre
real. A pesar de que ha existido desde ArUCO, puedes consultar documen- Prepara un directorio “Project” para
hace mucho tiempo, la RA se ha hecho tación en http://goo.gl/Ao6hBg. Para gestionar el código de ejemplo para
muy popular con el tan reciente y am- crear el personaje animado, usaremos ArUco y Ogre3D introduciendo los
plio uso de los dispositivos móviles. siguientes comandos:
En este tutorial mostraremos código
de ejemplo, lo compilaremos y lo eje- $ cd ~
cutaremos. La aplicación intentará colo- $ mkdir Project
car un curioso personaje animado sobre $ cd Project
un marcador especial.
Figura 2 - Principio de funcionamiento Después, instala la última versión de
de RA (Fuente: ARToolkit) OpenCV, que es la 2.4.9:

Ogre3D que es un motor de renderizado $ sudo apt-get install libopencv-


gráfico de código abierto. Puede encon- dev
trar más información sobre Ogre3D en
http://goo.gl/k1bMO4 . Compilación
Puesto que vamos a usar varias li- Para compilar ArUco, necesitamos
brerías en esta aplicación, puede pare- instalar las librerías con el siguiente co-
certe un poco complicado. Sin embargo, mando:
cuando veas al pequeño y gracioso per-
sonaje ejecutándose en RA, estarás de $ sudo apt-get install cmake
acuerdo conmigo en que vale la pena. build-essential\
libicu-dev freeglut3 freeglut3-
Configuración dev\
Necesitamos los siguientes elementos Libgstreamer0.10-dev\
Figura 1 - Ejemplo de configuración de para ejecutar la aplicación: libgstreamer-plugins-base0.10-
RA con RV (Fuente: ARToolKit) dev libxine2-dev
• ODROID-XU4
Funcionamiento • oCam Ahora estamos listos para descar-
Para ejecutar la demo de RA, necesita- • Impresora para imprimir el tablero gar y descomprimir el código fuente de
mos un fotograma de vídeo que con- marcador ArUco ArUco. Para ello, escribe los siguientes
tenga el marcador especial. El programa • Librerías OpenCV, ArUco, y comandos:
detecta el marcador y calcula la posición Ogre3D

ODROID MAGAZINE 19
REALIDAD AUMENTADA

$ cd ~/Project correspondientes parámetros en formato


$ mkdir aruco && cd aruco XML/YAML de OpenCV. Si no está fa-
$ wget http://sourceforge.net/ miliarizado con este proceso, en cualqui-
projects/aruco/\ er editor de texto crea un “camera.yml”
files/1.3.0/aruco-1.3.0.tgz y pega el siguiente contenido.
$ tar xzvf aruco-1.3.0.tgz %YAML:1.0
$ cd aruco-1.3.0

Por último, compilamos ArUco:

$ mkdir build && cd build


$ cmake .. Figura 4 - Creación de camera.yml u-
$ make -j 4 sando el editor de Pluma
$ sudo make install
0.025
El argumento “-j 4” tras el comando
“make” se usa para crear 4 tareas de com- Figura 3 – Tablero ArUco impreso con 6 Cuando veamos el tablero de marca-
pilación. Con 8 núcleos disponibles en el x 4 marcadores dores ArUco con la OCAM, el programa
ODROID-XU4, esto hará que proceso detectará los marcadores y mostrará sus
de compilación sea mucho más rápido. image_width: 640 IDs y posiciones en 3D.
image_height: 480 El siguiente paso es comprobar si
Pruebas camera_matrix: !!opencv-matrix podemos detectar el tablero:
Una vez finalizada con éxito la com- rows: 3
pilación, es el momento de probar ArU- cols: 3 $ ./aruco_test_board live board.
co. Para ello, necesitaremos un tablero dt: d yml camera.yml 0.025
marcador ArUco, oCam y una serie de data: [ 500., 0., 320.,
parámetros esenciales de la cámara. 0., 500., 240., Aquí verás que hemos especificado
Para crear un tablero marcador ArU- 0., 0., 1. ] “board.yml” y “camera.yml” como pará-
co, podemos utilizar estos comandos: distortion_coefficients: !!opencv- metros para detectar el tablero.
matrix
$ cd utils rows: 1
$ ./aruco_create_board 6:4 board. cols: 4
png board.yml dt: d
data: [ 0., 0., 0., 0. ]
Los argumentos para aruco_create_
board son: Es posible que quieras usar algún
Figura 5 - Pantalla del programa de
editor con interfaz gráfica, como Pluma, prueba del marcador ArUco
aruco_create_board similar al Bloc de notas de Windows.
[cols:rows] Al igual que el programa de prueba
[board image filename] $ pluma camera.yml de marcadores ArUco, este programa
[board information filename] de prueba del tablero ArUco detecta el
Puedes encontrar más información tablero y muestra también la posición
El archivo de información “board. sobre la calibración de la cámara en del tablero en 3D
yml”, contiene la información sobre los http://goo.gl/j3j0Xn. Figura 6 – Pantalla del programa de
marcadores, como son los identifica- prueba del Tablero ArUco
ciones y las posiciones de las esquinas. Ejecución
Si imprimimos “board.png”, podemos Una vez que la oCam esté conectada
hacernos con un tablero ArUco, como el al ODROID-XU4, estamos listos para
que se muestra en la Figura 3. probar ArUco con el siguiente comando:
Si sabes cómo calibrar la cámara,
puede ejecutar la calibración y usar los $ ./aruco_test live camera.yml

ODROID MAGAZINE 20
REALIDAD AUMENTADA

Casi estamos en el punto donde va- set (REQUIRED_LIBRARIES ${OpenCV_ $ cp ~/Project/aruco/aruco-1.3.0/


mos a poder añadir nuestra personaje LIBS} ${aruco_LIBS} ${OGRE_LI- build/utils/board.yml
animado al tablero. Para utilizar Ogre, BRARY} ${OIS_LIBRARY} boost_sys- $ cp ~/Project/aruco/aruco-1.3.0/
necesitamos instalar la librería: tem) build/utils/camera.yml

$ sudo apt-get install libo- Tras hacer estas correcciones, estamos


gre-1.8-dev libois-dev listos para compilar el código editado:

Para conseguir el código fuente $ cmake -DCMAKE_BUILD_


que contiene ArUco y Ogre, utiliza los TYPE=Release
siguientes comandos: $ make -j 4

$ cd ~/Project Figura 8 - La modificación de la ruta de


$ mkdir ogre-test && cd ogre-test
acceso a la librería Ogre
$ wget https://sourceforge.net/
projects/aruco/\ Finalmente, estamos listos para ini-
files/ogre-test/ogre-test- ciar nuestra demo de RA.
0.0.3.tgz
$ tar xzvf ogre-test-0.0.3.tgz $ ./aruco_test_board_ogre live\
$ cd ogre-test-0.0.3 camera.yml board.yml 0.025

Desafortunadamente, este código Aceptar todos los ajustes por defec-


fuente de uso público tiene algunos er- to y haz clic en “Accept”. Visualizando
rores. Necesitas abrir tres fuentes, ar- el tablero de marcadores ArUco con la
chivos “*.cpp” y editarlos para corregir oCam, por fin podemos encontrarnos
los errores. La solución es la misma para Figura 7 - Corrección del código fuente con nuestro pequeño personaje Simbad.
cada archivo, la línea donde se debe rea-
lizar la modificación aparece junto al Ahora tenemos que hacer dos cosas
nombre del archivo. más. La primera consiste en modificar la
ruta de acceso a la librería de Ogre defi-
aruco_test_ogre.cpp (linea 164) nida en “plugins.cfg” en la línea 4, para
aruco_test_board_ogre.cpp (linea que sea la adecuada para nuestro entorno
161) ODROID.
aruco_test_board_ogre_mask.cpp Cambia esto:
(linea 179)
PluginFolder=/usr/lib/i386-linux-
Cambia la siguiente línea: gnu/OGRE-1.7.4

if (argv[1]==”live”) TheVideoCap- Por esto: Figura 9 - Lanzador para ejecutar la demo


turer.open(0);
RA
PluginFolder=/usr/lib/arm-linux- Por favor, echa un vistazo al video
Por esta: gnueabihf/OGRE-1.8.0 de http://goo.gl/PYRQpw para ver esta
demo de RA en acción utilizando una
if (string(argv[1]). Lo último es añdir los parámetros del oCam y un ODROID-XU4.
compare(“live”)==0) TheVideoCap- tablero y los parámetros esenciales de la
turer.open(0); cámara. Para ello, podemos utilizar los
archivos que ya están preparados para las
También tenemos que corregir pruebas de detección.
“CMakeLists.txt” en la línea 41 aña- Copia los archivos “board.yml” y
diendo “boost_system”, tal y como se “camera.yml” usando los siguientes co-
muestra a continuación: mandos. Figura 10 – Personaje de RA, Simbad

ODROID MAGAZINE 21
JUEGOS LINUX

JUEGOS Linux
Atari Jaguar
SOBRE ODROID-XU3/XU4
por Tobias Schaaf

R
ecientemente, he trabajado mucho en mis imágenes, es-
pecialmente con los emuladores. Intenté mejorar el ren-
dimiento y realice un montón de pruebas. Durante las
pruebas, conversé con @ptitSeb de los foros OpenPandora, y
hablamos del núcleo Virtual Jaguar del proyecto libretro, el cual
es bastante lento en todos los dispositivos ODROID, incluso
en los potentes ODROID-XU3 / XU4. Me comento que ellos
utilizan el emulador independiente Virtual Jaguar para ejecutar
juegos de Atari Jaguar en OpenPandora, que es una placa ARM
de un sólo núcleo con una CPU Cortex-A8 a 1 GHz. Según él,
debería funcionar mucho mejor en placas como el ODROID-
XU3 / XU4 de lo que ya lo hace en OpenPandora. Revisamos Nuestro editor artístico, Bruno, trabajo de adolescente en una
el código juntos, y con algunos parches creados por @ptitSeb tienda de juegos y tuvo el sospechoso privilegio de poder jugar
para OpenPandora, fuimos capaces de exportar el emulador con una Jaguar, de modo que no tuvo que comprarla realmente.
independiente Virtual Jaguar a ODROID usando QT5 para fueron liberados por la propia Atari. Aunque sólo hay unos
poder activar la aceleración OpenGL ES. Después realicé un cuantos juegos con licencia para la consola, a finales de 1990,
montón de pruebas para ver de lo que realmente era capaz este la consola paso a ser de dominio público y fue declarada como
emulador y qué tal funcionaba en los ODROIDs, precisamente una plataforma abiert. Algunos de los nuevos juegos fueron
es de lo que voy a hablar en este artículo. desarrollaron como juegos caseros, creados por aficionados y
expertos. Incluso hoy en día, aparecen nuevos juegos de vez en
Introducción cuando, como Alice’s Mom’s Rescue para la Jaguar CD, que fue
La Atari Jaguar fue la última consola de Atari, se comercia- lanzado para Atari Jaguar en 2015.
lizó como una consola de 64 bits para competir con las consolas Aunque la biblioteca de Atari Jaguar es bastante limitada,
de 16 y 32 bits ya existentes, como la SNES, la Sega Genesis, tiene algunos títulos muy buenos, como Raiden, Rayman,
o la 3DO. Fue lanzada en noviembre de 1993 en América del Pitfall y Cannon Fodder, que también son conocidos en otras
Norte, y más tarde en Europa y Japón. Contaba con múlti- consolas.
ples procesadores para diferentes tareas y era bastante rápida
(13.295MHz) en comparación con una SNES (3,58 MHz) o
Sega Genesis (7.6MHz). Más tarde, se le añadió un CD y unos
cascos de RV a modo de complemento. Aunque no es una mala
consola, dejo de fabricarse en 1996, ni siquiera llego a los 3
añosde vida tras su aparición. Una de las razones de sus bajas
ventas podría estar relacionada con el mando que presentaba un
aspecto algo extraño, no estaba bien diseñado.

Juegos
El diseño de la Atari Jaguar con diferentes chips para dife-
rentes tareas hace que sea muy difícil desarrollar juegos para la
consola, debido al hecho de que Atari realmente no impulso su
desarrollo, sólo se publicaron 67 títulos bajo licencia para la
Atari Jaguar. El complemento CD de Jaguar consiguió otros 15 El juego de plataformas 2D Alice’s Mom’s Rescue lanzado en
títulos llegando a un total de 82 juegos, la mayoría de los cuales 2015 para Atari Jaguar CD

ODROID MAGAZINE 22
JUEGOS LINUX

Soporte ODROID
Entonces, ¿Qué tal se ejecuta la Atari Jaguar sobre los
ODROIDs? Me temo que en realidad no es compatible. Hay
un núcleo libretro para Virtual Jaguar que se puede utilizar con
retroarch, pero me pareció muy lento y muy pocos juegos llega-
ron a funcionar. Algunos se ejecutaban casi a plena velocidad
en un XU3 / XU4 como Cannon Fodder, pero estos juegos
son muy raros. Otros juegos como Pitfall o Alien vs Predator
funcionar con una velocidad de fotogramas muy baja (por de-
bajo de 30 FPS) y muchos otros no funcionan para nada. Por
ejemplo, Rayman no se inicia con el núcleo libretro.
La alternativa es un emulador independiente. El emula-
dor Virtual Jaguar funciona bien, pero no lo suficientemente
como para ejecutarse en todos los ODROIDs. El C1 nunca
será capaz de ejecutar un juego con fluidez. No estoy seguro
El mando de Atari Jaguar no estaba bien diseñado, y era tan
si funcionará con el C2 ya que no sé si incluso se ejecutaría
malo que incluso si eras secuestrado durante mucho tiempo,
sin drivers X11. Ni tampoco conozco la calidad de los drivers,
no llegarías a desarrollar el síndrome de Estocolmo
ya que en el momento en el que escribí este artículo no exis-
La Atari Jaguar CD añadió más juegos a la biblioteca que tian todavía drivers X11 para el C2. El U3, aunque es el doble
fueron mejorados con escenas de películas, mejores gráficos y de rápido que el C1, probablemente también sea demasiado
mejor sonido. Sin embargo, sólo se publicaron unos cuantos lento para muchos juegos. Algunos juegos como Cannon Fod-
títulos, de modo la Atari Jaguar CD no podía competir con la der podrían funcionar, pero por lo general yo no contaría con
Playstation 1 o la Sega Saturn. ello. Eso significa que Atari Jaguar probablemente esté limitada
únicamente al XU3/XU4. El emulador de hecho cuenta con
un filtro que te permite utilizar el filtrado bilineal para gráficos,
pudiendo aumentar en gran medida la calidad de la imagen:
Me llevo un tiempo probar los 56 ROMs diferentes para
Atari Jaguar y confeccionar una lista de compatibilidad para
todos ellos. Me gustaría destacar algunos de los juegos y co-
mentar un poco lo que pienso de ellos.

Rayman para Atari Jaguar vs Rayman para la Playstation 1

Diferencias entre no tener filtro y un filtro bilineal - la mitad su-


perior utiliza el filtro y la mitad inferior no lo hace

Cannon Fodder
Cannon Fodder es un juego de acción estratégica en el que
envías un pequeño grupo de soldados a la batalla para luchar
contra otros soldados y destruir edificios. El juego es muy di-
vertido, y aunque el juego original se controlaba con el ratón,
como en Amiga, funciona sorprendentemente bien en Atari
Jaguar. El ratón virtual es muy sensible utilizando el mando, y
puesto que sólo necesitas dos botones para controlar el juego es

ODROID MAGAZINE 23
JUEGOS LINUX

Como su nombre indica, tus soldados son básicamente Carne de


cañón y son muy reemplazables

relativamente fácil de manejar. La Jungla es donde comienza tu viaje


Dispones de un montón de soldados llamados reclutas, es-
perando a que los envíes a la batalla, si uno de tus soldados plataformas muy refinado para Atari Jaguar.
muere simplemente es reemplazado por uno nuevo. El simple Aunque han pasado por alto la música de Amiga, que tenía
número de reclutas que recibes debería mostrarte con qué fre- mucha mejor calidad en mi opinión, también echo en falta
cuencia puedes morir. Además pone de manifiesto que los sol- algunas de las escenas cinemáticas de otras consolas. Sin em-
dados son muy reemplazables. Se combate en diferentes esce- bargo, el juego está completo y es tan jugable como cualquier
narios: la Jungla, el Artico, y el Desierto. otra versión del mismo. Creo que esta es la razón por la qué
Me gusta mucho el juego, aunque hay algunas alternativas este juego tiene el Récord Guinness como juego francés más
vendido de todos los tiempos, desde mi infancia he jugado a
este juego muchisimas horas sobre Amiga, te puedo decir que
está muy bien conseguido.

A nice arctic level on Cannon Fodder where you fight with your
soldier

donde elegir. El juego salió para diferentes consolas. Solía jugar


en el Amiga, donde encuentras incluso un Cannon Fodder 2 y Luchar en entornos futuristas, las minas y el teletransporte de
algunos otros juegos derivados de la serie. Aún así, la versión de enemigos son sólo algunos de los obstáculos a los que te enfrentas
Atari Jaguar es muy buena y deberías probarla.
El juego puede resultar muy difícil en ocasiones, especial-
Flashback mente cuando descubres la forma correcta de cómo hacer fren-
Flashback - The Quest for Identity es otro simpático juego te a los enemigos. A veces es mejor distraerlos en lugar de en-
que me encantaba en Amiga. Esta versión para el Atari Jaguar frentare a ellos directamente, y otras veces simplemente espera
también es muy buena, básicamente es un juego de acción y a que el escudo te proteja. Yo prefiero la versión de Amiga a la

ODROID MAGAZINE 24
JUEGOS LINUX

música agradable y los gráficos no son tan malos, a pesar de su


simpleza. Tiene buenos efectos con las explosiones y los obje-
tos que recoger. Puedes reunir algunos potenciadores e incluso
conseguir un defensor NPC que te ayuda a con los enemigos.
Presenta algo de desfase en el ODROID, pero se puede jugar
perfectamente. En realidad es bastante adictivo.
Existen más shooters arcade famosos, como Defender 2000
y Protector. Atari Carts es un juego de carreras divertido similar
a Mario Carts. Pinball Fantasies es un buen juego de pinball
sobre Atari. También me encanta la versión de Worms, que se
ejecuta bastante bien en la Atari Jaguar, aunque se controla en
un principio con el ratón y el teclado.

Raiden para Atari Jaguar es muy divertido, permite 2 jugadores Reflesiones generales
En general, Atari Jaguar es una buena consola similar a la
de Atari, aún así un es gran juego sin importar el sistema desde Sega Génesis o la SNES. Por desgracia, sólo hay algunos juegos
el cual los ejecutes. disponibles y no todos llegan a funcionar. Sólo el XU3 y el
También hay algunos shooters arcade muy buenos para Atari XU4 son actualmente capaces de ejecutar Atari Jaguar a una
Jaguar, por ejemplo Raiden y Tempest 2000. Raiden de hecho velocidad aceptable. El núcleo Libretro de Virtual Jaguar no
tiene unos gráficos bastante pulidos y una música muy buena, funciona bien y son muy pocos los juegos que llegan a funcio-
se puedo decir que me gusta bastante. El sistema de juego por nar. El emulador independiente funciona bastante mejor.
el contrario, es algo difícil, al menos para mí. Hay algunos po- Muchos de los juegos son en realidad versiones de otras
tenciadores repartidos por todo el nivel, aunque son poco fre- consolas y son igual de buenos en Atari o incluso mejor, por lo
cuentes y si mueres, los pierdes todos y tienen que empezar de que merece la pena probar estas versiones para ver las diferen-
nuevo a recopilarlos, lo cual no significa que vayas a conseguir- cias. Muchos de los juegos que conozco de Amiga son mejores
los todos de nuevo en el mismo nivel. Sin potenciadores serás en su versión original. Otros juegos como Pitfall, también e-
extremadamente débil. Incluso te llevará mucho tiempo matar xisten para otras consolas menos exigentes, como la Sega 32X,
a los enemigos “midbos”, sino cuentas con ningún potenciador de modo que se pueden ejecutar en más dispositivos aparte del
para tus armas, lo cual hace que el juego sea muy difícil en mi XU3/XU4. Los juegos de Atari Jaguar CD parecen no funcio-
opinión. Haces muy poco daño y sin bombas las posibilidades nar, así que ni siquiera se pueden probar. Afortunadamente,
de matar a un enemigo se reducen bastante. Aún así, el juego es ahora es posible jugar con mandos como el de la Xbox 360 en
muy divertido y supongo que el modo multijugador es la mejor lugar de usar ese mando tan poco elegante de la Atari Jaguar.
forma de pasarse el juego. Configurar el mando es muy fácil gracias a la interfaz gráfica
Tempest 2000 es muy interesante, aunque no lo parece de- de usuario basada en QT5 y los drivers SDL2 para soporte de
masiado al primero, de hecho es bastante divertido. Tiene una joystick.
Es una consola interesante para el XU4, aunque no es un
problema si tu ODROID no es capaz de ejecutar algunos
juegos, ya que probablemente existan versiones de éstos para
otras consolas. Si deseas probar Atari Jaguar en tu ODROID
XU3/XU4 puedes descargarlo desde mi repositorio. Espero
que pases un buen rato con este trozo de historia de los video-
juegos en tu ODROID.

Todos tenemos un lugar en


nuestros corazones para los
juegos de la vieja escuela de A-
tari. Podría haber sido una con-
sola mejor, pero le gano la par-
Tempest 2000 fue un esfuerzo por parte de Atari para ponerse al día tida otras consolas, como la Sega
con los juegos con entornos 3D, pone de manifiesto la diferentes con Dreamcast
respecto a lo que había disponible para sistemas PS1/Sega Saturn

ODROID MAGAZINE 25
JUEGOS LINUX

ODROID MAGAZINE 26
JUEGOS LINUX

ODROID MAGAZINE 27
DESARROLLO ANDROID

desarRoLlo Android
Android Support Library
por Nanik Tolaram

U
n problema muy común relacio- este artículo vamos a echar un vistazo a
nado con el desarrollo de apli- esta librería y cómo utilizarla.
caciones Android es la cantidad
de diferentes versiones de Android que Configuración
necesitan soporte, lo cual puede resultar Lo primero que debemos hacer es
desalentador en muchas ocasiones. En asegurarnos de que tienes la librería ins-
los primeros días de Android, la ma- talada en Android Studio. Utiliza la apli-
yoría de los desarrolladores se esforzaban cación “android” que se encuentra den-
en asegurarse de que sus apps pudieran tro del directorio <android_sdk_folder>/
ejecutarse en la versión anterior de An- tools. En la sección Extras, selecciona
droid. Con el paso del tiempo, Google “Android Support Library” para descar-
publico una librería para facilitar el de- garla en tu SDK. Consulta la Figura 2
sarrollo de aplicaciones. En los últimos para ver cómo debería verse tu directorio
años, Google está animando encarecida- SDK una vez descargada la librería.
mente a los desarrolladores a usar An-
droid Support Library. El objetivo final Versiones de librería
de la librería es reducir el nivel de có- Como puedes ver en la Tabla 1, exis-
digo necesario para que las aplicaciones ten varias librerías disponibles, pero sólo
puedan ejecutarse en las diferentes ver- tendrás que utilizar la correcta para tu
siones de Android. Google ha ido publi- proyecto. El directorio que aparece en
cando constantemente cambios en esta la tabla contiene todos los archivos im-
librería. Gracias a Android Support Li- portantes, como son el código fuente, los
brary, los desarrolladores sólo tienen que recursos y los archivos de configuración
centrarse en escribir sus aplicaciones, de- de la librería.
jando el trabajo duro de la portabilidad Si miras la tabla, podrás comprobar
de la versión de Android a la librería. En que la mayoría de las librerías están rela-

Figura 1 – Gestor de descargas Android SDK

Figura 2 - Librería de soporte dentro de


la carpeta SDK

ODROID MAGAZINE 28
DESARROLLO ANDROID

Figura 4 - Repositorio fuente de la librería

La figura 5 muestra la aplicación ejecutándose en tres disposi-


tivos Android diferentes: Nexus S - Android 4.1.2, Nexus 5
- Android 6.0, y Samsung Galaxy Express - Android 4.1.2. Ob-
serva cómo la aplicación se ve y se comporta de modo similar
en todos los dispositivos.
Tabla 1 – Librerías de soporte y Localización SDK Una cosa que tienes que decidir a la hora de escribir una

cionadas con la interfaz de usuario, una gran fuente de prob-


lemas a la que se enfrentan los desarrolladores a la hora de dis-
eñar aplicaciones Android. Observa también que la librería
utiliza numeraciones tales como, V7, V13, V14, etc. La Tabla
2 resume el significado para cada una de las versiones.

Tabla 2: Versiones de Android Support Library

Vamos a echar un vistazo al contenido de Design Support


Library que se encuentra dentro del directorio “<sdk>/extras/
android/support/design”. El contenido del directorio puede
verse en la Figura 3.

Figura 3 – Directorio de Design Support Library


Figura 5 - Tres dispositivos diferentes con dos versiones dife-
Hay un directorio /src, que está vacío. El código fuente de rentes de Android ejecutándose
la librería de soporte se puede descargar desde el repositorio
AOSP en http://bit.ly/1Ua2clG. aplicación para Android es la versión de Android más baja para
la cual la aplicación tendrá soporte. No hay una norma general,
Demo ya que todo depende del mercado al que te dirijas, recursos de
Vamos a echar un vistazo a un código demo al que puedes ac- los que dispones y muchas otras cosas. La aplicación demo que
ceder desde el repositorio GitHub en http://bit.ly/1QuHhmK. estamos viendo es compatible con dispositivos Gingerbread,

ODROID MAGAZINE 29
DESARROLLO ANDROID ANDROID DEVELOPMENT

Android 2.3 API nivel 9 y posteriores. encuentra en el archivo build.gradle. parent”


Puede ver los dispositivos de las Figuras El código siguiente muestra el atributo android:fitsSystemWindows=”t
6a y 6b.to support. There is no rule, minSdkVersion que controla esto. La rue”>
API de Android y la información de la <include layout=”@layout/in-
versión la puedes encontrar en http:// clude_list_viewpager”/>
bit.ly/1Ua4mlk. <android.support.design.wid-
get.NavigationView
defaultConfig { android:id=”@+id/nav_
applicationId “com.support. view”
android.designlibdemo” android:layout_
minSdkVersion 9 height=”match_parent”
targetSdkVersion 23 android:layout_
versionCode 1 width=”wrap_content”
versionName “1.0” android:layout_
} gravity=”start”
android:fitsSystemWindows
El siguiente código muestra las de- =”true”
pendencias declaradas dentro del archi- app:headerLayout=”@lay-
vo build.gradle que indican al sistema de out/nav_header”
compilación que librería puede utilizar. app:menu=”@menu/drawer_
Figure 6a – Nexus S Gingerbread La aplicación demo utiliza Design Sup- view”/>
port y la librería Cardview v7, ambos </android.support.v4.widget.Draw-
usan la versión 23.1.1. erLayout>

dependencies { La figura 7 muestra qué parte de la


compile ‘com.android. aplicación está usando la nueva vista
support:design:23.1.1’ personalizada de la librería, llamada
compile ‘com.android. android.support.design.widget.Naviga-
support:cardview-v7:23.1.1’
Figure 7 - widget NavigationView
compile ‘com.github.bumptech.
glide:glide:3.6.0’
compile ‘de.hdodenhof:circlei
mageview:1.3.0’
}

La vista personalizada que la apli-


cación usa es la siguiente, que se puede
encontrar dentro del archivo res/layout/
activity_main.xml:
Figura 6b – Configuración del Nexus S
<android.support.v4.widget.Draw-
since it all depends on the market that erLayout xmlns:android=”http://
you are targeting, resources that you schemas.android.com/apk/res/an-
have, and many other things. The demo droid”
app we are looking at supports devices xmlns:app=”http://schemas.
from Android 2.3 API nivel 9 y poste- android.com/apk/res-auto”
riores. Puede ver los dispositivos de las android:id=”@+id/drawer_lay-
Figuras 6 y 6b. out”
La configuración que especifica la android:layout_height=”match_
versión de Android más baja donde parent”
quieres que se ejecute tu aplicación se android:layout_width=”match_

ODROID MAGAZINE 30
DESARROLLO ANDROID JUEGOS LINUX

tionView.
Hay 2 parámetros en el interior del nuevo widget:
Battle for
app:headerLayout y app:menu. Estos apuntan a los archivos
res/layout/nav_header.xml y res/layout/drawer_view.xml. El
the Solar System:
drawer_view contiene el texto del submenú junto con los ico- Pandoran War
nos mientras que nav_header contiene la parte superior de la
vista. En la Figura 7, es el texto “Username”.
Un divertido shooter especial
La otra vista personalizada utilizada es un droid.support. 2D basado en misiones
v4.widget.DrawerLayout que es el diseño principal para toda la
porTobias Schaaf
aplicación agrupando el android.support.design.widget.Navi-
gationView. La vista DrawerLayout conoce que vista activar

E
basándose en el siguiente código: l Pandoran War ofrece una experiencia de juego muy
simple para tu ODROID. El juego es un sistema
switch (item.getItemId()) { de misiones no lineales, lo que significa que simple-
case android.R.id.home: mente tienes que elegir una de la docena de misiones que
mDrawerLayout.openDrawer(GravityCompat. más te interese a lo largo de todo el juego. Tiene lugar entre
START);
los libros 2 y 3 de la trilogía, por lo que podría valer la pena
leer algunas de las muestras gratuitas en la página web de
return true;
Pandoran War en http://bit.ly/1YRi6Rj, para conocer me-
}
jor la historia del juego. El juego se ejecuta sobre SDL2 y
OpenGL ES, por lo que se aprovecha de la GPU Mali y los
El GravityCompat.START le dice a la librería qué buscar potentes procesadores de 4 o 8 núcleos disponible en dis-
dentro de la vista DrawerLayout para iterar hasta sus vistas hi- positivos como el ODROID-XU4 o ODROID-C2.
jas para encontrar qué vista ha fijado el layout_gravity como
“start”, la cual se define dentro de activity_main.xml en el Instalación
Para instalar Pandoran War, tienes que añadir el repositorio
NavigationView
de @meveric a tu distribución, si aún no lo has hecho:
Esto debería darte una visión general sobre el uso de An-
droid Support Library. Veremos más a fondo la librería de so- $ su
porte en futuros artículos. # cd /etc/apt/sources.list.d/
# wget http://oph.mdrjr.net/meveric/\
sources.lists/meveric-all-main.list
Recursos # wget -O- http://oph.mdrjr.net/meveric/meveric.asc
| apt-key add -
Características de Android Support Library
http://bit.ly/1ei6hQ5 Luego, simplemente instálalo como los haría con cual-
quier otro juego o aplicación a través de apt-get:
Android Support Library
http://bit.ly/1qIpxiK $ apt-get update
$ apt-get install tbftss-odroid

Un divertido shooter en 2D, una joya para los jugadores


Linux en ODROID

Para preguntas, comentarios y sugerencias, por fa-


vor visita el hilo de los foros ODROID en http://bit.
ly/1prxGY1.

ODROID MAGAZINE 31
BABY NAP

Baby NAP (Programa de


Actividad Nocturna)
Parte 1 - Configuracion del hardware
por Marian Mihailescu

S
er padre por primera vez es un tación del bebé, y un micrófono para fil- /NFC
gran reto. Tener un bebé llorando trar el ruido del bebé y determinar, si los • http://bit.ly/1WXBrSi
y no saber cómo calmarlo rápida- padres están cantando una nana, cómo • Sensor Adafruit TSL2561 Digi-
mente puede ser extremadamente agota- de efectivo es poner al bebé a dormir, etc. tal Luminosity/Lux/Light
dor, especialmente en los casos de padres Con una función lambda AWS y un • http://bit.ly/1rFj0WX
trabajadores que se turnan para cuidar al panel de control con las lecturas de los • Sensor de movimiento PIR
bebé. Espero que el Programa de Activi- sensores, los padres pueden sacar conclu- (Ebay)
dad Nocturna (Baby NAP) ayude a los siones muy interesantes sobre las prefe- • Detector de sonido Sparkfun
padres con esta difícil situación. rencias de sueño de su bebé, tales como: • http://bit.ly/1HZN6Y1
Imagina una cuna con un sensor de • ¿Tiene preferencia por un deter- • Almohadilla de Presión PM1
presión en forma de almohadilla que iría minada luz ambiental? (Ebay)
debajo del niño. Un Lector de identifi- • ¿Le gusta que lo mezan cuando se
cación por radiofrecuencia (RFID) co- va a dormir? Conexiones de
nectado a la cuna, combinado con unas • ¿Se duerme más rápido cuando le hardware
pulseras o anillos RFID para los padres, cantamos una nana? El ODROID C1 tiene un conector
puede determinar cuando el bebé esta • ¿Suele despertarse cuando hay de 40 pines que en su mayor parte es
reclinado, por cuánto tiempo y qué pa- luz en la habitación? compatible con el conector de 40 pines
dre lo hace. Se puede utilizar un sensor Los padres también pueden compro- de la Raspberry Pi (excepto las 2 entra-
de sonido para registrar la amplitud del bar el tiempo que pasan por la noche con das analógicas), de modo que vamos a
sonido del bebé y determinar si el bebé el bebé, y así saber rápidamente a quien utilizar un Pi Cobbler+ con los esquemas
está llorando, por cuánto tiempo y lo le toca dormir al bebé. Aunque este que incluye este artículo. Existen 2 railes
fuerte que es el llanto. Se pueden utilizar proyecto no pretende sustituir un moni- de alimentación en la placa, uno para
un sensor de infrarrojos (pasivo) piro- tor de bebé, podría enviar notificaciones 5V (cables rojos) y otro de 3,3V (cables
eléctrico (PIR) y un sensor de luz para a los padres si el bebé empieza a llorar
registrar el movimiento y la luz ambien- usando Amazon Simple Notification Figura 1 - Primer paso de la instalación
tal. Todos estos sensores se pueden co- Service (SNS).
nectar a su vez a un ordenador de placa
reducida (SBC) como el ODROID C1 Componentes usados
/C1 +. Esta placa puede subir los datos • ODROID C1/C1+
de los sensores a un servicio basado en • Placa controlador Adafruit
la nube como los Amazon Web Services PN532 NFC/RFID
(AWS), para tu posterior tratamiento. • http://bit.ly/1O0wK30
Para aquellos que quieran ampliar • Pulsera Adafruit RFID de 13,56
esta configuración, pueden por ejemplo, MHz/NFC
utilizar una bombilla Philips Hue para • http://bit.ly/1pP4Q3G
controlar el color de la luz de la habi- • Anillo inteligente Adafruit RFID

ODROID MAGAZINE 32
BABY NAP

naranja). También hay 2 railes para la sayo y error, ajusté el potenciómetro para
toma a tierra (cables negros) a cada lado enviar 1 para una duración de detección
de la placa. Vamos a utilizar algunos pro- de 10 segundos. La Figura 2 muestra la
gramas de prueba para cada sensor escri- sección correspondiente del circuito.
tos en Python y la librería WiringPi2, El programa de pruebas utilizado es
disponibles para ODROID en http:// un simple script Python que sondea la
bit.ly/23Rwf7T. El mapeo GPIO de entrada GPIO cada segundo:
WiringPi para el C1 está disponible en
http://bit.ly/1Ejubsm. La figura 1 mues- import wiringpi2 as wpi
tra el circuito utilizado. import time
También es posible utilizar los com- wpi.wiringPiSetup()
ponentes del kit Tinkering C1 de Hard- # GPIO pin setup Figura 3 - Tercer paso de la instalación
kernel (http://bit.ly/1YNPN6k). Si uti- wpi.pinMode(2, wpi.GPIO.INPUT)
lizamos este kit, tenemos que prestar while True: de tierra (cable negro), lo que significa
atención a la asignación de pines en el i=wpi.digitalRead(2) que cuando el interruptor este abierto
PCB TBreakout y modificar la infor- if i==0: habrá acceso a tierra y el GPIO leerá
mación correspondiente para que coin- print “no motion “, i 0. Cuando se presione la alfombrilla, el
cida con los cambios. elif i==1: pin conectado a 3.3V abrirá una ruta de
print “motion detected “, i menor a mayor resistencia y el GPIO
Sensor de time.sleep(1) leerá 1. Vamos a utilizar también una
movimiento PIR resistencia limitadora de corriente 1k en
El sensor de movimiento PIR tiene Ejecutando el programa y movién- el cable de datos, para asegurarnos de
3 pines: VCC, que va en el raíl de 5V, dose cerca del sensor debería aparecer que la placa controla la corriente cuando
GND y DATA (cable amarillo). Vamos a un resultado similar al siguiente: el interruptor este en ON. La Figura 3
utilizar el cabezal #13 para el pin DATA, muestra esta configuración.
exportado por WiringPi como GPIO 2. # python pir.py El programa de pruebas utilizado
La entrada de datos desde el sensor PIR no motion 0 aquí también es muy simple:
será 1 cuando haya movimiento y 0 en no motion 0
caso contrario. El sensor tiene 2 poten- no motion 0 import wiringpi2 as wpi
ciómetros, uno para la sensibilidad y motion detected 1 import time
motion detected 1 wpi.wiringPiSetup()
motion detected 1 # GPIO pin setup
motion detected 1 wpi.pinMode(3, 0)
motion detected 1
motion detected 1 Figura 4 - Cuarto paso de la instalación
motion detected 1
motion detected 1
motion detected 1
no motion 0
no motion 0

Almohadilla de
presión
La Almohadilla de presión actúa
como un interruptor: cuando se pre-
siona, el interruptor se enciende. Hay
Figura 2 - Segundo paso de la instalación 2 cables a conectar, - uno a 3,3V (cable
naranja) y el otro al pin de entrada #15
otro para el tiempo (el tiempo tras el cual GPIO (GPIO 3 WiringPi, cable mora-
es detectado el movimiento - la salida de do). Utilizaremos una resistencia de 10k
DATA será 1). Usando el método de en- para conectar el cable de datos a la toma

ODROID MAGAZINE 33
BABY NAP

while True: chivo llamado sound-env.py: quiet: 4 , 33


i=wpi.digitalRead(3) quiet: 6 , 49
if i==0: import wiringpi2 as wpi quiet: 3 , 31
print “not pressed “, i import time quiet: 5 , 44
elif i==1: wpi.wiringPiSetup()
print “pressed “, i while True: Sensor de luz
time.sleep(1) i=wpi.analogRead(0) El Adafruit TSL2561 se puede co-
ampl = i*255/2047 # not nectar a la placa ODROID a través de
Sensor de sonido sure this is correct I2C. Las conexiones son simples: 3V3 al
El detector de sonido Sparkfun que if ampl <= 10: raíl 3,3V (cable naranja), GND a tierra
vamos a utilizar tiene 5 pines VCC (5V), print “quiet: “, ampl, “, (cable negro), SDA a SDA (cable verde)
GND, GATE, ENVELOPE y AUDIO. “, i y SCL a SCL (cable blanco). La figura 5
Usaremos la salida digital GATE, que elif ampl <= 30: muestra esta parte de la configuración.
será 1 cuando se detecte sonido y 0 en print “moderate: “, ampl, Para activar I2C en el ODROID C1,
caso contrario, y la salida analógica EN- “, “, i es necesario cargar el módulo del kernel
VELOPE que representará la amplitud else: aml_i2c. Esto se puede hacer añadiendo
del sonido. Conectaremos el pin GATE print “loud: “, ampl, “, “, aml_i2c al fichero /etc/modules. Tam-
al cabezal #29 (WiringPi GPIO 21, uti- i bién vamos a utilizar el módulo python
lizando el cable amarillo) y el pin EN- tentacle_pi, disponible en http://bit.
VELOPE a ADC.AIN0 en el cabezal time.sleep(0.5) ly/1AiDZfk. Este permite la comuni-
#40 (cable azul). La Figura 4 muestra cación con TSL2561 desde una apli-
esta parte de la configuración Cuando se ejecuta, produce un resul- cación Python enviando la intensidad de
Puedes utilizar el siguiente script para tado similar al siguiente: la luz en unidades lux:
probar la detección del sonido:
# python sound-env.py from tentacle_pi.TSL2561 import
import wiringpi2 as wpi quiet: 10 , 88 TSL2561
import time quiet: 3 , 31 import time
wpi.wiringPiSetup() moderate: 27 , 220 tsl = TSL2561(0x39,”/dev/i2c-1”)
# GPIO pin setup moderate: 24 , 199 tsl.enable_autogain()
wpi.pinMode(21, 0) moderate: 28 , 229 tsl.set_time(0x00)
while True: moderate: 16 , 130 while True:
i=wpi.digitalRead(21) loud: 52 , 419 print “lux %s” % tsl.lux()
if i==0: moderate: 16 , 129 time.sleep(1)
print “no sound “, i moderate: 30 , 244
elif i==1:
print “sound detected “, i
Figura 5 - Quinto paso de la instalación
time.sleep(1)
Figura 6 - Sexto paso de la instalación
El volumen del sonido se puede de-
terminar por el método ensayo y error.
En mi caso, he reducido la salida a los
valores 0-127 y utilicé los niveles 10-30
como volumen de sonido moderado (a
nivel de conversación). Una nivel por
debajo de 10 significa que la habitación
está tranquila y un valor por encima de
30 indica que hay sonido con cierto vo-
lumen, con una alta probabilidad de que
el bebé esté llorando.
La siguiente es otra aplicación de
prueba, que se debe guardar en un ar-

ODROID MAGAZINE 34
BABY NAP

Lector RFID La aplicación nfcpy está bien docu-


El lector de tarjetas RFID se puede mentada y es fácil de usar. Para leer
conectar al ODROID C1 usando la in- una etiqueta, sólo necesita unas cuantas
terfaz UART, SPI o I2C. Vamos a utili- líneas de python. Ten en cuenta la ca-
zar la librería Linux nfc, que es la opción dena de conexión tty:S2:pn532 que es
más sencilla para utilizar la conexión en necesario utilizar.
serie UART. Para esto, tanto SEL0 como
SEL1 en la placa PN532 RFID necesitan >>> def connected(tag):
estar fijado en OFF. Al igual que con cu- print(tag); return False
alquier conexión en serie, vamos a utili- ...
zar 5 cables: VCC (5V, cable rojo), tierra >>> clf = nfc.ContactlessFrontend
(cable negro), RX y TX (verde y blanco) (‘tty:S2:pn532’)
- conectado a TX y RX de UART1 (/ >>> clf.connect(rdwr={‘on-con-
dev/ttyS2) en la placa sobre los cabezales
#8 y #10. La Figura 6 indica esta parte
nect’: connected}) # now touch a
tag
ODROID
Magazine
de la instalación. Type3Tag IDm=01010501b00ac30b
La librería libnfc y los componentes PMm=03014b024f4993ff SYS=12fc
relacionados se pueden instalar fácil- <nfc.tag.tt3.Type3Tag object at
mente en Ubuntu con el siguiente co-
mando:
0x7f9e8302bfd0>

Puesto que la función de conexión


está en
$ sudo apt-get install \
libnfc-bin libnfc-examples \
esta bloqueada, el código final será escri-
to para leer la etiqueta NFC en un hilo Reddit!
libnfc-pn53x-examples separado.
En la Parte 2 de esta serie, disponible
El empaquetador python se puede en el próximo número, detallaré los
descargar e instalar desde http://nfcpy. componentes de software necesarios.
org. Para utilizar libnfc, es necesario
configurar la conexión mediante la crea-
ción de un archivo llamado /etc/nfc/
devices.d/pn532_ uart.conf que con-
tiene el siguiente código:

## Typical configuration file for


PN532 device connected using UART
name = “PN532 board via UART”
connstring = pn532_uart:/dev/
ttyS2
ODROID Talk
allow_intrusive_scan = true Referencias Subreddit
• ODROID-C Tinkering Kit http://www.reddit.com/r/odroid
A continuación, puedes probar la • http://bit.ly/1YNPN6k
conexión con el programa pn53x-diag- • Repositorio GitHub WiringPi2
nose: de Hardkernel
• http://bit.ly/23Rwf7T
$ sudo pn53x-diagnose • ODROID-C2
pn53x-diagnose uses libnfc 1.7.0 • http://bit.ly/1oTJBya
NFC device [pn532_uart:/dev/ • Drivers Pythón para los sensores
ttyS2] opened. TWI/I2C
Communication line test: OK • http://bit.ly/1AiDZfk
ROM test: OK
RAM test: OK

ODROID MAGAZINE 35
CAR PC CAR PC

Monta tu propio coche


inteligente con el
ODROID-XU4
Incorpora una nueva funcionalidad a tu vehiculo
por Jon Westgate

S
oy un ingeniero de electrónica funcionase. La pantalla táctil china de 7 para Android, además de una mejor cali-
que trabaja además como inge- pulgadas que encontré tenían una reso- dad de imagen en general.
niero de sistemas informáticos, y lución de 1280x800, y el ODROID- Cuando la pantalla táctil llegó, me di
estoy certificado en el Reino Unido por U3 sólo podía manejar una resolución cuenta que el marco de la pantalla táctil
la asociación de servicios electrónicos en de 1920x1080 o de 1280x720, creando de 7 pulgadas de Chalkboard era muy
el nivel tres. Me he sentido atraído por una imagen distorsionada. También tuve grande. Además hay que tener en cuenta
la electrónica desde que mi padre mon- algunos problemas con la pantalla táctil que está invertida, con las conexiones en
tara un televisor en color desde cero en cuando intentaba conseguir posiciones la parte superior, en lugar de la parte in-
su tiempo libre. Este proyecto pretende precisas con el controlador táctil. Supuso ferior como era de esperar en otras pan-
llevar el potencial de un ODROID-XU4 un reto aún mayor hacerlo con Android, tallas. Esto es algo a tener muy presente
a tu coche añadiéndole más funcionali- donde lo primero que esperas es una a la hora de diseñar tu propio proyecto
dades y características. Esta es mi aven- pantalla capacitiva.
tura de empezar un proyecto y conseguir Necesitaba algo que simplemente
que todo funcione correctamente. funcionase con esta pantalla táctil, de
Siempre he querido construir un PC modo que investigué una alternativa,
para usarlo en mi coche. Es algo que he incluyendo el XU3. El XU3 parecía en-
visto con mucho potencial desde que los cajar muy bien por su mayor compatibi-
MP3s se hicieron digitales y pueden re- lidad para resoluciones y otras caracter-
producirse desde un PC, llevando la posi- ísticas, pero era muy caro. Pero cuando
bilidad de escuchar música y otras carac- el ODROID-XU4 apareció a un precio Car PC, ya que necesitarás aproximada-
terísticas a mi coche. He hecho pruebas mejor, pude finalmente costearme un mente 7 mm de espacio en la parte supe-
en el pasado, pero la mayoría de los dis- dispositivo que cubriera mis necesidades. rior cuando montes la pantalla.
positivos simplemente no cumplían con Me di cuenta de que el firmware que
mis necesidades. Las máquinas basadas Buscando un viene con esta pantalla táctil emula un
en x86 que utilicé eran demasiado len- dispositivo visual puntero de ratón, en lugar de una expe-
tas, y el ordenador Android que probé Tras recibir mi ODROID-XU4 dos riencia táctil que cabría esperar de una
no podía utilizar una pantalla táctil o semanas más tarde, seguí adelante y em- tablet o dispositivo Android similar. De
el GPS para lo que quería. También lo pecé con una imagen de Android sobre esta forma el dispositivo registra un salto
intente con un Nook HD, que parecía mi eMMC. Afortunadamente Android cuando deslizas el dedo, más que mover
prometedor, pero su batería me dio un arranco y la pantalla táctil llego a fun- un cursor de ratón sobre la pantalla. E-
montón de problemas. cionar en el acto. Sin embargo, todavía xiste otro firmware diferente que necesi-
no estaba contento con la calidad de la taremos grabar en esta pantalla táctil
Ensayo y error imagen y la pantalla táctil, de modo que para conseguir que funcione, según la
Todas estas cuestiones me llevaron a decidí ver qué más había por ahí. Mien- documentación que he leído.
probar este proyecto con un ODROID. tras tanto, descubrí la pantalla táctil de
Mi primer ODROID fue el U3, y me 7 pulgadas que ofrecía Chalkboard Elec-
lo compré con el objeto de no tener que tronics. Me proporcionaba la experien-
hacer demasiado para lograr que todo cia multi-táctil capacitiva que necesitaba

ODROID MAGAZINE 36
CAR PC

Actulizar el firmware til de alta calidad Chalkboard. También RTC, así la hora no se perdería cada vez
de la pantalla táctil utilice un Denison Gateway Pro para que el dispositivo se desconectara de la
Para este proyecto con mi programar los botones y funciones de mi alimentación. Contaba con una batería
ODROIDXU4, utilicé CyanogenMod coche con la pantalla a medida y XU4 de repuesto y simplemente hice algo
12 de @voodik, con Android 5.1.1 instalados. Esto me proporcionó una muy similar a lo que Hardkernel ofrece
(http://bitly/1VyXFKW.). Lo mejor es conexión Bluetooth para el manos libres en su página web. También descubrí una
empezar con un sistema pre-configurado y poder escuchar música usando los al- forma curiosa de apagar el XU4 a través
e ir añadiendo características a medida tavoces del coche. del conector PIO de la placa.
que vas consiguiendo que el hardware En lugar de utilizar un módulo GPS
básico funcione. Tras encontrar el dri- ODROID, acabé usando un módulo Un percance menor
ver correcto para actualizar el firmware, GPS chino sin marca, conectado a una Mientras trabajaba en conseguir que
necesitas utilizar un PC con Windows antena 4-en-1 para ahorrar espacio y el conector PIO pudiera apagar cor-
para actualizar el firmware de la pantalla rectamente mi XU4, terminé acciden-
táctil y así poder trabajar bien con este talmente ocasionando un cortocircuito
proyecto. Puedes encontrar instrucciones en la línea de 5V, dejando inservible mi
detalladas de este proceso en el sitio web XU4 y con el LED parpadeando. Por si
de Chalkboard Electronics en http://bit. alguien se lo está preguntando, fui capaz
ly/1MULs0y. Una vez que termines con de solucionarlo provocando un corto-
la actualización del firmware, deberías circuito en los circuitos de protección
ser capaz de usar la función de zoom y (ICs). Si alguna vez cometes este error,
otras funciones intuitivas que haran que facilitar las cosas. Todo esto estaba co- puede hacer esto para intentar resucitar
este proyecto sea fácil de instalar y usar nectado a mi XU4 con un adaptador a tu XU4.
en tu coche. serie a USB. El objetivo era utilizar una Este percance provoco que arruinase
única antena con la que poder manejar mi circuito RTC, de modo que la ba-
Conseguir que el no sólo mi GPS, sino también mi cone- tería quedaba inservible. Tras realizar
GPS funcione xión de radio DAB, AM, FM, a través de
Para que este proyecto tuviera éxito, este conector de antena 4-en-1. Terminé
tenía que conseguir también que funcio- colocando la antena cerca del espejo
nara el GPS para la navegación por sa- retrovisor después de experimentar con
télite. Esto era algo que aún no tenía en varios sistemas de antenas, incluyendo
mi Citroen C4 Coupe. Intenté sin éxito una potente antena GPS que no llego a
incluir la navegación por satélite usando funcionar con mi configuración actual.
otros métodos de terceros, la tecnología El software GPS que solía usar en
GPS del fabricante era demasiado cara y WinCE se llamaba iGO Primo. Pero una búsqueda en Plays Store, encontré
no valía la pena instalarla en mi coche. ahora que estoy usando Android, todo una aplicación llamada “Smart Time
Antes de empezar con este proyecto, se puede manejar usando una app de Sync” (http://bit.ly/1rw76yA), que usa
tenía entre otros proyectos, conseguir un el GPS para fijar la hora y ajustar el reloj
dispositivo WinCE que funcionase con de Android después de cada arranque.
una unidad GPS de 7 pulgadas junto Puede serte útil si no quieres usar una
con un sistema de entretenimiento Blue- batería, o no puedes por haber tenido un
tooth conectado todo a un cuadro de tropiezo como el mío. Esta app también
mandos. Pero tras varios fallos, errores y es muy útil para aquellos interesados en
un bajo rendimiento en general, decidí que su XU4 funcione con un GPS en
que ya era hora de pasar a mi nuevo XU4 Android.
con su potente procesador de 8 núcleos y Play Store, que incluye numerosas apli-
el sistema operativo Android. caciones GPS offline, así como también Lograr que la radio
Cuando cambié al XU4, arroje a la Google Maps. Sin embargo, había una funcione
basura la vieja pantalla china integrada última cuestión con el GPS, asegurar que ¿Qué es un coche sin radio? Puesto
en el dispositivo WinCE, en su lugar el reloj de tiempo real pudiera sincroni- que el objetivo es crear una única expe-
utilice el marco y el cuadro de mandos zar con los satélites GPS para la precisión riencia desde mi XU4, también quería
para encajarlos en mi nueva pantalla tác- horaría, lo cual requería de una batería lograr que funcionase la radio con ayuda

ODROID MAGAZINE 37
CAR PC CAR PC

de Software Defined Radio (SDR). El incluye radio AM y FM, radio CB e in-


RTL-SDR es un gadget de 25$, que te cluso señales de radio privadas, como la
permite coger un amplio rango de se- de la policía y los bomberos. Disponer
ñales de radio, incluyendo estaciones de de escáner tan amplio resulta muy útil
radio FM con DAB que permite mostrar si alguna vez quiero localizar una señal
información de la estación. especifica cercana.
Sin embargo, la app DAB que es-
Conseguir que todo
entre en el coche
Ahora que todo funciona y está com-
pactado, era hora de configurarlo y de-
jarlo listo para instalarlo en mi coche.
pruebas, todo empezaba lentamente a Esto requiere la instalación de la antena
encajar. Tenía un XU4 funcionando con 4-en-1, así como colocar el cableado a-
Android, una pantalla táctil, conectivi- decuado entre mi nuevo panel de instru-
taba utilizando necesitaba una conexión dad GPS, radio FM con DAB y acceso mentos y los propios sistemas de alimen-
a Internet para comprobar su licencia, a Internet. Con todos estos dispositivos tación de mi coche. Nunca me cansare lo
aún cuando no necesita Internet para tan diferentes conectados, necesitaba un suficiente de decir lo importante que es
funcionar por sí sola. Esto requeria un Hub con alimentación para maximizar usar fusibles para evitar un mal funciona-
poco de creatividad y otro gadget para la potencia disponible al XU4 sin que miento eléctrico que puede causar daños
conseguir que todo funcionase: una co- afectara a las demandas de energía de los a tus equipos electrónicos o peor aún, a
nexión de datos móvil. Lo bueno de esto periféricos. un amigo o a los miembros de tu familia.
es que Google Maps funcionaría tam- Como el espacio en el panel de instru- También es importante la correcta cone-
bién, aunque suponía mucho trabajo. mentos del coche está limitado, intente xión a tierra de tus equipos electrónicos,
Finalmente me decante por un dongle minimizar el espacio que ocupa todos los ya que limitas una conexión DC de 12V
3G/4G Huawei que es compatible con a una de 5V que es la que necesita tu
mi compañía de telefonía británica local, XU4 y los periféricos. Incluso a estas ba-
Everything Everywhere (EE). jas potencias, puede ser muy peligroso
El Dongle que elegí era uno que se un fallo eléctrico con estos dispositivos
electrónicos. Hay que aportar la poten-
cia que realmente se necesita.
Puedes hacerlo todo a través de USB,
dispositivos. Tuve especial cuidado a la pero en mi caso fue más fácil suminis-
hora soldar y cortar, para no estropear el trar la energía desde la fuente de alimen-
módulo de alimentación, el XU4 y los tación de 12V a un componente CPT
periféricos aglutinados en un único dis- que pasa la conexión de 12V a una co-
positivo compacto, ocupando así mucho nexión de 5V 10A. Luego todo se trans-
menos espacio que cuando todo estaba mite a través de una conexión directa al
conectado para realizar pruebas. hub USB, y finalmente el ODROID-
Dado que el RTL-SDR que he com- XU4. Esto te ahorra el paso redundante
conectaba vía Wi-Fi a mi XU4. Podría prado incluye una modificación de de utilizar un convertidor u otro adapta-
diseñarse para conectarse de forma nati- muestreo directo, es capaz soportar radio dor AC cuando todo termina en el adap-
va a través de Android, pero esto signifi- AM y otras frecuencias. En total, el dis- tador DC y además, facilita la alimen-
caba una cosa menos que cablear, ya que positivo puede cubrir señales entre 100 tación de la antena mejorando la señal.
podía hacerse bien desde la toma de 12V KHz y 1,8 GHz, un amplio rango que Los componentes CPT son muy útiles,
del coche. Terminé mejorando la antena
para potenciar la conectividad.

Poniéndolo todo
junto
A medida que continuaba realizando

ODROID MAGAZINE 38
CAR
CARPCPC

ya que tienen protecciones integradas También hay un desajuste de impedan- que mejore la visibilidad. Recomiendo
para prevenir cortocircuitos. cia en la clavija de audio de mi Denison usar una cámara SDI-HD, que conver-
En este momento, todo se inicia Gateway Pro, provocando una especie de tirá la señal HD compuesta del cable
cuando arrancamos el coche. Esta es la sonido metálico muy fino. Continuare coaxial al convertidor, que a su vez se
forma en la que todo está configurado investigando esta cuestión a medida que conecta a la pantalla táctil Chalkboard.
actualmente, aunque espero que cambiar vaya retocando mi Car PC. Esto te permitirá obtener resoluciones
esto con un temporizador para los casos hasta UHD 4K con un único cable coa-
en los que apague rápidamente el coche Otros cambios xial con conectores BNC, junto con un
para hacer una parada o repostar com- Hay una serie de pequeñas modifica- enchufe de alimentación DC de 12V, y
bustible. El USB será la clave, aunque ciones que he llevado a cabo para poner a no tendrás problemas de relación de as-
me llevará algún tiempo entender todo punto este proyecto. Esto incluye el uso pecto. Esto continúa estando en desarro-
esto y efectivamente controlar la forma de un Dremel para perforar la pantalla llo, ya que estoy actualmente montando
en que el dispositivo recibe alimentación táctil Chalkboard, de manera que en- un circuito que detectará la marcha atrás
de la batería incluso cuando el coche no cajara en el marco y en el salpicadero del del coche y hará que cambie la pantalla
esté arrancado. coche. También he añadido un nuevo Chalkboard del XU4 automáticamente.
Mientras tanto, instale cuidadosa- conector al XU4 para poder añadir en
mente todos los componentes en el panel el futuro un botón de encendido usando Software
de instrumentos de mi coche, asegurán- controles externos sobre una placa de cir- Lista de todo el software usado:
dome de que funcionaba todos los bo- cuitos. El objetivo es tener soporte para • CyanogenMod 12.1 de Voodik
futuros joysticks USB y otras conexiones que ejecuta An-
sin tener que abrirlo todo de nuevo. droid 5.1.1
Para este proyecto, terminé usando • App de Google
una tarjeta SD de gran tamaño para dis- incluyendo el
poner de una mayor y más barata capa- Google Play Store
cidad de almacenamiento. Esto necesito • Smart Time Sync
una alargadera debido al limitado espa- Pro
cio entre el marco y al conector HDMI • Google Chrome, Firefox no fun-
tones y componentes una vez instalado. que bloqueaba el lugar donde tenía que ciona bien en el XU4 y necesita
Conseguir que el ir mi SD. ser activado con el botón de en-
audio funcione Otra idea innovadora que tenía en cendido
Lograr que el audio funcionara en mente era utilizar una cámara trasera. El • iGo GPS, aunque existen mu-
esta nueva configuración Car PC con mi sistema GPS chino que utilicé soportaba chas aplicaciones GPS offline
XU4 fue mucho más difícil de lo que se una cámara trasera, aunque no había • Autorun (FIT009C Soft Tools)
esperaba. Había un montón ruido a cau- manera de conectarla directamente a mi • K@mail, recibirás un error de
sa de la conexión a tierra utilizando las pantalla táctil Chalkboard. La cámara certificado de correo electrónico
salidas normales por defecto. La solución funciona detectando una señal de vídeo que debe pasar por alto, debido a
pasaba por utilizar un extractor de audio compuesto y reenviándola a la pantalla, Smart Time Sync Pro
HDMI para evitar todo el ruido que de la cual se podía convertir a la entrada • Google Maps/Google Streetview
otro modo tendría que oír al reproducir HDMI de Chalkboard. El único pro-
música o escuchar la radio. blema es que la señal compuesta se veía Para aquellos que lo necesiten,
Llegue a probar diferentes opciones, realmente mal y tenía una relación de as- aquí teneis los cambios que rea-
incluyendo un controlador de audio pecto muy pobre sobre la pantalla. licé en mi archivo build.prop:
digital USB en lugar de un extractor de La solución era doble. En primer
audio HDMI, pero el objetivo era que lugar, era necesario instalar un converti- config.disable_bluetooth=false
este nuevo Car PC podíera soportar cu- dor para llevar la señal compuesta hasta wlan.modname=8192cu
alquier dispositivo de audio, como un una señal HDMI adecuada y sin prob- ro.kernel.android.gps=ttyUSB0
iPod, una llamada con el manos libres lemas de relación de aspecto. Sin em- ro.kernel.android.gps.speed=9600
de mi smartphone o el sistema de nave- bargo, esto añadiría otro periférico a tu
gación GPS. Todo el proceso sigue estan- coche. También tendrá que buscar una Gracias por acompañarme en mi via-
do en desarrollo con planes de comprar cámara que sea lo suficientemente buena je para montar un Car PC, ¡Y diviértete
una mejor DAC con un amplificador. para conseguir una señal de calidad HD experimentado!

ODROID MAGAZINE 39
CONOCIENDO A UN ODROIDIAN

CONOCIENDO
Miltiadis Melissas
UN ODROIDian
editado por Rob Roy

Por favor, háblanos un poco sobre ti


Mi historia personal comienza en 1965 en el norte de Grecia
y en la hermosa ciudad de Xanthi. A los 18 años, me trasladé a
Atenas para cursar mis estudios académicos, y 5 años más tarde
me decante por la isla de Corfú, donde trabajo y me desarrollo.
Miltiadis, conocido como Miltos, ha estado pro-
Conseguí mi licenciatura como ingeniero en electrónica en
gramando y usando los ordenadores desde los prim-
1988. Después, estuve trabajando casi 5 años con Barclays como eros días del Commodore 64
operador de sistemas Unix online y luego otros 2 años y medio
con Scotiabank en un puesto similar. En 1997, abandone este posteriores, fui observando la evolución de la línea de orde-
campo y me convertí en un empleado del estado especializado nadores Intel con Windows, y fue en 2006 cuando cambié a
en tecnología de enseñanza secundaria, una posición que aún Linux. La principal razón del cambio fue la sensación de liber-
sustento hoy día. En 2006, finalice mi Máster en Tecnología de tad que la programación de código abierto te ofrece, junto con
la Información y en 2012, me ascendieron a Sub-director de la la potente comunidad que existe tras Linux. Además, Linux es
escuela secundaria donde enseño Tecnología y Electrónica. Mi un desafío para todo ingeniero de electrónica, ya que te puedes
Máster sobre Educación está pendiente, y mis intereses académi- encontrar con muchos dispositivos aparte de los ordenadores,
cos se centran en el campo ontológico de la información. tales como descodificadores, electrodomésticos, módems, telé-
Mi carrera se ha ido desarrolló junto a mi vida personal. Me fonos, máquinas de juegos y sistemas embebidos. Fue Linux
casé con mi encantadora esposa Dori en 1995, su continuo apoyo quien me llevó a la línea de productos de Hardkernel.
y el estímulo es el que ha hecho posible todas las cosas en nuestras
vidas. Mi hijo Apostolos fue aceptado el año pasado en la Univer- ¿Qué te atrajo a la plataforma ODROID?
sidad de Glyndwr en Gales, para especializarse en el desarrollo de Siempre dispuesto a aprender, encontré por casualidad un
juegos: “De tal palo, tal astilla”. Su sueño es trabajar con grandes manual online de los creadores de makeuseof.com (http://bit.ly/
nombres de la industria. El último miembro de nuestra familia, SInIlr) en el cual se abordaba la Raspberry Pi. Al final del libro,
pero no menos importante es mi hija Eri que está estudiando el autor proponía algunas alternativas, y el U3 de Hardkernel
educación infantil en el instituto. era, por supuesto, el primero de la lista. Contaba con mejores es-
pecificaciones de hardware, más implementaciones de software,
¿Cómo fueron tus inicios con los ordenadores? y podías ejecutar diversas versiones de escritorio y de servidor
En 1985, compré mi primer “ordenador personal”: el le- Linux, incluyendo Android, OpenVault, y Media Center. Para
gendario Commodore 64. Con 64K de memoria y un precio mí, fue “amor a primera vista”. Encargué un U3 casi inmediata-
inferior a los 600$, Commodore 64 fue realmente un gran mente, y tras seis meses de uso compré otro. Como ingeniero en
descubrimiento por aquel entonces. Esta máquina de 8 bits era electrónica me impresionó la calidad de la placa y su durabilidad
capaz de dibujar gráficos fantásticos usando sprites, y supero por no hablar de su reducido tamaño y bajo consumo de energía.
al resto de equipos del mercado con su circuito de tarjeta de Ese fue el momento en el que las excelentes imágenes de Rob
sonido de 3 canales. Me viene a la mente un sinfín de momen- Roy hicieron su entrada. Disfruté con “Fully Loaded: Ubuntu
tos con los que disfrutaba con juegos como “Head over Heels” y 12.11”, “Quiet Giant: Ubuntu Server 13.05”, y “Pocket Rock-
el clásico insuperable “Pacman”. Pero el verdadero potencial de et: Android Jelly Bean 4.1.2”. Descubrí la potente comunidad
Commodore 64 estaba en su facilidad de programación. Domi- (los ODROIDians) cuando empecé a desarrollar mis imágenes
nar BASIC se convirtió en un reto de la década de 1980. Algu- y compilar algunos drivers específicos. ¡Sin su ayuda no habría
nos de mis primeros intentos de programación fueron una li- llegado tan lejos! El siguiente que compre fue el ODROID-C1 y
breta de direcciones, una agenda y una base de datos de recetas. luego adquirí 2 unidades del XU4, que es mi favorito.
Commodore 64 era en realidad una escuela en y por sí mismo.
Adquirí todos mis conocimientos de programación estructura- ¿Cómo utilizas tus ODROIDs?
da con esta máquina, e incluso llegue aún más lejos con algunos Tengo OpenELEC funcionando perfectamente en mi
conocimientos básicos de lenguaje ensamblador. En los años ODROID-U3, el cual me permite escuchar música y ver vídeos

ODROID MAGAZINE 40
CONOCIENDO A UN ODROIDIAN

por streaming, así como ver los canales de YouTube, películas, Además, me encanta leer libros de educación y filosofía, y ver
canales de TV en vivo y programas de todo el mundo. Por otro películas en blanco y negro del viejo cine estadounidense. Tam-
lado, mi ODROID-C1 se encuentra en mi escritorio ejecutando bién suelo tomar fotos durante mis caminatas diarias por la ciu-
“Pocket Rocket II: Android 4.4.4 KitKat” con todos los extras dad. Me he redescubierto mi propia ciudad después de 25 años
que este sistema operativo nos ofrece. El XU4 es mi PC de es- viviendo, con paseos y actividades que he ido realizando. Tam-
critorio principal y francamente, han pasado varios meses desde bién estoy pensando seriamente en comprarme una bicicleta.
que abrí por última vez mi PC Windows. El XU4 satisface la ma-
yoría de, si no todas, mis necesidades como estación de trabajo ¿Qué consejo le daría a alguien que quiere aprender a programar?
e incluso puedo ejecutar juegos con la excelente imagen Game- La programación es como aprender un nuevo idioma.
Station Turbo proporcionada por @meveric, otro ODROIDian. Siempre lleva su tiempo. Es más, puede verse como una curva
El emulador PPSSPP funciona muy bien en esta imagen, y la personal de aprendizaje, ya que cada uno aprendemos y com-
mayoría de los juegos de PSP se ejecuta a 60 fps sin problema. prendes el conocimiento de un modo diferente. Ha habido
Por último, he creado mi propio entorno de escritorio basado períodos en los que yo aprendía a pasos agigantados, y otros
en Arch Linux, e instalé el escritorio Mate como interfaz gráfica en los que avanzaba muy lentamente. Empecé con BASIC
de usuario. No hay duda que detrás de este excelente entorno de hace mucho tiempo en el Commodore 64. BASIC me ayudó
escritorio hay mucho trabajo realizado. Sorprendentemente, esta a entender los fundamentos de la programación estructurada.
imagen no tiene el error de la pantalla en negro y el error de los ico- Continué con Visual Basic en el año 2000 sumergiéndome en
nos de la suite LibreOffice, todo parece funcionar a la perfección. el conocimiento de la programación óptica, un lenguaje de
Con suerte, pronto publicaré una guía en el foro para todo aquel programación que todavía uso con fines educativos. Hace unos
que desee tener el mismo tipo de entorno. El ODROID-XU4 es diez años, realice el “gran salto” a la programación orientada a
una verdadera joya, y si estos usos no son suficientes, mi segundo objetos usando Python. Me encanta Python porque es un len-
XU4 lo utilizo como servidor. Las posibilidades son infinitas. guaje de programación educativo, versátil y de aplicación gen-
eral, con una gran librería de código y una vasta comunidad.
¿Qué innovaciones te gustaría en futuros productos Hardkernel? Aconsejo empezar con la programación estructurada, y poco
No debería ser difícil para Hardkernel incluir un circuito wifi a poco pasar a la programación orientada a objetos. Python
y bluetooth en su próxima placa de desarrollo. Por otro lado, creo (http://bit.ly/1oDM6iq) es un lenguaje de programación que
que existe mucho margen para el desarrollo de software de las te permite trabajar de un modo rápido e integrar sistemas con
placas. Por supuesto, el sistema operativo Android está bastante mayor eficacia. Proporciona una sintaxis limpia y una estruc-
pulido para la línea C de productos (es decir, C1, C1 + C2), así tura fácil de aprender. Animo a mis estudiantes de secundaria
como el XU4, aunque el sistema operativo Linux es probable que a que aprendan Python y a tomarlo como un conjunto básico
evolucione en los próximos años para ofrecer más y mejores po- de habilidades. El entorno de programación Python se puede
sibilidades. Más aún, el reciente desarrollo de sistemas operativos instalar con facilidad en todos los equipos Linux ODROID,
como “Remix OS” parece muy prometedor, aunque aún no está lo cual minimiza en gran medida el coste de implementación.
implementado en la línea de productos de la Hardkernel, y no sé Además, existen muchos cursos gratuitos en línea ofrecidos por
si alguna vez se podrá instalar en los ODROIDs. Por último, algo diversos desarrolladores. Otros recursos online incluyen Cour-
de memoria (RAM) adicional podría añadirse a todas las placas, sera (http://bit.ly/18HdJkD), Edx (http://bit.ly/1bxqyhn), y
por supuesto con el inevitable coste adicional que supone. No Udacity (http://bit.ly/1dy71Lz). Como digo a mis alumnos,
creo que añadir 1 o 2 GB de RAM extra suponga un incremento con ODROID, la World Wide Web y Python, el cielo es el
del coste de 100 dólares, incluso para el ODROID más caro. límite y las posibilidades son infinitas.

¿Qué aficiones e intereses tienes aparte de los ordenadores?


“Una mente sana en un cuerpo sano” es un dicho griego muy
famoso y antiguo. Además de los ordenadores, me encanta nadar
y caminar. Nado mucho, sobre todo tras haber tenido algunos
problemas serios con mi espalda hace un año. El hecho de vivir
en una isla me da la oportunidad de nadar casi todo el año. Suelo
cubrir una distancia de unos 35 km por semana a pie y otros
8 nadando. También me motiva mi muñequera inteligente y el
ODROID-C1, que ejecuta una aplicación para Android que me
ayuda a hacer un seguimiento de mis actividades, recopilar datos
y estadísticas, y ver información sobre mi salud y estado físico. Miltos y su esposa, Dori,viven en una isla en Grecia

ODROID MAGAZINE 41

También podría gustarte