Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear...

44
ODROID Magazine Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ¡Hazte con todos! Kodibuntu • IoT ODROID-C2 • Hadoop y Spark en ODROID XU4 • Securidad WPA en redes a partir de ataques de diccionario • REDTOP, un sor- prendente proyecto con un ODROID-C1 y una carcasa 3D Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ¡Hazte con todos! Año Tres Num. #33 Sep 2016

Transcript of Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear...

Page 1: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

ODROIDMagazine

PokeacutemonCoacutemo hakear el famoso juegosuplantando el sistema GPS

iexclHazte con todos

Kodibuntu bull IoT ODROID-C2 bull Hadoop y Spark en ODROID XU4

bull Securidad WPAen redes a partir de ataques de diccionario

bull REDTOP un sor-prendente proyecto con un ODROID-C1

y una carcasa 3D

PokeacutemonCoacutemo hakear el famoso juegosuplantando el sistema GPS

iexclHazte con todos

Antildeo TresNum 33Sep 2016

Queacute defendemosNos esmeramos en presentar una tecnologiacutea punta futura joven teacutecnica y para la sociedad de hoy

Nuestra filosofiacutea se basa en los desarrolladores Con-tinuamente nos esforzamos por mantener estrechas relaciones con eacutestos en todo el mundo

Por eso siempre podraacutes confiar en la calidad yexperiencia que representa la marca distintiva de nuestros productos

Simple moderno y uacutenicoDe modo que tienes a tu alcance lo mejorpara hacer todo lo que imagines

Realizamos envios de ODROID-C2and ODROID-XU4 a los paiacuteses de la UE Ven y visita nuestra tienda online

Direccioacuten Max-Pollin-Straszlige 1 85104 Pfoumlrring Alemania

Teleacutefono amp Faxtelf +49 (0) 8403 920-920email servicepollinde

Nuestros productos ODROID se pueden encon-trar en httpbitly1tXPXwe

EDITORIAL

ODROID Magazine que se publica mensualmente en httpmagazineodroidcom es la fuente de todas las cosas ODROIDianas bull Hard Kernel Ltd bull 704 Anyang K-Center Gwanyang Dongan Anyang Gyeonggi South Korea 431-815 bull fabricantes de la familia ODROID de placas de desarrollo quad-core y la primera arquitectura ARM ldquobigLITTLErdquo del mundo basada en una uacutenica placa Para informacioacuten sobre coacutemo enviar articulos contacta con odroidmagazinegmailcom o visita httpbitly1ypImXsUacutenete a la comunidad ODROID con miembros en maacutes de 135 paiacuteses en httpforumodroidcom y explora las nuevas tecnologiacuteas que te ofrece Hardkernel en httpwwwhardkernelcom

Pokemon Go el juego para moacuteviles maacutes popular de la his-toria entretiene a maacutes de 20 millones de usuarios a diario Parte del juego consiste en incubar huevos de Pokemon

que depende de cuaacutentos kiloacutemetros camine el jugador A pesar de que recomendamos jugar al juego como es debido ya que

hacer ejercicio y estar al aire libre es parte del juego existe un truco interesante que se puede hacer con un ODROID el cual permite

incubar los huevos reproduciendo una tiacutepica ruta en ODROID y suplantando

la ubicacioacuten GPS de Pokemon Go Se traba de un proyecto en pruebas de modo que no reco-

mendamos ponerlo a prueba con tu cuentaTambieacuten presentamos un singular proyecto de un ordenador por-

taacutetil imprimido en 3D llamado Redtop junto con una carcasa para XU4 de bajo coste que puedes imprimir en una impresora estaacutendar de inyeccioacuten de tinta o laacuteser Michael continuacutea su tutorial de informaacutetica de alto rendimiento con una guiacutea para instalar Hadoop Adrian concluye su serie de seguridad en las redes con las redes WPA y comparte algunos scripts muy uacutetiles para hacer copia de seguridad Bo relata sus aventuras con la creacioacuten de un equipo moderno para el coche y withrobot aclara la diferencia entre los mecanismos de obturacioacuten de las caacutemaras Para los entusiastas de los juegos Tobias pre-senta la emulacioacuten de Sega Saturn y analizamos brevemente Pac-Man 256 para Android

Manuel Adamuz Editor EspantildeolTengo 31 antildeos y vivo en Sevilla Espantildea aunque naciacute en Granada Estoy casado con una mujer maravillosa y tengo un hijo Hace unos antildeos trabajeacute como teacutecnico informaacutetico y programador pero mi trabajo actual estaacute relacionado con la gestioacuten de calidad y las tecnologiacuteas de la informacioacuten ISO 9001 ISO 27001 ISO 20000 Soy un apasionado de la informaacutetica 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 soacutelo pienso en ODROID Mi otra aficioacuten es la bicicleta de montantildea a veces participo en competiciones semiprofesionales

Andrew Ruggeri Editor AdjuntoSoy un ingeniero de sistemas Biomeacutedicos anclado en Nueva Inglaterra que actualmente trabaja en la industria aeroespacial Un microcontrolador 68HC11 de 8 bits y el coacutedigo ensamblador son todo lo que me interesa de los sistemas embebidos Hoy en diacutea la mayoriacutea de los proyectos en los que trabajo estaacuten en lenguajes C y C ++ o en len-guajes de alto nivel como C y Java Para muchos proyectos utilizo placas ODROID pero auacuten sigo intentando utili-zar los controladores de 8 bits cada vez que puedo (soy un fan de ATMEL) Aparte de la electroacutenica soy un amante de

la fotografiacutea analoacutegica y desarrollo la peliacutecula friki con la que disfruto intentando hablar en idiomas extranjeros

Venkat Bommakanti Editor AdjuntoSoy un apasionado de los ordenadores desde la bahiacutea de San Francisco en California Procuro incorporar muchos de mis intereses en proyectos con ordenadores de placa reducida tales como pequentildeos modificaciones de hardware carpinteriacutea reutilizacioacuten de materiales desarrollo de software y creacioacuten de grabaciones musicales de aficionados Me encanta aprender continuamente cosas nuevas y trato de compartir mi alegriacutea y entusiasmo con la comunidad

Josh Sherman Editor AdjuntoSoy 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 tamantildeos haciendo trizas las tablets convirtiendo Raspberry Pi en PlayStations y experimentado con los ODROIDs y otros SoCs Me encanta trabajar con los elementos baacutesicos y asiacute poder aprender maacutes y disfrutar ensentildeando a otros escribiendo historias y guiacuteas sobre Linux ARM y otros proyectos experimentales divertidos

Nicole Scott Editor ArtiacutesticoSoy una experta en Produccioacuten Transmedia y Estrategia Digital especializa en la optimizacioacuten online y estrategias de marketing administracioacuten de medios sociales y produccioacuten multimedia impresa web viacutedeo y cine Gestiono muacuteltiples cuentas con agencias y productores de cine desde Analytics y Adwords a la edicioacuten de viacutedeo y maqu-etacioacuten DVD Tengo un ODROID-U3 que utilizo para ejecutar un servidor web sandbox Vivo en el aacuterea de la Bahiacutea de California y disfruta haciendo senderismo acampada y tocando muacutesica Visita mi web httpwww

nicolecscottcom

James LeFevour Editor ArtiacutesticoSoy un especialista en medios digitales que disfruta trabajando como freelance en marketing de redes sociales y admin-istracioacuten de sitios web Cuanto maacutes aprendo sobre las posibilidades de ODROID maacutes me ilusiona probar cosas nuevas con eacutel Me traslade a San Diego desde el Medio Oeste de los EEUU Continuo muy enamorado de muchos de los aspectos que la mayoriacutea 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 informaacutetico en constante peligro

Bruno Doiche Editor Artiacutestico SeniorBruno ama su trabajo pero su trabajo le aman auacuten maacutes Es por eso que le sigue llamando todos los diacuteas y todas las noches

con una especial capacidad para predecir cuando estaacute cocinando lavando la ropa o fregando los platos Sin embargo no le importa demasiado ya que al otro lado del teleacutefono siempre hay alguien que simplemente trata de joder un poco el mundo y lo necesita para solucionar su mundo y seguir girando

NUESTRO MARAVILLOSO PRESONAL ODROIDIAN

Rob Roy Editor JefeSoy un programador informaacutetico que vive y trabaja en San Francisco CA en el disentildeo y desarrollo de aplicaciones web para clients locales sobre mi cluster ODROID Mis principales lenguajes son jQuery angular JS y HTML5CSS3 Tambieacuten 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 estacioacuten de trabajo y como plataforma de juegos Puedes echar un vistazo a mi coleccioacuten de 100 GB de software ODROID kernel precompilados e imaacutegenes en

httpbitly1fsaXQs

INDICE

KODIBUNTU - 31

ORDENADOR PORTATIL CON ODROID-C1 - 14

JUEGOS ANDROID PAC-mAN 256 - 17

DISPOSITIVO IOT - 27

SCRIPTS PARA BACKUP - 22

JUEGOS LINUX SEGA amp CDEmU - 35

ORDENADOR PARA COHE - 32

SEGURIDAD wPA - 10

OBTURADOR DE LA CAmERA - 41

HADOOP fILE SySTEm - 18

PIRATEAR POKEmON GO - 6

CARCASA XU4 - 39

CONOCIENDO UN ODROIDIAN - 43

VU7 PLUS - 42

HECKEAR POKEMOn GOCOn un ODROIDCOMO LOGRAR SuPLAnTAR EL GPSpor Andrew Ruggeri

POKEMON GO

Pokemon Go es un juego muy popular para teleacutefonos moacuteviles el cual ha sido descargado maacutes de 100 millones de veces por jugadores de todo el mundo Utiliza la realidad aumentada para hacer que explores el mundo real con

el objeto de capturar pokemon acudiendo a puntos reales en los que estaacute ubicado lo bueno Cuanto maacutes camines captures pokemon y entrenes en gimnasios maacutes puntos obtendraacutes

El juego utiliza el GPS del teleacutefono para registrar el movimiento de los jugadores y la distancia recorrida Aquiacute es donde el ldquotrucordquo entra en juego Quisiera disculparme por el tiacutetulo ya que en realidad no se trata de un truco sino maacutes bien una forma de en-gantildear las funciones de geolocalizacioacuten del juego Nos centraremos en el enviacuteo de datos GPS registrados o simulados en Android Lo bueno de los ODROIDs es que no soacutelo ejecutan Android sino que tambieacuten son altamente configurables Desde un punto de vista del hardware el cabezal principal GPIO tiene varias interfaces en serie Ademaacutes el software es muy faacutecil de configurar y si fuera necesario podemos acceder al coacutedigo fuente completo de Android

Por lo tanto iquestQueacute es lo que hace que este truco del GPS y ODROID sea ta in-teresante Bueno podemos decir que tiene principalmente dos ventajas Reciente-mente Niantic Inc la compantildeiacutea que hay detraacutes de Pokemon Go ha comenzado a perseguir de un modo muy agresivo a los ldquobotsrdquo verificando el uso de una API Cualquier cuenta detectada que use un bot seraacute bloqueada de forma permanente El meacutetodo GPS que describimos aquiacute utiliza la aplicacioacuten oficial de Android lo que significa que toda API que se conecte al servidor Niantic no seraacute delimitada E-xisten varias versiones ldquocraqueadasrdquo de Pokemon Go para Android que permiten al usuario hacer trampas y moverse por el juego sin tener que desplazarse en el mundo real Sin embargo algunas de estas versiones ldquocraqueadasrdquo ejecutan coacutedigos mali-ciosos y peor auacuten requieren acceso a root para instalarse de modo que representan un gran problema de seguridad

GPS sobre AndroidLos ODROIDs tienen por defecto todos los drivers necesarios para trabajar

con el tiacutepico GPS NMEA NMEA es el protocolo estaacutendar utilizado para comu-nicar datos GPS Por suerte el protocolo NMEA es utilizado tanto en modo serie como en modo texto esto hace que sea extremadamente funcional porque es faacutecil de depurar y emular NMEA es muy versaacutetil porque ofrece informacioacuten sobre los sateacutelites disponibles y utilizados la velocidad los waypoints los errores de posicioacuten y mucha maacutes informacioacuten que se puede transmitir

Los ODROIDs en siacute mismos no cuenta con una unidad GPS integrada aunque una interfaz muy comuacuten para muchas unidades de GPS externas es la USB como por ejemplo la que usa el moacutedulo GPS de Hardkernel Una vez conectado el moacutedulo se vincula normalmente en la interfaz serie disponible en devttyUSB0 o devttyACM0 Android cuenta con un archivo en la particioacuten del sistema root

ODROID MAGAZINE 6

conocido como buildprop que almacena la configuracioacuten de muchos y diferentes aspectos de Android Dos de estos ajusten inciden directamente en el fun-cionamiento del GPS

rokernelandroidgps=dev

ttyACM0

rokernelandroidgps

speed=9600

El primer valor ldquorokernelandroidgpsrdquo es la ubicacioacuten del flujo de datos en serie de NMEA que normalmente es tty El se-gundo valor es la velocidad del flujo en serie Aquiacute es donde las cosas se vuelven interesantes Si podemos ajustar la ubicacioacuten GPS tambieacuten podemos intro-ducir nuestros propios datos GPS NMEA lo cual nos permite engantildear al GPS En la gran mayoriacutea de mis pruebas utilice un ODROID-C2 conectado viacutea UART a mi ordenador portaacutetil Esto me permitiacutea cambiar raacutepidamente en el fichero buildprop el paraacutemetro tty del GPS a ldquodevttyS1rdquo el puerto TTY para UART1 sobre el C2

El engantildeoHe reescrito esta seccioacuten varias veces a la vista de los recientes acontecimientos

y medidas que Niantic ha tomado hacia los ldquotrampososrdquo En lugar de escribir el coacutedigo que he desarrollado me voy a centrar en varias teacutecnicas y herramientas que cumplen con el mismo principio baacutesico El meacutetodo maacutes sencillo es grabar y reproducir un registro log de datos NMEA En el contexto de Pokemon Go darse un paseo por una zona con una buena cantidad de pokestops gimnasios y Pokeacutemon Existen varias aplicaciones de Android que se pueden instalar en tu teleacutefono suponiendo que tiene un teleacute-fono Android que te permiten guardar los datos GPS NMEA en un registro log Mueve el archivo log al ordenador portaacutetil conectado al ODROID Se en-viacutea una liacutenea de texto del archivo log NMEA al puerto serie a una velocidad de alrededor de 1 liacutenea cada 100 o 200 ms Un simple script Python puede ha-cer esto faacutecilmente Este meacutetodo no es de lo maacutes increiacuteble pero es muy simple

POKEMON GO

flujo de datos GPS NmEA en serie

Conexioacuten USB-UART de ODROID

ODROID MAGAZINE 7

POKEMON GO

y hace bien su trabajo El hecho de que estos regis-tros log representen datos reales es una gran ventaja

La segunda opcioacuten es utilizar un simulador GPS que se ejecute en el ordena-dor portaacutetil y bombardear con datos GPS ficticios al ODROID Existen diversas herramientas de simulacioacuten GPS que incluyen interfaces muy buenas Me he dado cuenta que muchas de ellas normalmente enviacutean los datos GPS NMEA simulados a traveacutes de la conexioacuten TCP o UDP Mi solucioacuten para esto simplemente fue escribir un programa para leer desde un puerto local y luego enviar el contenido del paquete a la consola o al puerto serie Una cuestioacuten a la hora de crear datos GPS ficticios tener mucho cuidado con las distancias y la velocidad Recuerda que estaacutes intentando imitar las condiciones del mundo real asiacute que si saltas de una ciudad a otra o de un continente a otro vas a levantar sospechas

Una vez que tengas tu fuente de datos GPS seleccionada y preparada puedes pasar al siguiente paso Para una depuracioacuten raacutepida y faacutecil de los datos GPS en Android tienes algunos programas al final de esta guiacutea Te recomiendo que instale alguno te ayudara bastante con la depuracioacuten y la comprobacioacuten de errores antes de iniciar Pokemon Go

Configurar Android y ODROIDComo ya he dicho la configuracioacuten es bastante simple y consiste en tener un or-

denador portaacutetil o incluso otro ODROID para que actuacutee como fuente de datos GPS Este es el dispositivo que enviaraacute los datos GPS precargados o falsos al ODROID con Android El ordenador portaacutetil estaacute conectado al puerto UART del ODROID o a cualquier otro puerto serie En mi configuracioacuten que se muestra en la Figura anterior tengo un convertidor USB a UART conectado al puerto UART1 del C2

El software para Android es miacutenimo y soacutelo requiere un cambio raacutepido en la con-figuracioacuten y en el archivo buildprop del que he hablado antes Asumiendo que tienes instalado Google PlayStore la instalacioacuten de Pokemon Go es muy simple y soacutelo

Pokemon Go ejecutandose sobre el sistema de suplantacioacuten de geolocalicacioacuten

ODROID MAGAZINE 8

POKEMON GO

requiere unos cuantos clics Si no lo tienes instalado puedes instalarlo siguiendo las sencillas instrucciones de Hardkernel en httpbitly2aWS696 Tuve algunas difi-cultades para interactuar con la aplicacioacuten real Pokemon Go a la hora de usar un teclado y un ratoacuten Me di cuenta que algunos botones no funcionan al ser presio-nado Termineacute por usar una pantalla taacutectil y no volviacute a tener ninguacuten problema

Hay algunas cosas que debes cambiar en la configuracioacuten de tu Android Lo pri-mero que tienes que hacer es entrar en Settings-gtDeveloper Options y desactivar la casilla ldquoAllow mock locationsrdquo que se encuentra en la seccioacuten ldquoDebuggingrdquo Te daraacutes cuenta de que sigue marcada cuando Pokemon Go muestre un error de localizacioacuten GPS Una vez desmarcada la opcioacuten el error desapareceraacute La segunda cosa que tienes que cambiar estaacute en la paacutegina Locatioacuten de los ajustes A continuacioacuten haz clic en la opcioacuten superior ldquoModerdquo apareceraacuten tres opciones la que tienes que seleccionar es ldquoDevice Onlyrdquo Esto haraacute que se use uacutenicamente la informacioacuten de localizacioacuten del GPS descartando cualquier otra fuente

NotasUna vez que has enviados los datos GPS a tu ODROID y tienes tu buildprop

bien configurado para ver el puerto serie correcto puedes seguir adelante y abrir Pokemon Go Asumiendo que tienes tus datos que emulan el movimiento deberiacuteas ver a tu ldquotrainerrdquo pokemon empezando a caminar en el juego Antes de continuar quisiera hacer hincapieacute en dos puntos importantes El primero y maacutes importante estaacutes violando los teacuterminos del juego al hacer esto Si te descubren Niantic tiene todo el derecho a bloquear permanentemente tu cuenta El segundo punto en el que quiero incidir es que se trata soacutelo de un juego Si se llega a un punto donde el juego tiene que automatizarse para poder disfrutar de eacutel es probable que no valga la pena jugar Como todas las cosas se recoge lo que se siembra y espero que esta guiacutea te sirva sobre todo para adquirir conocimientos uacutetiles acerca de los sistemas GPS y Android

Enlaces uacutetiles

Apps de informacioacuten GPS para Android httpbitly2bBdoXs Esta es el que yo usohttpbitly2br7DNK Igual de buena con una interfaz muy limpia

Analizador y generador NmEA httpbitly1FjZRPk Uno de los mejores generadores simple de usar e

incluye algunos ejemplos baacutesicos Se le echa en falta un mensaje GPGLL pero es insignificante Este es el que yo utiliceacute para mi simulador El meacutetodo maacutes simple para fijar dos puntos de paso es tener el programa con un incremento automaacutetico a una velocidad determinada

Existen unos cuantos simuladores para Linux y mucho maacutes para Windows Una raacutepida buacutesqueda en Google con ldquo GPS Simulatorrdquo o ldquo GPS NMEA Simu-latorrdquo te los mostraraacute No pude encontrar uno que fuera gratuito y de coacutedigo abierto aunque si uno pre-compilado gratuito muy simple y que estaacute dis-ponible en httpitly2bBfXcm

Maacutes informacioacuten sobre NMEA GPShttpaprsgidsnlnmeahttpbitly1g91wIE

ODROID MAGAZINE 9

asiacute como Websterrsquos English Dictionary Simplemente son coleccio-nes de palabras que tienen alguacuten significado para las personas o que hayan sido utilizadas como contrasentildeas con an-terioridad como se suelen apreciar en vulneraciones de seguri-dad Por lo general los diccionarios para descifrar la contrasentildea incluyen muchos maacutes teacuterminos que un diccionario estaacutendar porque tambieacuten tienen que incluir palabras del argot (como Yolo) o palabras mal escritas habitualmente (como aprentice) Tambieacuten incluyen nombres propios (como Andreacutes) nombres de personajes o lugares ficticios (como Pellenor Fields) o teacutermi-nos teacutecnicos (como el aacutecido desoxirribonucleico) Una buena fuente de estas palabras es la Wikipedia (que viene en diferen-tes idiomas) o incluso los subtiacutetulos de peliacutecula que se puede obtener en grandes cantidades en httpbitly2a1g42j

Kali Linux viene con algunos diccionarios por defecto que puedes utilizar o buscar en Internet listas de palabras uacutetiles

RockYou (134M) httpbitly1wtmeYADarkc0de (18M) httpbitly1pwlvJJLista de diccionarios httpbitly2ayDRaPTorrents lista de palabras WPA-PSK httpbitly2azrOqN 170K de palabras WPA httpbitly2as46gm 1 milloacuten de palabras httpbitly2a1geH4

En nuestros anteriores artiacuteculos atacamos las redes WEP y redes con WPS activado pero ahora es el momento de atacar la tecnologiacutea maacutes segura de las redes inalaacutembri-

cas el cifrado WPA Como siempre pide el consentimiento del propietario de la red antes de intentar romper su red y asiacute evitar problemas legales despueacutes iexclEs mejor prevenir que curar cuando se prueban las cosas

Ataques de Diccionario - Crear listas de palabras

Dado que la gente tiene fama por ser muy deficiente a la hora de elegir contrasentildeas seguras la mejor tecnica para romper la mayoriacutea de las contrasentildeas es ejecutar un ataque de diccio-nario

La complejidad de los ataques de diccionario reside en con-

seguir palabras correctas que sean relevantes para tu objetivo Por ejemplo si estaacutes atacando una red WiFi alemana es posible que quieras probar palabras en alemaacuten (iexclalgunas son muy lar-gas) Si estaacutes atacando un punto de acceso de un centro meacutedico puedes probar con teacuterminos meacutedicos No existe el diccionario ldquoperfectordquo ndash todo depende de tus necesidades Puedes encon-trar amplia informacioacuten sobre diccionarios con vistas a realizar ataques aquiacute httpbitly2aLS6Fx

No debemos confundir el teacutermino ldquodiccionariordquo con algo

ASuMIR EL RIEGO DE PEnETRAR LAS REDES wPA - PARTE 2por Adrian Popa

SEGURIDAD WPA

La busqueda de la palabra correccta

iexclEl Ataque de diccionario iexclEs suacuteper efectivo

ODROID MAGAZINE 10

tos praacutecticos inserta un Enter despueacutes de cada palabra) Luego ejecutamos sort para hacer las palabras uacutenicas que es una o-peracioacuten muy intensa para la CPU y la memoria Si no tienes suficiente memoria RAM para sort puedes dividir la entrada en varios archivos maacutes pequentildeos y ejecutar sort luego conca-tenar los resultados y ejecutar de nuevo sort sobre el resultado

$ iconv -f UTF-8 -t US-ASCIITRANSLIT

wiki_en_fulltxt | tr -cs ldquo[alpha]rdquo ldquonrdquo gtgt

wordlist_en_fulltxt

$ sort -u wordlist_en_fulltxt gt

wordlist_en_uniquetxt

Los diccionarios anteriores no estaacuten disentildeados necesari-amente para las restricciones WPA de modo que encontraraacuten contrasentildeas maacutes pequentildeas Puede eliminar las palabras maacutes pequentildeas o puedes utilizar una teacutecnica para combinarlas y crear contrasentildeas maacutes largas Para eliminar palabras inadecuadas pu-edes ejecutar grep (menor de 8 caracteres)

$ grep -P lsquo8rsquo wordlist_en_uniquetxt gt wordlist_

en_wpatxt

Hasta aquiacute tu diccionario se compone de una uacutenica pa-labra Si deseas generar diccionarios con parejas de palabras (o varias palabras) puede hacerlo con algo como esto (que genera permutaciones de dos palabras en el diccionario)

$ cat wordlist_en_uniquetxt wordlist_en_uniquetxt

| perl -lne lsquoBEGINapush a$_ENDforeach $x(a)

foreach $y(a)print $x$yrsquo gt every2wordstxt

Para tu comodidad puedes localizar listas de palabras de Wikipedia en ingleacutes y rumano en mi paacutegina de GitHub para hacer pruebas (httpbitly2ayE1yW)

Ejecutar ataques de diccionario con Pyrit

Vamos a utilizar de nuevo Pyrit para ejecutar un ataque de diccionario pero esta vez en lugar de ejecutarlo directamente vamos a importar el diccionario dentro Pyrit y lo vamos a eje-cutar desde alliacute Esto nos da la posibilidad de poder precalcular los hashes basados en el diccionario de este modo el descifrado real queda reducido principalmente a una consulta posterior Los datos se almacenan en ~pyrit

$ pyrit -e lsquoNASA-HQ-WPArsquo create_essid

$ pyrit -i wordlist_en_wpatxt import_passwords

$ pyrit batch

El comando batch de Pyrit necesita mucho tiempo y haraacute

Tambieacuten puede crear tu propio diccionario desde un vol-cado de texto Por ejemplo puedes obtener una copia offline de Wikipedia (en muchos idiomas) desde el Proyecto Kiwix (httpbitly2awalku) Necesitaraacutes descargar el archivo no in-dexado zim para el idioma que elijas aseguraacutendose de seleccio-nar la variante ldquonopicrdquo para no descargar ninguna imagen La Wikipedia en Ingleacutes ocupa aproximadamente 16 GB mientras que en otros idiomas es sustancialmente menor Para conver-tirla en una lista de palabras uacutenica es necesario tener una gran cantidad de espacio libre Por ejemplo el tamantildeo no compri-mido de la Wikipedia en Ingleacutes es de 130 GB Ten en cuenta que el comando zimdump necesitoacute un par de diacuteas para llegar a completarse en mi C1 con almacenamiento NFS

$ wget httpwwwopenzimorg

downloadzimlib-12targz

$ tar zxvf zimlib-12targz

$ cd zimlib-12

$ sudo apt-get install liblzma-dev

$ configure --prefix=usr

$ make

$ sudo make install

$ cd

$ echo lsquoDumping all articles as html into the zimdump

directory Please waitrsquo

$ zimdump -D zimdump wikipedia_en_all_nopiczim

A continuacioacuten tenemos que convertir el HTML a texto y concatenar todos los archivos en un uacutenico archivo de texto Vamos a crear un empaquetador alrededor de html2text de manera que si se bloquea no se detendraacute toda la liacutenea de in-formacioacuten El proceso tardaraacute entre varias horas y varios diacuteas dependiendo de la cantidad de archivos HTML que tengas que procesar y el dispositivo ODROID que poseas

$ sudo apt-get install html2text

$ cat ltltEOF gthtml2textwrappersh

binbash

html2text -utf8 ldquo$rdquo

exit 0

EOF

$ chmod a+x html2textwrappersh

$ find zimdumpA -print0 | xargs -0 -P 4 -n 30

html2textwrappersh gtgt wiki_en_fulltxt

El siguiente paso es transcribir los caracteres no ASCII a sus homoacutelogos ASCII (por ejemplo I -gt i) y dividir el archivo resultante en una lista de palabras Iconv depende de la con-figuracioacuten regional asiacute que aseguacuterate de tener soporte UTF-8 (en lugar de ldquoCrdquo por ejemplo) El comando ldquotrrdquo reemplaza todos los caracteres no alfanumeacutericos por nuevas liacuteneas (a efec-

SEGURIDAD WPA

ODROID MAGAZINE 11

$ wget httpwwwwillhackforsushicomcode

cowpatty46cowpatty-46tgz

$ tar xvf cowpatty-46tgz

$ cd cowpatty-46

$ sudo apt-get install libpcap-dev libssl-dev

$ make

$ sudo make install

$ cd

$ cowpatty -d linksys2hash -r

linksys2-insidious-handshakepcap -s linksys2 -2

Puedes especificar el archivo hash que quieres revisar con la opcioacuten -d (selecciona el hash con el mismo nombre que el punto de acceso objetivo) La opcioacuten -r especifica el archivo de captura con el handshake de 4 vias -s especifica el SSID

(ya que no se puede extraer de la captura) y -2 significa no ser demasiado estricto a la hora de analizar el archivo de captura Con esta configuracioacuten fui capaz de conseguir la contrasentildea en menos de 3 segundos usando un ODROID-C1 con una tasa de 25000 PMKs (comparados con los 300 PMKs cuando calculamos los PMKs) Por lo tanto el proceso es 83 veces maacutes raacutepido a expensas de utilizar unos 7 GB de espacio en disco

para el ataque Depende de ti decidir si vale la pena aunque consumas maacutes espacio en disco

Ingeneriacutea Social El doble maleacutefico

que tu CPU se caliente bastante mientras se crea la base de da-tos Si el calor te supone un problema puedes utilizar una her-ramienta como cpuctrl (httpbitly2aon1dA) para limitar la frecuencia maacutexima de la CPU con el regulador adecuado como por ejemplo ldquoconservativerdquo

Para obtener la clave de red tienes que proporcionar el ar-chivo de captura y los resultados si existen deberiacutean aparecer raacutepidamente Aquiacute tienes un pcap de ejemplo como referencia

httpbitly2agcRug A continuacioacuten ejecuta este comando

$ pyrit -r nasa-supercalifragilistic-handshakepcap

attack_db

Como puedes ver incluso lo que parecer ser una contrasentildea larga y robusta puede llegar a descifrarse si aparece en alguacuten artiacuteculo de Internet

Ataques con tabla RainbowUna vez que tengas cargado el diccionario en Pyrit iquestQueacute es

lo que te impide descifrar cada handshake que capturas Pues bien el SSID actuacutea como los ldquogranos de salrdquo comprobando que la misma contrasentildea combinada con un SSID diferente genere un PMK diferente Tener una lista de contrasentildeas pre-calculadas se denomina tabla rainbow y te permite descifrar las contrasentildeas maacutes raacutepidamente a costa de conar con maacutes espacio en disco para almacenar estas listas

Existe un proyecto que crea tablas rainbow para WPA para los 1000 SSID maacutes comunes en httpbitly2azsBIh Si tu red ob-jetivo tiene un SSID que estaacute en la lista (httpbitly2adkjtd) potencialmente podriacuteas descifrar la contrasentildea mucho maacutes raacutepido que con otros meacutetodos Vamos a poner esto a prueba

Para este experimento prepareacute un punto de acceso llama-do linksys2 con una contrasentildea del diccionario de palabras (httpbitly2ayEXmI) Necesitas descargar el conjunto tarball que el sitio proporciona (cuanto maacutes grande sea maacutes posibilidades tendraacutes de encontrar la clave) Descompriacuteme-lo en un directorio y obtendraacutes 1000 archivos hash cada uno nombrado de acuerdo con el SSID del punto de acce-so Tambieacuten necesitaremos instalar Cowpatty (httpbitly2awaJ2A) para poder procesar las tablas

SEGURIDAD WPA

Un ataque de diccionario wPA con Pyrit

Ataque wPA con tabla rainbow

XKCD obligatorio httpsxkcdcom538

ODROID MAGAZINE 12

Cuando todo esteacute listo inicia WifiPhisher especificando la interfaz de monitor y la interfaz hostapd

$ sudo airmon-ng start wlan0

$ sudo wifiphisher -jI mon0 -aI wlan1

Si todo va bien WifiPhisher te mostraraacute una lista de pun-tos de Acceso a engantildear y configuraraacute las reglas de iptables y DHCP y te preguntaraacute por el tipo de paacutegina web falsa que quieres que muestre A continuacioacuten procederaacute a desconectar los clientes y hacer que se conecten al punto de acceso falso y les mostraraacute algo similar a la Figura 5 Seraacute entonces cuando veas la contrasentildea en el inteacuterprete de comandos Ten en cuenta que estamos hablando de algo especialmente retorcido puesto que ya no estaacutes engantildeando soacutelo a los ordenadores sino tambieacuten a la gente real

Mantener tu WiFi seguraCon esto concluimos nuestro anaacutelisis sobre la seguridad

inalaacutembrica Estas son algunas pautas que deberiacuteas tener en cuenta para mantener tu wifi segura

bull No utilices tecnologiacuteas de encriptacioacuten obsoletas (WEP)bull No confiacutees demasiado en ocultar la red o usar listas de ac-ceso mAC ya que son muy deacutebiles y muy faacuteciles de evitar bull Desactiva la tecnologiacutea WPS en redes en las que fiacutesica-mente sea posiblebull Utiliza contrasentildeas largas que no esteacuten diccionarios Si tienes que usar las palabras del diccionario para que te sea maacutes faacutecil recordarlas (despues de todo eres un ser huma-no) combiacutenalas de forma aleatoria Una opcioacuten es utilizar la teacutecnica horse-battery-staple de xkcd (httpsxkcdcom936) esta herramienta httpbitly1cubp1J puede hacerlo de forma automaacuteticabull Antildeadir caracteres a una contrasentildea aumenta su seguri-dad bastante maacutes que usar un signo de puntuacioacuten espe-cial en contrasentildeas maacutes cortasbull Si es posible considera la posibilidad de utilizar WPA2-Enterprise en tu red domeacutesticabull No utilices nombres comunes para la red SSIDbull Reducir la intensidad de la sentildeal no te ayudaraacute puesto que el atacante siempre puede conseguir una antena mejor

Como siempre puedes compartir tus propias experiencias hacer preguntas o compartir problemas en el hilo de soporte en httpbitly2azoM5N

Es posible que hayas agotado todo lo que tienes a tu alcance para romper un punto de acceso WiFi en particular y aun asiacute no consigues resultados Es probable que tenga que esperar unos 3 millones de antildeos para que el ataque de fuerza bruta alcance el 1 asiacute que iquestqueacute podemos hacer Pues bien simple-mente tienes que atacar el punto de seguridad maacutes deacutebil de la cadena iexclEl ser humano

Un proyecto que tiene por objetivo simplemente ldquopregun-tarrdquo por la contrasentildea es WifiPhisher (httpbitly1wPdPPQ) El programa configura un punto de acceso abierto maleacutefico que clona el SSID del objetivo A continuacioacuten desautentifica to-dos los clientes del objetivo y espera a que se vuelvan a conec-tar Por casualidad (o aseguraacutendose de que tienes una mejor sentildeal) los clientes se conectaraacuten automaacuteticamente en su lugar a tu punto de acceso abierto Cuando intenten acceder a los recursos de Internet seraacuten redireccionados a un portal que se presenta como su router y le solicitaraacute su contrasentildea WPA (para mejorar la seguridad por supuesto) Una vez que se obtiene la contrasentildea se desconecta el punto de acceso y el cliente se co-necta sin que se perciba la diferencia a su red original Ves ndash es faacutecil Para conseguir esto necesitaraacutes dos adaptadores inalaacutem-bricos - uno que sea compatible con la inyeccioacuten (para desco-nectar continuamente a los usuarios del AP objetivo) y otro para hacerse pasar por el falso AP Para esta prueba he utilizado dos adaptadores Wifi Modulo 4 de Hardkernel

$ git clone httpsgithubcomsophronwifiphishergit

$ sudo apt-get install tcpdump hostapd

$ cd wifiphisher

$ sudo python setuppy install

Si aparece alguacuten error indicando que no encuentra setuptools instaacutelalo y vuelve a ejecutar el comando install

$ wget httpsbootstrappypaioez_setuppy -O - |

sudo python

Ten en cuenta que para que esto funcione necesitaraacutes con-figurar hostapd para que trabaje con tu tarjeta inalaacutembrica Tienes maacutes detalles en httpbitly2aLTF6w and httpbitly2aLTlnX

SEGURIDAD WPA

Los usuarios desprevenidos escribiraacuten su contrase-ntildea wPA en tu entorno de suplantacioacuten de red

ODROID MAGAZINE 13

En los uacuteltimos antildeos el tema del big data y de la ciencia de los datos se ha convertido en una tendencia muy importante en un sinfiacuten de in-

dustrias Las empresas de alta tecnologiacutea de Silicon Valley ya no son los uacutenicos proveedores de temas como Hadoop la regresioacuten logiacutestica y el aprendizaje de maquinas Estar familiarizado con las tecnologiacuteas del big data se estaacute convirtiendo en un requisito cada vez maacutes necesario en los empleos relacionados con la tecnologiacutea en cualquier parte Por desgracia y siendo realista la experiencia praacutectica con las tecnologiacuteas de big data normalmente implica tener acceso a un costoso cluacutester de ordenadores para ejecutar tus consultas Sin embargo la reciente revolucioacuten de los orde-nadores de placa reducida ha hecho que la informaacutetica distri-buida sea accesible a nivel personal y en educacioacuten para realizar tareas como esta y muchas otras

Imparto clases sobre disentildeo y mantenimiento de sistemas digitales y redes en un instituto franceacutes Durante los uacuteltimos 4 antildeos he ido sustituyendo todos los ordenadores de sobremesa de mi aula por ordenadores SBC principalmente por razones de espacio ya que la escuela estaacute cerca de la ciudad de Pariacutes y el espacio es muy caro iexclEl uso de ordenadores SBC deja maacutes

espacio en la mesa de trabajo del estudianteEmpeceacute con una Raspberry Pi pero pronto cambieacute al

ODROID-C1 tan pronto como estuvo disponible ya que la Pi no era lo suficientemente raacutepida para el trabajo en labo-ratorios (laboratorios GNS3 diferentes anaacutelisis de protocolos bus y configuracioacuten de los equipos de red) o simplemente para navegar por Internet Para el proacuteximo antildeo escolar ya habreacute cambiado la mitad de la clase al ODROIDC2 con un total de 10 ODROID-C1s y 8 ODROID-C2s

A la hora de preparar los laboratorios para los estudiantes tuve que usar el mismo equipo que ellos con el fin de asegurar-me de que todo funcionara sin problemas cuando los estudi-antes trabajasen en sus propios entornos de laboratorios Esto requeriacutea utilizar un ODROID en lugar de un ordenador por-

taacutetil x86 para eliminar cualquier diferencia de comportamiento en-tre ambos Para ser maacutes eficiente a la hora de preparar los laborato-rios parte de ellos los configuraba en casa y no en la escuela He in-tentado buscar algunas soluciones para fabricar un ordenador portaacutetil usando un ODROID de modo que se convirtiese en mi portaacutetil ODROID de ida y vuelta desde la escuela a casa Recorro 5 km hasta la escuela en bicicleta por lo que la solucioacuten teniacutea que ser ligera y compacta para transportarla

PORTATILODROID-C1 un PROyECTO CASERO A MEDIDA COn nOMbRE En CLAvE ldquoREDTOPrdquopor fabien Thiriet

PORTATIL ODROID

Portaacutetil REDTOP y vista trasera del mismo

ODROID MAGAZINE 14

RequisitosAl principio del proyecto elaboreacute una lista de requisitos

para el ordenador portaacutetil

bull Alimentado con 12V a traveacutes de un sistema de bateriacuteas solares en casa y con una fuente de alimentacioacuten exter-na 230V-12V en la escuelabull Bateriacutea Li-ion para cuando me esteacute moviendo con una autonomiacutea de unas 2 horas Algunos entornos de labo-ratorios en la escuela requieren monitorizar los buses CAN integrados en los vehiacuteculos de modo que se hace necesario el uso de bateriacuteasbull Pantalla LCD de 10rdquo como miacutenimobull Teclado y pantalla LCD montados en forma de ordena-dor portaacutetilbull GPIOs y conectores ODROID faacutecilmente accesiblebull Bluetooth maestroesclavo disponible puesto que ten-go muchos proyectos que funcionan con placas Arduino remotasbull RTC integrado porque no siempre estoy conectado a Internet

Proceso de fabricacioacutenAl principio encontreacute un Motorola Lapdock 100 en eBay

y lo utiliceacute durante varios meses Tras solucionar los problemas HDMI entre el ODROID y el Lapdock ya que el Lapdock se apagaba despueacutes de 20 segundos si no se conectaba nada a su puerto USB todo funcionoacute correctamente Se trataba de una solucioacuten muy ligera pero no lo suficientemente coacutemoda para un uso diario ya que la pantalla LCD soacutelo teniacutea 10rdquo y el teclado era muy pequentildeo Tambieacuten echeacute un vistazo a PiTop pero el precio era muy elevado para lo que estaba dispuesto a gastar Lo que realmente necesitaba era simplemente un gran panel LCD y un buen teclado montados en conjunto

Decidiacute buscar en eBay una pantalla LCD maacutes grande y en-contreacute un modelo de 133rdquo muy econoacutemico por 85 euro con en-viacuteo e impuestos incluidos La pantalla tiene una buena resolu-cioacuten de 1900x600 y los colores se ven muy bien Sin embargo

PORTATIL ODROID

el panel LCD se vendiacutea sin marco de modo que necesita algo para solventar esta cuestioacuten

Al mismo tiempo mi hijo ha conseguido lo que ha sontildeado durante mucho tiempo por su 15 cumpleantildeos una impresora 3D personal de modo que ya no teniacutea que utilizar una que teniacutea en la escuela Eacutel es muy bueno usando software CAD como SolidWorks y me propuso disentildear un chasis para el por-taacutetil Por desgracia la placa de impresioacuten 3D con un tamantildeo maacuteximo de 200 mm era demasiado pequentildea para imprimir un marco LCD de 133rdquo y un marco del teclado Despueacutes de varias reflexiones decidimos dividir los marcos de la LCD y del teclado en cuatro partes y unirlos con los clips de montaje im-presos en 3D y pegamento Todas las partes individuales eran inferiores a los 200 mm Si te fijas bien en las fotos del marco de la LCD de los clips y del teclado veraacutes la separacioacuten entre las piezas montadas El disentildeo CAD necesita alrededor de 2 semanas de trabajo para asegurarse de que todo encaja bien

Durante el disentildeo el principal problema que nos preo-cupaba era las bisagras del panel LCD que teniacutea que ser lo suficientemente fuerte para que me permitiera abrir y cerrar con facilidad el ordenador portaacutetil Esto nos permitiacutea crear una aacutengulo perfecto entre el marco del panel LCD y el marco del teclado Para que pudiera encajar correctamente el teclado

Portaacutetil RedTop visto desde arriba Versioacuten inicial de portaacutetil con un ordenador motorola Lapdock 100

El modelo 3D del marco de la LCD

ODROID MAGAZINE 15

en su marco lo desmontamos retirando las cubiertas superior e inferior Elegimos el color rojo para la fibra de impresioacuten 3D para que el ordenador fuese maacutes divertido y llamativo 30 horas maacutes tarde teniacuteamos impresas todas las partes del chasis Las pegamos y atornillamos el panel LCD y el teclado dentro de sus respectivos marcos El siguiente paso fue colocar todas las placas y moacutedulos en el interior del chasis con firmeza las in-sertamos en el plexiglaacutes

El plexiglaacutes fue cortado para que encajara en el espacio crea-do en la etapa de disentildeo CAD para cada marco De esta forma todo el mundo puede apreciar el engranaje del portaacutetil lo cual supone una gran ventaja a la hora de ensentildear informaacutetica El paso final fue cablear todo siguiendo el diagrama por bloques

Acabamos teniendo un ordenador portaacutetil potente y fiable iexclMis estudiantes de la escuela se sorprendieron cuando vieron este portaacutetil poco convencional por primera vez

BateriacuteaAhora disponiacuteamos de un nuevo ordenador portaacutetil pero

sin ninguacuten tipo de bateriacutea recargable de modo que maacutes o me-nos es inuacutetil En primer lugar necesitaacutebamos estimar la ca-pacidad de la bateriacutea necesaria Para tal fin hicimos algunas pruebas de medicioacuten del amperaje en diferentes condiciones de uso El maacuteximo amperaje se alcanza cuando el C2 se pone en marcha con un pico de 11A Durante el funcionamiento nor-mal se mantiene justo por debajo de 1A con un dongle USB WIFI un moacutedulo RTC un adaptador de ratoacuten inalaacutembrico y el moacutedulo Bluetooth conectados El consumo total de energiacutea del ordenador portaacutetil es de alrededor de unos 12W

Mi hijo rescatoacute una vieja bateriacutea de litio recargable de un ordenador portaacutetil de Lenovo (L412) y pudo extraerle las nueve ceacutelulas disponibles dentro del paquete de bateriacuteas La mayoriacutea de las veces este tipo de paquetes de bateriacuteas ya no funcionan no por la propia bateriacutea sino debido a un defectuoso controlador de bateriacuteas integrado Utilizamos 3 y las conectamos en serie Esto nos proporcionaba 3 x 37 V un total de 111 voltios cuando la bateriacutea estaacute casi descargada y maacutes de 12V cuando estaacute completa-mente cargada La placa controladora LCD funciona sin ninguacuten problema a 11V Cada ceacutelula tiene 2200 mAh de capacidad de modo que la autonomiacutea del portaacutetil se acerca a las 2 horas Esto era suficiente para alcanzar el objetivo que nos propusimos al inicio del proyecto

Para volver a cargar las 3 ceacutelulas utilizamos un banco de bate-riacuteas solar de 12V conectada a traveacutes de un moacutedulo de sobreali-mentacioacuten que estaacute reajustado a un liacutemite de corriente de 126 V y 1A Con nuestro modelo particular de bateriacuteas podemos ajustar tanto la tensioacuten de salida como la corriente Cuando es-

PORTATIL ODROID

Clips de LCD

marco del teclado

Chasis completamente montado

ODROID MAGAZINE 16

cribiacute este artiacuteculo la bateriacutea auacuten no estaba colocada dentro del RedTop pero la teniacuteamos fuera para realizar pruebas maacutes ex-haustivas Una vez que completemos las pruebas colocaremos las 3 celdas debajo del teclado en un espacio reservado para tal fin

MaterialesEsto es lo que utiliceacute para montar mi portaacutetil ODROID-C1

Panel LCD HDMI-VGA de 133rdquo con audio httprebaycomAYZ5JU

Teclado mecaacutenico Zalman httpwwwamazonfrdpB00LHSPCS4

Cable OTG USB httpwwwamazonfrdpB007MNZ8VY

Transformador 12V-5V 3A httpwwwamazonfrdpB00JGFEQLE

Moacutedulo Bluetooth HC05 maestroesclavo httpswwwamazonfrdpB013STJSES

Moacutedulo RTC PCF8563 httpwwwamazonfrdpB01DB8JECC

Mini altavoz httprebaycombwOCZv

Impresora 3D httpwwwdagomafrproduitimprimante-dis-

covery200

Filamentos PLA para impresora 3D httpwwwamazonfrdpB00UMV7ANM

Clavijas de corriente DC de 55mm httpwwwamazonfrdpB00O1Y1X70

Interruptor de alimentacioacuten httpwwwamazonfrdpB00HUHBS1Q

Pack de bateriacuteas de ordenador portaacutetil como esta httpwwwamazonfrdpB00TVOC55Y

Conversor de sobrealimentacioacuten (4V-12V) httprebaycomw3FgNH

Varios tornillos arandelas y cables05m de PlexiglassSuper glue

PORTATIL ODROID

La placa controladora de la LCD

JUEGOS ANDROID

PAC-MAn 256iquestun juEGO CLASICO iquestunA nuEvA PERSPECTIvA DEL GEnERO DEL CORREDOR In-TERMInAbLE iexclDESCubRELOpor Bruno Doiche

Suele decirse que los claacutesicos nunca mueren pero algunos pueden quedarse bastante

anticuados Cuando era un nintildeo el Pac-Ma era un juego cuyos graacuteficos y jugabilidad eran totalmente acepta-bles para los estaacutendares de la deacutecada de los 80 A pesar de que todaviacutea se puede disfrutar del original Pac-Man hoy diacutea estaraacutes de acuerdo conmigo en que se queda algo corto en cuanto a funcionalidad incluso si aceptas el reto de jugar al modo aacutercade lo suficiente como para encontrarte con el miacutetico error del nivel 256 que soacutelo los mejores juga-dores de Pac-Man son capaces de ver

Sin embargo en la partida 256 del Pac-Man el error es la principal caracteriacutestica te prosiguen como una ola implacable desde la parte inferior de la pantalla Te hace volver a pensar lo que realmente significa correr por tu supervivencia en un labe-rinto lleno de fantasmas cada uno con su propia personalidad Exige un control muy preciso y pensar muy raacutepido para lograr salir y mantenerte un paso por delante de tus enemigos fantas-mas Ahora no tienes que jugar a los 255 niveles de Pac-Man para llegar a uno de los niveles maacutes elitistas de la historia del juego Puedes instalarlo desde Play Store en

httpbitly2cLaD5q

Un gran juego tan adictivo como lo fue en sus primeros diacuteas arcade

ODROID MAGAZINE 17

book se puede compartir faacutecilmente permitiendo una faacutecil visualizacioacuten en liacutenea y en nuestro caso gestionar la creacioacuten y el enviacuteo de aplicaciones Spark al cluacutester Los notebooks de Jupyter son una forma muy comuacuten de usar Apache Spark ya que permite al usuario centrarse especiacuteficamente en el anaacutelisis de datos en lugar de preocuparse de las herramientas o de la infraestructura que hay detraacutes

Instalar Hadoop File SystemNuestra primera tarea es instalar Java en cada nodo del

cluacutester Instalaremos el uacuteltimo software Java 8 de Oracle EL cual requiere la aceptacioacuten de la licencia durante la instalacioacuten Debido a esto necesitas iniciar sesioacuten en cada nodo de forma independiente y ejecutar el instalador Una vez alliacute crearemos una nueva cuenta de usuario desde la que ejecutaremos todo

$ sudo add-apt-repository ppawebupd8teamjava

$ sudo apt-get update

$ sudo apt-get install oracle-java8-installer

$ sudo apt-get install rsync

$ sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hduser

$ sudo usermod -aG sudo hduser

Ahora necesitamos instalar Hadoop Teacutecnicamente po-driacuteas utilizar la distribucioacuten Hadoop disponibles en el sitio web de Apache pero no estaacute compilada para la CPU ARM v71 de nuestros XU4s Puesto que en su mayor parte es Java es genial ya que se ejecutaraacute sobre JVM que acabamos de instalar en cada nodo Sin embargo hay partes de Hadoop que fueron es-

En el anterior artiacuteculo que escribiacute para ODROID Maga-zine en httpbitly2bHFij7 analice el desarrollo de un cluacutester informaacutetico autoacutenomo con nodos ODROID

XU4 En este artiacuteculo explicaremos coacutemo hacer un buen uso de ese cluacutester instalando Apache Spark y el sistema de ficheros Hadoop asiacute como tambieacuten la forma de acceder a tu cluacutester a traveacutes de la aplicacioacuten web Jupyter

Hadoop File System (HDFS) es uno de los sistemas de ar-chivos distribuidos maacutes populares y maacutes utilizados que existen hoy en diacutea Un sistema de archivos distribuido (DFS) es una aplicacioacuten para cluacutester que agrupa todas las unidades de disco duro dentro de un cluacutester para que puedan ser tratadas como una uacutenica unidad de almacenamiento de cara a sus clientes ex-ternos Utilizar un DFS tiene dos ventajas muy importantes En primer lugar y lo maacutes evidente es que te permite guardar y trabajar con grandes conjuntos de datos que se almacenan en maacutes de un disco duro del cluacutester En segundo lugar un DFS bien disentildeado proporciona mayor resistencia de datos en el nodo o ante fallos de disco mediante la replicacioacuten de bloques de datos en varias unidades del cluacutester En nuestro cluacutester XU4 los discos duros son las tarjetas MicroSD que fueron instaladas y configurada en nuestra anterior guiacutea

Apache Spark es una moderna plataforma de anaacutelisis de Big Data utilizada ampliamente en la industria del anaacutelisis de los grandes voluacutemenes de datos Proporciona herramientas de alto nivel muy simple para manipular y analizar datos ya sea a traveacutes de SQL o mapreduce ademaacutes de usar lenguajes de pro-gramacioacuten comunes tales como Python Scala y Java La pecu-liaridad maacutes significativa de Apache Spark es el uso del fondo de memoria RAM del cluacutester para almacenar objetos de datos intermedios que aceleran significativamente el procesamiento de datos Aunque los 2 GB de RAM integrados en el XU4 po-driacutean parecer un poco austeros en comparacioacuten con las grandes cantidades de memoria en un nodo de un cluacutester industrial hay espacio suficiente para hacer algunas cosas interesantes con Apache Spark

Jupyter Notebook es una aplicacioacuten web que te permite coacute-modamente aprovecharte de diversos lenguajes y plataformas de caacutelculo con tu cluacutester a traveacutes de una interfaz web El note-

InSTALAR HADOOP y SPARK En un CLuSTER ODROID-Xu4por michael Kamprath

HADOOP FILE SYSTEM

ODROID MAGAZINE 18

-l root ldquomkdir -p opthadoop-272rdquo

$ sudo rsync -avxP opthadoop-272

rootslave1opt

$ sudo rsync -avxP opthadoop-272

rootslave2opt

$ sudo rsync -avxP opthadoop-272

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop opthadoop-272rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquoln -s opthadoop-272 usrlocalhadooprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquomkdir -p datahdfstmprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop datahdfsrdquo

El uacuteltimo paso en la instalacioacuten de Hadoop es formatear el nodo como un HDFS

$ usrlocalhadoopbinhdfs namenode -format

Instalar Apache SparkVamos a utilizar un meacutetodo similar al anterior para instalar

Apache Spark En primer lugar vamos a utilizar Python 3 para acceder a Spark y a algunas librerias clave de Python por lo que tendraacutes que iniciar sesioacuten en cada nodo y ejecutar

$ sudo apt-get install python3 python3-pip

$ sudo pip3 install numpy

$ sudo pip3 install urlparse

Despueacutes en el nodo maestro instala Apache Spark

$ cd opt

$ sudo wget httpapacheclazorgspark

spark-162spark-162-bin-hadoop26tgz

$ sudo tar xvzf spark-162-bin-hadoop26tgz

$ sudo chown -R hduserhadoop

spark-162-bin-hadoop26

$ sudo ln -s optspark-162-bin-hadoop26

usrlocalspark

Al igual que en nuestra instalacioacuten de Hadoop necesitas antildeadir algunos archivos de configuracioacuten al directorio usrlo-calchispasconf Puedes localizar los archivos de configuracioacuten necesarios en mi repositorio GitHub (httpbitly2b4GnDU)

Una vez que Spark haya sido configurado en el nodo ma-

critas en C para que se ejecutaran maacutes raacutepido Si una instalacioacuten Hadoop no tiene estas libreriacuteas compiladas en la plataforma en la que estaacute se utilizaraacuten automaacuteticamente las equivalentes en Java por lo que seguiraacute funcionando pero de un modo maacutes lento Para este proyecto he desarrollado una distribucioacuten de la uacuteltima versioacuten de Hadoop para el procesador ARM v71 va-mos a descargar e instalar mi distribucioacuten En el nodo maestro inicia sesioacuten con la cuenta ldquohduserrdquo recieacuten creada y ejecuta los siguientes comandos para instalar Hadoop y configurar los no-dos del cluacutester para utilizar SSH sin contrasentildea Ten en cuenta que tendraacutes que iniciar sesioacuten en cada nodo esclavo desde el nodo maestro para configurar completamente el inicio de se-sioacuten sin contrasentildea

$ cd

$ ssh-keygen -t rsa -P ldquordquo

$ cat $HOMEsshid_rsapub gtgt $HOMEsshauthorized_

keys

$ ssh hduserlocalhost

$ exit

$ ssh hdusermaster

$ exit

$ ssh-copy-id hduserslave1

$ ssh hduserslave1

$ exit

$ ssh-copy-id hduserslave2

$ ssh hduserslave2

$ exit

$ ssh-copy-id hduserslave3

$ ssh hduserslave3

$ exit

$ cd opt

$ sudo wget httpdiybigdatanetdownloads

hadoophadoop-272armhftargz

$ sudo tar xzf hadoop-272armhftargz

$ sudo chown -R hduserhadoop hadoop-272

$ cd usrlocal

$ sudo ln -s opthadoop-272 hadoop

$ cd usrlocalhadoop

Ahora tenemos que crear los archivos de configuracioacuten para Hadoop Por comodidad ya he creado estos archivos que se de-ben instalar en el directorio usrlocalhadoopetchadoop y los he colocado a mi repositorio GitHub en httpbitly2bBehj4

Estos archivos de configuracioacuten tienen una configuracioacuten de cluacutester similar a la descrita en mi anterior artiacuteculo Es po-sible que tengas que modificarlos si has desarrollado un cluacutester diferente Ahora que el software Hadoop estaacute configurado en el nodo maestro lo vamos a copiar en los nodos esclavos

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

HADOOP FILE SYSTEM

ODROID MAGAZINE 19

estro coacutepialo a los esclavos de tu cluacutester

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo -l root

ldquomkdir -p optspark-162-bin-hadoop26rdquo

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave1opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave2opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquochown -R hduserhadoop

optspark-162-bin-hadoop26rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquoln -s optspark-162-bin-hadoop26

usrlocalsparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquomkdir -p datasparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquochown hduserhadoop datasparkrdquo

Instalar Jupyter NotebookLa instalacioacuten Jupyter Notebook es relativamente simple en

comparacioacuten con lo que hemos hecho hasta ahora Ugravenicamente en el nodo maestro ejecuta los siguientes comandos

$ sudo mkdir datajupyter

$ sudo chown -R hduserhadoop datajupyter

$ mkdir ~notebooks

$ sudo pip3 install jupyter

Para hacer visualizaciones en un notebook necesitamos compilar e instalar matplotlib Tambieacuten es uacutetil tener instalado numpy para facilitar la informaacutetica cientiacutefica a traveacutes de Py-thon Ten en cuenta que esto va a llevar un tiempo

$ sudo apt-get build-dep matplotlib

$ sudo pip3 install matplotlib

$ sudo pip3 install numpy

Ejecutar Hadoop Spark y Jupyter

Para logar que todo se ejecute usa los siguientes comandos

$ usrlocalhadoopsbinstart-dfssh

$ usrlocalsparksbinstart-allsh

$ XDG_RUNTIME_DIR=rdquodatajupyterrdquo PYSPARK_DRIVER_

PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=rdquonotebook

--no-browser --port=7777 --notebook-dir=homehduser

notebooksrdquo usrlocalsparkbinpyspark --packages

comdatabricksspark-csv_210110 --master spark

master7077

Puedes optar por convertir esta secuencia de comandos en un script bash independiente o simplemente puede crear un alias para este uacuteltimo comando Te dejo elegir cualquiera de

estas opciones como ejercicio Una vez en funcionamiento in-troduce en el navegador del ordenador httpltdireccioacuten IP del cluacutestergt7777 deberiacutea ver la interfaz Jupyter

Vamos a ejecutar una tarea de recuento de palabras en

nuestro sistema big data de XU4 Crea un nuevo notebook Python 3 haciendo clic en el botoacuten New en la parte superior derecha de la paacutegina web Ahora veraacute un espacio vaciacuteo como el que se muestra en la Figura anterior

Abre una nueva sesioacuten SSH en el nodo principal y antildeade lo siguiente

$ wget httpnorvigcombigtxt

$ hdfs dfs -mkdir usermichael

HADOOP FILE SYSTEM

Paacutegina web principal de Jupyter

Bloc de notas de Jupyter

ODROID MAGAZINE 20

$ hdfs dfs -put bigtxt usermichaelbigtxt

$ hdfs dfs -ls usermichael

Vuelve al notebook recieacuten creado antildeade el siguiente coacutedigo Python en la primera celda

from operator import add

blog_data = sctextFile(lsquohdfsmaster9000user

michaelbigtxtrsquo)cache()

counts = blog_dataflatMap(lambda x xsplit(lsquo lsquo))

map(lambda x (x 1))reduceByKey(add)

A continuacioacuten pulsa Shift + Enter para iniciar el trata-miento de las celdas Una nueva celda apareceraacute en el notebook de Jupyter Teacutecnicamente todaviacutea no ha sucedido nada dentro de Spark excepto crear un plan de consulta para ejecutar el recuento de palabras frente al conjunto de datos del blog que ya hemos colocado en HDFS Spark no hace ninguacuten caacutelculo hasta que no haga falta materializar los resultados La forma maacutes comuacuten de hacerlo es mostrar una parte de los resultados En la siguiente celda del notebook introduzca el coacutedigo y pulse Shift-Enter

countstake(100)

Veraacutes un asterisco junto a la celda en la que hemos intro-ducido el coacutedigo anterior Este asterisco seguiraacute activo mien-tras Spark esteacute haciendo sus caacutelculos Si vuelves a la sesioacuten de terminal en la que lanzaste el software Jupyter veraacutes el regis-tro log de Spark realizando sus caacutelculos Por otra parte si es-

cribes en tu navegador web la direccioacuten httpltdireccioacuten IP del cluacutestergt4040 puedes analizar el estado interno de Spark uti-lizando su interfaz de aplicacioacuten Es probable que escuches a-rrancar el ventilador de la CPU del XU4 durante los caacutelculos

Cuando los caacutelculos finalicen los primeros 100 valores de

los resultados se mostraraacuten en el notebook de JupyterCambia el nombre del notebook haciendo clic en la cadena

ldquo Untitledrdquo junto al logo de Jupyter en la parte superior izqui-erda del notebook Puede seguir trabajando con los datos antildea-diendo maacutes celdas que contengan maacutes coacutedigo python Spark Hay muchos y excelentes recursos en la web para aprender maacutes sobre Apache Spark incluyendo httpsparkapacheorg

Para guardar y cerrar el notebook haz clic en el menuacute ldquoFilerdquo en la paacutegina y selecciona ldquoClose and Haltrdquo Para finalizar Jupy-ter pulsa Control-C dos veces en la ventana de terminal desde el cual se lanzoacute Una vez que el software Juypter se detenga puedes apagar Spark y HDFS con

$ usrlocalsparksbinstop-allsh

$ usrlocalhadoopsbinstop-dfssh

Lecturas recomendadasSi deseas aprender maacutes sobre los temas tratados en este artiacute-

culo puedes utilizar los siguientes recursos para obtener maacutes informacioacuten sobre el software asiacute como mis conocimientos so-bre Big Data

Mi blog httpdiybigdatanetApache Hadoop httphadoopapacheorgApache Spark httpsparkapacheorgJupyter Notebook httpjupyterorg

HADOOP FILE SYSTEM

Los caacutelculos del recuento de palabras se han completado

ODROID MAGAZINE 21

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 2: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

Queacute defendemosNos esmeramos en presentar una tecnologiacutea punta futura joven teacutecnica y para la sociedad de hoy

Nuestra filosofiacutea se basa en los desarrolladores Con-tinuamente nos esforzamos por mantener estrechas relaciones con eacutestos en todo el mundo

Por eso siempre podraacutes confiar en la calidad yexperiencia que representa la marca distintiva de nuestros productos

Simple moderno y uacutenicoDe modo que tienes a tu alcance lo mejorpara hacer todo lo que imagines

Realizamos envios de ODROID-C2and ODROID-XU4 a los paiacuteses de la UE Ven y visita nuestra tienda online

Direccioacuten Max-Pollin-Straszlige 1 85104 Pfoumlrring Alemania

Teleacutefono amp Faxtelf +49 (0) 8403 920-920email servicepollinde

Nuestros productos ODROID se pueden encon-trar en httpbitly1tXPXwe

EDITORIAL

ODROID Magazine que se publica mensualmente en httpmagazineodroidcom es la fuente de todas las cosas ODROIDianas bull Hard Kernel Ltd bull 704 Anyang K-Center Gwanyang Dongan Anyang Gyeonggi South Korea 431-815 bull fabricantes de la familia ODROID de placas de desarrollo quad-core y la primera arquitectura ARM ldquobigLITTLErdquo del mundo basada en una uacutenica placa Para informacioacuten sobre coacutemo enviar articulos contacta con odroidmagazinegmailcom o visita httpbitly1ypImXsUacutenete a la comunidad ODROID con miembros en maacutes de 135 paiacuteses en httpforumodroidcom y explora las nuevas tecnologiacuteas que te ofrece Hardkernel en httpwwwhardkernelcom

Pokemon Go el juego para moacuteviles maacutes popular de la his-toria entretiene a maacutes de 20 millones de usuarios a diario Parte del juego consiste en incubar huevos de Pokemon

que depende de cuaacutentos kiloacutemetros camine el jugador A pesar de que recomendamos jugar al juego como es debido ya que

hacer ejercicio y estar al aire libre es parte del juego existe un truco interesante que se puede hacer con un ODROID el cual permite

incubar los huevos reproduciendo una tiacutepica ruta en ODROID y suplantando

la ubicacioacuten GPS de Pokemon Go Se traba de un proyecto en pruebas de modo que no reco-

mendamos ponerlo a prueba con tu cuentaTambieacuten presentamos un singular proyecto de un ordenador por-

taacutetil imprimido en 3D llamado Redtop junto con una carcasa para XU4 de bajo coste que puedes imprimir en una impresora estaacutendar de inyeccioacuten de tinta o laacuteser Michael continuacutea su tutorial de informaacutetica de alto rendimiento con una guiacutea para instalar Hadoop Adrian concluye su serie de seguridad en las redes con las redes WPA y comparte algunos scripts muy uacutetiles para hacer copia de seguridad Bo relata sus aventuras con la creacioacuten de un equipo moderno para el coche y withrobot aclara la diferencia entre los mecanismos de obturacioacuten de las caacutemaras Para los entusiastas de los juegos Tobias pre-senta la emulacioacuten de Sega Saturn y analizamos brevemente Pac-Man 256 para Android

Manuel Adamuz Editor EspantildeolTengo 31 antildeos y vivo en Sevilla Espantildea aunque naciacute en Granada Estoy casado con una mujer maravillosa y tengo un hijo Hace unos antildeos trabajeacute como teacutecnico informaacutetico y programador pero mi trabajo actual estaacute relacionado con la gestioacuten de calidad y las tecnologiacuteas de la informacioacuten ISO 9001 ISO 27001 ISO 20000 Soy un apasionado de la informaacutetica 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 soacutelo pienso en ODROID Mi otra aficioacuten es la bicicleta de montantildea a veces participo en competiciones semiprofesionales

Andrew Ruggeri Editor AdjuntoSoy un ingeniero de sistemas Biomeacutedicos anclado en Nueva Inglaterra que actualmente trabaja en la industria aeroespacial Un microcontrolador 68HC11 de 8 bits y el coacutedigo ensamblador son todo lo que me interesa de los sistemas embebidos Hoy en diacutea la mayoriacutea de los proyectos en los que trabajo estaacuten en lenguajes C y C ++ o en len-guajes de alto nivel como C y Java Para muchos proyectos utilizo placas ODROID pero auacuten sigo intentando utili-zar los controladores de 8 bits cada vez que puedo (soy un fan de ATMEL) Aparte de la electroacutenica soy un amante de

la fotografiacutea analoacutegica y desarrollo la peliacutecula friki con la que disfruto intentando hablar en idiomas extranjeros

Venkat Bommakanti Editor AdjuntoSoy un apasionado de los ordenadores desde la bahiacutea de San Francisco en California Procuro incorporar muchos de mis intereses en proyectos con ordenadores de placa reducida tales como pequentildeos modificaciones de hardware carpinteriacutea reutilizacioacuten de materiales desarrollo de software y creacioacuten de grabaciones musicales de aficionados Me encanta aprender continuamente cosas nuevas y trato de compartir mi alegriacutea y entusiasmo con la comunidad

Josh Sherman Editor AdjuntoSoy 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 tamantildeos haciendo trizas las tablets convirtiendo Raspberry Pi en PlayStations y experimentado con los ODROIDs y otros SoCs Me encanta trabajar con los elementos baacutesicos y asiacute poder aprender maacutes y disfrutar ensentildeando a otros escribiendo historias y guiacuteas sobre Linux ARM y otros proyectos experimentales divertidos

Nicole Scott Editor ArtiacutesticoSoy una experta en Produccioacuten Transmedia y Estrategia Digital especializa en la optimizacioacuten online y estrategias de marketing administracioacuten de medios sociales y produccioacuten multimedia impresa web viacutedeo y cine Gestiono muacuteltiples cuentas con agencias y productores de cine desde Analytics y Adwords a la edicioacuten de viacutedeo y maqu-etacioacuten DVD Tengo un ODROID-U3 que utilizo para ejecutar un servidor web sandbox Vivo en el aacuterea de la Bahiacutea de California y disfruta haciendo senderismo acampada y tocando muacutesica Visita mi web httpwww

nicolecscottcom

James LeFevour Editor ArtiacutesticoSoy un especialista en medios digitales que disfruta trabajando como freelance en marketing de redes sociales y admin-istracioacuten de sitios web Cuanto maacutes aprendo sobre las posibilidades de ODROID maacutes me ilusiona probar cosas nuevas con eacutel Me traslade a San Diego desde el Medio Oeste de los EEUU Continuo muy enamorado de muchos de los aspectos que la mayoriacutea 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 informaacutetico en constante peligro

Bruno Doiche Editor Artiacutestico SeniorBruno ama su trabajo pero su trabajo le aman auacuten maacutes Es por eso que le sigue llamando todos los diacuteas y todas las noches

con una especial capacidad para predecir cuando estaacute cocinando lavando la ropa o fregando los platos Sin embargo no le importa demasiado ya que al otro lado del teleacutefono siempre hay alguien que simplemente trata de joder un poco el mundo y lo necesita para solucionar su mundo y seguir girando

NUESTRO MARAVILLOSO PRESONAL ODROIDIAN

Rob Roy Editor JefeSoy un programador informaacutetico que vive y trabaja en San Francisco CA en el disentildeo y desarrollo de aplicaciones web para clients locales sobre mi cluster ODROID Mis principales lenguajes son jQuery angular JS y HTML5CSS3 Tambieacuten 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 estacioacuten de trabajo y como plataforma de juegos Puedes echar un vistazo a mi coleccioacuten de 100 GB de software ODROID kernel precompilados e imaacutegenes en

httpbitly1fsaXQs

INDICE

KODIBUNTU - 31

ORDENADOR PORTATIL CON ODROID-C1 - 14

JUEGOS ANDROID PAC-mAN 256 - 17

DISPOSITIVO IOT - 27

SCRIPTS PARA BACKUP - 22

JUEGOS LINUX SEGA amp CDEmU - 35

ORDENADOR PARA COHE - 32

SEGURIDAD wPA - 10

OBTURADOR DE LA CAmERA - 41

HADOOP fILE SySTEm - 18

PIRATEAR POKEmON GO - 6

CARCASA XU4 - 39

CONOCIENDO UN ODROIDIAN - 43

VU7 PLUS - 42

HECKEAR POKEMOn GOCOn un ODROIDCOMO LOGRAR SuPLAnTAR EL GPSpor Andrew Ruggeri

POKEMON GO

Pokemon Go es un juego muy popular para teleacutefonos moacuteviles el cual ha sido descargado maacutes de 100 millones de veces por jugadores de todo el mundo Utiliza la realidad aumentada para hacer que explores el mundo real con

el objeto de capturar pokemon acudiendo a puntos reales en los que estaacute ubicado lo bueno Cuanto maacutes camines captures pokemon y entrenes en gimnasios maacutes puntos obtendraacutes

El juego utiliza el GPS del teleacutefono para registrar el movimiento de los jugadores y la distancia recorrida Aquiacute es donde el ldquotrucordquo entra en juego Quisiera disculparme por el tiacutetulo ya que en realidad no se trata de un truco sino maacutes bien una forma de en-gantildear las funciones de geolocalizacioacuten del juego Nos centraremos en el enviacuteo de datos GPS registrados o simulados en Android Lo bueno de los ODROIDs es que no soacutelo ejecutan Android sino que tambieacuten son altamente configurables Desde un punto de vista del hardware el cabezal principal GPIO tiene varias interfaces en serie Ademaacutes el software es muy faacutecil de configurar y si fuera necesario podemos acceder al coacutedigo fuente completo de Android

Por lo tanto iquestQueacute es lo que hace que este truco del GPS y ODROID sea ta in-teresante Bueno podemos decir que tiene principalmente dos ventajas Reciente-mente Niantic Inc la compantildeiacutea que hay detraacutes de Pokemon Go ha comenzado a perseguir de un modo muy agresivo a los ldquobotsrdquo verificando el uso de una API Cualquier cuenta detectada que use un bot seraacute bloqueada de forma permanente El meacutetodo GPS que describimos aquiacute utiliza la aplicacioacuten oficial de Android lo que significa que toda API que se conecte al servidor Niantic no seraacute delimitada E-xisten varias versiones ldquocraqueadasrdquo de Pokemon Go para Android que permiten al usuario hacer trampas y moverse por el juego sin tener que desplazarse en el mundo real Sin embargo algunas de estas versiones ldquocraqueadasrdquo ejecutan coacutedigos mali-ciosos y peor auacuten requieren acceso a root para instalarse de modo que representan un gran problema de seguridad

GPS sobre AndroidLos ODROIDs tienen por defecto todos los drivers necesarios para trabajar

con el tiacutepico GPS NMEA NMEA es el protocolo estaacutendar utilizado para comu-nicar datos GPS Por suerte el protocolo NMEA es utilizado tanto en modo serie como en modo texto esto hace que sea extremadamente funcional porque es faacutecil de depurar y emular NMEA es muy versaacutetil porque ofrece informacioacuten sobre los sateacutelites disponibles y utilizados la velocidad los waypoints los errores de posicioacuten y mucha maacutes informacioacuten que se puede transmitir

Los ODROIDs en siacute mismos no cuenta con una unidad GPS integrada aunque una interfaz muy comuacuten para muchas unidades de GPS externas es la USB como por ejemplo la que usa el moacutedulo GPS de Hardkernel Una vez conectado el moacutedulo se vincula normalmente en la interfaz serie disponible en devttyUSB0 o devttyACM0 Android cuenta con un archivo en la particioacuten del sistema root

ODROID MAGAZINE 6

conocido como buildprop que almacena la configuracioacuten de muchos y diferentes aspectos de Android Dos de estos ajusten inciden directamente en el fun-cionamiento del GPS

rokernelandroidgps=dev

ttyACM0

rokernelandroidgps

speed=9600

El primer valor ldquorokernelandroidgpsrdquo es la ubicacioacuten del flujo de datos en serie de NMEA que normalmente es tty El se-gundo valor es la velocidad del flujo en serie Aquiacute es donde las cosas se vuelven interesantes Si podemos ajustar la ubicacioacuten GPS tambieacuten podemos intro-ducir nuestros propios datos GPS NMEA lo cual nos permite engantildear al GPS En la gran mayoriacutea de mis pruebas utilice un ODROID-C2 conectado viacutea UART a mi ordenador portaacutetil Esto me permitiacutea cambiar raacutepidamente en el fichero buildprop el paraacutemetro tty del GPS a ldquodevttyS1rdquo el puerto TTY para UART1 sobre el C2

El engantildeoHe reescrito esta seccioacuten varias veces a la vista de los recientes acontecimientos

y medidas que Niantic ha tomado hacia los ldquotrampososrdquo En lugar de escribir el coacutedigo que he desarrollado me voy a centrar en varias teacutecnicas y herramientas que cumplen con el mismo principio baacutesico El meacutetodo maacutes sencillo es grabar y reproducir un registro log de datos NMEA En el contexto de Pokemon Go darse un paseo por una zona con una buena cantidad de pokestops gimnasios y Pokeacutemon Existen varias aplicaciones de Android que se pueden instalar en tu teleacutefono suponiendo que tiene un teleacute-fono Android que te permiten guardar los datos GPS NMEA en un registro log Mueve el archivo log al ordenador portaacutetil conectado al ODROID Se en-viacutea una liacutenea de texto del archivo log NMEA al puerto serie a una velocidad de alrededor de 1 liacutenea cada 100 o 200 ms Un simple script Python puede ha-cer esto faacutecilmente Este meacutetodo no es de lo maacutes increiacuteble pero es muy simple

POKEMON GO

flujo de datos GPS NmEA en serie

Conexioacuten USB-UART de ODROID

ODROID MAGAZINE 7

POKEMON GO

y hace bien su trabajo El hecho de que estos regis-tros log representen datos reales es una gran ventaja

La segunda opcioacuten es utilizar un simulador GPS que se ejecute en el ordena-dor portaacutetil y bombardear con datos GPS ficticios al ODROID Existen diversas herramientas de simulacioacuten GPS que incluyen interfaces muy buenas Me he dado cuenta que muchas de ellas normalmente enviacutean los datos GPS NMEA simulados a traveacutes de la conexioacuten TCP o UDP Mi solucioacuten para esto simplemente fue escribir un programa para leer desde un puerto local y luego enviar el contenido del paquete a la consola o al puerto serie Una cuestioacuten a la hora de crear datos GPS ficticios tener mucho cuidado con las distancias y la velocidad Recuerda que estaacutes intentando imitar las condiciones del mundo real asiacute que si saltas de una ciudad a otra o de un continente a otro vas a levantar sospechas

Una vez que tengas tu fuente de datos GPS seleccionada y preparada puedes pasar al siguiente paso Para una depuracioacuten raacutepida y faacutecil de los datos GPS en Android tienes algunos programas al final de esta guiacutea Te recomiendo que instale alguno te ayudara bastante con la depuracioacuten y la comprobacioacuten de errores antes de iniciar Pokemon Go

Configurar Android y ODROIDComo ya he dicho la configuracioacuten es bastante simple y consiste en tener un or-

denador portaacutetil o incluso otro ODROID para que actuacutee como fuente de datos GPS Este es el dispositivo que enviaraacute los datos GPS precargados o falsos al ODROID con Android El ordenador portaacutetil estaacute conectado al puerto UART del ODROID o a cualquier otro puerto serie En mi configuracioacuten que se muestra en la Figura anterior tengo un convertidor USB a UART conectado al puerto UART1 del C2

El software para Android es miacutenimo y soacutelo requiere un cambio raacutepido en la con-figuracioacuten y en el archivo buildprop del que he hablado antes Asumiendo que tienes instalado Google PlayStore la instalacioacuten de Pokemon Go es muy simple y soacutelo

Pokemon Go ejecutandose sobre el sistema de suplantacioacuten de geolocalicacioacuten

ODROID MAGAZINE 8

POKEMON GO

requiere unos cuantos clics Si no lo tienes instalado puedes instalarlo siguiendo las sencillas instrucciones de Hardkernel en httpbitly2aWS696 Tuve algunas difi-cultades para interactuar con la aplicacioacuten real Pokemon Go a la hora de usar un teclado y un ratoacuten Me di cuenta que algunos botones no funcionan al ser presio-nado Termineacute por usar una pantalla taacutectil y no volviacute a tener ninguacuten problema

Hay algunas cosas que debes cambiar en la configuracioacuten de tu Android Lo pri-mero que tienes que hacer es entrar en Settings-gtDeveloper Options y desactivar la casilla ldquoAllow mock locationsrdquo que se encuentra en la seccioacuten ldquoDebuggingrdquo Te daraacutes cuenta de que sigue marcada cuando Pokemon Go muestre un error de localizacioacuten GPS Una vez desmarcada la opcioacuten el error desapareceraacute La segunda cosa que tienes que cambiar estaacute en la paacutegina Locatioacuten de los ajustes A continuacioacuten haz clic en la opcioacuten superior ldquoModerdquo apareceraacuten tres opciones la que tienes que seleccionar es ldquoDevice Onlyrdquo Esto haraacute que se use uacutenicamente la informacioacuten de localizacioacuten del GPS descartando cualquier otra fuente

NotasUna vez que has enviados los datos GPS a tu ODROID y tienes tu buildprop

bien configurado para ver el puerto serie correcto puedes seguir adelante y abrir Pokemon Go Asumiendo que tienes tus datos que emulan el movimiento deberiacuteas ver a tu ldquotrainerrdquo pokemon empezando a caminar en el juego Antes de continuar quisiera hacer hincapieacute en dos puntos importantes El primero y maacutes importante estaacutes violando los teacuterminos del juego al hacer esto Si te descubren Niantic tiene todo el derecho a bloquear permanentemente tu cuenta El segundo punto en el que quiero incidir es que se trata soacutelo de un juego Si se llega a un punto donde el juego tiene que automatizarse para poder disfrutar de eacutel es probable que no valga la pena jugar Como todas las cosas se recoge lo que se siembra y espero que esta guiacutea te sirva sobre todo para adquirir conocimientos uacutetiles acerca de los sistemas GPS y Android

Enlaces uacutetiles

Apps de informacioacuten GPS para Android httpbitly2bBdoXs Esta es el que yo usohttpbitly2br7DNK Igual de buena con una interfaz muy limpia

Analizador y generador NmEA httpbitly1FjZRPk Uno de los mejores generadores simple de usar e

incluye algunos ejemplos baacutesicos Se le echa en falta un mensaje GPGLL pero es insignificante Este es el que yo utiliceacute para mi simulador El meacutetodo maacutes simple para fijar dos puntos de paso es tener el programa con un incremento automaacutetico a una velocidad determinada

Existen unos cuantos simuladores para Linux y mucho maacutes para Windows Una raacutepida buacutesqueda en Google con ldquo GPS Simulatorrdquo o ldquo GPS NMEA Simu-latorrdquo te los mostraraacute No pude encontrar uno que fuera gratuito y de coacutedigo abierto aunque si uno pre-compilado gratuito muy simple y que estaacute dis-ponible en httpitly2bBfXcm

Maacutes informacioacuten sobre NMEA GPShttpaprsgidsnlnmeahttpbitly1g91wIE

ODROID MAGAZINE 9

asiacute como Websterrsquos English Dictionary Simplemente son coleccio-nes de palabras que tienen alguacuten significado para las personas o que hayan sido utilizadas como contrasentildeas con an-terioridad como se suelen apreciar en vulneraciones de seguri-dad Por lo general los diccionarios para descifrar la contrasentildea incluyen muchos maacutes teacuterminos que un diccionario estaacutendar porque tambieacuten tienen que incluir palabras del argot (como Yolo) o palabras mal escritas habitualmente (como aprentice) Tambieacuten incluyen nombres propios (como Andreacutes) nombres de personajes o lugares ficticios (como Pellenor Fields) o teacutermi-nos teacutecnicos (como el aacutecido desoxirribonucleico) Una buena fuente de estas palabras es la Wikipedia (que viene en diferen-tes idiomas) o incluso los subtiacutetulos de peliacutecula que se puede obtener en grandes cantidades en httpbitly2a1g42j

Kali Linux viene con algunos diccionarios por defecto que puedes utilizar o buscar en Internet listas de palabras uacutetiles

RockYou (134M) httpbitly1wtmeYADarkc0de (18M) httpbitly1pwlvJJLista de diccionarios httpbitly2ayDRaPTorrents lista de palabras WPA-PSK httpbitly2azrOqN 170K de palabras WPA httpbitly2as46gm 1 milloacuten de palabras httpbitly2a1geH4

En nuestros anteriores artiacuteculos atacamos las redes WEP y redes con WPS activado pero ahora es el momento de atacar la tecnologiacutea maacutes segura de las redes inalaacutembri-

cas el cifrado WPA Como siempre pide el consentimiento del propietario de la red antes de intentar romper su red y asiacute evitar problemas legales despueacutes iexclEs mejor prevenir que curar cuando se prueban las cosas

Ataques de Diccionario - Crear listas de palabras

Dado que la gente tiene fama por ser muy deficiente a la hora de elegir contrasentildeas seguras la mejor tecnica para romper la mayoriacutea de las contrasentildeas es ejecutar un ataque de diccio-nario

La complejidad de los ataques de diccionario reside en con-

seguir palabras correctas que sean relevantes para tu objetivo Por ejemplo si estaacutes atacando una red WiFi alemana es posible que quieras probar palabras en alemaacuten (iexclalgunas son muy lar-gas) Si estaacutes atacando un punto de acceso de un centro meacutedico puedes probar con teacuterminos meacutedicos No existe el diccionario ldquoperfectordquo ndash todo depende de tus necesidades Puedes encon-trar amplia informacioacuten sobre diccionarios con vistas a realizar ataques aquiacute httpbitly2aLS6Fx

No debemos confundir el teacutermino ldquodiccionariordquo con algo

ASuMIR EL RIEGO DE PEnETRAR LAS REDES wPA - PARTE 2por Adrian Popa

SEGURIDAD WPA

La busqueda de la palabra correccta

iexclEl Ataque de diccionario iexclEs suacuteper efectivo

ODROID MAGAZINE 10

tos praacutecticos inserta un Enter despueacutes de cada palabra) Luego ejecutamos sort para hacer las palabras uacutenicas que es una o-peracioacuten muy intensa para la CPU y la memoria Si no tienes suficiente memoria RAM para sort puedes dividir la entrada en varios archivos maacutes pequentildeos y ejecutar sort luego conca-tenar los resultados y ejecutar de nuevo sort sobre el resultado

$ iconv -f UTF-8 -t US-ASCIITRANSLIT

wiki_en_fulltxt | tr -cs ldquo[alpha]rdquo ldquonrdquo gtgt

wordlist_en_fulltxt

$ sort -u wordlist_en_fulltxt gt

wordlist_en_uniquetxt

Los diccionarios anteriores no estaacuten disentildeados necesari-amente para las restricciones WPA de modo que encontraraacuten contrasentildeas maacutes pequentildeas Puede eliminar las palabras maacutes pequentildeas o puedes utilizar una teacutecnica para combinarlas y crear contrasentildeas maacutes largas Para eliminar palabras inadecuadas pu-edes ejecutar grep (menor de 8 caracteres)

$ grep -P lsquo8rsquo wordlist_en_uniquetxt gt wordlist_

en_wpatxt

Hasta aquiacute tu diccionario se compone de una uacutenica pa-labra Si deseas generar diccionarios con parejas de palabras (o varias palabras) puede hacerlo con algo como esto (que genera permutaciones de dos palabras en el diccionario)

$ cat wordlist_en_uniquetxt wordlist_en_uniquetxt

| perl -lne lsquoBEGINapush a$_ENDforeach $x(a)

foreach $y(a)print $x$yrsquo gt every2wordstxt

Para tu comodidad puedes localizar listas de palabras de Wikipedia en ingleacutes y rumano en mi paacutegina de GitHub para hacer pruebas (httpbitly2ayE1yW)

Ejecutar ataques de diccionario con Pyrit

Vamos a utilizar de nuevo Pyrit para ejecutar un ataque de diccionario pero esta vez en lugar de ejecutarlo directamente vamos a importar el diccionario dentro Pyrit y lo vamos a eje-cutar desde alliacute Esto nos da la posibilidad de poder precalcular los hashes basados en el diccionario de este modo el descifrado real queda reducido principalmente a una consulta posterior Los datos se almacenan en ~pyrit

$ pyrit -e lsquoNASA-HQ-WPArsquo create_essid

$ pyrit -i wordlist_en_wpatxt import_passwords

$ pyrit batch

El comando batch de Pyrit necesita mucho tiempo y haraacute

Tambieacuten puede crear tu propio diccionario desde un vol-cado de texto Por ejemplo puedes obtener una copia offline de Wikipedia (en muchos idiomas) desde el Proyecto Kiwix (httpbitly2awalku) Necesitaraacutes descargar el archivo no in-dexado zim para el idioma que elijas aseguraacutendose de seleccio-nar la variante ldquonopicrdquo para no descargar ninguna imagen La Wikipedia en Ingleacutes ocupa aproximadamente 16 GB mientras que en otros idiomas es sustancialmente menor Para conver-tirla en una lista de palabras uacutenica es necesario tener una gran cantidad de espacio libre Por ejemplo el tamantildeo no compri-mido de la Wikipedia en Ingleacutes es de 130 GB Ten en cuenta que el comando zimdump necesitoacute un par de diacuteas para llegar a completarse en mi C1 con almacenamiento NFS

$ wget httpwwwopenzimorg

downloadzimlib-12targz

$ tar zxvf zimlib-12targz

$ cd zimlib-12

$ sudo apt-get install liblzma-dev

$ configure --prefix=usr

$ make

$ sudo make install

$ cd

$ echo lsquoDumping all articles as html into the zimdump

directory Please waitrsquo

$ zimdump -D zimdump wikipedia_en_all_nopiczim

A continuacioacuten tenemos que convertir el HTML a texto y concatenar todos los archivos en un uacutenico archivo de texto Vamos a crear un empaquetador alrededor de html2text de manera que si se bloquea no se detendraacute toda la liacutenea de in-formacioacuten El proceso tardaraacute entre varias horas y varios diacuteas dependiendo de la cantidad de archivos HTML que tengas que procesar y el dispositivo ODROID que poseas

$ sudo apt-get install html2text

$ cat ltltEOF gthtml2textwrappersh

binbash

html2text -utf8 ldquo$rdquo

exit 0

EOF

$ chmod a+x html2textwrappersh

$ find zimdumpA -print0 | xargs -0 -P 4 -n 30

html2textwrappersh gtgt wiki_en_fulltxt

El siguiente paso es transcribir los caracteres no ASCII a sus homoacutelogos ASCII (por ejemplo I -gt i) y dividir el archivo resultante en una lista de palabras Iconv depende de la con-figuracioacuten regional asiacute que aseguacuterate de tener soporte UTF-8 (en lugar de ldquoCrdquo por ejemplo) El comando ldquotrrdquo reemplaza todos los caracteres no alfanumeacutericos por nuevas liacuteneas (a efec-

SEGURIDAD WPA

ODROID MAGAZINE 11

$ wget httpwwwwillhackforsushicomcode

cowpatty46cowpatty-46tgz

$ tar xvf cowpatty-46tgz

$ cd cowpatty-46

$ sudo apt-get install libpcap-dev libssl-dev

$ make

$ sudo make install

$ cd

$ cowpatty -d linksys2hash -r

linksys2-insidious-handshakepcap -s linksys2 -2

Puedes especificar el archivo hash que quieres revisar con la opcioacuten -d (selecciona el hash con el mismo nombre que el punto de acceso objetivo) La opcioacuten -r especifica el archivo de captura con el handshake de 4 vias -s especifica el SSID

(ya que no se puede extraer de la captura) y -2 significa no ser demasiado estricto a la hora de analizar el archivo de captura Con esta configuracioacuten fui capaz de conseguir la contrasentildea en menos de 3 segundos usando un ODROID-C1 con una tasa de 25000 PMKs (comparados con los 300 PMKs cuando calculamos los PMKs) Por lo tanto el proceso es 83 veces maacutes raacutepido a expensas de utilizar unos 7 GB de espacio en disco

para el ataque Depende de ti decidir si vale la pena aunque consumas maacutes espacio en disco

Ingeneriacutea Social El doble maleacutefico

que tu CPU se caliente bastante mientras se crea la base de da-tos Si el calor te supone un problema puedes utilizar una her-ramienta como cpuctrl (httpbitly2aon1dA) para limitar la frecuencia maacutexima de la CPU con el regulador adecuado como por ejemplo ldquoconservativerdquo

Para obtener la clave de red tienes que proporcionar el ar-chivo de captura y los resultados si existen deberiacutean aparecer raacutepidamente Aquiacute tienes un pcap de ejemplo como referencia

httpbitly2agcRug A continuacioacuten ejecuta este comando

$ pyrit -r nasa-supercalifragilistic-handshakepcap

attack_db

Como puedes ver incluso lo que parecer ser una contrasentildea larga y robusta puede llegar a descifrarse si aparece en alguacuten artiacuteculo de Internet

Ataques con tabla RainbowUna vez que tengas cargado el diccionario en Pyrit iquestQueacute es

lo que te impide descifrar cada handshake que capturas Pues bien el SSID actuacutea como los ldquogranos de salrdquo comprobando que la misma contrasentildea combinada con un SSID diferente genere un PMK diferente Tener una lista de contrasentildeas pre-calculadas se denomina tabla rainbow y te permite descifrar las contrasentildeas maacutes raacutepidamente a costa de conar con maacutes espacio en disco para almacenar estas listas

Existe un proyecto que crea tablas rainbow para WPA para los 1000 SSID maacutes comunes en httpbitly2azsBIh Si tu red ob-jetivo tiene un SSID que estaacute en la lista (httpbitly2adkjtd) potencialmente podriacuteas descifrar la contrasentildea mucho maacutes raacutepido que con otros meacutetodos Vamos a poner esto a prueba

Para este experimento prepareacute un punto de acceso llama-do linksys2 con una contrasentildea del diccionario de palabras (httpbitly2ayEXmI) Necesitas descargar el conjunto tarball que el sitio proporciona (cuanto maacutes grande sea maacutes posibilidades tendraacutes de encontrar la clave) Descompriacuteme-lo en un directorio y obtendraacutes 1000 archivos hash cada uno nombrado de acuerdo con el SSID del punto de acce-so Tambieacuten necesitaremos instalar Cowpatty (httpbitly2awaJ2A) para poder procesar las tablas

SEGURIDAD WPA

Un ataque de diccionario wPA con Pyrit

Ataque wPA con tabla rainbow

XKCD obligatorio httpsxkcdcom538

ODROID MAGAZINE 12

Cuando todo esteacute listo inicia WifiPhisher especificando la interfaz de monitor y la interfaz hostapd

$ sudo airmon-ng start wlan0

$ sudo wifiphisher -jI mon0 -aI wlan1

Si todo va bien WifiPhisher te mostraraacute una lista de pun-tos de Acceso a engantildear y configuraraacute las reglas de iptables y DHCP y te preguntaraacute por el tipo de paacutegina web falsa que quieres que muestre A continuacioacuten procederaacute a desconectar los clientes y hacer que se conecten al punto de acceso falso y les mostraraacute algo similar a la Figura 5 Seraacute entonces cuando veas la contrasentildea en el inteacuterprete de comandos Ten en cuenta que estamos hablando de algo especialmente retorcido puesto que ya no estaacutes engantildeando soacutelo a los ordenadores sino tambieacuten a la gente real

Mantener tu WiFi seguraCon esto concluimos nuestro anaacutelisis sobre la seguridad

inalaacutembrica Estas son algunas pautas que deberiacuteas tener en cuenta para mantener tu wifi segura

bull No utilices tecnologiacuteas de encriptacioacuten obsoletas (WEP)bull No confiacutees demasiado en ocultar la red o usar listas de ac-ceso mAC ya que son muy deacutebiles y muy faacuteciles de evitar bull Desactiva la tecnologiacutea WPS en redes en las que fiacutesica-mente sea posiblebull Utiliza contrasentildeas largas que no esteacuten diccionarios Si tienes que usar las palabras del diccionario para que te sea maacutes faacutecil recordarlas (despues de todo eres un ser huma-no) combiacutenalas de forma aleatoria Una opcioacuten es utilizar la teacutecnica horse-battery-staple de xkcd (httpsxkcdcom936) esta herramienta httpbitly1cubp1J puede hacerlo de forma automaacuteticabull Antildeadir caracteres a una contrasentildea aumenta su seguri-dad bastante maacutes que usar un signo de puntuacioacuten espe-cial en contrasentildeas maacutes cortasbull Si es posible considera la posibilidad de utilizar WPA2-Enterprise en tu red domeacutesticabull No utilices nombres comunes para la red SSIDbull Reducir la intensidad de la sentildeal no te ayudaraacute puesto que el atacante siempre puede conseguir una antena mejor

Como siempre puedes compartir tus propias experiencias hacer preguntas o compartir problemas en el hilo de soporte en httpbitly2azoM5N

Es posible que hayas agotado todo lo que tienes a tu alcance para romper un punto de acceso WiFi en particular y aun asiacute no consigues resultados Es probable que tenga que esperar unos 3 millones de antildeos para que el ataque de fuerza bruta alcance el 1 asiacute que iquestqueacute podemos hacer Pues bien simple-mente tienes que atacar el punto de seguridad maacutes deacutebil de la cadena iexclEl ser humano

Un proyecto que tiene por objetivo simplemente ldquopregun-tarrdquo por la contrasentildea es WifiPhisher (httpbitly1wPdPPQ) El programa configura un punto de acceso abierto maleacutefico que clona el SSID del objetivo A continuacioacuten desautentifica to-dos los clientes del objetivo y espera a que se vuelvan a conec-tar Por casualidad (o aseguraacutendose de que tienes una mejor sentildeal) los clientes se conectaraacuten automaacuteticamente en su lugar a tu punto de acceso abierto Cuando intenten acceder a los recursos de Internet seraacuten redireccionados a un portal que se presenta como su router y le solicitaraacute su contrasentildea WPA (para mejorar la seguridad por supuesto) Una vez que se obtiene la contrasentildea se desconecta el punto de acceso y el cliente se co-necta sin que se perciba la diferencia a su red original Ves ndash es faacutecil Para conseguir esto necesitaraacutes dos adaptadores inalaacutem-bricos - uno que sea compatible con la inyeccioacuten (para desco-nectar continuamente a los usuarios del AP objetivo) y otro para hacerse pasar por el falso AP Para esta prueba he utilizado dos adaptadores Wifi Modulo 4 de Hardkernel

$ git clone httpsgithubcomsophronwifiphishergit

$ sudo apt-get install tcpdump hostapd

$ cd wifiphisher

$ sudo python setuppy install

Si aparece alguacuten error indicando que no encuentra setuptools instaacutelalo y vuelve a ejecutar el comando install

$ wget httpsbootstrappypaioez_setuppy -O - |

sudo python

Ten en cuenta que para que esto funcione necesitaraacutes con-figurar hostapd para que trabaje con tu tarjeta inalaacutembrica Tienes maacutes detalles en httpbitly2aLTF6w and httpbitly2aLTlnX

SEGURIDAD WPA

Los usuarios desprevenidos escribiraacuten su contrase-ntildea wPA en tu entorno de suplantacioacuten de red

ODROID MAGAZINE 13

En los uacuteltimos antildeos el tema del big data y de la ciencia de los datos se ha convertido en una tendencia muy importante en un sinfiacuten de in-

dustrias Las empresas de alta tecnologiacutea de Silicon Valley ya no son los uacutenicos proveedores de temas como Hadoop la regresioacuten logiacutestica y el aprendizaje de maquinas Estar familiarizado con las tecnologiacuteas del big data se estaacute convirtiendo en un requisito cada vez maacutes necesario en los empleos relacionados con la tecnologiacutea en cualquier parte Por desgracia y siendo realista la experiencia praacutectica con las tecnologiacuteas de big data normalmente implica tener acceso a un costoso cluacutester de ordenadores para ejecutar tus consultas Sin embargo la reciente revolucioacuten de los orde-nadores de placa reducida ha hecho que la informaacutetica distri-buida sea accesible a nivel personal y en educacioacuten para realizar tareas como esta y muchas otras

Imparto clases sobre disentildeo y mantenimiento de sistemas digitales y redes en un instituto franceacutes Durante los uacuteltimos 4 antildeos he ido sustituyendo todos los ordenadores de sobremesa de mi aula por ordenadores SBC principalmente por razones de espacio ya que la escuela estaacute cerca de la ciudad de Pariacutes y el espacio es muy caro iexclEl uso de ordenadores SBC deja maacutes

espacio en la mesa de trabajo del estudianteEmpeceacute con una Raspberry Pi pero pronto cambieacute al

ODROID-C1 tan pronto como estuvo disponible ya que la Pi no era lo suficientemente raacutepida para el trabajo en labo-ratorios (laboratorios GNS3 diferentes anaacutelisis de protocolos bus y configuracioacuten de los equipos de red) o simplemente para navegar por Internet Para el proacuteximo antildeo escolar ya habreacute cambiado la mitad de la clase al ODROIDC2 con un total de 10 ODROID-C1s y 8 ODROID-C2s

A la hora de preparar los laboratorios para los estudiantes tuve que usar el mismo equipo que ellos con el fin de asegurar-me de que todo funcionara sin problemas cuando los estudi-antes trabajasen en sus propios entornos de laboratorios Esto requeriacutea utilizar un ODROID en lugar de un ordenador por-

taacutetil x86 para eliminar cualquier diferencia de comportamiento en-tre ambos Para ser maacutes eficiente a la hora de preparar los laborato-rios parte de ellos los configuraba en casa y no en la escuela He in-tentado buscar algunas soluciones para fabricar un ordenador portaacutetil usando un ODROID de modo que se convirtiese en mi portaacutetil ODROID de ida y vuelta desde la escuela a casa Recorro 5 km hasta la escuela en bicicleta por lo que la solucioacuten teniacutea que ser ligera y compacta para transportarla

PORTATILODROID-C1 un PROyECTO CASERO A MEDIDA COn nOMbRE En CLAvE ldquoREDTOPrdquopor fabien Thiriet

PORTATIL ODROID

Portaacutetil REDTOP y vista trasera del mismo

ODROID MAGAZINE 14

RequisitosAl principio del proyecto elaboreacute una lista de requisitos

para el ordenador portaacutetil

bull Alimentado con 12V a traveacutes de un sistema de bateriacuteas solares en casa y con una fuente de alimentacioacuten exter-na 230V-12V en la escuelabull Bateriacutea Li-ion para cuando me esteacute moviendo con una autonomiacutea de unas 2 horas Algunos entornos de labo-ratorios en la escuela requieren monitorizar los buses CAN integrados en los vehiacuteculos de modo que se hace necesario el uso de bateriacuteasbull Pantalla LCD de 10rdquo como miacutenimobull Teclado y pantalla LCD montados en forma de ordena-dor portaacutetilbull GPIOs y conectores ODROID faacutecilmente accesiblebull Bluetooth maestroesclavo disponible puesto que ten-go muchos proyectos que funcionan con placas Arduino remotasbull RTC integrado porque no siempre estoy conectado a Internet

Proceso de fabricacioacutenAl principio encontreacute un Motorola Lapdock 100 en eBay

y lo utiliceacute durante varios meses Tras solucionar los problemas HDMI entre el ODROID y el Lapdock ya que el Lapdock se apagaba despueacutes de 20 segundos si no se conectaba nada a su puerto USB todo funcionoacute correctamente Se trataba de una solucioacuten muy ligera pero no lo suficientemente coacutemoda para un uso diario ya que la pantalla LCD soacutelo teniacutea 10rdquo y el teclado era muy pequentildeo Tambieacuten echeacute un vistazo a PiTop pero el precio era muy elevado para lo que estaba dispuesto a gastar Lo que realmente necesitaba era simplemente un gran panel LCD y un buen teclado montados en conjunto

Decidiacute buscar en eBay una pantalla LCD maacutes grande y en-contreacute un modelo de 133rdquo muy econoacutemico por 85 euro con en-viacuteo e impuestos incluidos La pantalla tiene una buena resolu-cioacuten de 1900x600 y los colores se ven muy bien Sin embargo

PORTATIL ODROID

el panel LCD se vendiacutea sin marco de modo que necesita algo para solventar esta cuestioacuten

Al mismo tiempo mi hijo ha conseguido lo que ha sontildeado durante mucho tiempo por su 15 cumpleantildeos una impresora 3D personal de modo que ya no teniacutea que utilizar una que teniacutea en la escuela Eacutel es muy bueno usando software CAD como SolidWorks y me propuso disentildear un chasis para el por-taacutetil Por desgracia la placa de impresioacuten 3D con un tamantildeo maacuteximo de 200 mm era demasiado pequentildea para imprimir un marco LCD de 133rdquo y un marco del teclado Despueacutes de varias reflexiones decidimos dividir los marcos de la LCD y del teclado en cuatro partes y unirlos con los clips de montaje im-presos en 3D y pegamento Todas las partes individuales eran inferiores a los 200 mm Si te fijas bien en las fotos del marco de la LCD de los clips y del teclado veraacutes la separacioacuten entre las piezas montadas El disentildeo CAD necesita alrededor de 2 semanas de trabajo para asegurarse de que todo encaja bien

Durante el disentildeo el principal problema que nos preo-cupaba era las bisagras del panel LCD que teniacutea que ser lo suficientemente fuerte para que me permitiera abrir y cerrar con facilidad el ordenador portaacutetil Esto nos permitiacutea crear una aacutengulo perfecto entre el marco del panel LCD y el marco del teclado Para que pudiera encajar correctamente el teclado

Portaacutetil RedTop visto desde arriba Versioacuten inicial de portaacutetil con un ordenador motorola Lapdock 100

El modelo 3D del marco de la LCD

ODROID MAGAZINE 15

en su marco lo desmontamos retirando las cubiertas superior e inferior Elegimos el color rojo para la fibra de impresioacuten 3D para que el ordenador fuese maacutes divertido y llamativo 30 horas maacutes tarde teniacuteamos impresas todas las partes del chasis Las pegamos y atornillamos el panel LCD y el teclado dentro de sus respectivos marcos El siguiente paso fue colocar todas las placas y moacutedulos en el interior del chasis con firmeza las in-sertamos en el plexiglaacutes

El plexiglaacutes fue cortado para que encajara en el espacio crea-do en la etapa de disentildeo CAD para cada marco De esta forma todo el mundo puede apreciar el engranaje del portaacutetil lo cual supone una gran ventaja a la hora de ensentildear informaacutetica El paso final fue cablear todo siguiendo el diagrama por bloques

Acabamos teniendo un ordenador portaacutetil potente y fiable iexclMis estudiantes de la escuela se sorprendieron cuando vieron este portaacutetil poco convencional por primera vez

BateriacuteaAhora disponiacuteamos de un nuevo ordenador portaacutetil pero

sin ninguacuten tipo de bateriacutea recargable de modo que maacutes o me-nos es inuacutetil En primer lugar necesitaacutebamos estimar la ca-pacidad de la bateriacutea necesaria Para tal fin hicimos algunas pruebas de medicioacuten del amperaje en diferentes condiciones de uso El maacuteximo amperaje se alcanza cuando el C2 se pone en marcha con un pico de 11A Durante el funcionamiento nor-mal se mantiene justo por debajo de 1A con un dongle USB WIFI un moacutedulo RTC un adaptador de ratoacuten inalaacutembrico y el moacutedulo Bluetooth conectados El consumo total de energiacutea del ordenador portaacutetil es de alrededor de unos 12W

Mi hijo rescatoacute una vieja bateriacutea de litio recargable de un ordenador portaacutetil de Lenovo (L412) y pudo extraerle las nueve ceacutelulas disponibles dentro del paquete de bateriacuteas La mayoriacutea de las veces este tipo de paquetes de bateriacuteas ya no funcionan no por la propia bateriacutea sino debido a un defectuoso controlador de bateriacuteas integrado Utilizamos 3 y las conectamos en serie Esto nos proporcionaba 3 x 37 V un total de 111 voltios cuando la bateriacutea estaacute casi descargada y maacutes de 12V cuando estaacute completa-mente cargada La placa controladora LCD funciona sin ninguacuten problema a 11V Cada ceacutelula tiene 2200 mAh de capacidad de modo que la autonomiacutea del portaacutetil se acerca a las 2 horas Esto era suficiente para alcanzar el objetivo que nos propusimos al inicio del proyecto

Para volver a cargar las 3 ceacutelulas utilizamos un banco de bate-riacuteas solar de 12V conectada a traveacutes de un moacutedulo de sobreali-mentacioacuten que estaacute reajustado a un liacutemite de corriente de 126 V y 1A Con nuestro modelo particular de bateriacuteas podemos ajustar tanto la tensioacuten de salida como la corriente Cuando es-

PORTATIL ODROID

Clips de LCD

marco del teclado

Chasis completamente montado

ODROID MAGAZINE 16

cribiacute este artiacuteculo la bateriacutea auacuten no estaba colocada dentro del RedTop pero la teniacuteamos fuera para realizar pruebas maacutes ex-haustivas Una vez que completemos las pruebas colocaremos las 3 celdas debajo del teclado en un espacio reservado para tal fin

MaterialesEsto es lo que utiliceacute para montar mi portaacutetil ODROID-C1

Panel LCD HDMI-VGA de 133rdquo con audio httprebaycomAYZ5JU

Teclado mecaacutenico Zalman httpwwwamazonfrdpB00LHSPCS4

Cable OTG USB httpwwwamazonfrdpB007MNZ8VY

Transformador 12V-5V 3A httpwwwamazonfrdpB00JGFEQLE

Moacutedulo Bluetooth HC05 maestroesclavo httpswwwamazonfrdpB013STJSES

Moacutedulo RTC PCF8563 httpwwwamazonfrdpB01DB8JECC

Mini altavoz httprebaycombwOCZv

Impresora 3D httpwwwdagomafrproduitimprimante-dis-

covery200

Filamentos PLA para impresora 3D httpwwwamazonfrdpB00UMV7ANM

Clavijas de corriente DC de 55mm httpwwwamazonfrdpB00O1Y1X70

Interruptor de alimentacioacuten httpwwwamazonfrdpB00HUHBS1Q

Pack de bateriacuteas de ordenador portaacutetil como esta httpwwwamazonfrdpB00TVOC55Y

Conversor de sobrealimentacioacuten (4V-12V) httprebaycomw3FgNH

Varios tornillos arandelas y cables05m de PlexiglassSuper glue

PORTATIL ODROID

La placa controladora de la LCD

JUEGOS ANDROID

PAC-MAn 256iquestun juEGO CLASICO iquestunA nuEvA PERSPECTIvA DEL GEnERO DEL CORREDOR In-TERMInAbLE iexclDESCubRELOpor Bruno Doiche

Suele decirse que los claacutesicos nunca mueren pero algunos pueden quedarse bastante

anticuados Cuando era un nintildeo el Pac-Ma era un juego cuyos graacuteficos y jugabilidad eran totalmente acepta-bles para los estaacutendares de la deacutecada de los 80 A pesar de que todaviacutea se puede disfrutar del original Pac-Man hoy diacutea estaraacutes de acuerdo conmigo en que se queda algo corto en cuanto a funcionalidad incluso si aceptas el reto de jugar al modo aacutercade lo suficiente como para encontrarte con el miacutetico error del nivel 256 que soacutelo los mejores juga-dores de Pac-Man son capaces de ver

Sin embargo en la partida 256 del Pac-Man el error es la principal caracteriacutestica te prosiguen como una ola implacable desde la parte inferior de la pantalla Te hace volver a pensar lo que realmente significa correr por tu supervivencia en un labe-rinto lleno de fantasmas cada uno con su propia personalidad Exige un control muy preciso y pensar muy raacutepido para lograr salir y mantenerte un paso por delante de tus enemigos fantas-mas Ahora no tienes que jugar a los 255 niveles de Pac-Man para llegar a uno de los niveles maacutes elitistas de la historia del juego Puedes instalarlo desde Play Store en

httpbitly2cLaD5q

Un gran juego tan adictivo como lo fue en sus primeros diacuteas arcade

ODROID MAGAZINE 17

book se puede compartir faacutecilmente permitiendo una faacutecil visualizacioacuten en liacutenea y en nuestro caso gestionar la creacioacuten y el enviacuteo de aplicaciones Spark al cluacutester Los notebooks de Jupyter son una forma muy comuacuten de usar Apache Spark ya que permite al usuario centrarse especiacuteficamente en el anaacutelisis de datos en lugar de preocuparse de las herramientas o de la infraestructura que hay detraacutes

Instalar Hadoop File SystemNuestra primera tarea es instalar Java en cada nodo del

cluacutester Instalaremos el uacuteltimo software Java 8 de Oracle EL cual requiere la aceptacioacuten de la licencia durante la instalacioacuten Debido a esto necesitas iniciar sesioacuten en cada nodo de forma independiente y ejecutar el instalador Una vez alliacute crearemos una nueva cuenta de usuario desde la que ejecutaremos todo

$ sudo add-apt-repository ppawebupd8teamjava

$ sudo apt-get update

$ sudo apt-get install oracle-java8-installer

$ sudo apt-get install rsync

$ sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hduser

$ sudo usermod -aG sudo hduser

Ahora necesitamos instalar Hadoop Teacutecnicamente po-driacuteas utilizar la distribucioacuten Hadoop disponibles en el sitio web de Apache pero no estaacute compilada para la CPU ARM v71 de nuestros XU4s Puesto que en su mayor parte es Java es genial ya que se ejecutaraacute sobre JVM que acabamos de instalar en cada nodo Sin embargo hay partes de Hadoop que fueron es-

En el anterior artiacuteculo que escribiacute para ODROID Maga-zine en httpbitly2bHFij7 analice el desarrollo de un cluacutester informaacutetico autoacutenomo con nodos ODROID

XU4 En este artiacuteculo explicaremos coacutemo hacer un buen uso de ese cluacutester instalando Apache Spark y el sistema de ficheros Hadoop asiacute como tambieacuten la forma de acceder a tu cluacutester a traveacutes de la aplicacioacuten web Jupyter

Hadoop File System (HDFS) es uno de los sistemas de ar-chivos distribuidos maacutes populares y maacutes utilizados que existen hoy en diacutea Un sistema de archivos distribuido (DFS) es una aplicacioacuten para cluacutester que agrupa todas las unidades de disco duro dentro de un cluacutester para que puedan ser tratadas como una uacutenica unidad de almacenamiento de cara a sus clientes ex-ternos Utilizar un DFS tiene dos ventajas muy importantes En primer lugar y lo maacutes evidente es que te permite guardar y trabajar con grandes conjuntos de datos que se almacenan en maacutes de un disco duro del cluacutester En segundo lugar un DFS bien disentildeado proporciona mayor resistencia de datos en el nodo o ante fallos de disco mediante la replicacioacuten de bloques de datos en varias unidades del cluacutester En nuestro cluacutester XU4 los discos duros son las tarjetas MicroSD que fueron instaladas y configurada en nuestra anterior guiacutea

Apache Spark es una moderna plataforma de anaacutelisis de Big Data utilizada ampliamente en la industria del anaacutelisis de los grandes voluacutemenes de datos Proporciona herramientas de alto nivel muy simple para manipular y analizar datos ya sea a traveacutes de SQL o mapreduce ademaacutes de usar lenguajes de pro-gramacioacuten comunes tales como Python Scala y Java La pecu-liaridad maacutes significativa de Apache Spark es el uso del fondo de memoria RAM del cluacutester para almacenar objetos de datos intermedios que aceleran significativamente el procesamiento de datos Aunque los 2 GB de RAM integrados en el XU4 po-driacutean parecer un poco austeros en comparacioacuten con las grandes cantidades de memoria en un nodo de un cluacutester industrial hay espacio suficiente para hacer algunas cosas interesantes con Apache Spark

Jupyter Notebook es una aplicacioacuten web que te permite coacute-modamente aprovecharte de diversos lenguajes y plataformas de caacutelculo con tu cluacutester a traveacutes de una interfaz web El note-

InSTALAR HADOOP y SPARK En un CLuSTER ODROID-Xu4por michael Kamprath

HADOOP FILE SYSTEM

ODROID MAGAZINE 18

-l root ldquomkdir -p opthadoop-272rdquo

$ sudo rsync -avxP opthadoop-272

rootslave1opt

$ sudo rsync -avxP opthadoop-272

rootslave2opt

$ sudo rsync -avxP opthadoop-272

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop opthadoop-272rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquoln -s opthadoop-272 usrlocalhadooprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquomkdir -p datahdfstmprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop datahdfsrdquo

El uacuteltimo paso en la instalacioacuten de Hadoop es formatear el nodo como un HDFS

$ usrlocalhadoopbinhdfs namenode -format

Instalar Apache SparkVamos a utilizar un meacutetodo similar al anterior para instalar

Apache Spark En primer lugar vamos a utilizar Python 3 para acceder a Spark y a algunas librerias clave de Python por lo que tendraacutes que iniciar sesioacuten en cada nodo y ejecutar

$ sudo apt-get install python3 python3-pip

$ sudo pip3 install numpy

$ sudo pip3 install urlparse

Despueacutes en el nodo maestro instala Apache Spark

$ cd opt

$ sudo wget httpapacheclazorgspark

spark-162spark-162-bin-hadoop26tgz

$ sudo tar xvzf spark-162-bin-hadoop26tgz

$ sudo chown -R hduserhadoop

spark-162-bin-hadoop26

$ sudo ln -s optspark-162-bin-hadoop26

usrlocalspark

Al igual que en nuestra instalacioacuten de Hadoop necesitas antildeadir algunos archivos de configuracioacuten al directorio usrlo-calchispasconf Puedes localizar los archivos de configuracioacuten necesarios en mi repositorio GitHub (httpbitly2b4GnDU)

Una vez que Spark haya sido configurado en el nodo ma-

critas en C para que se ejecutaran maacutes raacutepido Si una instalacioacuten Hadoop no tiene estas libreriacuteas compiladas en la plataforma en la que estaacute se utilizaraacuten automaacuteticamente las equivalentes en Java por lo que seguiraacute funcionando pero de un modo maacutes lento Para este proyecto he desarrollado una distribucioacuten de la uacuteltima versioacuten de Hadoop para el procesador ARM v71 va-mos a descargar e instalar mi distribucioacuten En el nodo maestro inicia sesioacuten con la cuenta ldquohduserrdquo recieacuten creada y ejecuta los siguientes comandos para instalar Hadoop y configurar los no-dos del cluacutester para utilizar SSH sin contrasentildea Ten en cuenta que tendraacutes que iniciar sesioacuten en cada nodo esclavo desde el nodo maestro para configurar completamente el inicio de se-sioacuten sin contrasentildea

$ cd

$ ssh-keygen -t rsa -P ldquordquo

$ cat $HOMEsshid_rsapub gtgt $HOMEsshauthorized_

keys

$ ssh hduserlocalhost

$ exit

$ ssh hdusermaster

$ exit

$ ssh-copy-id hduserslave1

$ ssh hduserslave1

$ exit

$ ssh-copy-id hduserslave2

$ ssh hduserslave2

$ exit

$ ssh-copy-id hduserslave3

$ ssh hduserslave3

$ exit

$ cd opt

$ sudo wget httpdiybigdatanetdownloads

hadoophadoop-272armhftargz

$ sudo tar xzf hadoop-272armhftargz

$ sudo chown -R hduserhadoop hadoop-272

$ cd usrlocal

$ sudo ln -s opthadoop-272 hadoop

$ cd usrlocalhadoop

Ahora tenemos que crear los archivos de configuracioacuten para Hadoop Por comodidad ya he creado estos archivos que se de-ben instalar en el directorio usrlocalhadoopetchadoop y los he colocado a mi repositorio GitHub en httpbitly2bBehj4

Estos archivos de configuracioacuten tienen una configuracioacuten de cluacutester similar a la descrita en mi anterior artiacuteculo Es po-sible que tengas que modificarlos si has desarrollado un cluacutester diferente Ahora que el software Hadoop estaacute configurado en el nodo maestro lo vamos a copiar en los nodos esclavos

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

HADOOP FILE SYSTEM

ODROID MAGAZINE 19

estro coacutepialo a los esclavos de tu cluacutester

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo -l root

ldquomkdir -p optspark-162-bin-hadoop26rdquo

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave1opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave2opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquochown -R hduserhadoop

optspark-162-bin-hadoop26rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquoln -s optspark-162-bin-hadoop26

usrlocalsparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquomkdir -p datasparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquochown hduserhadoop datasparkrdquo

Instalar Jupyter NotebookLa instalacioacuten Jupyter Notebook es relativamente simple en

comparacioacuten con lo que hemos hecho hasta ahora Ugravenicamente en el nodo maestro ejecuta los siguientes comandos

$ sudo mkdir datajupyter

$ sudo chown -R hduserhadoop datajupyter

$ mkdir ~notebooks

$ sudo pip3 install jupyter

Para hacer visualizaciones en un notebook necesitamos compilar e instalar matplotlib Tambieacuten es uacutetil tener instalado numpy para facilitar la informaacutetica cientiacutefica a traveacutes de Py-thon Ten en cuenta que esto va a llevar un tiempo

$ sudo apt-get build-dep matplotlib

$ sudo pip3 install matplotlib

$ sudo pip3 install numpy

Ejecutar Hadoop Spark y Jupyter

Para logar que todo se ejecute usa los siguientes comandos

$ usrlocalhadoopsbinstart-dfssh

$ usrlocalsparksbinstart-allsh

$ XDG_RUNTIME_DIR=rdquodatajupyterrdquo PYSPARK_DRIVER_

PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=rdquonotebook

--no-browser --port=7777 --notebook-dir=homehduser

notebooksrdquo usrlocalsparkbinpyspark --packages

comdatabricksspark-csv_210110 --master spark

master7077

Puedes optar por convertir esta secuencia de comandos en un script bash independiente o simplemente puede crear un alias para este uacuteltimo comando Te dejo elegir cualquiera de

estas opciones como ejercicio Una vez en funcionamiento in-troduce en el navegador del ordenador httpltdireccioacuten IP del cluacutestergt7777 deberiacutea ver la interfaz Jupyter

Vamos a ejecutar una tarea de recuento de palabras en

nuestro sistema big data de XU4 Crea un nuevo notebook Python 3 haciendo clic en el botoacuten New en la parte superior derecha de la paacutegina web Ahora veraacute un espacio vaciacuteo como el que se muestra en la Figura anterior

Abre una nueva sesioacuten SSH en el nodo principal y antildeade lo siguiente

$ wget httpnorvigcombigtxt

$ hdfs dfs -mkdir usermichael

HADOOP FILE SYSTEM

Paacutegina web principal de Jupyter

Bloc de notas de Jupyter

ODROID MAGAZINE 20

$ hdfs dfs -put bigtxt usermichaelbigtxt

$ hdfs dfs -ls usermichael

Vuelve al notebook recieacuten creado antildeade el siguiente coacutedigo Python en la primera celda

from operator import add

blog_data = sctextFile(lsquohdfsmaster9000user

michaelbigtxtrsquo)cache()

counts = blog_dataflatMap(lambda x xsplit(lsquo lsquo))

map(lambda x (x 1))reduceByKey(add)

A continuacioacuten pulsa Shift + Enter para iniciar el trata-miento de las celdas Una nueva celda apareceraacute en el notebook de Jupyter Teacutecnicamente todaviacutea no ha sucedido nada dentro de Spark excepto crear un plan de consulta para ejecutar el recuento de palabras frente al conjunto de datos del blog que ya hemos colocado en HDFS Spark no hace ninguacuten caacutelculo hasta que no haga falta materializar los resultados La forma maacutes comuacuten de hacerlo es mostrar una parte de los resultados En la siguiente celda del notebook introduzca el coacutedigo y pulse Shift-Enter

countstake(100)

Veraacutes un asterisco junto a la celda en la que hemos intro-ducido el coacutedigo anterior Este asterisco seguiraacute activo mien-tras Spark esteacute haciendo sus caacutelculos Si vuelves a la sesioacuten de terminal en la que lanzaste el software Jupyter veraacutes el regis-tro log de Spark realizando sus caacutelculos Por otra parte si es-

cribes en tu navegador web la direccioacuten httpltdireccioacuten IP del cluacutestergt4040 puedes analizar el estado interno de Spark uti-lizando su interfaz de aplicacioacuten Es probable que escuches a-rrancar el ventilador de la CPU del XU4 durante los caacutelculos

Cuando los caacutelculos finalicen los primeros 100 valores de

los resultados se mostraraacuten en el notebook de JupyterCambia el nombre del notebook haciendo clic en la cadena

ldquo Untitledrdquo junto al logo de Jupyter en la parte superior izqui-erda del notebook Puede seguir trabajando con los datos antildea-diendo maacutes celdas que contengan maacutes coacutedigo python Spark Hay muchos y excelentes recursos en la web para aprender maacutes sobre Apache Spark incluyendo httpsparkapacheorg

Para guardar y cerrar el notebook haz clic en el menuacute ldquoFilerdquo en la paacutegina y selecciona ldquoClose and Haltrdquo Para finalizar Jupy-ter pulsa Control-C dos veces en la ventana de terminal desde el cual se lanzoacute Una vez que el software Juypter se detenga puedes apagar Spark y HDFS con

$ usrlocalsparksbinstop-allsh

$ usrlocalhadoopsbinstop-dfssh

Lecturas recomendadasSi deseas aprender maacutes sobre los temas tratados en este artiacute-

culo puedes utilizar los siguientes recursos para obtener maacutes informacioacuten sobre el software asiacute como mis conocimientos so-bre Big Data

Mi blog httpdiybigdatanetApache Hadoop httphadoopapacheorgApache Spark httpsparkapacheorgJupyter Notebook httpjupyterorg

HADOOP FILE SYSTEM

Los caacutelculos del recuento de palabras se han completado

ODROID MAGAZINE 21

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 3: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

EDITORIAL

ODROID Magazine que se publica mensualmente en httpmagazineodroidcom es la fuente de todas las cosas ODROIDianas bull Hard Kernel Ltd bull 704 Anyang K-Center Gwanyang Dongan Anyang Gyeonggi South Korea 431-815 bull fabricantes de la familia ODROID de placas de desarrollo quad-core y la primera arquitectura ARM ldquobigLITTLErdquo del mundo basada en una uacutenica placa Para informacioacuten sobre coacutemo enviar articulos contacta con odroidmagazinegmailcom o visita httpbitly1ypImXsUacutenete a la comunidad ODROID con miembros en maacutes de 135 paiacuteses en httpforumodroidcom y explora las nuevas tecnologiacuteas que te ofrece Hardkernel en httpwwwhardkernelcom

Pokemon Go el juego para moacuteviles maacutes popular de la his-toria entretiene a maacutes de 20 millones de usuarios a diario Parte del juego consiste en incubar huevos de Pokemon

que depende de cuaacutentos kiloacutemetros camine el jugador A pesar de que recomendamos jugar al juego como es debido ya que

hacer ejercicio y estar al aire libre es parte del juego existe un truco interesante que se puede hacer con un ODROID el cual permite

incubar los huevos reproduciendo una tiacutepica ruta en ODROID y suplantando

la ubicacioacuten GPS de Pokemon Go Se traba de un proyecto en pruebas de modo que no reco-

mendamos ponerlo a prueba con tu cuentaTambieacuten presentamos un singular proyecto de un ordenador por-

taacutetil imprimido en 3D llamado Redtop junto con una carcasa para XU4 de bajo coste que puedes imprimir en una impresora estaacutendar de inyeccioacuten de tinta o laacuteser Michael continuacutea su tutorial de informaacutetica de alto rendimiento con una guiacutea para instalar Hadoop Adrian concluye su serie de seguridad en las redes con las redes WPA y comparte algunos scripts muy uacutetiles para hacer copia de seguridad Bo relata sus aventuras con la creacioacuten de un equipo moderno para el coche y withrobot aclara la diferencia entre los mecanismos de obturacioacuten de las caacutemaras Para los entusiastas de los juegos Tobias pre-senta la emulacioacuten de Sega Saturn y analizamos brevemente Pac-Man 256 para Android

Manuel Adamuz Editor EspantildeolTengo 31 antildeos y vivo en Sevilla Espantildea aunque naciacute en Granada Estoy casado con una mujer maravillosa y tengo un hijo Hace unos antildeos trabajeacute como teacutecnico informaacutetico y programador pero mi trabajo actual estaacute relacionado con la gestioacuten de calidad y las tecnologiacuteas de la informacioacuten ISO 9001 ISO 27001 ISO 20000 Soy un apasionado de la informaacutetica 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 soacutelo pienso en ODROID Mi otra aficioacuten es la bicicleta de montantildea a veces participo en competiciones semiprofesionales

Andrew Ruggeri Editor AdjuntoSoy un ingeniero de sistemas Biomeacutedicos anclado en Nueva Inglaterra que actualmente trabaja en la industria aeroespacial Un microcontrolador 68HC11 de 8 bits y el coacutedigo ensamblador son todo lo que me interesa de los sistemas embebidos Hoy en diacutea la mayoriacutea de los proyectos en los que trabajo estaacuten en lenguajes C y C ++ o en len-guajes de alto nivel como C y Java Para muchos proyectos utilizo placas ODROID pero auacuten sigo intentando utili-zar los controladores de 8 bits cada vez que puedo (soy un fan de ATMEL) Aparte de la electroacutenica soy un amante de

la fotografiacutea analoacutegica y desarrollo la peliacutecula friki con la que disfruto intentando hablar en idiomas extranjeros

Venkat Bommakanti Editor AdjuntoSoy un apasionado de los ordenadores desde la bahiacutea de San Francisco en California Procuro incorporar muchos de mis intereses en proyectos con ordenadores de placa reducida tales como pequentildeos modificaciones de hardware carpinteriacutea reutilizacioacuten de materiales desarrollo de software y creacioacuten de grabaciones musicales de aficionados Me encanta aprender continuamente cosas nuevas y trato de compartir mi alegriacutea y entusiasmo con la comunidad

Josh Sherman Editor AdjuntoSoy 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 tamantildeos haciendo trizas las tablets convirtiendo Raspberry Pi en PlayStations y experimentado con los ODROIDs y otros SoCs Me encanta trabajar con los elementos baacutesicos y asiacute poder aprender maacutes y disfrutar ensentildeando a otros escribiendo historias y guiacuteas sobre Linux ARM y otros proyectos experimentales divertidos

Nicole Scott Editor ArtiacutesticoSoy una experta en Produccioacuten Transmedia y Estrategia Digital especializa en la optimizacioacuten online y estrategias de marketing administracioacuten de medios sociales y produccioacuten multimedia impresa web viacutedeo y cine Gestiono muacuteltiples cuentas con agencias y productores de cine desde Analytics y Adwords a la edicioacuten de viacutedeo y maqu-etacioacuten DVD Tengo un ODROID-U3 que utilizo para ejecutar un servidor web sandbox Vivo en el aacuterea de la Bahiacutea de California y disfruta haciendo senderismo acampada y tocando muacutesica Visita mi web httpwww

nicolecscottcom

James LeFevour Editor ArtiacutesticoSoy un especialista en medios digitales que disfruta trabajando como freelance en marketing de redes sociales y admin-istracioacuten de sitios web Cuanto maacutes aprendo sobre las posibilidades de ODROID maacutes me ilusiona probar cosas nuevas con eacutel Me traslade a San Diego desde el Medio Oeste de los EEUU Continuo muy enamorado de muchos de los aspectos que la mayoriacutea 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 informaacutetico en constante peligro

Bruno Doiche Editor Artiacutestico SeniorBruno ama su trabajo pero su trabajo le aman auacuten maacutes Es por eso que le sigue llamando todos los diacuteas y todas las noches

con una especial capacidad para predecir cuando estaacute cocinando lavando la ropa o fregando los platos Sin embargo no le importa demasiado ya que al otro lado del teleacutefono siempre hay alguien que simplemente trata de joder un poco el mundo y lo necesita para solucionar su mundo y seguir girando

NUESTRO MARAVILLOSO PRESONAL ODROIDIAN

Rob Roy Editor JefeSoy un programador informaacutetico que vive y trabaja en San Francisco CA en el disentildeo y desarrollo de aplicaciones web para clients locales sobre mi cluster ODROID Mis principales lenguajes son jQuery angular JS y HTML5CSS3 Tambieacuten 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 estacioacuten de trabajo y como plataforma de juegos Puedes echar un vistazo a mi coleccioacuten de 100 GB de software ODROID kernel precompilados e imaacutegenes en

httpbitly1fsaXQs

INDICE

KODIBUNTU - 31

ORDENADOR PORTATIL CON ODROID-C1 - 14

JUEGOS ANDROID PAC-mAN 256 - 17

DISPOSITIVO IOT - 27

SCRIPTS PARA BACKUP - 22

JUEGOS LINUX SEGA amp CDEmU - 35

ORDENADOR PARA COHE - 32

SEGURIDAD wPA - 10

OBTURADOR DE LA CAmERA - 41

HADOOP fILE SySTEm - 18

PIRATEAR POKEmON GO - 6

CARCASA XU4 - 39

CONOCIENDO UN ODROIDIAN - 43

VU7 PLUS - 42

HECKEAR POKEMOn GOCOn un ODROIDCOMO LOGRAR SuPLAnTAR EL GPSpor Andrew Ruggeri

POKEMON GO

Pokemon Go es un juego muy popular para teleacutefonos moacuteviles el cual ha sido descargado maacutes de 100 millones de veces por jugadores de todo el mundo Utiliza la realidad aumentada para hacer que explores el mundo real con

el objeto de capturar pokemon acudiendo a puntos reales en los que estaacute ubicado lo bueno Cuanto maacutes camines captures pokemon y entrenes en gimnasios maacutes puntos obtendraacutes

El juego utiliza el GPS del teleacutefono para registrar el movimiento de los jugadores y la distancia recorrida Aquiacute es donde el ldquotrucordquo entra en juego Quisiera disculparme por el tiacutetulo ya que en realidad no se trata de un truco sino maacutes bien una forma de en-gantildear las funciones de geolocalizacioacuten del juego Nos centraremos en el enviacuteo de datos GPS registrados o simulados en Android Lo bueno de los ODROIDs es que no soacutelo ejecutan Android sino que tambieacuten son altamente configurables Desde un punto de vista del hardware el cabezal principal GPIO tiene varias interfaces en serie Ademaacutes el software es muy faacutecil de configurar y si fuera necesario podemos acceder al coacutedigo fuente completo de Android

Por lo tanto iquestQueacute es lo que hace que este truco del GPS y ODROID sea ta in-teresante Bueno podemos decir que tiene principalmente dos ventajas Reciente-mente Niantic Inc la compantildeiacutea que hay detraacutes de Pokemon Go ha comenzado a perseguir de un modo muy agresivo a los ldquobotsrdquo verificando el uso de una API Cualquier cuenta detectada que use un bot seraacute bloqueada de forma permanente El meacutetodo GPS que describimos aquiacute utiliza la aplicacioacuten oficial de Android lo que significa que toda API que se conecte al servidor Niantic no seraacute delimitada E-xisten varias versiones ldquocraqueadasrdquo de Pokemon Go para Android que permiten al usuario hacer trampas y moverse por el juego sin tener que desplazarse en el mundo real Sin embargo algunas de estas versiones ldquocraqueadasrdquo ejecutan coacutedigos mali-ciosos y peor auacuten requieren acceso a root para instalarse de modo que representan un gran problema de seguridad

GPS sobre AndroidLos ODROIDs tienen por defecto todos los drivers necesarios para trabajar

con el tiacutepico GPS NMEA NMEA es el protocolo estaacutendar utilizado para comu-nicar datos GPS Por suerte el protocolo NMEA es utilizado tanto en modo serie como en modo texto esto hace que sea extremadamente funcional porque es faacutecil de depurar y emular NMEA es muy versaacutetil porque ofrece informacioacuten sobre los sateacutelites disponibles y utilizados la velocidad los waypoints los errores de posicioacuten y mucha maacutes informacioacuten que se puede transmitir

Los ODROIDs en siacute mismos no cuenta con una unidad GPS integrada aunque una interfaz muy comuacuten para muchas unidades de GPS externas es la USB como por ejemplo la que usa el moacutedulo GPS de Hardkernel Una vez conectado el moacutedulo se vincula normalmente en la interfaz serie disponible en devttyUSB0 o devttyACM0 Android cuenta con un archivo en la particioacuten del sistema root

ODROID MAGAZINE 6

conocido como buildprop que almacena la configuracioacuten de muchos y diferentes aspectos de Android Dos de estos ajusten inciden directamente en el fun-cionamiento del GPS

rokernelandroidgps=dev

ttyACM0

rokernelandroidgps

speed=9600

El primer valor ldquorokernelandroidgpsrdquo es la ubicacioacuten del flujo de datos en serie de NMEA que normalmente es tty El se-gundo valor es la velocidad del flujo en serie Aquiacute es donde las cosas se vuelven interesantes Si podemos ajustar la ubicacioacuten GPS tambieacuten podemos intro-ducir nuestros propios datos GPS NMEA lo cual nos permite engantildear al GPS En la gran mayoriacutea de mis pruebas utilice un ODROID-C2 conectado viacutea UART a mi ordenador portaacutetil Esto me permitiacutea cambiar raacutepidamente en el fichero buildprop el paraacutemetro tty del GPS a ldquodevttyS1rdquo el puerto TTY para UART1 sobre el C2

El engantildeoHe reescrito esta seccioacuten varias veces a la vista de los recientes acontecimientos

y medidas que Niantic ha tomado hacia los ldquotrampososrdquo En lugar de escribir el coacutedigo que he desarrollado me voy a centrar en varias teacutecnicas y herramientas que cumplen con el mismo principio baacutesico El meacutetodo maacutes sencillo es grabar y reproducir un registro log de datos NMEA En el contexto de Pokemon Go darse un paseo por una zona con una buena cantidad de pokestops gimnasios y Pokeacutemon Existen varias aplicaciones de Android que se pueden instalar en tu teleacutefono suponiendo que tiene un teleacute-fono Android que te permiten guardar los datos GPS NMEA en un registro log Mueve el archivo log al ordenador portaacutetil conectado al ODROID Se en-viacutea una liacutenea de texto del archivo log NMEA al puerto serie a una velocidad de alrededor de 1 liacutenea cada 100 o 200 ms Un simple script Python puede ha-cer esto faacutecilmente Este meacutetodo no es de lo maacutes increiacuteble pero es muy simple

POKEMON GO

flujo de datos GPS NmEA en serie

Conexioacuten USB-UART de ODROID

ODROID MAGAZINE 7

POKEMON GO

y hace bien su trabajo El hecho de que estos regis-tros log representen datos reales es una gran ventaja

La segunda opcioacuten es utilizar un simulador GPS que se ejecute en el ordena-dor portaacutetil y bombardear con datos GPS ficticios al ODROID Existen diversas herramientas de simulacioacuten GPS que incluyen interfaces muy buenas Me he dado cuenta que muchas de ellas normalmente enviacutean los datos GPS NMEA simulados a traveacutes de la conexioacuten TCP o UDP Mi solucioacuten para esto simplemente fue escribir un programa para leer desde un puerto local y luego enviar el contenido del paquete a la consola o al puerto serie Una cuestioacuten a la hora de crear datos GPS ficticios tener mucho cuidado con las distancias y la velocidad Recuerda que estaacutes intentando imitar las condiciones del mundo real asiacute que si saltas de una ciudad a otra o de un continente a otro vas a levantar sospechas

Una vez que tengas tu fuente de datos GPS seleccionada y preparada puedes pasar al siguiente paso Para una depuracioacuten raacutepida y faacutecil de los datos GPS en Android tienes algunos programas al final de esta guiacutea Te recomiendo que instale alguno te ayudara bastante con la depuracioacuten y la comprobacioacuten de errores antes de iniciar Pokemon Go

Configurar Android y ODROIDComo ya he dicho la configuracioacuten es bastante simple y consiste en tener un or-

denador portaacutetil o incluso otro ODROID para que actuacutee como fuente de datos GPS Este es el dispositivo que enviaraacute los datos GPS precargados o falsos al ODROID con Android El ordenador portaacutetil estaacute conectado al puerto UART del ODROID o a cualquier otro puerto serie En mi configuracioacuten que se muestra en la Figura anterior tengo un convertidor USB a UART conectado al puerto UART1 del C2

El software para Android es miacutenimo y soacutelo requiere un cambio raacutepido en la con-figuracioacuten y en el archivo buildprop del que he hablado antes Asumiendo que tienes instalado Google PlayStore la instalacioacuten de Pokemon Go es muy simple y soacutelo

Pokemon Go ejecutandose sobre el sistema de suplantacioacuten de geolocalicacioacuten

ODROID MAGAZINE 8

POKEMON GO

requiere unos cuantos clics Si no lo tienes instalado puedes instalarlo siguiendo las sencillas instrucciones de Hardkernel en httpbitly2aWS696 Tuve algunas difi-cultades para interactuar con la aplicacioacuten real Pokemon Go a la hora de usar un teclado y un ratoacuten Me di cuenta que algunos botones no funcionan al ser presio-nado Termineacute por usar una pantalla taacutectil y no volviacute a tener ninguacuten problema

Hay algunas cosas que debes cambiar en la configuracioacuten de tu Android Lo pri-mero que tienes que hacer es entrar en Settings-gtDeveloper Options y desactivar la casilla ldquoAllow mock locationsrdquo que se encuentra en la seccioacuten ldquoDebuggingrdquo Te daraacutes cuenta de que sigue marcada cuando Pokemon Go muestre un error de localizacioacuten GPS Una vez desmarcada la opcioacuten el error desapareceraacute La segunda cosa que tienes que cambiar estaacute en la paacutegina Locatioacuten de los ajustes A continuacioacuten haz clic en la opcioacuten superior ldquoModerdquo apareceraacuten tres opciones la que tienes que seleccionar es ldquoDevice Onlyrdquo Esto haraacute que se use uacutenicamente la informacioacuten de localizacioacuten del GPS descartando cualquier otra fuente

NotasUna vez que has enviados los datos GPS a tu ODROID y tienes tu buildprop

bien configurado para ver el puerto serie correcto puedes seguir adelante y abrir Pokemon Go Asumiendo que tienes tus datos que emulan el movimiento deberiacuteas ver a tu ldquotrainerrdquo pokemon empezando a caminar en el juego Antes de continuar quisiera hacer hincapieacute en dos puntos importantes El primero y maacutes importante estaacutes violando los teacuterminos del juego al hacer esto Si te descubren Niantic tiene todo el derecho a bloquear permanentemente tu cuenta El segundo punto en el que quiero incidir es que se trata soacutelo de un juego Si se llega a un punto donde el juego tiene que automatizarse para poder disfrutar de eacutel es probable que no valga la pena jugar Como todas las cosas se recoge lo que se siembra y espero que esta guiacutea te sirva sobre todo para adquirir conocimientos uacutetiles acerca de los sistemas GPS y Android

Enlaces uacutetiles

Apps de informacioacuten GPS para Android httpbitly2bBdoXs Esta es el que yo usohttpbitly2br7DNK Igual de buena con una interfaz muy limpia

Analizador y generador NmEA httpbitly1FjZRPk Uno de los mejores generadores simple de usar e

incluye algunos ejemplos baacutesicos Se le echa en falta un mensaje GPGLL pero es insignificante Este es el que yo utiliceacute para mi simulador El meacutetodo maacutes simple para fijar dos puntos de paso es tener el programa con un incremento automaacutetico a una velocidad determinada

Existen unos cuantos simuladores para Linux y mucho maacutes para Windows Una raacutepida buacutesqueda en Google con ldquo GPS Simulatorrdquo o ldquo GPS NMEA Simu-latorrdquo te los mostraraacute No pude encontrar uno que fuera gratuito y de coacutedigo abierto aunque si uno pre-compilado gratuito muy simple y que estaacute dis-ponible en httpitly2bBfXcm

Maacutes informacioacuten sobre NMEA GPShttpaprsgidsnlnmeahttpbitly1g91wIE

ODROID MAGAZINE 9

asiacute como Websterrsquos English Dictionary Simplemente son coleccio-nes de palabras que tienen alguacuten significado para las personas o que hayan sido utilizadas como contrasentildeas con an-terioridad como se suelen apreciar en vulneraciones de seguri-dad Por lo general los diccionarios para descifrar la contrasentildea incluyen muchos maacutes teacuterminos que un diccionario estaacutendar porque tambieacuten tienen que incluir palabras del argot (como Yolo) o palabras mal escritas habitualmente (como aprentice) Tambieacuten incluyen nombres propios (como Andreacutes) nombres de personajes o lugares ficticios (como Pellenor Fields) o teacutermi-nos teacutecnicos (como el aacutecido desoxirribonucleico) Una buena fuente de estas palabras es la Wikipedia (que viene en diferen-tes idiomas) o incluso los subtiacutetulos de peliacutecula que se puede obtener en grandes cantidades en httpbitly2a1g42j

Kali Linux viene con algunos diccionarios por defecto que puedes utilizar o buscar en Internet listas de palabras uacutetiles

RockYou (134M) httpbitly1wtmeYADarkc0de (18M) httpbitly1pwlvJJLista de diccionarios httpbitly2ayDRaPTorrents lista de palabras WPA-PSK httpbitly2azrOqN 170K de palabras WPA httpbitly2as46gm 1 milloacuten de palabras httpbitly2a1geH4

En nuestros anteriores artiacuteculos atacamos las redes WEP y redes con WPS activado pero ahora es el momento de atacar la tecnologiacutea maacutes segura de las redes inalaacutembri-

cas el cifrado WPA Como siempre pide el consentimiento del propietario de la red antes de intentar romper su red y asiacute evitar problemas legales despueacutes iexclEs mejor prevenir que curar cuando se prueban las cosas

Ataques de Diccionario - Crear listas de palabras

Dado que la gente tiene fama por ser muy deficiente a la hora de elegir contrasentildeas seguras la mejor tecnica para romper la mayoriacutea de las contrasentildeas es ejecutar un ataque de diccio-nario

La complejidad de los ataques de diccionario reside en con-

seguir palabras correctas que sean relevantes para tu objetivo Por ejemplo si estaacutes atacando una red WiFi alemana es posible que quieras probar palabras en alemaacuten (iexclalgunas son muy lar-gas) Si estaacutes atacando un punto de acceso de un centro meacutedico puedes probar con teacuterminos meacutedicos No existe el diccionario ldquoperfectordquo ndash todo depende de tus necesidades Puedes encon-trar amplia informacioacuten sobre diccionarios con vistas a realizar ataques aquiacute httpbitly2aLS6Fx

No debemos confundir el teacutermino ldquodiccionariordquo con algo

ASuMIR EL RIEGO DE PEnETRAR LAS REDES wPA - PARTE 2por Adrian Popa

SEGURIDAD WPA

La busqueda de la palabra correccta

iexclEl Ataque de diccionario iexclEs suacuteper efectivo

ODROID MAGAZINE 10

tos praacutecticos inserta un Enter despueacutes de cada palabra) Luego ejecutamos sort para hacer las palabras uacutenicas que es una o-peracioacuten muy intensa para la CPU y la memoria Si no tienes suficiente memoria RAM para sort puedes dividir la entrada en varios archivos maacutes pequentildeos y ejecutar sort luego conca-tenar los resultados y ejecutar de nuevo sort sobre el resultado

$ iconv -f UTF-8 -t US-ASCIITRANSLIT

wiki_en_fulltxt | tr -cs ldquo[alpha]rdquo ldquonrdquo gtgt

wordlist_en_fulltxt

$ sort -u wordlist_en_fulltxt gt

wordlist_en_uniquetxt

Los diccionarios anteriores no estaacuten disentildeados necesari-amente para las restricciones WPA de modo que encontraraacuten contrasentildeas maacutes pequentildeas Puede eliminar las palabras maacutes pequentildeas o puedes utilizar una teacutecnica para combinarlas y crear contrasentildeas maacutes largas Para eliminar palabras inadecuadas pu-edes ejecutar grep (menor de 8 caracteres)

$ grep -P lsquo8rsquo wordlist_en_uniquetxt gt wordlist_

en_wpatxt

Hasta aquiacute tu diccionario se compone de una uacutenica pa-labra Si deseas generar diccionarios con parejas de palabras (o varias palabras) puede hacerlo con algo como esto (que genera permutaciones de dos palabras en el diccionario)

$ cat wordlist_en_uniquetxt wordlist_en_uniquetxt

| perl -lne lsquoBEGINapush a$_ENDforeach $x(a)

foreach $y(a)print $x$yrsquo gt every2wordstxt

Para tu comodidad puedes localizar listas de palabras de Wikipedia en ingleacutes y rumano en mi paacutegina de GitHub para hacer pruebas (httpbitly2ayE1yW)

Ejecutar ataques de diccionario con Pyrit

Vamos a utilizar de nuevo Pyrit para ejecutar un ataque de diccionario pero esta vez en lugar de ejecutarlo directamente vamos a importar el diccionario dentro Pyrit y lo vamos a eje-cutar desde alliacute Esto nos da la posibilidad de poder precalcular los hashes basados en el diccionario de este modo el descifrado real queda reducido principalmente a una consulta posterior Los datos se almacenan en ~pyrit

$ pyrit -e lsquoNASA-HQ-WPArsquo create_essid

$ pyrit -i wordlist_en_wpatxt import_passwords

$ pyrit batch

El comando batch de Pyrit necesita mucho tiempo y haraacute

Tambieacuten puede crear tu propio diccionario desde un vol-cado de texto Por ejemplo puedes obtener una copia offline de Wikipedia (en muchos idiomas) desde el Proyecto Kiwix (httpbitly2awalku) Necesitaraacutes descargar el archivo no in-dexado zim para el idioma que elijas aseguraacutendose de seleccio-nar la variante ldquonopicrdquo para no descargar ninguna imagen La Wikipedia en Ingleacutes ocupa aproximadamente 16 GB mientras que en otros idiomas es sustancialmente menor Para conver-tirla en una lista de palabras uacutenica es necesario tener una gran cantidad de espacio libre Por ejemplo el tamantildeo no compri-mido de la Wikipedia en Ingleacutes es de 130 GB Ten en cuenta que el comando zimdump necesitoacute un par de diacuteas para llegar a completarse en mi C1 con almacenamiento NFS

$ wget httpwwwopenzimorg

downloadzimlib-12targz

$ tar zxvf zimlib-12targz

$ cd zimlib-12

$ sudo apt-get install liblzma-dev

$ configure --prefix=usr

$ make

$ sudo make install

$ cd

$ echo lsquoDumping all articles as html into the zimdump

directory Please waitrsquo

$ zimdump -D zimdump wikipedia_en_all_nopiczim

A continuacioacuten tenemos que convertir el HTML a texto y concatenar todos los archivos en un uacutenico archivo de texto Vamos a crear un empaquetador alrededor de html2text de manera que si se bloquea no se detendraacute toda la liacutenea de in-formacioacuten El proceso tardaraacute entre varias horas y varios diacuteas dependiendo de la cantidad de archivos HTML que tengas que procesar y el dispositivo ODROID que poseas

$ sudo apt-get install html2text

$ cat ltltEOF gthtml2textwrappersh

binbash

html2text -utf8 ldquo$rdquo

exit 0

EOF

$ chmod a+x html2textwrappersh

$ find zimdumpA -print0 | xargs -0 -P 4 -n 30

html2textwrappersh gtgt wiki_en_fulltxt

El siguiente paso es transcribir los caracteres no ASCII a sus homoacutelogos ASCII (por ejemplo I -gt i) y dividir el archivo resultante en una lista de palabras Iconv depende de la con-figuracioacuten regional asiacute que aseguacuterate de tener soporte UTF-8 (en lugar de ldquoCrdquo por ejemplo) El comando ldquotrrdquo reemplaza todos los caracteres no alfanumeacutericos por nuevas liacuteneas (a efec-

SEGURIDAD WPA

ODROID MAGAZINE 11

$ wget httpwwwwillhackforsushicomcode

cowpatty46cowpatty-46tgz

$ tar xvf cowpatty-46tgz

$ cd cowpatty-46

$ sudo apt-get install libpcap-dev libssl-dev

$ make

$ sudo make install

$ cd

$ cowpatty -d linksys2hash -r

linksys2-insidious-handshakepcap -s linksys2 -2

Puedes especificar el archivo hash que quieres revisar con la opcioacuten -d (selecciona el hash con el mismo nombre que el punto de acceso objetivo) La opcioacuten -r especifica el archivo de captura con el handshake de 4 vias -s especifica el SSID

(ya que no se puede extraer de la captura) y -2 significa no ser demasiado estricto a la hora de analizar el archivo de captura Con esta configuracioacuten fui capaz de conseguir la contrasentildea en menos de 3 segundos usando un ODROID-C1 con una tasa de 25000 PMKs (comparados con los 300 PMKs cuando calculamos los PMKs) Por lo tanto el proceso es 83 veces maacutes raacutepido a expensas de utilizar unos 7 GB de espacio en disco

para el ataque Depende de ti decidir si vale la pena aunque consumas maacutes espacio en disco

Ingeneriacutea Social El doble maleacutefico

que tu CPU se caliente bastante mientras se crea la base de da-tos Si el calor te supone un problema puedes utilizar una her-ramienta como cpuctrl (httpbitly2aon1dA) para limitar la frecuencia maacutexima de la CPU con el regulador adecuado como por ejemplo ldquoconservativerdquo

Para obtener la clave de red tienes que proporcionar el ar-chivo de captura y los resultados si existen deberiacutean aparecer raacutepidamente Aquiacute tienes un pcap de ejemplo como referencia

httpbitly2agcRug A continuacioacuten ejecuta este comando

$ pyrit -r nasa-supercalifragilistic-handshakepcap

attack_db

Como puedes ver incluso lo que parecer ser una contrasentildea larga y robusta puede llegar a descifrarse si aparece en alguacuten artiacuteculo de Internet

Ataques con tabla RainbowUna vez que tengas cargado el diccionario en Pyrit iquestQueacute es

lo que te impide descifrar cada handshake que capturas Pues bien el SSID actuacutea como los ldquogranos de salrdquo comprobando que la misma contrasentildea combinada con un SSID diferente genere un PMK diferente Tener una lista de contrasentildeas pre-calculadas se denomina tabla rainbow y te permite descifrar las contrasentildeas maacutes raacutepidamente a costa de conar con maacutes espacio en disco para almacenar estas listas

Existe un proyecto que crea tablas rainbow para WPA para los 1000 SSID maacutes comunes en httpbitly2azsBIh Si tu red ob-jetivo tiene un SSID que estaacute en la lista (httpbitly2adkjtd) potencialmente podriacuteas descifrar la contrasentildea mucho maacutes raacutepido que con otros meacutetodos Vamos a poner esto a prueba

Para este experimento prepareacute un punto de acceso llama-do linksys2 con una contrasentildea del diccionario de palabras (httpbitly2ayEXmI) Necesitas descargar el conjunto tarball que el sitio proporciona (cuanto maacutes grande sea maacutes posibilidades tendraacutes de encontrar la clave) Descompriacuteme-lo en un directorio y obtendraacutes 1000 archivos hash cada uno nombrado de acuerdo con el SSID del punto de acce-so Tambieacuten necesitaremos instalar Cowpatty (httpbitly2awaJ2A) para poder procesar las tablas

SEGURIDAD WPA

Un ataque de diccionario wPA con Pyrit

Ataque wPA con tabla rainbow

XKCD obligatorio httpsxkcdcom538

ODROID MAGAZINE 12

Cuando todo esteacute listo inicia WifiPhisher especificando la interfaz de monitor y la interfaz hostapd

$ sudo airmon-ng start wlan0

$ sudo wifiphisher -jI mon0 -aI wlan1

Si todo va bien WifiPhisher te mostraraacute una lista de pun-tos de Acceso a engantildear y configuraraacute las reglas de iptables y DHCP y te preguntaraacute por el tipo de paacutegina web falsa que quieres que muestre A continuacioacuten procederaacute a desconectar los clientes y hacer que se conecten al punto de acceso falso y les mostraraacute algo similar a la Figura 5 Seraacute entonces cuando veas la contrasentildea en el inteacuterprete de comandos Ten en cuenta que estamos hablando de algo especialmente retorcido puesto que ya no estaacutes engantildeando soacutelo a los ordenadores sino tambieacuten a la gente real

Mantener tu WiFi seguraCon esto concluimos nuestro anaacutelisis sobre la seguridad

inalaacutembrica Estas son algunas pautas que deberiacuteas tener en cuenta para mantener tu wifi segura

bull No utilices tecnologiacuteas de encriptacioacuten obsoletas (WEP)bull No confiacutees demasiado en ocultar la red o usar listas de ac-ceso mAC ya que son muy deacutebiles y muy faacuteciles de evitar bull Desactiva la tecnologiacutea WPS en redes en las que fiacutesica-mente sea posiblebull Utiliza contrasentildeas largas que no esteacuten diccionarios Si tienes que usar las palabras del diccionario para que te sea maacutes faacutecil recordarlas (despues de todo eres un ser huma-no) combiacutenalas de forma aleatoria Una opcioacuten es utilizar la teacutecnica horse-battery-staple de xkcd (httpsxkcdcom936) esta herramienta httpbitly1cubp1J puede hacerlo de forma automaacuteticabull Antildeadir caracteres a una contrasentildea aumenta su seguri-dad bastante maacutes que usar un signo de puntuacioacuten espe-cial en contrasentildeas maacutes cortasbull Si es posible considera la posibilidad de utilizar WPA2-Enterprise en tu red domeacutesticabull No utilices nombres comunes para la red SSIDbull Reducir la intensidad de la sentildeal no te ayudaraacute puesto que el atacante siempre puede conseguir una antena mejor

Como siempre puedes compartir tus propias experiencias hacer preguntas o compartir problemas en el hilo de soporte en httpbitly2azoM5N

Es posible que hayas agotado todo lo que tienes a tu alcance para romper un punto de acceso WiFi en particular y aun asiacute no consigues resultados Es probable que tenga que esperar unos 3 millones de antildeos para que el ataque de fuerza bruta alcance el 1 asiacute que iquestqueacute podemos hacer Pues bien simple-mente tienes que atacar el punto de seguridad maacutes deacutebil de la cadena iexclEl ser humano

Un proyecto que tiene por objetivo simplemente ldquopregun-tarrdquo por la contrasentildea es WifiPhisher (httpbitly1wPdPPQ) El programa configura un punto de acceso abierto maleacutefico que clona el SSID del objetivo A continuacioacuten desautentifica to-dos los clientes del objetivo y espera a que se vuelvan a conec-tar Por casualidad (o aseguraacutendose de que tienes una mejor sentildeal) los clientes se conectaraacuten automaacuteticamente en su lugar a tu punto de acceso abierto Cuando intenten acceder a los recursos de Internet seraacuten redireccionados a un portal que se presenta como su router y le solicitaraacute su contrasentildea WPA (para mejorar la seguridad por supuesto) Una vez que se obtiene la contrasentildea se desconecta el punto de acceso y el cliente se co-necta sin que se perciba la diferencia a su red original Ves ndash es faacutecil Para conseguir esto necesitaraacutes dos adaptadores inalaacutem-bricos - uno que sea compatible con la inyeccioacuten (para desco-nectar continuamente a los usuarios del AP objetivo) y otro para hacerse pasar por el falso AP Para esta prueba he utilizado dos adaptadores Wifi Modulo 4 de Hardkernel

$ git clone httpsgithubcomsophronwifiphishergit

$ sudo apt-get install tcpdump hostapd

$ cd wifiphisher

$ sudo python setuppy install

Si aparece alguacuten error indicando que no encuentra setuptools instaacutelalo y vuelve a ejecutar el comando install

$ wget httpsbootstrappypaioez_setuppy -O - |

sudo python

Ten en cuenta que para que esto funcione necesitaraacutes con-figurar hostapd para que trabaje con tu tarjeta inalaacutembrica Tienes maacutes detalles en httpbitly2aLTF6w and httpbitly2aLTlnX

SEGURIDAD WPA

Los usuarios desprevenidos escribiraacuten su contrase-ntildea wPA en tu entorno de suplantacioacuten de red

ODROID MAGAZINE 13

En los uacuteltimos antildeos el tema del big data y de la ciencia de los datos se ha convertido en una tendencia muy importante en un sinfiacuten de in-

dustrias Las empresas de alta tecnologiacutea de Silicon Valley ya no son los uacutenicos proveedores de temas como Hadoop la regresioacuten logiacutestica y el aprendizaje de maquinas Estar familiarizado con las tecnologiacuteas del big data se estaacute convirtiendo en un requisito cada vez maacutes necesario en los empleos relacionados con la tecnologiacutea en cualquier parte Por desgracia y siendo realista la experiencia praacutectica con las tecnologiacuteas de big data normalmente implica tener acceso a un costoso cluacutester de ordenadores para ejecutar tus consultas Sin embargo la reciente revolucioacuten de los orde-nadores de placa reducida ha hecho que la informaacutetica distri-buida sea accesible a nivel personal y en educacioacuten para realizar tareas como esta y muchas otras

Imparto clases sobre disentildeo y mantenimiento de sistemas digitales y redes en un instituto franceacutes Durante los uacuteltimos 4 antildeos he ido sustituyendo todos los ordenadores de sobremesa de mi aula por ordenadores SBC principalmente por razones de espacio ya que la escuela estaacute cerca de la ciudad de Pariacutes y el espacio es muy caro iexclEl uso de ordenadores SBC deja maacutes

espacio en la mesa de trabajo del estudianteEmpeceacute con una Raspberry Pi pero pronto cambieacute al

ODROID-C1 tan pronto como estuvo disponible ya que la Pi no era lo suficientemente raacutepida para el trabajo en labo-ratorios (laboratorios GNS3 diferentes anaacutelisis de protocolos bus y configuracioacuten de los equipos de red) o simplemente para navegar por Internet Para el proacuteximo antildeo escolar ya habreacute cambiado la mitad de la clase al ODROIDC2 con un total de 10 ODROID-C1s y 8 ODROID-C2s

A la hora de preparar los laboratorios para los estudiantes tuve que usar el mismo equipo que ellos con el fin de asegurar-me de que todo funcionara sin problemas cuando los estudi-antes trabajasen en sus propios entornos de laboratorios Esto requeriacutea utilizar un ODROID en lugar de un ordenador por-

taacutetil x86 para eliminar cualquier diferencia de comportamiento en-tre ambos Para ser maacutes eficiente a la hora de preparar los laborato-rios parte de ellos los configuraba en casa y no en la escuela He in-tentado buscar algunas soluciones para fabricar un ordenador portaacutetil usando un ODROID de modo que se convirtiese en mi portaacutetil ODROID de ida y vuelta desde la escuela a casa Recorro 5 km hasta la escuela en bicicleta por lo que la solucioacuten teniacutea que ser ligera y compacta para transportarla

PORTATILODROID-C1 un PROyECTO CASERO A MEDIDA COn nOMbRE En CLAvE ldquoREDTOPrdquopor fabien Thiriet

PORTATIL ODROID

Portaacutetil REDTOP y vista trasera del mismo

ODROID MAGAZINE 14

RequisitosAl principio del proyecto elaboreacute una lista de requisitos

para el ordenador portaacutetil

bull Alimentado con 12V a traveacutes de un sistema de bateriacuteas solares en casa y con una fuente de alimentacioacuten exter-na 230V-12V en la escuelabull Bateriacutea Li-ion para cuando me esteacute moviendo con una autonomiacutea de unas 2 horas Algunos entornos de labo-ratorios en la escuela requieren monitorizar los buses CAN integrados en los vehiacuteculos de modo que se hace necesario el uso de bateriacuteasbull Pantalla LCD de 10rdquo como miacutenimobull Teclado y pantalla LCD montados en forma de ordena-dor portaacutetilbull GPIOs y conectores ODROID faacutecilmente accesiblebull Bluetooth maestroesclavo disponible puesto que ten-go muchos proyectos que funcionan con placas Arduino remotasbull RTC integrado porque no siempre estoy conectado a Internet

Proceso de fabricacioacutenAl principio encontreacute un Motorola Lapdock 100 en eBay

y lo utiliceacute durante varios meses Tras solucionar los problemas HDMI entre el ODROID y el Lapdock ya que el Lapdock se apagaba despueacutes de 20 segundos si no se conectaba nada a su puerto USB todo funcionoacute correctamente Se trataba de una solucioacuten muy ligera pero no lo suficientemente coacutemoda para un uso diario ya que la pantalla LCD soacutelo teniacutea 10rdquo y el teclado era muy pequentildeo Tambieacuten echeacute un vistazo a PiTop pero el precio era muy elevado para lo que estaba dispuesto a gastar Lo que realmente necesitaba era simplemente un gran panel LCD y un buen teclado montados en conjunto

Decidiacute buscar en eBay una pantalla LCD maacutes grande y en-contreacute un modelo de 133rdquo muy econoacutemico por 85 euro con en-viacuteo e impuestos incluidos La pantalla tiene una buena resolu-cioacuten de 1900x600 y los colores se ven muy bien Sin embargo

PORTATIL ODROID

el panel LCD se vendiacutea sin marco de modo que necesita algo para solventar esta cuestioacuten

Al mismo tiempo mi hijo ha conseguido lo que ha sontildeado durante mucho tiempo por su 15 cumpleantildeos una impresora 3D personal de modo que ya no teniacutea que utilizar una que teniacutea en la escuela Eacutel es muy bueno usando software CAD como SolidWorks y me propuso disentildear un chasis para el por-taacutetil Por desgracia la placa de impresioacuten 3D con un tamantildeo maacuteximo de 200 mm era demasiado pequentildea para imprimir un marco LCD de 133rdquo y un marco del teclado Despueacutes de varias reflexiones decidimos dividir los marcos de la LCD y del teclado en cuatro partes y unirlos con los clips de montaje im-presos en 3D y pegamento Todas las partes individuales eran inferiores a los 200 mm Si te fijas bien en las fotos del marco de la LCD de los clips y del teclado veraacutes la separacioacuten entre las piezas montadas El disentildeo CAD necesita alrededor de 2 semanas de trabajo para asegurarse de que todo encaja bien

Durante el disentildeo el principal problema que nos preo-cupaba era las bisagras del panel LCD que teniacutea que ser lo suficientemente fuerte para que me permitiera abrir y cerrar con facilidad el ordenador portaacutetil Esto nos permitiacutea crear una aacutengulo perfecto entre el marco del panel LCD y el marco del teclado Para que pudiera encajar correctamente el teclado

Portaacutetil RedTop visto desde arriba Versioacuten inicial de portaacutetil con un ordenador motorola Lapdock 100

El modelo 3D del marco de la LCD

ODROID MAGAZINE 15

en su marco lo desmontamos retirando las cubiertas superior e inferior Elegimos el color rojo para la fibra de impresioacuten 3D para que el ordenador fuese maacutes divertido y llamativo 30 horas maacutes tarde teniacuteamos impresas todas las partes del chasis Las pegamos y atornillamos el panel LCD y el teclado dentro de sus respectivos marcos El siguiente paso fue colocar todas las placas y moacutedulos en el interior del chasis con firmeza las in-sertamos en el plexiglaacutes

El plexiglaacutes fue cortado para que encajara en el espacio crea-do en la etapa de disentildeo CAD para cada marco De esta forma todo el mundo puede apreciar el engranaje del portaacutetil lo cual supone una gran ventaja a la hora de ensentildear informaacutetica El paso final fue cablear todo siguiendo el diagrama por bloques

Acabamos teniendo un ordenador portaacutetil potente y fiable iexclMis estudiantes de la escuela se sorprendieron cuando vieron este portaacutetil poco convencional por primera vez

BateriacuteaAhora disponiacuteamos de un nuevo ordenador portaacutetil pero

sin ninguacuten tipo de bateriacutea recargable de modo que maacutes o me-nos es inuacutetil En primer lugar necesitaacutebamos estimar la ca-pacidad de la bateriacutea necesaria Para tal fin hicimos algunas pruebas de medicioacuten del amperaje en diferentes condiciones de uso El maacuteximo amperaje se alcanza cuando el C2 se pone en marcha con un pico de 11A Durante el funcionamiento nor-mal se mantiene justo por debajo de 1A con un dongle USB WIFI un moacutedulo RTC un adaptador de ratoacuten inalaacutembrico y el moacutedulo Bluetooth conectados El consumo total de energiacutea del ordenador portaacutetil es de alrededor de unos 12W

Mi hijo rescatoacute una vieja bateriacutea de litio recargable de un ordenador portaacutetil de Lenovo (L412) y pudo extraerle las nueve ceacutelulas disponibles dentro del paquete de bateriacuteas La mayoriacutea de las veces este tipo de paquetes de bateriacuteas ya no funcionan no por la propia bateriacutea sino debido a un defectuoso controlador de bateriacuteas integrado Utilizamos 3 y las conectamos en serie Esto nos proporcionaba 3 x 37 V un total de 111 voltios cuando la bateriacutea estaacute casi descargada y maacutes de 12V cuando estaacute completa-mente cargada La placa controladora LCD funciona sin ninguacuten problema a 11V Cada ceacutelula tiene 2200 mAh de capacidad de modo que la autonomiacutea del portaacutetil se acerca a las 2 horas Esto era suficiente para alcanzar el objetivo que nos propusimos al inicio del proyecto

Para volver a cargar las 3 ceacutelulas utilizamos un banco de bate-riacuteas solar de 12V conectada a traveacutes de un moacutedulo de sobreali-mentacioacuten que estaacute reajustado a un liacutemite de corriente de 126 V y 1A Con nuestro modelo particular de bateriacuteas podemos ajustar tanto la tensioacuten de salida como la corriente Cuando es-

PORTATIL ODROID

Clips de LCD

marco del teclado

Chasis completamente montado

ODROID MAGAZINE 16

cribiacute este artiacuteculo la bateriacutea auacuten no estaba colocada dentro del RedTop pero la teniacuteamos fuera para realizar pruebas maacutes ex-haustivas Una vez que completemos las pruebas colocaremos las 3 celdas debajo del teclado en un espacio reservado para tal fin

MaterialesEsto es lo que utiliceacute para montar mi portaacutetil ODROID-C1

Panel LCD HDMI-VGA de 133rdquo con audio httprebaycomAYZ5JU

Teclado mecaacutenico Zalman httpwwwamazonfrdpB00LHSPCS4

Cable OTG USB httpwwwamazonfrdpB007MNZ8VY

Transformador 12V-5V 3A httpwwwamazonfrdpB00JGFEQLE

Moacutedulo Bluetooth HC05 maestroesclavo httpswwwamazonfrdpB013STJSES

Moacutedulo RTC PCF8563 httpwwwamazonfrdpB01DB8JECC

Mini altavoz httprebaycombwOCZv

Impresora 3D httpwwwdagomafrproduitimprimante-dis-

covery200

Filamentos PLA para impresora 3D httpwwwamazonfrdpB00UMV7ANM

Clavijas de corriente DC de 55mm httpwwwamazonfrdpB00O1Y1X70

Interruptor de alimentacioacuten httpwwwamazonfrdpB00HUHBS1Q

Pack de bateriacuteas de ordenador portaacutetil como esta httpwwwamazonfrdpB00TVOC55Y

Conversor de sobrealimentacioacuten (4V-12V) httprebaycomw3FgNH

Varios tornillos arandelas y cables05m de PlexiglassSuper glue

PORTATIL ODROID

La placa controladora de la LCD

JUEGOS ANDROID

PAC-MAn 256iquestun juEGO CLASICO iquestunA nuEvA PERSPECTIvA DEL GEnERO DEL CORREDOR In-TERMInAbLE iexclDESCubRELOpor Bruno Doiche

Suele decirse que los claacutesicos nunca mueren pero algunos pueden quedarse bastante

anticuados Cuando era un nintildeo el Pac-Ma era un juego cuyos graacuteficos y jugabilidad eran totalmente acepta-bles para los estaacutendares de la deacutecada de los 80 A pesar de que todaviacutea se puede disfrutar del original Pac-Man hoy diacutea estaraacutes de acuerdo conmigo en que se queda algo corto en cuanto a funcionalidad incluso si aceptas el reto de jugar al modo aacutercade lo suficiente como para encontrarte con el miacutetico error del nivel 256 que soacutelo los mejores juga-dores de Pac-Man son capaces de ver

Sin embargo en la partida 256 del Pac-Man el error es la principal caracteriacutestica te prosiguen como una ola implacable desde la parte inferior de la pantalla Te hace volver a pensar lo que realmente significa correr por tu supervivencia en un labe-rinto lleno de fantasmas cada uno con su propia personalidad Exige un control muy preciso y pensar muy raacutepido para lograr salir y mantenerte un paso por delante de tus enemigos fantas-mas Ahora no tienes que jugar a los 255 niveles de Pac-Man para llegar a uno de los niveles maacutes elitistas de la historia del juego Puedes instalarlo desde Play Store en

httpbitly2cLaD5q

Un gran juego tan adictivo como lo fue en sus primeros diacuteas arcade

ODROID MAGAZINE 17

book se puede compartir faacutecilmente permitiendo una faacutecil visualizacioacuten en liacutenea y en nuestro caso gestionar la creacioacuten y el enviacuteo de aplicaciones Spark al cluacutester Los notebooks de Jupyter son una forma muy comuacuten de usar Apache Spark ya que permite al usuario centrarse especiacuteficamente en el anaacutelisis de datos en lugar de preocuparse de las herramientas o de la infraestructura que hay detraacutes

Instalar Hadoop File SystemNuestra primera tarea es instalar Java en cada nodo del

cluacutester Instalaremos el uacuteltimo software Java 8 de Oracle EL cual requiere la aceptacioacuten de la licencia durante la instalacioacuten Debido a esto necesitas iniciar sesioacuten en cada nodo de forma independiente y ejecutar el instalador Una vez alliacute crearemos una nueva cuenta de usuario desde la que ejecutaremos todo

$ sudo add-apt-repository ppawebupd8teamjava

$ sudo apt-get update

$ sudo apt-get install oracle-java8-installer

$ sudo apt-get install rsync

$ sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hduser

$ sudo usermod -aG sudo hduser

Ahora necesitamos instalar Hadoop Teacutecnicamente po-driacuteas utilizar la distribucioacuten Hadoop disponibles en el sitio web de Apache pero no estaacute compilada para la CPU ARM v71 de nuestros XU4s Puesto que en su mayor parte es Java es genial ya que se ejecutaraacute sobre JVM que acabamos de instalar en cada nodo Sin embargo hay partes de Hadoop que fueron es-

En el anterior artiacuteculo que escribiacute para ODROID Maga-zine en httpbitly2bHFij7 analice el desarrollo de un cluacutester informaacutetico autoacutenomo con nodos ODROID

XU4 En este artiacuteculo explicaremos coacutemo hacer un buen uso de ese cluacutester instalando Apache Spark y el sistema de ficheros Hadoop asiacute como tambieacuten la forma de acceder a tu cluacutester a traveacutes de la aplicacioacuten web Jupyter

Hadoop File System (HDFS) es uno de los sistemas de ar-chivos distribuidos maacutes populares y maacutes utilizados que existen hoy en diacutea Un sistema de archivos distribuido (DFS) es una aplicacioacuten para cluacutester que agrupa todas las unidades de disco duro dentro de un cluacutester para que puedan ser tratadas como una uacutenica unidad de almacenamiento de cara a sus clientes ex-ternos Utilizar un DFS tiene dos ventajas muy importantes En primer lugar y lo maacutes evidente es que te permite guardar y trabajar con grandes conjuntos de datos que se almacenan en maacutes de un disco duro del cluacutester En segundo lugar un DFS bien disentildeado proporciona mayor resistencia de datos en el nodo o ante fallos de disco mediante la replicacioacuten de bloques de datos en varias unidades del cluacutester En nuestro cluacutester XU4 los discos duros son las tarjetas MicroSD que fueron instaladas y configurada en nuestra anterior guiacutea

Apache Spark es una moderna plataforma de anaacutelisis de Big Data utilizada ampliamente en la industria del anaacutelisis de los grandes voluacutemenes de datos Proporciona herramientas de alto nivel muy simple para manipular y analizar datos ya sea a traveacutes de SQL o mapreduce ademaacutes de usar lenguajes de pro-gramacioacuten comunes tales como Python Scala y Java La pecu-liaridad maacutes significativa de Apache Spark es el uso del fondo de memoria RAM del cluacutester para almacenar objetos de datos intermedios que aceleran significativamente el procesamiento de datos Aunque los 2 GB de RAM integrados en el XU4 po-driacutean parecer un poco austeros en comparacioacuten con las grandes cantidades de memoria en un nodo de un cluacutester industrial hay espacio suficiente para hacer algunas cosas interesantes con Apache Spark

Jupyter Notebook es una aplicacioacuten web que te permite coacute-modamente aprovecharte de diversos lenguajes y plataformas de caacutelculo con tu cluacutester a traveacutes de una interfaz web El note-

InSTALAR HADOOP y SPARK En un CLuSTER ODROID-Xu4por michael Kamprath

HADOOP FILE SYSTEM

ODROID MAGAZINE 18

-l root ldquomkdir -p opthadoop-272rdquo

$ sudo rsync -avxP opthadoop-272

rootslave1opt

$ sudo rsync -avxP opthadoop-272

rootslave2opt

$ sudo rsync -avxP opthadoop-272

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop opthadoop-272rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquoln -s opthadoop-272 usrlocalhadooprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquomkdir -p datahdfstmprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop datahdfsrdquo

El uacuteltimo paso en la instalacioacuten de Hadoop es formatear el nodo como un HDFS

$ usrlocalhadoopbinhdfs namenode -format

Instalar Apache SparkVamos a utilizar un meacutetodo similar al anterior para instalar

Apache Spark En primer lugar vamos a utilizar Python 3 para acceder a Spark y a algunas librerias clave de Python por lo que tendraacutes que iniciar sesioacuten en cada nodo y ejecutar

$ sudo apt-get install python3 python3-pip

$ sudo pip3 install numpy

$ sudo pip3 install urlparse

Despueacutes en el nodo maestro instala Apache Spark

$ cd opt

$ sudo wget httpapacheclazorgspark

spark-162spark-162-bin-hadoop26tgz

$ sudo tar xvzf spark-162-bin-hadoop26tgz

$ sudo chown -R hduserhadoop

spark-162-bin-hadoop26

$ sudo ln -s optspark-162-bin-hadoop26

usrlocalspark

Al igual que en nuestra instalacioacuten de Hadoop necesitas antildeadir algunos archivos de configuracioacuten al directorio usrlo-calchispasconf Puedes localizar los archivos de configuracioacuten necesarios en mi repositorio GitHub (httpbitly2b4GnDU)

Una vez que Spark haya sido configurado en el nodo ma-

critas en C para que se ejecutaran maacutes raacutepido Si una instalacioacuten Hadoop no tiene estas libreriacuteas compiladas en la plataforma en la que estaacute se utilizaraacuten automaacuteticamente las equivalentes en Java por lo que seguiraacute funcionando pero de un modo maacutes lento Para este proyecto he desarrollado una distribucioacuten de la uacuteltima versioacuten de Hadoop para el procesador ARM v71 va-mos a descargar e instalar mi distribucioacuten En el nodo maestro inicia sesioacuten con la cuenta ldquohduserrdquo recieacuten creada y ejecuta los siguientes comandos para instalar Hadoop y configurar los no-dos del cluacutester para utilizar SSH sin contrasentildea Ten en cuenta que tendraacutes que iniciar sesioacuten en cada nodo esclavo desde el nodo maestro para configurar completamente el inicio de se-sioacuten sin contrasentildea

$ cd

$ ssh-keygen -t rsa -P ldquordquo

$ cat $HOMEsshid_rsapub gtgt $HOMEsshauthorized_

keys

$ ssh hduserlocalhost

$ exit

$ ssh hdusermaster

$ exit

$ ssh-copy-id hduserslave1

$ ssh hduserslave1

$ exit

$ ssh-copy-id hduserslave2

$ ssh hduserslave2

$ exit

$ ssh-copy-id hduserslave3

$ ssh hduserslave3

$ exit

$ cd opt

$ sudo wget httpdiybigdatanetdownloads

hadoophadoop-272armhftargz

$ sudo tar xzf hadoop-272armhftargz

$ sudo chown -R hduserhadoop hadoop-272

$ cd usrlocal

$ sudo ln -s opthadoop-272 hadoop

$ cd usrlocalhadoop

Ahora tenemos que crear los archivos de configuracioacuten para Hadoop Por comodidad ya he creado estos archivos que se de-ben instalar en el directorio usrlocalhadoopetchadoop y los he colocado a mi repositorio GitHub en httpbitly2bBehj4

Estos archivos de configuracioacuten tienen una configuracioacuten de cluacutester similar a la descrita en mi anterior artiacuteculo Es po-sible que tengas que modificarlos si has desarrollado un cluacutester diferente Ahora que el software Hadoop estaacute configurado en el nodo maestro lo vamos a copiar en los nodos esclavos

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

HADOOP FILE SYSTEM

ODROID MAGAZINE 19

estro coacutepialo a los esclavos de tu cluacutester

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo -l root

ldquomkdir -p optspark-162-bin-hadoop26rdquo

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave1opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave2opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquochown -R hduserhadoop

optspark-162-bin-hadoop26rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquoln -s optspark-162-bin-hadoop26

usrlocalsparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquomkdir -p datasparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquochown hduserhadoop datasparkrdquo

Instalar Jupyter NotebookLa instalacioacuten Jupyter Notebook es relativamente simple en

comparacioacuten con lo que hemos hecho hasta ahora Ugravenicamente en el nodo maestro ejecuta los siguientes comandos

$ sudo mkdir datajupyter

$ sudo chown -R hduserhadoop datajupyter

$ mkdir ~notebooks

$ sudo pip3 install jupyter

Para hacer visualizaciones en un notebook necesitamos compilar e instalar matplotlib Tambieacuten es uacutetil tener instalado numpy para facilitar la informaacutetica cientiacutefica a traveacutes de Py-thon Ten en cuenta que esto va a llevar un tiempo

$ sudo apt-get build-dep matplotlib

$ sudo pip3 install matplotlib

$ sudo pip3 install numpy

Ejecutar Hadoop Spark y Jupyter

Para logar que todo se ejecute usa los siguientes comandos

$ usrlocalhadoopsbinstart-dfssh

$ usrlocalsparksbinstart-allsh

$ XDG_RUNTIME_DIR=rdquodatajupyterrdquo PYSPARK_DRIVER_

PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=rdquonotebook

--no-browser --port=7777 --notebook-dir=homehduser

notebooksrdquo usrlocalsparkbinpyspark --packages

comdatabricksspark-csv_210110 --master spark

master7077

Puedes optar por convertir esta secuencia de comandos en un script bash independiente o simplemente puede crear un alias para este uacuteltimo comando Te dejo elegir cualquiera de

estas opciones como ejercicio Una vez en funcionamiento in-troduce en el navegador del ordenador httpltdireccioacuten IP del cluacutestergt7777 deberiacutea ver la interfaz Jupyter

Vamos a ejecutar una tarea de recuento de palabras en

nuestro sistema big data de XU4 Crea un nuevo notebook Python 3 haciendo clic en el botoacuten New en la parte superior derecha de la paacutegina web Ahora veraacute un espacio vaciacuteo como el que se muestra en la Figura anterior

Abre una nueva sesioacuten SSH en el nodo principal y antildeade lo siguiente

$ wget httpnorvigcombigtxt

$ hdfs dfs -mkdir usermichael

HADOOP FILE SYSTEM

Paacutegina web principal de Jupyter

Bloc de notas de Jupyter

ODROID MAGAZINE 20

$ hdfs dfs -put bigtxt usermichaelbigtxt

$ hdfs dfs -ls usermichael

Vuelve al notebook recieacuten creado antildeade el siguiente coacutedigo Python en la primera celda

from operator import add

blog_data = sctextFile(lsquohdfsmaster9000user

michaelbigtxtrsquo)cache()

counts = blog_dataflatMap(lambda x xsplit(lsquo lsquo))

map(lambda x (x 1))reduceByKey(add)

A continuacioacuten pulsa Shift + Enter para iniciar el trata-miento de las celdas Una nueva celda apareceraacute en el notebook de Jupyter Teacutecnicamente todaviacutea no ha sucedido nada dentro de Spark excepto crear un plan de consulta para ejecutar el recuento de palabras frente al conjunto de datos del blog que ya hemos colocado en HDFS Spark no hace ninguacuten caacutelculo hasta que no haga falta materializar los resultados La forma maacutes comuacuten de hacerlo es mostrar una parte de los resultados En la siguiente celda del notebook introduzca el coacutedigo y pulse Shift-Enter

countstake(100)

Veraacutes un asterisco junto a la celda en la que hemos intro-ducido el coacutedigo anterior Este asterisco seguiraacute activo mien-tras Spark esteacute haciendo sus caacutelculos Si vuelves a la sesioacuten de terminal en la que lanzaste el software Jupyter veraacutes el regis-tro log de Spark realizando sus caacutelculos Por otra parte si es-

cribes en tu navegador web la direccioacuten httpltdireccioacuten IP del cluacutestergt4040 puedes analizar el estado interno de Spark uti-lizando su interfaz de aplicacioacuten Es probable que escuches a-rrancar el ventilador de la CPU del XU4 durante los caacutelculos

Cuando los caacutelculos finalicen los primeros 100 valores de

los resultados se mostraraacuten en el notebook de JupyterCambia el nombre del notebook haciendo clic en la cadena

ldquo Untitledrdquo junto al logo de Jupyter en la parte superior izqui-erda del notebook Puede seguir trabajando con los datos antildea-diendo maacutes celdas que contengan maacutes coacutedigo python Spark Hay muchos y excelentes recursos en la web para aprender maacutes sobre Apache Spark incluyendo httpsparkapacheorg

Para guardar y cerrar el notebook haz clic en el menuacute ldquoFilerdquo en la paacutegina y selecciona ldquoClose and Haltrdquo Para finalizar Jupy-ter pulsa Control-C dos veces en la ventana de terminal desde el cual se lanzoacute Una vez que el software Juypter se detenga puedes apagar Spark y HDFS con

$ usrlocalsparksbinstop-allsh

$ usrlocalhadoopsbinstop-dfssh

Lecturas recomendadasSi deseas aprender maacutes sobre los temas tratados en este artiacute-

culo puedes utilizar los siguientes recursos para obtener maacutes informacioacuten sobre el software asiacute como mis conocimientos so-bre Big Data

Mi blog httpdiybigdatanetApache Hadoop httphadoopapacheorgApache Spark httpsparkapacheorgJupyter Notebook httpjupyterorg

HADOOP FILE SYSTEM

Los caacutelculos del recuento de palabras se han completado

ODROID MAGAZINE 21

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 4: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

Manuel Adamuz Editor EspantildeolTengo 31 antildeos y vivo en Sevilla Espantildea aunque naciacute en Granada Estoy casado con una mujer maravillosa y tengo un hijo Hace unos antildeos trabajeacute como teacutecnico informaacutetico y programador pero mi trabajo actual estaacute relacionado con la gestioacuten de calidad y las tecnologiacuteas de la informacioacuten ISO 9001 ISO 27001 ISO 20000 Soy un apasionado de la informaacutetica 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 soacutelo pienso en ODROID Mi otra aficioacuten es la bicicleta de montantildea a veces participo en competiciones semiprofesionales

Andrew Ruggeri Editor AdjuntoSoy un ingeniero de sistemas Biomeacutedicos anclado en Nueva Inglaterra que actualmente trabaja en la industria aeroespacial Un microcontrolador 68HC11 de 8 bits y el coacutedigo ensamblador son todo lo que me interesa de los sistemas embebidos Hoy en diacutea la mayoriacutea de los proyectos en los que trabajo estaacuten en lenguajes C y C ++ o en len-guajes de alto nivel como C y Java Para muchos proyectos utilizo placas ODROID pero auacuten sigo intentando utili-zar los controladores de 8 bits cada vez que puedo (soy un fan de ATMEL) Aparte de la electroacutenica soy un amante de

la fotografiacutea analoacutegica y desarrollo la peliacutecula friki con la que disfruto intentando hablar en idiomas extranjeros

Venkat Bommakanti Editor AdjuntoSoy un apasionado de los ordenadores desde la bahiacutea de San Francisco en California Procuro incorporar muchos de mis intereses en proyectos con ordenadores de placa reducida tales como pequentildeos modificaciones de hardware carpinteriacutea reutilizacioacuten de materiales desarrollo de software y creacioacuten de grabaciones musicales de aficionados Me encanta aprender continuamente cosas nuevas y trato de compartir mi alegriacutea y entusiasmo con la comunidad

Josh Sherman Editor AdjuntoSoy 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 tamantildeos haciendo trizas las tablets convirtiendo Raspberry Pi en PlayStations y experimentado con los ODROIDs y otros SoCs Me encanta trabajar con los elementos baacutesicos y asiacute poder aprender maacutes y disfrutar ensentildeando a otros escribiendo historias y guiacuteas sobre Linux ARM y otros proyectos experimentales divertidos

Nicole Scott Editor ArtiacutesticoSoy una experta en Produccioacuten Transmedia y Estrategia Digital especializa en la optimizacioacuten online y estrategias de marketing administracioacuten de medios sociales y produccioacuten multimedia impresa web viacutedeo y cine Gestiono muacuteltiples cuentas con agencias y productores de cine desde Analytics y Adwords a la edicioacuten de viacutedeo y maqu-etacioacuten DVD Tengo un ODROID-U3 que utilizo para ejecutar un servidor web sandbox Vivo en el aacuterea de la Bahiacutea de California y disfruta haciendo senderismo acampada y tocando muacutesica Visita mi web httpwww

nicolecscottcom

James LeFevour Editor ArtiacutesticoSoy un especialista en medios digitales que disfruta trabajando como freelance en marketing de redes sociales y admin-istracioacuten de sitios web Cuanto maacutes aprendo sobre las posibilidades de ODROID maacutes me ilusiona probar cosas nuevas con eacutel Me traslade a San Diego desde el Medio Oeste de los EEUU Continuo muy enamorado de muchos de los aspectos que la mayoriacutea 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 informaacutetico en constante peligro

Bruno Doiche Editor Artiacutestico SeniorBruno ama su trabajo pero su trabajo le aman auacuten maacutes Es por eso que le sigue llamando todos los diacuteas y todas las noches

con una especial capacidad para predecir cuando estaacute cocinando lavando la ropa o fregando los platos Sin embargo no le importa demasiado ya que al otro lado del teleacutefono siempre hay alguien que simplemente trata de joder un poco el mundo y lo necesita para solucionar su mundo y seguir girando

NUESTRO MARAVILLOSO PRESONAL ODROIDIAN

Rob Roy Editor JefeSoy un programador informaacutetico que vive y trabaja en San Francisco CA en el disentildeo y desarrollo de aplicaciones web para clients locales sobre mi cluster ODROID Mis principales lenguajes son jQuery angular JS y HTML5CSS3 Tambieacuten 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 estacioacuten de trabajo y como plataforma de juegos Puedes echar un vistazo a mi coleccioacuten de 100 GB de software ODROID kernel precompilados e imaacutegenes en

httpbitly1fsaXQs

INDICE

KODIBUNTU - 31

ORDENADOR PORTATIL CON ODROID-C1 - 14

JUEGOS ANDROID PAC-mAN 256 - 17

DISPOSITIVO IOT - 27

SCRIPTS PARA BACKUP - 22

JUEGOS LINUX SEGA amp CDEmU - 35

ORDENADOR PARA COHE - 32

SEGURIDAD wPA - 10

OBTURADOR DE LA CAmERA - 41

HADOOP fILE SySTEm - 18

PIRATEAR POKEmON GO - 6

CARCASA XU4 - 39

CONOCIENDO UN ODROIDIAN - 43

VU7 PLUS - 42

HECKEAR POKEMOn GOCOn un ODROIDCOMO LOGRAR SuPLAnTAR EL GPSpor Andrew Ruggeri

POKEMON GO

Pokemon Go es un juego muy popular para teleacutefonos moacuteviles el cual ha sido descargado maacutes de 100 millones de veces por jugadores de todo el mundo Utiliza la realidad aumentada para hacer que explores el mundo real con

el objeto de capturar pokemon acudiendo a puntos reales en los que estaacute ubicado lo bueno Cuanto maacutes camines captures pokemon y entrenes en gimnasios maacutes puntos obtendraacutes

El juego utiliza el GPS del teleacutefono para registrar el movimiento de los jugadores y la distancia recorrida Aquiacute es donde el ldquotrucordquo entra en juego Quisiera disculparme por el tiacutetulo ya que en realidad no se trata de un truco sino maacutes bien una forma de en-gantildear las funciones de geolocalizacioacuten del juego Nos centraremos en el enviacuteo de datos GPS registrados o simulados en Android Lo bueno de los ODROIDs es que no soacutelo ejecutan Android sino que tambieacuten son altamente configurables Desde un punto de vista del hardware el cabezal principal GPIO tiene varias interfaces en serie Ademaacutes el software es muy faacutecil de configurar y si fuera necesario podemos acceder al coacutedigo fuente completo de Android

Por lo tanto iquestQueacute es lo que hace que este truco del GPS y ODROID sea ta in-teresante Bueno podemos decir que tiene principalmente dos ventajas Reciente-mente Niantic Inc la compantildeiacutea que hay detraacutes de Pokemon Go ha comenzado a perseguir de un modo muy agresivo a los ldquobotsrdquo verificando el uso de una API Cualquier cuenta detectada que use un bot seraacute bloqueada de forma permanente El meacutetodo GPS que describimos aquiacute utiliza la aplicacioacuten oficial de Android lo que significa que toda API que se conecte al servidor Niantic no seraacute delimitada E-xisten varias versiones ldquocraqueadasrdquo de Pokemon Go para Android que permiten al usuario hacer trampas y moverse por el juego sin tener que desplazarse en el mundo real Sin embargo algunas de estas versiones ldquocraqueadasrdquo ejecutan coacutedigos mali-ciosos y peor auacuten requieren acceso a root para instalarse de modo que representan un gran problema de seguridad

GPS sobre AndroidLos ODROIDs tienen por defecto todos los drivers necesarios para trabajar

con el tiacutepico GPS NMEA NMEA es el protocolo estaacutendar utilizado para comu-nicar datos GPS Por suerte el protocolo NMEA es utilizado tanto en modo serie como en modo texto esto hace que sea extremadamente funcional porque es faacutecil de depurar y emular NMEA es muy versaacutetil porque ofrece informacioacuten sobre los sateacutelites disponibles y utilizados la velocidad los waypoints los errores de posicioacuten y mucha maacutes informacioacuten que se puede transmitir

Los ODROIDs en siacute mismos no cuenta con una unidad GPS integrada aunque una interfaz muy comuacuten para muchas unidades de GPS externas es la USB como por ejemplo la que usa el moacutedulo GPS de Hardkernel Una vez conectado el moacutedulo se vincula normalmente en la interfaz serie disponible en devttyUSB0 o devttyACM0 Android cuenta con un archivo en la particioacuten del sistema root

ODROID MAGAZINE 6

conocido como buildprop que almacena la configuracioacuten de muchos y diferentes aspectos de Android Dos de estos ajusten inciden directamente en el fun-cionamiento del GPS

rokernelandroidgps=dev

ttyACM0

rokernelandroidgps

speed=9600

El primer valor ldquorokernelandroidgpsrdquo es la ubicacioacuten del flujo de datos en serie de NMEA que normalmente es tty El se-gundo valor es la velocidad del flujo en serie Aquiacute es donde las cosas se vuelven interesantes Si podemos ajustar la ubicacioacuten GPS tambieacuten podemos intro-ducir nuestros propios datos GPS NMEA lo cual nos permite engantildear al GPS En la gran mayoriacutea de mis pruebas utilice un ODROID-C2 conectado viacutea UART a mi ordenador portaacutetil Esto me permitiacutea cambiar raacutepidamente en el fichero buildprop el paraacutemetro tty del GPS a ldquodevttyS1rdquo el puerto TTY para UART1 sobre el C2

El engantildeoHe reescrito esta seccioacuten varias veces a la vista de los recientes acontecimientos

y medidas que Niantic ha tomado hacia los ldquotrampososrdquo En lugar de escribir el coacutedigo que he desarrollado me voy a centrar en varias teacutecnicas y herramientas que cumplen con el mismo principio baacutesico El meacutetodo maacutes sencillo es grabar y reproducir un registro log de datos NMEA En el contexto de Pokemon Go darse un paseo por una zona con una buena cantidad de pokestops gimnasios y Pokeacutemon Existen varias aplicaciones de Android que se pueden instalar en tu teleacutefono suponiendo que tiene un teleacute-fono Android que te permiten guardar los datos GPS NMEA en un registro log Mueve el archivo log al ordenador portaacutetil conectado al ODROID Se en-viacutea una liacutenea de texto del archivo log NMEA al puerto serie a una velocidad de alrededor de 1 liacutenea cada 100 o 200 ms Un simple script Python puede ha-cer esto faacutecilmente Este meacutetodo no es de lo maacutes increiacuteble pero es muy simple

POKEMON GO

flujo de datos GPS NmEA en serie

Conexioacuten USB-UART de ODROID

ODROID MAGAZINE 7

POKEMON GO

y hace bien su trabajo El hecho de que estos regis-tros log representen datos reales es una gran ventaja

La segunda opcioacuten es utilizar un simulador GPS que se ejecute en el ordena-dor portaacutetil y bombardear con datos GPS ficticios al ODROID Existen diversas herramientas de simulacioacuten GPS que incluyen interfaces muy buenas Me he dado cuenta que muchas de ellas normalmente enviacutean los datos GPS NMEA simulados a traveacutes de la conexioacuten TCP o UDP Mi solucioacuten para esto simplemente fue escribir un programa para leer desde un puerto local y luego enviar el contenido del paquete a la consola o al puerto serie Una cuestioacuten a la hora de crear datos GPS ficticios tener mucho cuidado con las distancias y la velocidad Recuerda que estaacutes intentando imitar las condiciones del mundo real asiacute que si saltas de una ciudad a otra o de un continente a otro vas a levantar sospechas

Una vez que tengas tu fuente de datos GPS seleccionada y preparada puedes pasar al siguiente paso Para una depuracioacuten raacutepida y faacutecil de los datos GPS en Android tienes algunos programas al final de esta guiacutea Te recomiendo que instale alguno te ayudara bastante con la depuracioacuten y la comprobacioacuten de errores antes de iniciar Pokemon Go

Configurar Android y ODROIDComo ya he dicho la configuracioacuten es bastante simple y consiste en tener un or-

denador portaacutetil o incluso otro ODROID para que actuacutee como fuente de datos GPS Este es el dispositivo que enviaraacute los datos GPS precargados o falsos al ODROID con Android El ordenador portaacutetil estaacute conectado al puerto UART del ODROID o a cualquier otro puerto serie En mi configuracioacuten que se muestra en la Figura anterior tengo un convertidor USB a UART conectado al puerto UART1 del C2

El software para Android es miacutenimo y soacutelo requiere un cambio raacutepido en la con-figuracioacuten y en el archivo buildprop del que he hablado antes Asumiendo que tienes instalado Google PlayStore la instalacioacuten de Pokemon Go es muy simple y soacutelo

Pokemon Go ejecutandose sobre el sistema de suplantacioacuten de geolocalicacioacuten

ODROID MAGAZINE 8

POKEMON GO

requiere unos cuantos clics Si no lo tienes instalado puedes instalarlo siguiendo las sencillas instrucciones de Hardkernel en httpbitly2aWS696 Tuve algunas difi-cultades para interactuar con la aplicacioacuten real Pokemon Go a la hora de usar un teclado y un ratoacuten Me di cuenta que algunos botones no funcionan al ser presio-nado Termineacute por usar una pantalla taacutectil y no volviacute a tener ninguacuten problema

Hay algunas cosas que debes cambiar en la configuracioacuten de tu Android Lo pri-mero que tienes que hacer es entrar en Settings-gtDeveloper Options y desactivar la casilla ldquoAllow mock locationsrdquo que se encuentra en la seccioacuten ldquoDebuggingrdquo Te daraacutes cuenta de que sigue marcada cuando Pokemon Go muestre un error de localizacioacuten GPS Una vez desmarcada la opcioacuten el error desapareceraacute La segunda cosa que tienes que cambiar estaacute en la paacutegina Locatioacuten de los ajustes A continuacioacuten haz clic en la opcioacuten superior ldquoModerdquo apareceraacuten tres opciones la que tienes que seleccionar es ldquoDevice Onlyrdquo Esto haraacute que se use uacutenicamente la informacioacuten de localizacioacuten del GPS descartando cualquier otra fuente

NotasUna vez que has enviados los datos GPS a tu ODROID y tienes tu buildprop

bien configurado para ver el puerto serie correcto puedes seguir adelante y abrir Pokemon Go Asumiendo que tienes tus datos que emulan el movimiento deberiacuteas ver a tu ldquotrainerrdquo pokemon empezando a caminar en el juego Antes de continuar quisiera hacer hincapieacute en dos puntos importantes El primero y maacutes importante estaacutes violando los teacuterminos del juego al hacer esto Si te descubren Niantic tiene todo el derecho a bloquear permanentemente tu cuenta El segundo punto en el que quiero incidir es que se trata soacutelo de un juego Si se llega a un punto donde el juego tiene que automatizarse para poder disfrutar de eacutel es probable que no valga la pena jugar Como todas las cosas se recoge lo que se siembra y espero que esta guiacutea te sirva sobre todo para adquirir conocimientos uacutetiles acerca de los sistemas GPS y Android

Enlaces uacutetiles

Apps de informacioacuten GPS para Android httpbitly2bBdoXs Esta es el que yo usohttpbitly2br7DNK Igual de buena con una interfaz muy limpia

Analizador y generador NmEA httpbitly1FjZRPk Uno de los mejores generadores simple de usar e

incluye algunos ejemplos baacutesicos Se le echa en falta un mensaje GPGLL pero es insignificante Este es el que yo utiliceacute para mi simulador El meacutetodo maacutes simple para fijar dos puntos de paso es tener el programa con un incremento automaacutetico a una velocidad determinada

Existen unos cuantos simuladores para Linux y mucho maacutes para Windows Una raacutepida buacutesqueda en Google con ldquo GPS Simulatorrdquo o ldquo GPS NMEA Simu-latorrdquo te los mostraraacute No pude encontrar uno que fuera gratuito y de coacutedigo abierto aunque si uno pre-compilado gratuito muy simple y que estaacute dis-ponible en httpitly2bBfXcm

Maacutes informacioacuten sobre NMEA GPShttpaprsgidsnlnmeahttpbitly1g91wIE

ODROID MAGAZINE 9

asiacute como Websterrsquos English Dictionary Simplemente son coleccio-nes de palabras que tienen alguacuten significado para las personas o que hayan sido utilizadas como contrasentildeas con an-terioridad como se suelen apreciar en vulneraciones de seguri-dad Por lo general los diccionarios para descifrar la contrasentildea incluyen muchos maacutes teacuterminos que un diccionario estaacutendar porque tambieacuten tienen que incluir palabras del argot (como Yolo) o palabras mal escritas habitualmente (como aprentice) Tambieacuten incluyen nombres propios (como Andreacutes) nombres de personajes o lugares ficticios (como Pellenor Fields) o teacutermi-nos teacutecnicos (como el aacutecido desoxirribonucleico) Una buena fuente de estas palabras es la Wikipedia (que viene en diferen-tes idiomas) o incluso los subtiacutetulos de peliacutecula que se puede obtener en grandes cantidades en httpbitly2a1g42j

Kali Linux viene con algunos diccionarios por defecto que puedes utilizar o buscar en Internet listas de palabras uacutetiles

RockYou (134M) httpbitly1wtmeYADarkc0de (18M) httpbitly1pwlvJJLista de diccionarios httpbitly2ayDRaPTorrents lista de palabras WPA-PSK httpbitly2azrOqN 170K de palabras WPA httpbitly2as46gm 1 milloacuten de palabras httpbitly2a1geH4

En nuestros anteriores artiacuteculos atacamos las redes WEP y redes con WPS activado pero ahora es el momento de atacar la tecnologiacutea maacutes segura de las redes inalaacutembri-

cas el cifrado WPA Como siempre pide el consentimiento del propietario de la red antes de intentar romper su red y asiacute evitar problemas legales despueacutes iexclEs mejor prevenir que curar cuando se prueban las cosas

Ataques de Diccionario - Crear listas de palabras

Dado que la gente tiene fama por ser muy deficiente a la hora de elegir contrasentildeas seguras la mejor tecnica para romper la mayoriacutea de las contrasentildeas es ejecutar un ataque de diccio-nario

La complejidad de los ataques de diccionario reside en con-

seguir palabras correctas que sean relevantes para tu objetivo Por ejemplo si estaacutes atacando una red WiFi alemana es posible que quieras probar palabras en alemaacuten (iexclalgunas son muy lar-gas) Si estaacutes atacando un punto de acceso de un centro meacutedico puedes probar con teacuterminos meacutedicos No existe el diccionario ldquoperfectordquo ndash todo depende de tus necesidades Puedes encon-trar amplia informacioacuten sobre diccionarios con vistas a realizar ataques aquiacute httpbitly2aLS6Fx

No debemos confundir el teacutermino ldquodiccionariordquo con algo

ASuMIR EL RIEGO DE PEnETRAR LAS REDES wPA - PARTE 2por Adrian Popa

SEGURIDAD WPA

La busqueda de la palabra correccta

iexclEl Ataque de diccionario iexclEs suacuteper efectivo

ODROID MAGAZINE 10

tos praacutecticos inserta un Enter despueacutes de cada palabra) Luego ejecutamos sort para hacer las palabras uacutenicas que es una o-peracioacuten muy intensa para la CPU y la memoria Si no tienes suficiente memoria RAM para sort puedes dividir la entrada en varios archivos maacutes pequentildeos y ejecutar sort luego conca-tenar los resultados y ejecutar de nuevo sort sobre el resultado

$ iconv -f UTF-8 -t US-ASCIITRANSLIT

wiki_en_fulltxt | tr -cs ldquo[alpha]rdquo ldquonrdquo gtgt

wordlist_en_fulltxt

$ sort -u wordlist_en_fulltxt gt

wordlist_en_uniquetxt

Los diccionarios anteriores no estaacuten disentildeados necesari-amente para las restricciones WPA de modo que encontraraacuten contrasentildeas maacutes pequentildeas Puede eliminar las palabras maacutes pequentildeas o puedes utilizar una teacutecnica para combinarlas y crear contrasentildeas maacutes largas Para eliminar palabras inadecuadas pu-edes ejecutar grep (menor de 8 caracteres)

$ grep -P lsquo8rsquo wordlist_en_uniquetxt gt wordlist_

en_wpatxt

Hasta aquiacute tu diccionario se compone de una uacutenica pa-labra Si deseas generar diccionarios con parejas de palabras (o varias palabras) puede hacerlo con algo como esto (que genera permutaciones de dos palabras en el diccionario)

$ cat wordlist_en_uniquetxt wordlist_en_uniquetxt

| perl -lne lsquoBEGINapush a$_ENDforeach $x(a)

foreach $y(a)print $x$yrsquo gt every2wordstxt

Para tu comodidad puedes localizar listas de palabras de Wikipedia en ingleacutes y rumano en mi paacutegina de GitHub para hacer pruebas (httpbitly2ayE1yW)

Ejecutar ataques de diccionario con Pyrit

Vamos a utilizar de nuevo Pyrit para ejecutar un ataque de diccionario pero esta vez en lugar de ejecutarlo directamente vamos a importar el diccionario dentro Pyrit y lo vamos a eje-cutar desde alliacute Esto nos da la posibilidad de poder precalcular los hashes basados en el diccionario de este modo el descifrado real queda reducido principalmente a una consulta posterior Los datos se almacenan en ~pyrit

$ pyrit -e lsquoNASA-HQ-WPArsquo create_essid

$ pyrit -i wordlist_en_wpatxt import_passwords

$ pyrit batch

El comando batch de Pyrit necesita mucho tiempo y haraacute

Tambieacuten puede crear tu propio diccionario desde un vol-cado de texto Por ejemplo puedes obtener una copia offline de Wikipedia (en muchos idiomas) desde el Proyecto Kiwix (httpbitly2awalku) Necesitaraacutes descargar el archivo no in-dexado zim para el idioma que elijas aseguraacutendose de seleccio-nar la variante ldquonopicrdquo para no descargar ninguna imagen La Wikipedia en Ingleacutes ocupa aproximadamente 16 GB mientras que en otros idiomas es sustancialmente menor Para conver-tirla en una lista de palabras uacutenica es necesario tener una gran cantidad de espacio libre Por ejemplo el tamantildeo no compri-mido de la Wikipedia en Ingleacutes es de 130 GB Ten en cuenta que el comando zimdump necesitoacute un par de diacuteas para llegar a completarse en mi C1 con almacenamiento NFS

$ wget httpwwwopenzimorg

downloadzimlib-12targz

$ tar zxvf zimlib-12targz

$ cd zimlib-12

$ sudo apt-get install liblzma-dev

$ configure --prefix=usr

$ make

$ sudo make install

$ cd

$ echo lsquoDumping all articles as html into the zimdump

directory Please waitrsquo

$ zimdump -D zimdump wikipedia_en_all_nopiczim

A continuacioacuten tenemos que convertir el HTML a texto y concatenar todos los archivos en un uacutenico archivo de texto Vamos a crear un empaquetador alrededor de html2text de manera que si se bloquea no se detendraacute toda la liacutenea de in-formacioacuten El proceso tardaraacute entre varias horas y varios diacuteas dependiendo de la cantidad de archivos HTML que tengas que procesar y el dispositivo ODROID que poseas

$ sudo apt-get install html2text

$ cat ltltEOF gthtml2textwrappersh

binbash

html2text -utf8 ldquo$rdquo

exit 0

EOF

$ chmod a+x html2textwrappersh

$ find zimdumpA -print0 | xargs -0 -P 4 -n 30

html2textwrappersh gtgt wiki_en_fulltxt

El siguiente paso es transcribir los caracteres no ASCII a sus homoacutelogos ASCII (por ejemplo I -gt i) y dividir el archivo resultante en una lista de palabras Iconv depende de la con-figuracioacuten regional asiacute que aseguacuterate de tener soporte UTF-8 (en lugar de ldquoCrdquo por ejemplo) El comando ldquotrrdquo reemplaza todos los caracteres no alfanumeacutericos por nuevas liacuteneas (a efec-

SEGURIDAD WPA

ODROID MAGAZINE 11

$ wget httpwwwwillhackforsushicomcode

cowpatty46cowpatty-46tgz

$ tar xvf cowpatty-46tgz

$ cd cowpatty-46

$ sudo apt-get install libpcap-dev libssl-dev

$ make

$ sudo make install

$ cd

$ cowpatty -d linksys2hash -r

linksys2-insidious-handshakepcap -s linksys2 -2

Puedes especificar el archivo hash que quieres revisar con la opcioacuten -d (selecciona el hash con el mismo nombre que el punto de acceso objetivo) La opcioacuten -r especifica el archivo de captura con el handshake de 4 vias -s especifica el SSID

(ya que no se puede extraer de la captura) y -2 significa no ser demasiado estricto a la hora de analizar el archivo de captura Con esta configuracioacuten fui capaz de conseguir la contrasentildea en menos de 3 segundos usando un ODROID-C1 con una tasa de 25000 PMKs (comparados con los 300 PMKs cuando calculamos los PMKs) Por lo tanto el proceso es 83 veces maacutes raacutepido a expensas de utilizar unos 7 GB de espacio en disco

para el ataque Depende de ti decidir si vale la pena aunque consumas maacutes espacio en disco

Ingeneriacutea Social El doble maleacutefico

que tu CPU se caliente bastante mientras se crea la base de da-tos Si el calor te supone un problema puedes utilizar una her-ramienta como cpuctrl (httpbitly2aon1dA) para limitar la frecuencia maacutexima de la CPU con el regulador adecuado como por ejemplo ldquoconservativerdquo

Para obtener la clave de red tienes que proporcionar el ar-chivo de captura y los resultados si existen deberiacutean aparecer raacutepidamente Aquiacute tienes un pcap de ejemplo como referencia

httpbitly2agcRug A continuacioacuten ejecuta este comando

$ pyrit -r nasa-supercalifragilistic-handshakepcap

attack_db

Como puedes ver incluso lo que parecer ser una contrasentildea larga y robusta puede llegar a descifrarse si aparece en alguacuten artiacuteculo de Internet

Ataques con tabla RainbowUna vez que tengas cargado el diccionario en Pyrit iquestQueacute es

lo que te impide descifrar cada handshake que capturas Pues bien el SSID actuacutea como los ldquogranos de salrdquo comprobando que la misma contrasentildea combinada con un SSID diferente genere un PMK diferente Tener una lista de contrasentildeas pre-calculadas se denomina tabla rainbow y te permite descifrar las contrasentildeas maacutes raacutepidamente a costa de conar con maacutes espacio en disco para almacenar estas listas

Existe un proyecto que crea tablas rainbow para WPA para los 1000 SSID maacutes comunes en httpbitly2azsBIh Si tu red ob-jetivo tiene un SSID que estaacute en la lista (httpbitly2adkjtd) potencialmente podriacuteas descifrar la contrasentildea mucho maacutes raacutepido que con otros meacutetodos Vamos a poner esto a prueba

Para este experimento prepareacute un punto de acceso llama-do linksys2 con una contrasentildea del diccionario de palabras (httpbitly2ayEXmI) Necesitas descargar el conjunto tarball que el sitio proporciona (cuanto maacutes grande sea maacutes posibilidades tendraacutes de encontrar la clave) Descompriacuteme-lo en un directorio y obtendraacutes 1000 archivos hash cada uno nombrado de acuerdo con el SSID del punto de acce-so Tambieacuten necesitaremos instalar Cowpatty (httpbitly2awaJ2A) para poder procesar las tablas

SEGURIDAD WPA

Un ataque de diccionario wPA con Pyrit

Ataque wPA con tabla rainbow

XKCD obligatorio httpsxkcdcom538

ODROID MAGAZINE 12

Cuando todo esteacute listo inicia WifiPhisher especificando la interfaz de monitor y la interfaz hostapd

$ sudo airmon-ng start wlan0

$ sudo wifiphisher -jI mon0 -aI wlan1

Si todo va bien WifiPhisher te mostraraacute una lista de pun-tos de Acceso a engantildear y configuraraacute las reglas de iptables y DHCP y te preguntaraacute por el tipo de paacutegina web falsa que quieres que muestre A continuacioacuten procederaacute a desconectar los clientes y hacer que se conecten al punto de acceso falso y les mostraraacute algo similar a la Figura 5 Seraacute entonces cuando veas la contrasentildea en el inteacuterprete de comandos Ten en cuenta que estamos hablando de algo especialmente retorcido puesto que ya no estaacutes engantildeando soacutelo a los ordenadores sino tambieacuten a la gente real

Mantener tu WiFi seguraCon esto concluimos nuestro anaacutelisis sobre la seguridad

inalaacutembrica Estas son algunas pautas que deberiacuteas tener en cuenta para mantener tu wifi segura

bull No utilices tecnologiacuteas de encriptacioacuten obsoletas (WEP)bull No confiacutees demasiado en ocultar la red o usar listas de ac-ceso mAC ya que son muy deacutebiles y muy faacuteciles de evitar bull Desactiva la tecnologiacutea WPS en redes en las que fiacutesica-mente sea posiblebull Utiliza contrasentildeas largas que no esteacuten diccionarios Si tienes que usar las palabras del diccionario para que te sea maacutes faacutecil recordarlas (despues de todo eres un ser huma-no) combiacutenalas de forma aleatoria Una opcioacuten es utilizar la teacutecnica horse-battery-staple de xkcd (httpsxkcdcom936) esta herramienta httpbitly1cubp1J puede hacerlo de forma automaacuteticabull Antildeadir caracteres a una contrasentildea aumenta su seguri-dad bastante maacutes que usar un signo de puntuacioacuten espe-cial en contrasentildeas maacutes cortasbull Si es posible considera la posibilidad de utilizar WPA2-Enterprise en tu red domeacutesticabull No utilices nombres comunes para la red SSIDbull Reducir la intensidad de la sentildeal no te ayudaraacute puesto que el atacante siempre puede conseguir una antena mejor

Como siempre puedes compartir tus propias experiencias hacer preguntas o compartir problemas en el hilo de soporte en httpbitly2azoM5N

Es posible que hayas agotado todo lo que tienes a tu alcance para romper un punto de acceso WiFi en particular y aun asiacute no consigues resultados Es probable que tenga que esperar unos 3 millones de antildeos para que el ataque de fuerza bruta alcance el 1 asiacute que iquestqueacute podemos hacer Pues bien simple-mente tienes que atacar el punto de seguridad maacutes deacutebil de la cadena iexclEl ser humano

Un proyecto que tiene por objetivo simplemente ldquopregun-tarrdquo por la contrasentildea es WifiPhisher (httpbitly1wPdPPQ) El programa configura un punto de acceso abierto maleacutefico que clona el SSID del objetivo A continuacioacuten desautentifica to-dos los clientes del objetivo y espera a que se vuelvan a conec-tar Por casualidad (o aseguraacutendose de que tienes una mejor sentildeal) los clientes se conectaraacuten automaacuteticamente en su lugar a tu punto de acceso abierto Cuando intenten acceder a los recursos de Internet seraacuten redireccionados a un portal que se presenta como su router y le solicitaraacute su contrasentildea WPA (para mejorar la seguridad por supuesto) Una vez que se obtiene la contrasentildea se desconecta el punto de acceso y el cliente se co-necta sin que se perciba la diferencia a su red original Ves ndash es faacutecil Para conseguir esto necesitaraacutes dos adaptadores inalaacutem-bricos - uno que sea compatible con la inyeccioacuten (para desco-nectar continuamente a los usuarios del AP objetivo) y otro para hacerse pasar por el falso AP Para esta prueba he utilizado dos adaptadores Wifi Modulo 4 de Hardkernel

$ git clone httpsgithubcomsophronwifiphishergit

$ sudo apt-get install tcpdump hostapd

$ cd wifiphisher

$ sudo python setuppy install

Si aparece alguacuten error indicando que no encuentra setuptools instaacutelalo y vuelve a ejecutar el comando install

$ wget httpsbootstrappypaioez_setuppy -O - |

sudo python

Ten en cuenta que para que esto funcione necesitaraacutes con-figurar hostapd para que trabaje con tu tarjeta inalaacutembrica Tienes maacutes detalles en httpbitly2aLTF6w and httpbitly2aLTlnX

SEGURIDAD WPA

Los usuarios desprevenidos escribiraacuten su contrase-ntildea wPA en tu entorno de suplantacioacuten de red

ODROID MAGAZINE 13

En los uacuteltimos antildeos el tema del big data y de la ciencia de los datos se ha convertido en una tendencia muy importante en un sinfiacuten de in-

dustrias Las empresas de alta tecnologiacutea de Silicon Valley ya no son los uacutenicos proveedores de temas como Hadoop la regresioacuten logiacutestica y el aprendizaje de maquinas Estar familiarizado con las tecnologiacuteas del big data se estaacute convirtiendo en un requisito cada vez maacutes necesario en los empleos relacionados con la tecnologiacutea en cualquier parte Por desgracia y siendo realista la experiencia praacutectica con las tecnologiacuteas de big data normalmente implica tener acceso a un costoso cluacutester de ordenadores para ejecutar tus consultas Sin embargo la reciente revolucioacuten de los orde-nadores de placa reducida ha hecho que la informaacutetica distri-buida sea accesible a nivel personal y en educacioacuten para realizar tareas como esta y muchas otras

Imparto clases sobre disentildeo y mantenimiento de sistemas digitales y redes en un instituto franceacutes Durante los uacuteltimos 4 antildeos he ido sustituyendo todos los ordenadores de sobremesa de mi aula por ordenadores SBC principalmente por razones de espacio ya que la escuela estaacute cerca de la ciudad de Pariacutes y el espacio es muy caro iexclEl uso de ordenadores SBC deja maacutes

espacio en la mesa de trabajo del estudianteEmpeceacute con una Raspberry Pi pero pronto cambieacute al

ODROID-C1 tan pronto como estuvo disponible ya que la Pi no era lo suficientemente raacutepida para el trabajo en labo-ratorios (laboratorios GNS3 diferentes anaacutelisis de protocolos bus y configuracioacuten de los equipos de red) o simplemente para navegar por Internet Para el proacuteximo antildeo escolar ya habreacute cambiado la mitad de la clase al ODROIDC2 con un total de 10 ODROID-C1s y 8 ODROID-C2s

A la hora de preparar los laboratorios para los estudiantes tuve que usar el mismo equipo que ellos con el fin de asegurar-me de que todo funcionara sin problemas cuando los estudi-antes trabajasen en sus propios entornos de laboratorios Esto requeriacutea utilizar un ODROID en lugar de un ordenador por-

taacutetil x86 para eliminar cualquier diferencia de comportamiento en-tre ambos Para ser maacutes eficiente a la hora de preparar los laborato-rios parte de ellos los configuraba en casa y no en la escuela He in-tentado buscar algunas soluciones para fabricar un ordenador portaacutetil usando un ODROID de modo que se convirtiese en mi portaacutetil ODROID de ida y vuelta desde la escuela a casa Recorro 5 km hasta la escuela en bicicleta por lo que la solucioacuten teniacutea que ser ligera y compacta para transportarla

PORTATILODROID-C1 un PROyECTO CASERO A MEDIDA COn nOMbRE En CLAvE ldquoREDTOPrdquopor fabien Thiriet

PORTATIL ODROID

Portaacutetil REDTOP y vista trasera del mismo

ODROID MAGAZINE 14

RequisitosAl principio del proyecto elaboreacute una lista de requisitos

para el ordenador portaacutetil

bull Alimentado con 12V a traveacutes de un sistema de bateriacuteas solares en casa y con una fuente de alimentacioacuten exter-na 230V-12V en la escuelabull Bateriacutea Li-ion para cuando me esteacute moviendo con una autonomiacutea de unas 2 horas Algunos entornos de labo-ratorios en la escuela requieren monitorizar los buses CAN integrados en los vehiacuteculos de modo que se hace necesario el uso de bateriacuteasbull Pantalla LCD de 10rdquo como miacutenimobull Teclado y pantalla LCD montados en forma de ordena-dor portaacutetilbull GPIOs y conectores ODROID faacutecilmente accesiblebull Bluetooth maestroesclavo disponible puesto que ten-go muchos proyectos que funcionan con placas Arduino remotasbull RTC integrado porque no siempre estoy conectado a Internet

Proceso de fabricacioacutenAl principio encontreacute un Motorola Lapdock 100 en eBay

y lo utiliceacute durante varios meses Tras solucionar los problemas HDMI entre el ODROID y el Lapdock ya que el Lapdock se apagaba despueacutes de 20 segundos si no se conectaba nada a su puerto USB todo funcionoacute correctamente Se trataba de una solucioacuten muy ligera pero no lo suficientemente coacutemoda para un uso diario ya que la pantalla LCD soacutelo teniacutea 10rdquo y el teclado era muy pequentildeo Tambieacuten echeacute un vistazo a PiTop pero el precio era muy elevado para lo que estaba dispuesto a gastar Lo que realmente necesitaba era simplemente un gran panel LCD y un buen teclado montados en conjunto

Decidiacute buscar en eBay una pantalla LCD maacutes grande y en-contreacute un modelo de 133rdquo muy econoacutemico por 85 euro con en-viacuteo e impuestos incluidos La pantalla tiene una buena resolu-cioacuten de 1900x600 y los colores se ven muy bien Sin embargo

PORTATIL ODROID

el panel LCD se vendiacutea sin marco de modo que necesita algo para solventar esta cuestioacuten

Al mismo tiempo mi hijo ha conseguido lo que ha sontildeado durante mucho tiempo por su 15 cumpleantildeos una impresora 3D personal de modo que ya no teniacutea que utilizar una que teniacutea en la escuela Eacutel es muy bueno usando software CAD como SolidWorks y me propuso disentildear un chasis para el por-taacutetil Por desgracia la placa de impresioacuten 3D con un tamantildeo maacuteximo de 200 mm era demasiado pequentildea para imprimir un marco LCD de 133rdquo y un marco del teclado Despueacutes de varias reflexiones decidimos dividir los marcos de la LCD y del teclado en cuatro partes y unirlos con los clips de montaje im-presos en 3D y pegamento Todas las partes individuales eran inferiores a los 200 mm Si te fijas bien en las fotos del marco de la LCD de los clips y del teclado veraacutes la separacioacuten entre las piezas montadas El disentildeo CAD necesita alrededor de 2 semanas de trabajo para asegurarse de que todo encaja bien

Durante el disentildeo el principal problema que nos preo-cupaba era las bisagras del panel LCD que teniacutea que ser lo suficientemente fuerte para que me permitiera abrir y cerrar con facilidad el ordenador portaacutetil Esto nos permitiacutea crear una aacutengulo perfecto entre el marco del panel LCD y el marco del teclado Para que pudiera encajar correctamente el teclado

Portaacutetil RedTop visto desde arriba Versioacuten inicial de portaacutetil con un ordenador motorola Lapdock 100

El modelo 3D del marco de la LCD

ODROID MAGAZINE 15

en su marco lo desmontamos retirando las cubiertas superior e inferior Elegimos el color rojo para la fibra de impresioacuten 3D para que el ordenador fuese maacutes divertido y llamativo 30 horas maacutes tarde teniacuteamos impresas todas las partes del chasis Las pegamos y atornillamos el panel LCD y el teclado dentro de sus respectivos marcos El siguiente paso fue colocar todas las placas y moacutedulos en el interior del chasis con firmeza las in-sertamos en el plexiglaacutes

El plexiglaacutes fue cortado para que encajara en el espacio crea-do en la etapa de disentildeo CAD para cada marco De esta forma todo el mundo puede apreciar el engranaje del portaacutetil lo cual supone una gran ventaja a la hora de ensentildear informaacutetica El paso final fue cablear todo siguiendo el diagrama por bloques

Acabamos teniendo un ordenador portaacutetil potente y fiable iexclMis estudiantes de la escuela se sorprendieron cuando vieron este portaacutetil poco convencional por primera vez

BateriacuteaAhora disponiacuteamos de un nuevo ordenador portaacutetil pero

sin ninguacuten tipo de bateriacutea recargable de modo que maacutes o me-nos es inuacutetil En primer lugar necesitaacutebamos estimar la ca-pacidad de la bateriacutea necesaria Para tal fin hicimos algunas pruebas de medicioacuten del amperaje en diferentes condiciones de uso El maacuteximo amperaje se alcanza cuando el C2 se pone en marcha con un pico de 11A Durante el funcionamiento nor-mal se mantiene justo por debajo de 1A con un dongle USB WIFI un moacutedulo RTC un adaptador de ratoacuten inalaacutembrico y el moacutedulo Bluetooth conectados El consumo total de energiacutea del ordenador portaacutetil es de alrededor de unos 12W

Mi hijo rescatoacute una vieja bateriacutea de litio recargable de un ordenador portaacutetil de Lenovo (L412) y pudo extraerle las nueve ceacutelulas disponibles dentro del paquete de bateriacuteas La mayoriacutea de las veces este tipo de paquetes de bateriacuteas ya no funcionan no por la propia bateriacutea sino debido a un defectuoso controlador de bateriacuteas integrado Utilizamos 3 y las conectamos en serie Esto nos proporcionaba 3 x 37 V un total de 111 voltios cuando la bateriacutea estaacute casi descargada y maacutes de 12V cuando estaacute completa-mente cargada La placa controladora LCD funciona sin ninguacuten problema a 11V Cada ceacutelula tiene 2200 mAh de capacidad de modo que la autonomiacutea del portaacutetil se acerca a las 2 horas Esto era suficiente para alcanzar el objetivo que nos propusimos al inicio del proyecto

Para volver a cargar las 3 ceacutelulas utilizamos un banco de bate-riacuteas solar de 12V conectada a traveacutes de un moacutedulo de sobreali-mentacioacuten que estaacute reajustado a un liacutemite de corriente de 126 V y 1A Con nuestro modelo particular de bateriacuteas podemos ajustar tanto la tensioacuten de salida como la corriente Cuando es-

PORTATIL ODROID

Clips de LCD

marco del teclado

Chasis completamente montado

ODROID MAGAZINE 16

cribiacute este artiacuteculo la bateriacutea auacuten no estaba colocada dentro del RedTop pero la teniacuteamos fuera para realizar pruebas maacutes ex-haustivas Una vez que completemos las pruebas colocaremos las 3 celdas debajo del teclado en un espacio reservado para tal fin

MaterialesEsto es lo que utiliceacute para montar mi portaacutetil ODROID-C1

Panel LCD HDMI-VGA de 133rdquo con audio httprebaycomAYZ5JU

Teclado mecaacutenico Zalman httpwwwamazonfrdpB00LHSPCS4

Cable OTG USB httpwwwamazonfrdpB007MNZ8VY

Transformador 12V-5V 3A httpwwwamazonfrdpB00JGFEQLE

Moacutedulo Bluetooth HC05 maestroesclavo httpswwwamazonfrdpB013STJSES

Moacutedulo RTC PCF8563 httpwwwamazonfrdpB01DB8JECC

Mini altavoz httprebaycombwOCZv

Impresora 3D httpwwwdagomafrproduitimprimante-dis-

covery200

Filamentos PLA para impresora 3D httpwwwamazonfrdpB00UMV7ANM

Clavijas de corriente DC de 55mm httpwwwamazonfrdpB00O1Y1X70

Interruptor de alimentacioacuten httpwwwamazonfrdpB00HUHBS1Q

Pack de bateriacuteas de ordenador portaacutetil como esta httpwwwamazonfrdpB00TVOC55Y

Conversor de sobrealimentacioacuten (4V-12V) httprebaycomw3FgNH

Varios tornillos arandelas y cables05m de PlexiglassSuper glue

PORTATIL ODROID

La placa controladora de la LCD

JUEGOS ANDROID

PAC-MAn 256iquestun juEGO CLASICO iquestunA nuEvA PERSPECTIvA DEL GEnERO DEL CORREDOR In-TERMInAbLE iexclDESCubRELOpor Bruno Doiche

Suele decirse que los claacutesicos nunca mueren pero algunos pueden quedarse bastante

anticuados Cuando era un nintildeo el Pac-Ma era un juego cuyos graacuteficos y jugabilidad eran totalmente acepta-bles para los estaacutendares de la deacutecada de los 80 A pesar de que todaviacutea se puede disfrutar del original Pac-Man hoy diacutea estaraacutes de acuerdo conmigo en que se queda algo corto en cuanto a funcionalidad incluso si aceptas el reto de jugar al modo aacutercade lo suficiente como para encontrarte con el miacutetico error del nivel 256 que soacutelo los mejores juga-dores de Pac-Man son capaces de ver

Sin embargo en la partida 256 del Pac-Man el error es la principal caracteriacutestica te prosiguen como una ola implacable desde la parte inferior de la pantalla Te hace volver a pensar lo que realmente significa correr por tu supervivencia en un labe-rinto lleno de fantasmas cada uno con su propia personalidad Exige un control muy preciso y pensar muy raacutepido para lograr salir y mantenerte un paso por delante de tus enemigos fantas-mas Ahora no tienes que jugar a los 255 niveles de Pac-Man para llegar a uno de los niveles maacutes elitistas de la historia del juego Puedes instalarlo desde Play Store en

httpbitly2cLaD5q

Un gran juego tan adictivo como lo fue en sus primeros diacuteas arcade

ODROID MAGAZINE 17

book se puede compartir faacutecilmente permitiendo una faacutecil visualizacioacuten en liacutenea y en nuestro caso gestionar la creacioacuten y el enviacuteo de aplicaciones Spark al cluacutester Los notebooks de Jupyter son una forma muy comuacuten de usar Apache Spark ya que permite al usuario centrarse especiacuteficamente en el anaacutelisis de datos en lugar de preocuparse de las herramientas o de la infraestructura que hay detraacutes

Instalar Hadoop File SystemNuestra primera tarea es instalar Java en cada nodo del

cluacutester Instalaremos el uacuteltimo software Java 8 de Oracle EL cual requiere la aceptacioacuten de la licencia durante la instalacioacuten Debido a esto necesitas iniciar sesioacuten en cada nodo de forma independiente y ejecutar el instalador Una vez alliacute crearemos una nueva cuenta de usuario desde la que ejecutaremos todo

$ sudo add-apt-repository ppawebupd8teamjava

$ sudo apt-get update

$ sudo apt-get install oracle-java8-installer

$ sudo apt-get install rsync

$ sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hduser

$ sudo usermod -aG sudo hduser

Ahora necesitamos instalar Hadoop Teacutecnicamente po-driacuteas utilizar la distribucioacuten Hadoop disponibles en el sitio web de Apache pero no estaacute compilada para la CPU ARM v71 de nuestros XU4s Puesto que en su mayor parte es Java es genial ya que se ejecutaraacute sobre JVM que acabamos de instalar en cada nodo Sin embargo hay partes de Hadoop que fueron es-

En el anterior artiacuteculo que escribiacute para ODROID Maga-zine en httpbitly2bHFij7 analice el desarrollo de un cluacutester informaacutetico autoacutenomo con nodos ODROID

XU4 En este artiacuteculo explicaremos coacutemo hacer un buen uso de ese cluacutester instalando Apache Spark y el sistema de ficheros Hadoop asiacute como tambieacuten la forma de acceder a tu cluacutester a traveacutes de la aplicacioacuten web Jupyter

Hadoop File System (HDFS) es uno de los sistemas de ar-chivos distribuidos maacutes populares y maacutes utilizados que existen hoy en diacutea Un sistema de archivos distribuido (DFS) es una aplicacioacuten para cluacutester que agrupa todas las unidades de disco duro dentro de un cluacutester para que puedan ser tratadas como una uacutenica unidad de almacenamiento de cara a sus clientes ex-ternos Utilizar un DFS tiene dos ventajas muy importantes En primer lugar y lo maacutes evidente es que te permite guardar y trabajar con grandes conjuntos de datos que se almacenan en maacutes de un disco duro del cluacutester En segundo lugar un DFS bien disentildeado proporciona mayor resistencia de datos en el nodo o ante fallos de disco mediante la replicacioacuten de bloques de datos en varias unidades del cluacutester En nuestro cluacutester XU4 los discos duros son las tarjetas MicroSD que fueron instaladas y configurada en nuestra anterior guiacutea

Apache Spark es una moderna plataforma de anaacutelisis de Big Data utilizada ampliamente en la industria del anaacutelisis de los grandes voluacutemenes de datos Proporciona herramientas de alto nivel muy simple para manipular y analizar datos ya sea a traveacutes de SQL o mapreduce ademaacutes de usar lenguajes de pro-gramacioacuten comunes tales como Python Scala y Java La pecu-liaridad maacutes significativa de Apache Spark es el uso del fondo de memoria RAM del cluacutester para almacenar objetos de datos intermedios que aceleran significativamente el procesamiento de datos Aunque los 2 GB de RAM integrados en el XU4 po-driacutean parecer un poco austeros en comparacioacuten con las grandes cantidades de memoria en un nodo de un cluacutester industrial hay espacio suficiente para hacer algunas cosas interesantes con Apache Spark

Jupyter Notebook es una aplicacioacuten web que te permite coacute-modamente aprovecharte de diversos lenguajes y plataformas de caacutelculo con tu cluacutester a traveacutes de una interfaz web El note-

InSTALAR HADOOP y SPARK En un CLuSTER ODROID-Xu4por michael Kamprath

HADOOP FILE SYSTEM

ODROID MAGAZINE 18

-l root ldquomkdir -p opthadoop-272rdquo

$ sudo rsync -avxP opthadoop-272

rootslave1opt

$ sudo rsync -avxP opthadoop-272

rootslave2opt

$ sudo rsync -avxP opthadoop-272

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop opthadoop-272rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquoln -s opthadoop-272 usrlocalhadooprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquomkdir -p datahdfstmprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop datahdfsrdquo

El uacuteltimo paso en la instalacioacuten de Hadoop es formatear el nodo como un HDFS

$ usrlocalhadoopbinhdfs namenode -format

Instalar Apache SparkVamos a utilizar un meacutetodo similar al anterior para instalar

Apache Spark En primer lugar vamos a utilizar Python 3 para acceder a Spark y a algunas librerias clave de Python por lo que tendraacutes que iniciar sesioacuten en cada nodo y ejecutar

$ sudo apt-get install python3 python3-pip

$ sudo pip3 install numpy

$ sudo pip3 install urlparse

Despueacutes en el nodo maestro instala Apache Spark

$ cd opt

$ sudo wget httpapacheclazorgspark

spark-162spark-162-bin-hadoop26tgz

$ sudo tar xvzf spark-162-bin-hadoop26tgz

$ sudo chown -R hduserhadoop

spark-162-bin-hadoop26

$ sudo ln -s optspark-162-bin-hadoop26

usrlocalspark

Al igual que en nuestra instalacioacuten de Hadoop necesitas antildeadir algunos archivos de configuracioacuten al directorio usrlo-calchispasconf Puedes localizar los archivos de configuracioacuten necesarios en mi repositorio GitHub (httpbitly2b4GnDU)

Una vez que Spark haya sido configurado en el nodo ma-

critas en C para que se ejecutaran maacutes raacutepido Si una instalacioacuten Hadoop no tiene estas libreriacuteas compiladas en la plataforma en la que estaacute se utilizaraacuten automaacuteticamente las equivalentes en Java por lo que seguiraacute funcionando pero de un modo maacutes lento Para este proyecto he desarrollado una distribucioacuten de la uacuteltima versioacuten de Hadoop para el procesador ARM v71 va-mos a descargar e instalar mi distribucioacuten En el nodo maestro inicia sesioacuten con la cuenta ldquohduserrdquo recieacuten creada y ejecuta los siguientes comandos para instalar Hadoop y configurar los no-dos del cluacutester para utilizar SSH sin contrasentildea Ten en cuenta que tendraacutes que iniciar sesioacuten en cada nodo esclavo desde el nodo maestro para configurar completamente el inicio de se-sioacuten sin contrasentildea

$ cd

$ ssh-keygen -t rsa -P ldquordquo

$ cat $HOMEsshid_rsapub gtgt $HOMEsshauthorized_

keys

$ ssh hduserlocalhost

$ exit

$ ssh hdusermaster

$ exit

$ ssh-copy-id hduserslave1

$ ssh hduserslave1

$ exit

$ ssh-copy-id hduserslave2

$ ssh hduserslave2

$ exit

$ ssh-copy-id hduserslave3

$ ssh hduserslave3

$ exit

$ cd opt

$ sudo wget httpdiybigdatanetdownloads

hadoophadoop-272armhftargz

$ sudo tar xzf hadoop-272armhftargz

$ sudo chown -R hduserhadoop hadoop-272

$ cd usrlocal

$ sudo ln -s opthadoop-272 hadoop

$ cd usrlocalhadoop

Ahora tenemos que crear los archivos de configuracioacuten para Hadoop Por comodidad ya he creado estos archivos que se de-ben instalar en el directorio usrlocalhadoopetchadoop y los he colocado a mi repositorio GitHub en httpbitly2bBehj4

Estos archivos de configuracioacuten tienen una configuracioacuten de cluacutester similar a la descrita en mi anterior artiacuteculo Es po-sible que tengas que modificarlos si has desarrollado un cluacutester diferente Ahora que el software Hadoop estaacute configurado en el nodo maestro lo vamos a copiar en los nodos esclavos

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

HADOOP FILE SYSTEM

ODROID MAGAZINE 19

estro coacutepialo a los esclavos de tu cluacutester

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo -l root

ldquomkdir -p optspark-162-bin-hadoop26rdquo

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave1opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave2opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquochown -R hduserhadoop

optspark-162-bin-hadoop26rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquoln -s optspark-162-bin-hadoop26

usrlocalsparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquomkdir -p datasparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquochown hduserhadoop datasparkrdquo

Instalar Jupyter NotebookLa instalacioacuten Jupyter Notebook es relativamente simple en

comparacioacuten con lo que hemos hecho hasta ahora Ugravenicamente en el nodo maestro ejecuta los siguientes comandos

$ sudo mkdir datajupyter

$ sudo chown -R hduserhadoop datajupyter

$ mkdir ~notebooks

$ sudo pip3 install jupyter

Para hacer visualizaciones en un notebook necesitamos compilar e instalar matplotlib Tambieacuten es uacutetil tener instalado numpy para facilitar la informaacutetica cientiacutefica a traveacutes de Py-thon Ten en cuenta que esto va a llevar un tiempo

$ sudo apt-get build-dep matplotlib

$ sudo pip3 install matplotlib

$ sudo pip3 install numpy

Ejecutar Hadoop Spark y Jupyter

Para logar que todo se ejecute usa los siguientes comandos

$ usrlocalhadoopsbinstart-dfssh

$ usrlocalsparksbinstart-allsh

$ XDG_RUNTIME_DIR=rdquodatajupyterrdquo PYSPARK_DRIVER_

PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=rdquonotebook

--no-browser --port=7777 --notebook-dir=homehduser

notebooksrdquo usrlocalsparkbinpyspark --packages

comdatabricksspark-csv_210110 --master spark

master7077

Puedes optar por convertir esta secuencia de comandos en un script bash independiente o simplemente puede crear un alias para este uacuteltimo comando Te dejo elegir cualquiera de

estas opciones como ejercicio Una vez en funcionamiento in-troduce en el navegador del ordenador httpltdireccioacuten IP del cluacutestergt7777 deberiacutea ver la interfaz Jupyter

Vamos a ejecutar una tarea de recuento de palabras en

nuestro sistema big data de XU4 Crea un nuevo notebook Python 3 haciendo clic en el botoacuten New en la parte superior derecha de la paacutegina web Ahora veraacute un espacio vaciacuteo como el que se muestra en la Figura anterior

Abre una nueva sesioacuten SSH en el nodo principal y antildeade lo siguiente

$ wget httpnorvigcombigtxt

$ hdfs dfs -mkdir usermichael

HADOOP FILE SYSTEM

Paacutegina web principal de Jupyter

Bloc de notas de Jupyter

ODROID MAGAZINE 20

$ hdfs dfs -put bigtxt usermichaelbigtxt

$ hdfs dfs -ls usermichael

Vuelve al notebook recieacuten creado antildeade el siguiente coacutedigo Python en la primera celda

from operator import add

blog_data = sctextFile(lsquohdfsmaster9000user

michaelbigtxtrsquo)cache()

counts = blog_dataflatMap(lambda x xsplit(lsquo lsquo))

map(lambda x (x 1))reduceByKey(add)

A continuacioacuten pulsa Shift + Enter para iniciar el trata-miento de las celdas Una nueva celda apareceraacute en el notebook de Jupyter Teacutecnicamente todaviacutea no ha sucedido nada dentro de Spark excepto crear un plan de consulta para ejecutar el recuento de palabras frente al conjunto de datos del blog que ya hemos colocado en HDFS Spark no hace ninguacuten caacutelculo hasta que no haga falta materializar los resultados La forma maacutes comuacuten de hacerlo es mostrar una parte de los resultados En la siguiente celda del notebook introduzca el coacutedigo y pulse Shift-Enter

countstake(100)

Veraacutes un asterisco junto a la celda en la que hemos intro-ducido el coacutedigo anterior Este asterisco seguiraacute activo mien-tras Spark esteacute haciendo sus caacutelculos Si vuelves a la sesioacuten de terminal en la que lanzaste el software Jupyter veraacutes el regis-tro log de Spark realizando sus caacutelculos Por otra parte si es-

cribes en tu navegador web la direccioacuten httpltdireccioacuten IP del cluacutestergt4040 puedes analizar el estado interno de Spark uti-lizando su interfaz de aplicacioacuten Es probable que escuches a-rrancar el ventilador de la CPU del XU4 durante los caacutelculos

Cuando los caacutelculos finalicen los primeros 100 valores de

los resultados se mostraraacuten en el notebook de JupyterCambia el nombre del notebook haciendo clic en la cadena

ldquo Untitledrdquo junto al logo de Jupyter en la parte superior izqui-erda del notebook Puede seguir trabajando con los datos antildea-diendo maacutes celdas que contengan maacutes coacutedigo python Spark Hay muchos y excelentes recursos en la web para aprender maacutes sobre Apache Spark incluyendo httpsparkapacheorg

Para guardar y cerrar el notebook haz clic en el menuacute ldquoFilerdquo en la paacutegina y selecciona ldquoClose and Haltrdquo Para finalizar Jupy-ter pulsa Control-C dos veces en la ventana de terminal desde el cual se lanzoacute Una vez que el software Juypter se detenga puedes apagar Spark y HDFS con

$ usrlocalsparksbinstop-allsh

$ usrlocalhadoopsbinstop-dfssh

Lecturas recomendadasSi deseas aprender maacutes sobre los temas tratados en este artiacute-

culo puedes utilizar los siguientes recursos para obtener maacutes informacioacuten sobre el software asiacute como mis conocimientos so-bre Big Data

Mi blog httpdiybigdatanetApache Hadoop httphadoopapacheorgApache Spark httpsparkapacheorgJupyter Notebook httpjupyterorg

HADOOP FILE SYSTEM

Los caacutelculos del recuento de palabras se han completado

ODROID MAGAZINE 21

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 5: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

INDICE

KODIBUNTU - 31

ORDENADOR PORTATIL CON ODROID-C1 - 14

JUEGOS ANDROID PAC-mAN 256 - 17

DISPOSITIVO IOT - 27

SCRIPTS PARA BACKUP - 22

JUEGOS LINUX SEGA amp CDEmU - 35

ORDENADOR PARA COHE - 32

SEGURIDAD wPA - 10

OBTURADOR DE LA CAmERA - 41

HADOOP fILE SySTEm - 18

PIRATEAR POKEmON GO - 6

CARCASA XU4 - 39

CONOCIENDO UN ODROIDIAN - 43

VU7 PLUS - 42

HECKEAR POKEMOn GOCOn un ODROIDCOMO LOGRAR SuPLAnTAR EL GPSpor Andrew Ruggeri

POKEMON GO

Pokemon Go es un juego muy popular para teleacutefonos moacuteviles el cual ha sido descargado maacutes de 100 millones de veces por jugadores de todo el mundo Utiliza la realidad aumentada para hacer que explores el mundo real con

el objeto de capturar pokemon acudiendo a puntos reales en los que estaacute ubicado lo bueno Cuanto maacutes camines captures pokemon y entrenes en gimnasios maacutes puntos obtendraacutes

El juego utiliza el GPS del teleacutefono para registrar el movimiento de los jugadores y la distancia recorrida Aquiacute es donde el ldquotrucordquo entra en juego Quisiera disculparme por el tiacutetulo ya que en realidad no se trata de un truco sino maacutes bien una forma de en-gantildear las funciones de geolocalizacioacuten del juego Nos centraremos en el enviacuteo de datos GPS registrados o simulados en Android Lo bueno de los ODROIDs es que no soacutelo ejecutan Android sino que tambieacuten son altamente configurables Desde un punto de vista del hardware el cabezal principal GPIO tiene varias interfaces en serie Ademaacutes el software es muy faacutecil de configurar y si fuera necesario podemos acceder al coacutedigo fuente completo de Android

Por lo tanto iquestQueacute es lo que hace que este truco del GPS y ODROID sea ta in-teresante Bueno podemos decir que tiene principalmente dos ventajas Reciente-mente Niantic Inc la compantildeiacutea que hay detraacutes de Pokemon Go ha comenzado a perseguir de un modo muy agresivo a los ldquobotsrdquo verificando el uso de una API Cualquier cuenta detectada que use un bot seraacute bloqueada de forma permanente El meacutetodo GPS que describimos aquiacute utiliza la aplicacioacuten oficial de Android lo que significa que toda API que se conecte al servidor Niantic no seraacute delimitada E-xisten varias versiones ldquocraqueadasrdquo de Pokemon Go para Android que permiten al usuario hacer trampas y moverse por el juego sin tener que desplazarse en el mundo real Sin embargo algunas de estas versiones ldquocraqueadasrdquo ejecutan coacutedigos mali-ciosos y peor auacuten requieren acceso a root para instalarse de modo que representan un gran problema de seguridad

GPS sobre AndroidLos ODROIDs tienen por defecto todos los drivers necesarios para trabajar

con el tiacutepico GPS NMEA NMEA es el protocolo estaacutendar utilizado para comu-nicar datos GPS Por suerte el protocolo NMEA es utilizado tanto en modo serie como en modo texto esto hace que sea extremadamente funcional porque es faacutecil de depurar y emular NMEA es muy versaacutetil porque ofrece informacioacuten sobre los sateacutelites disponibles y utilizados la velocidad los waypoints los errores de posicioacuten y mucha maacutes informacioacuten que se puede transmitir

Los ODROIDs en siacute mismos no cuenta con una unidad GPS integrada aunque una interfaz muy comuacuten para muchas unidades de GPS externas es la USB como por ejemplo la que usa el moacutedulo GPS de Hardkernel Una vez conectado el moacutedulo se vincula normalmente en la interfaz serie disponible en devttyUSB0 o devttyACM0 Android cuenta con un archivo en la particioacuten del sistema root

ODROID MAGAZINE 6

conocido como buildprop que almacena la configuracioacuten de muchos y diferentes aspectos de Android Dos de estos ajusten inciden directamente en el fun-cionamiento del GPS

rokernelandroidgps=dev

ttyACM0

rokernelandroidgps

speed=9600

El primer valor ldquorokernelandroidgpsrdquo es la ubicacioacuten del flujo de datos en serie de NMEA que normalmente es tty El se-gundo valor es la velocidad del flujo en serie Aquiacute es donde las cosas se vuelven interesantes Si podemos ajustar la ubicacioacuten GPS tambieacuten podemos intro-ducir nuestros propios datos GPS NMEA lo cual nos permite engantildear al GPS En la gran mayoriacutea de mis pruebas utilice un ODROID-C2 conectado viacutea UART a mi ordenador portaacutetil Esto me permitiacutea cambiar raacutepidamente en el fichero buildprop el paraacutemetro tty del GPS a ldquodevttyS1rdquo el puerto TTY para UART1 sobre el C2

El engantildeoHe reescrito esta seccioacuten varias veces a la vista de los recientes acontecimientos

y medidas que Niantic ha tomado hacia los ldquotrampososrdquo En lugar de escribir el coacutedigo que he desarrollado me voy a centrar en varias teacutecnicas y herramientas que cumplen con el mismo principio baacutesico El meacutetodo maacutes sencillo es grabar y reproducir un registro log de datos NMEA En el contexto de Pokemon Go darse un paseo por una zona con una buena cantidad de pokestops gimnasios y Pokeacutemon Existen varias aplicaciones de Android que se pueden instalar en tu teleacutefono suponiendo que tiene un teleacute-fono Android que te permiten guardar los datos GPS NMEA en un registro log Mueve el archivo log al ordenador portaacutetil conectado al ODROID Se en-viacutea una liacutenea de texto del archivo log NMEA al puerto serie a una velocidad de alrededor de 1 liacutenea cada 100 o 200 ms Un simple script Python puede ha-cer esto faacutecilmente Este meacutetodo no es de lo maacutes increiacuteble pero es muy simple

POKEMON GO

flujo de datos GPS NmEA en serie

Conexioacuten USB-UART de ODROID

ODROID MAGAZINE 7

POKEMON GO

y hace bien su trabajo El hecho de que estos regis-tros log representen datos reales es una gran ventaja

La segunda opcioacuten es utilizar un simulador GPS que se ejecute en el ordena-dor portaacutetil y bombardear con datos GPS ficticios al ODROID Existen diversas herramientas de simulacioacuten GPS que incluyen interfaces muy buenas Me he dado cuenta que muchas de ellas normalmente enviacutean los datos GPS NMEA simulados a traveacutes de la conexioacuten TCP o UDP Mi solucioacuten para esto simplemente fue escribir un programa para leer desde un puerto local y luego enviar el contenido del paquete a la consola o al puerto serie Una cuestioacuten a la hora de crear datos GPS ficticios tener mucho cuidado con las distancias y la velocidad Recuerda que estaacutes intentando imitar las condiciones del mundo real asiacute que si saltas de una ciudad a otra o de un continente a otro vas a levantar sospechas

Una vez que tengas tu fuente de datos GPS seleccionada y preparada puedes pasar al siguiente paso Para una depuracioacuten raacutepida y faacutecil de los datos GPS en Android tienes algunos programas al final de esta guiacutea Te recomiendo que instale alguno te ayudara bastante con la depuracioacuten y la comprobacioacuten de errores antes de iniciar Pokemon Go

Configurar Android y ODROIDComo ya he dicho la configuracioacuten es bastante simple y consiste en tener un or-

denador portaacutetil o incluso otro ODROID para que actuacutee como fuente de datos GPS Este es el dispositivo que enviaraacute los datos GPS precargados o falsos al ODROID con Android El ordenador portaacutetil estaacute conectado al puerto UART del ODROID o a cualquier otro puerto serie En mi configuracioacuten que se muestra en la Figura anterior tengo un convertidor USB a UART conectado al puerto UART1 del C2

El software para Android es miacutenimo y soacutelo requiere un cambio raacutepido en la con-figuracioacuten y en el archivo buildprop del que he hablado antes Asumiendo que tienes instalado Google PlayStore la instalacioacuten de Pokemon Go es muy simple y soacutelo

Pokemon Go ejecutandose sobre el sistema de suplantacioacuten de geolocalicacioacuten

ODROID MAGAZINE 8

POKEMON GO

requiere unos cuantos clics Si no lo tienes instalado puedes instalarlo siguiendo las sencillas instrucciones de Hardkernel en httpbitly2aWS696 Tuve algunas difi-cultades para interactuar con la aplicacioacuten real Pokemon Go a la hora de usar un teclado y un ratoacuten Me di cuenta que algunos botones no funcionan al ser presio-nado Termineacute por usar una pantalla taacutectil y no volviacute a tener ninguacuten problema

Hay algunas cosas que debes cambiar en la configuracioacuten de tu Android Lo pri-mero que tienes que hacer es entrar en Settings-gtDeveloper Options y desactivar la casilla ldquoAllow mock locationsrdquo que se encuentra en la seccioacuten ldquoDebuggingrdquo Te daraacutes cuenta de que sigue marcada cuando Pokemon Go muestre un error de localizacioacuten GPS Una vez desmarcada la opcioacuten el error desapareceraacute La segunda cosa que tienes que cambiar estaacute en la paacutegina Locatioacuten de los ajustes A continuacioacuten haz clic en la opcioacuten superior ldquoModerdquo apareceraacuten tres opciones la que tienes que seleccionar es ldquoDevice Onlyrdquo Esto haraacute que se use uacutenicamente la informacioacuten de localizacioacuten del GPS descartando cualquier otra fuente

NotasUna vez que has enviados los datos GPS a tu ODROID y tienes tu buildprop

bien configurado para ver el puerto serie correcto puedes seguir adelante y abrir Pokemon Go Asumiendo que tienes tus datos que emulan el movimiento deberiacuteas ver a tu ldquotrainerrdquo pokemon empezando a caminar en el juego Antes de continuar quisiera hacer hincapieacute en dos puntos importantes El primero y maacutes importante estaacutes violando los teacuterminos del juego al hacer esto Si te descubren Niantic tiene todo el derecho a bloquear permanentemente tu cuenta El segundo punto en el que quiero incidir es que se trata soacutelo de un juego Si se llega a un punto donde el juego tiene que automatizarse para poder disfrutar de eacutel es probable que no valga la pena jugar Como todas las cosas se recoge lo que se siembra y espero que esta guiacutea te sirva sobre todo para adquirir conocimientos uacutetiles acerca de los sistemas GPS y Android

Enlaces uacutetiles

Apps de informacioacuten GPS para Android httpbitly2bBdoXs Esta es el que yo usohttpbitly2br7DNK Igual de buena con una interfaz muy limpia

Analizador y generador NmEA httpbitly1FjZRPk Uno de los mejores generadores simple de usar e

incluye algunos ejemplos baacutesicos Se le echa en falta un mensaje GPGLL pero es insignificante Este es el que yo utiliceacute para mi simulador El meacutetodo maacutes simple para fijar dos puntos de paso es tener el programa con un incremento automaacutetico a una velocidad determinada

Existen unos cuantos simuladores para Linux y mucho maacutes para Windows Una raacutepida buacutesqueda en Google con ldquo GPS Simulatorrdquo o ldquo GPS NMEA Simu-latorrdquo te los mostraraacute No pude encontrar uno que fuera gratuito y de coacutedigo abierto aunque si uno pre-compilado gratuito muy simple y que estaacute dis-ponible en httpitly2bBfXcm

Maacutes informacioacuten sobre NMEA GPShttpaprsgidsnlnmeahttpbitly1g91wIE

ODROID MAGAZINE 9

asiacute como Websterrsquos English Dictionary Simplemente son coleccio-nes de palabras que tienen alguacuten significado para las personas o que hayan sido utilizadas como contrasentildeas con an-terioridad como se suelen apreciar en vulneraciones de seguri-dad Por lo general los diccionarios para descifrar la contrasentildea incluyen muchos maacutes teacuterminos que un diccionario estaacutendar porque tambieacuten tienen que incluir palabras del argot (como Yolo) o palabras mal escritas habitualmente (como aprentice) Tambieacuten incluyen nombres propios (como Andreacutes) nombres de personajes o lugares ficticios (como Pellenor Fields) o teacutermi-nos teacutecnicos (como el aacutecido desoxirribonucleico) Una buena fuente de estas palabras es la Wikipedia (que viene en diferen-tes idiomas) o incluso los subtiacutetulos de peliacutecula que se puede obtener en grandes cantidades en httpbitly2a1g42j

Kali Linux viene con algunos diccionarios por defecto que puedes utilizar o buscar en Internet listas de palabras uacutetiles

RockYou (134M) httpbitly1wtmeYADarkc0de (18M) httpbitly1pwlvJJLista de diccionarios httpbitly2ayDRaPTorrents lista de palabras WPA-PSK httpbitly2azrOqN 170K de palabras WPA httpbitly2as46gm 1 milloacuten de palabras httpbitly2a1geH4

En nuestros anteriores artiacuteculos atacamos las redes WEP y redes con WPS activado pero ahora es el momento de atacar la tecnologiacutea maacutes segura de las redes inalaacutembri-

cas el cifrado WPA Como siempre pide el consentimiento del propietario de la red antes de intentar romper su red y asiacute evitar problemas legales despueacutes iexclEs mejor prevenir que curar cuando se prueban las cosas

Ataques de Diccionario - Crear listas de palabras

Dado que la gente tiene fama por ser muy deficiente a la hora de elegir contrasentildeas seguras la mejor tecnica para romper la mayoriacutea de las contrasentildeas es ejecutar un ataque de diccio-nario

La complejidad de los ataques de diccionario reside en con-

seguir palabras correctas que sean relevantes para tu objetivo Por ejemplo si estaacutes atacando una red WiFi alemana es posible que quieras probar palabras en alemaacuten (iexclalgunas son muy lar-gas) Si estaacutes atacando un punto de acceso de un centro meacutedico puedes probar con teacuterminos meacutedicos No existe el diccionario ldquoperfectordquo ndash todo depende de tus necesidades Puedes encon-trar amplia informacioacuten sobre diccionarios con vistas a realizar ataques aquiacute httpbitly2aLS6Fx

No debemos confundir el teacutermino ldquodiccionariordquo con algo

ASuMIR EL RIEGO DE PEnETRAR LAS REDES wPA - PARTE 2por Adrian Popa

SEGURIDAD WPA

La busqueda de la palabra correccta

iexclEl Ataque de diccionario iexclEs suacuteper efectivo

ODROID MAGAZINE 10

tos praacutecticos inserta un Enter despueacutes de cada palabra) Luego ejecutamos sort para hacer las palabras uacutenicas que es una o-peracioacuten muy intensa para la CPU y la memoria Si no tienes suficiente memoria RAM para sort puedes dividir la entrada en varios archivos maacutes pequentildeos y ejecutar sort luego conca-tenar los resultados y ejecutar de nuevo sort sobre el resultado

$ iconv -f UTF-8 -t US-ASCIITRANSLIT

wiki_en_fulltxt | tr -cs ldquo[alpha]rdquo ldquonrdquo gtgt

wordlist_en_fulltxt

$ sort -u wordlist_en_fulltxt gt

wordlist_en_uniquetxt

Los diccionarios anteriores no estaacuten disentildeados necesari-amente para las restricciones WPA de modo que encontraraacuten contrasentildeas maacutes pequentildeas Puede eliminar las palabras maacutes pequentildeas o puedes utilizar una teacutecnica para combinarlas y crear contrasentildeas maacutes largas Para eliminar palabras inadecuadas pu-edes ejecutar grep (menor de 8 caracteres)

$ grep -P lsquo8rsquo wordlist_en_uniquetxt gt wordlist_

en_wpatxt

Hasta aquiacute tu diccionario se compone de una uacutenica pa-labra Si deseas generar diccionarios con parejas de palabras (o varias palabras) puede hacerlo con algo como esto (que genera permutaciones de dos palabras en el diccionario)

$ cat wordlist_en_uniquetxt wordlist_en_uniquetxt

| perl -lne lsquoBEGINapush a$_ENDforeach $x(a)

foreach $y(a)print $x$yrsquo gt every2wordstxt

Para tu comodidad puedes localizar listas de palabras de Wikipedia en ingleacutes y rumano en mi paacutegina de GitHub para hacer pruebas (httpbitly2ayE1yW)

Ejecutar ataques de diccionario con Pyrit

Vamos a utilizar de nuevo Pyrit para ejecutar un ataque de diccionario pero esta vez en lugar de ejecutarlo directamente vamos a importar el diccionario dentro Pyrit y lo vamos a eje-cutar desde alliacute Esto nos da la posibilidad de poder precalcular los hashes basados en el diccionario de este modo el descifrado real queda reducido principalmente a una consulta posterior Los datos se almacenan en ~pyrit

$ pyrit -e lsquoNASA-HQ-WPArsquo create_essid

$ pyrit -i wordlist_en_wpatxt import_passwords

$ pyrit batch

El comando batch de Pyrit necesita mucho tiempo y haraacute

Tambieacuten puede crear tu propio diccionario desde un vol-cado de texto Por ejemplo puedes obtener una copia offline de Wikipedia (en muchos idiomas) desde el Proyecto Kiwix (httpbitly2awalku) Necesitaraacutes descargar el archivo no in-dexado zim para el idioma que elijas aseguraacutendose de seleccio-nar la variante ldquonopicrdquo para no descargar ninguna imagen La Wikipedia en Ingleacutes ocupa aproximadamente 16 GB mientras que en otros idiomas es sustancialmente menor Para conver-tirla en una lista de palabras uacutenica es necesario tener una gran cantidad de espacio libre Por ejemplo el tamantildeo no compri-mido de la Wikipedia en Ingleacutes es de 130 GB Ten en cuenta que el comando zimdump necesitoacute un par de diacuteas para llegar a completarse en mi C1 con almacenamiento NFS

$ wget httpwwwopenzimorg

downloadzimlib-12targz

$ tar zxvf zimlib-12targz

$ cd zimlib-12

$ sudo apt-get install liblzma-dev

$ configure --prefix=usr

$ make

$ sudo make install

$ cd

$ echo lsquoDumping all articles as html into the zimdump

directory Please waitrsquo

$ zimdump -D zimdump wikipedia_en_all_nopiczim

A continuacioacuten tenemos que convertir el HTML a texto y concatenar todos los archivos en un uacutenico archivo de texto Vamos a crear un empaquetador alrededor de html2text de manera que si se bloquea no se detendraacute toda la liacutenea de in-formacioacuten El proceso tardaraacute entre varias horas y varios diacuteas dependiendo de la cantidad de archivos HTML que tengas que procesar y el dispositivo ODROID que poseas

$ sudo apt-get install html2text

$ cat ltltEOF gthtml2textwrappersh

binbash

html2text -utf8 ldquo$rdquo

exit 0

EOF

$ chmod a+x html2textwrappersh

$ find zimdumpA -print0 | xargs -0 -P 4 -n 30

html2textwrappersh gtgt wiki_en_fulltxt

El siguiente paso es transcribir los caracteres no ASCII a sus homoacutelogos ASCII (por ejemplo I -gt i) y dividir el archivo resultante en una lista de palabras Iconv depende de la con-figuracioacuten regional asiacute que aseguacuterate de tener soporte UTF-8 (en lugar de ldquoCrdquo por ejemplo) El comando ldquotrrdquo reemplaza todos los caracteres no alfanumeacutericos por nuevas liacuteneas (a efec-

SEGURIDAD WPA

ODROID MAGAZINE 11

$ wget httpwwwwillhackforsushicomcode

cowpatty46cowpatty-46tgz

$ tar xvf cowpatty-46tgz

$ cd cowpatty-46

$ sudo apt-get install libpcap-dev libssl-dev

$ make

$ sudo make install

$ cd

$ cowpatty -d linksys2hash -r

linksys2-insidious-handshakepcap -s linksys2 -2

Puedes especificar el archivo hash que quieres revisar con la opcioacuten -d (selecciona el hash con el mismo nombre que el punto de acceso objetivo) La opcioacuten -r especifica el archivo de captura con el handshake de 4 vias -s especifica el SSID

(ya que no se puede extraer de la captura) y -2 significa no ser demasiado estricto a la hora de analizar el archivo de captura Con esta configuracioacuten fui capaz de conseguir la contrasentildea en menos de 3 segundos usando un ODROID-C1 con una tasa de 25000 PMKs (comparados con los 300 PMKs cuando calculamos los PMKs) Por lo tanto el proceso es 83 veces maacutes raacutepido a expensas de utilizar unos 7 GB de espacio en disco

para el ataque Depende de ti decidir si vale la pena aunque consumas maacutes espacio en disco

Ingeneriacutea Social El doble maleacutefico

que tu CPU se caliente bastante mientras se crea la base de da-tos Si el calor te supone un problema puedes utilizar una her-ramienta como cpuctrl (httpbitly2aon1dA) para limitar la frecuencia maacutexima de la CPU con el regulador adecuado como por ejemplo ldquoconservativerdquo

Para obtener la clave de red tienes que proporcionar el ar-chivo de captura y los resultados si existen deberiacutean aparecer raacutepidamente Aquiacute tienes un pcap de ejemplo como referencia

httpbitly2agcRug A continuacioacuten ejecuta este comando

$ pyrit -r nasa-supercalifragilistic-handshakepcap

attack_db

Como puedes ver incluso lo que parecer ser una contrasentildea larga y robusta puede llegar a descifrarse si aparece en alguacuten artiacuteculo de Internet

Ataques con tabla RainbowUna vez que tengas cargado el diccionario en Pyrit iquestQueacute es

lo que te impide descifrar cada handshake que capturas Pues bien el SSID actuacutea como los ldquogranos de salrdquo comprobando que la misma contrasentildea combinada con un SSID diferente genere un PMK diferente Tener una lista de contrasentildeas pre-calculadas se denomina tabla rainbow y te permite descifrar las contrasentildeas maacutes raacutepidamente a costa de conar con maacutes espacio en disco para almacenar estas listas

Existe un proyecto que crea tablas rainbow para WPA para los 1000 SSID maacutes comunes en httpbitly2azsBIh Si tu red ob-jetivo tiene un SSID que estaacute en la lista (httpbitly2adkjtd) potencialmente podriacuteas descifrar la contrasentildea mucho maacutes raacutepido que con otros meacutetodos Vamos a poner esto a prueba

Para este experimento prepareacute un punto de acceso llama-do linksys2 con una contrasentildea del diccionario de palabras (httpbitly2ayEXmI) Necesitas descargar el conjunto tarball que el sitio proporciona (cuanto maacutes grande sea maacutes posibilidades tendraacutes de encontrar la clave) Descompriacuteme-lo en un directorio y obtendraacutes 1000 archivos hash cada uno nombrado de acuerdo con el SSID del punto de acce-so Tambieacuten necesitaremos instalar Cowpatty (httpbitly2awaJ2A) para poder procesar las tablas

SEGURIDAD WPA

Un ataque de diccionario wPA con Pyrit

Ataque wPA con tabla rainbow

XKCD obligatorio httpsxkcdcom538

ODROID MAGAZINE 12

Cuando todo esteacute listo inicia WifiPhisher especificando la interfaz de monitor y la interfaz hostapd

$ sudo airmon-ng start wlan0

$ sudo wifiphisher -jI mon0 -aI wlan1

Si todo va bien WifiPhisher te mostraraacute una lista de pun-tos de Acceso a engantildear y configuraraacute las reglas de iptables y DHCP y te preguntaraacute por el tipo de paacutegina web falsa que quieres que muestre A continuacioacuten procederaacute a desconectar los clientes y hacer que se conecten al punto de acceso falso y les mostraraacute algo similar a la Figura 5 Seraacute entonces cuando veas la contrasentildea en el inteacuterprete de comandos Ten en cuenta que estamos hablando de algo especialmente retorcido puesto que ya no estaacutes engantildeando soacutelo a los ordenadores sino tambieacuten a la gente real

Mantener tu WiFi seguraCon esto concluimos nuestro anaacutelisis sobre la seguridad

inalaacutembrica Estas son algunas pautas que deberiacuteas tener en cuenta para mantener tu wifi segura

bull No utilices tecnologiacuteas de encriptacioacuten obsoletas (WEP)bull No confiacutees demasiado en ocultar la red o usar listas de ac-ceso mAC ya que son muy deacutebiles y muy faacuteciles de evitar bull Desactiva la tecnologiacutea WPS en redes en las que fiacutesica-mente sea posiblebull Utiliza contrasentildeas largas que no esteacuten diccionarios Si tienes que usar las palabras del diccionario para que te sea maacutes faacutecil recordarlas (despues de todo eres un ser huma-no) combiacutenalas de forma aleatoria Una opcioacuten es utilizar la teacutecnica horse-battery-staple de xkcd (httpsxkcdcom936) esta herramienta httpbitly1cubp1J puede hacerlo de forma automaacuteticabull Antildeadir caracteres a una contrasentildea aumenta su seguri-dad bastante maacutes que usar un signo de puntuacioacuten espe-cial en contrasentildeas maacutes cortasbull Si es posible considera la posibilidad de utilizar WPA2-Enterprise en tu red domeacutesticabull No utilices nombres comunes para la red SSIDbull Reducir la intensidad de la sentildeal no te ayudaraacute puesto que el atacante siempre puede conseguir una antena mejor

Como siempre puedes compartir tus propias experiencias hacer preguntas o compartir problemas en el hilo de soporte en httpbitly2azoM5N

Es posible que hayas agotado todo lo que tienes a tu alcance para romper un punto de acceso WiFi en particular y aun asiacute no consigues resultados Es probable que tenga que esperar unos 3 millones de antildeos para que el ataque de fuerza bruta alcance el 1 asiacute que iquestqueacute podemos hacer Pues bien simple-mente tienes que atacar el punto de seguridad maacutes deacutebil de la cadena iexclEl ser humano

Un proyecto que tiene por objetivo simplemente ldquopregun-tarrdquo por la contrasentildea es WifiPhisher (httpbitly1wPdPPQ) El programa configura un punto de acceso abierto maleacutefico que clona el SSID del objetivo A continuacioacuten desautentifica to-dos los clientes del objetivo y espera a que se vuelvan a conec-tar Por casualidad (o aseguraacutendose de que tienes una mejor sentildeal) los clientes se conectaraacuten automaacuteticamente en su lugar a tu punto de acceso abierto Cuando intenten acceder a los recursos de Internet seraacuten redireccionados a un portal que se presenta como su router y le solicitaraacute su contrasentildea WPA (para mejorar la seguridad por supuesto) Una vez que se obtiene la contrasentildea se desconecta el punto de acceso y el cliente se co-necta sin que se perciba la diferencia a su red original Ves ndash es faacutecil Para conseguir esto necesitaraacutes dos adaptadores inalaacutem-bricos - uno que sea compatible con la inyeccioacuten (para desco-nectar continuamente a los usuarios del AP objetivo) y otro para hacerse pasar por el falso AP Para esta prueba he utilizado dos adaptadores Wifi Modulo 4 de Hardkernel

$ git clone httpsgithubcomsophronwifiphishergit

$ sudo apt-get install tcpdump hostapd

$ cd wifiphisher

$ sudo python setuppy install

Si aparece alguacuten error indicando que no encuentra setuptools instaacutelalo y vuelve a ejecutar el comando install

$ wget httpsbootstrappypaioez_setuppy -O - |

sudo python

Ten en cuenta que para que esto funcione necesitaraacutes con-figurar hostapd para que trabaje con tu tarjeta inalaacutembrica Tienes maacutes detalles en httpbitly2aLTF6w and httpbitly2aLTlnX

SEGURIDAD WPA

Los usuarios desprevenidos escribiraacuten su contrase-ntildea wPA en tu entorno de suplantacioacuten de red

ODROID MAGAZINE 13

En los uacuteltimos antildeos el tema del big data y de la ciencia de los datos se ha convertido en una tendencia muy importante en un sinfiacuten de in-

dustrias Las empresas de alta tecnologiacutea de Silicon Valley ya no son los uacutenicos proveedores de temas como Hadoop la regresioacuten logiacutestica y el aprendizaje de maquinas Estar familiarizado con las tecnologiacuteas del big data se estaacute convirtiendo en un requisito cada vez maacutes necesario en los empleos relacionados con la tecnologiacutea en cualquier parte Por desgracia y siendo realista la experiencia praacutectica con las tecnologiacuteas de big data normalmente implica tener acceso a un costoso cluacutester de ordenadores para ejecutar tus consultas Sin embargo la reciente revolucioacuten de los orde-nadores de placa reducida ha hecho que la informaacutetica distri-buida sea accesible a nivel personal y en educacioacuten para realizar tareas como esta y muchas otras

Imparto clases sobre disentildeo y mantenimiento de sistemas digitales y redes en un instituto franceacutes Durante los uacuteltimos 4 antildeos he ido sustituyendo todos los ordenadores de sobremesa de mi aula por ordenadores SBC principalmente por razones de espacio ya que la escuela estaacute cerca de la ciudad de Pariacutes y el espacio es muy caro iexclEl uso de ordenadores SBC deja maacutes

espacio en la mesa de trabajo del estudianteEmpeceacute con una Raspberry Pi pero pronto cambieacute al

ODROID-C1 tan pronto como estuvo disponible ya que la Pi no era lo suficientemente raacutepida para el trabajo en labo-ratorios (laboratorios GNS3 diferentes anaacutelisis de protocolos bus y configuracioacuten de los equipos de red) o simplemente para navegar por Internet Para el proacuteximo antildeo escolar ya habreacute cambiado la mitad de la clase al ODROIDC2 con un total de 10 ODROID-C1s y 8 ODROID-C2s

A la hora de preparar los laboratorios para los estudiantes tuve que usar el mismo equipo que ellos con el fin de asegurar-me de que todo funcionara sin problemas cuando los estudi-antes trabajasen en sus propios entornos de laboratorios Esto requeriacutea utilizar un ODROID en lugar de un ordenador por-

taacutetil x86 para eliminar cualquier diferencia de comportamiento en-tre ambos Para ser maacutes eficiente a la hora de preparar los laborato-rios parte de ellos los configuraba en casa y no en la escuela He in-tentado buscar algunas soluciones para fabricar un ordenador portaacutetil usando un ODROID de modo que se convirtiese en mi portaacutetil ODROID de ida y vuelta desde la escuela a casa Recorro 5 km hasta la escuela en bicicleta por lo que la solucioacuten teniacutea que ser ligera y compacta para transportarla

PORTATILODROID-C1 un PROyECTO CASERO A MEDIDA COn nOMbRE En CLAvE ldquoREDTOPrdquopor fabien Thiriet

PORTATIL ODROID

Portaacutetil REDTOP y vista trasera del mismo

ODROID MAGAZINE 14

RequisitosAl principio del proyecto elaboreacute una lista de requisitos

para el ordenador portaacutetil

bull Alimentado con 12V a traveacutes de un sistema de bateriacuteas solares en casa y con una fuente de alimentacioacuten exter-na 230V-12V en la escuelabull Bateriacutea Li-ion para cuando me esteacute moviendo con una autonomiacutea de unas 2 horas Algunos entornos de labo-ratorios en la escuela requieren monitorizar los buses CAN integrados en los vehiacuteculos de modo que se hace necesario el uso de bateriacuteasbull Pantalla LCD de 10rdquo como miacutenimobull Teclado y pantalla LCD montados en forma de ordena-dor portaacutetilbull GPIOs y conectores ODROID faacutecilmente accesiblebull Bluetooth maestroesclavo disponible puesto que ten-go muchos proyectos que funcionan con placas Arduino remotasbull RTC integrado porque no siempre estoy conectado a Internet

Proceso de fabricacioacutenAl principio encontreacute un Motorola Lapdock 100 en eBay

y lo utiliceacute durante varios meses Tras solucionar los problemas HDMI entre el ODROID y el Lapdock ya que el Lapdock se apagaba despueacutes de 20 segundos si no se conectaba nada a su puerto USB todo funcionoacute correctamente Se trataba de una solucioacuten muy ligera pero no lo suficientemente coacutemoda para un uso diario ya que la pantalla LCD soacutelo teniacutea 10rdquo y el teclado era muy pequentildeo Tambieacuten echeacute un vistazo a PiTop pero el precio era muy elevado para lo que estaba dispuesto a gastar Lo que realmente necesitaba era simplemente un gran panel LCD y un buen teclado montados en conjunto

Decidiacute buscar en eBay una pantalla LCD maacutes grande y en-contreacute un modelo de 133rdquo muy econoacutemico por 85 euro con en-viacuteo e impuestos incluidos La pantalla tiene una buena resolu-cioacuten de 1900x600 y los colores se ven muy bien Sin embargo

PORTATIL ODROID

el panel LCD se vendiacutea sin marco de modo que necesita algo para solventar esta cuestioacuten

Al mismo tiempo mi hijo ha conseguido lo que ha sontildeado durante mucho tiempo por su 15 cumpleantildeos una impresora 3D personal de modo que ya no teniacutea que utilizar una que teniacutea en la escuela Eacutel es muy bueno usando software CAD como SolidWorks y me propuso disentildear un chasis para el por-taacutetil Por desgracia la placa de impresioacuten 3D con un tamantildeo maacuteximo de 200 mm era demasiado pequentildea para imprimir un marco LCD de 133rdquo y un marco del teclado Despueacutes de varias reflexiones decidimos dividir los marcos de la LCD y del teclado en cuatro partes y unirlos con los clips de montaje im-presos en 3D y pegamento Todas las partes individuales eran inferiores a los 200 mm Si te fijas bien en las fotos del marco de la LCD de los clips y del teclado veraacutes la separacioacuten entre las piezas montadas El disentildeo CAD necesita alrededor de 2 semanas de trabajo para asegurarse de que todo encaja bien

Durante el disentildeo el principal problema que nos preo-cupaba era las bisagras del panel LCD que teniacutea que ser lo suficientemente fuerte para que me permitiera abrir y cerrar con facilidad el ordenador portaacutetil Esto nos permitiacutea crear una aacutengulo perfecto entre el marco del panel LCD y el marco del teclado Para que pudiera encajar correctamente el teclado

Portaacutetil RedTop visto desde arriba Versioacuten inicial de portaacutetil con un ordenador motorola Lapdock 100

El modelo 3D del marco de la LCD

ODROID MAGAZINE 15

en su marco lo desmontamos retirando las cubiertas superior e inferior Elegimos el color rojo para la fibra de impresioacuten 3D para que el ordenador fuese maacutes divertido y llamativo 30 horas maacutes tarde teniacuteamos impresas todas las partes del chasis Las pegamos y atornillamos el panel LCD y el teclado dentro de sus respectivos marcos El siguiente paso fue colocar todas las placas y moacutedulos en el interior del chasis con firmeza las in-sertamos en el plexiglaacutes

El plexiglaacutes fue cortado para que encajara en el espacio crea-do en la etapa de disentildeo CAD para cada marco De esta forma todo el mundo puede apreciar el engranaje del portaacutetil lo cual supone una gran ventaja a la hora de ensentildear informaacutetica El paso final fue cablear todo siguiendo el diagrama por bloques

Acabamos teniendo un ordenador portaacutetil potente y fiable iexclMis estudiantes de la escuela se sorprendieron cuando vieron este portaacutetil poco convencional por primera vez

BateriacuteaAhora disponiacuteamos de un nuevo ordenador portaacutetil pero

sin ninguacuten tipo de bateriacutea recargable de modo que maacutes o me-nos es inuacutetil En primer lugar necesitaacutebamos estimar la ca-pacidad de la bateriacutea necesaria Para tal fin hicimos algunas pruebas de medicioacuten del amperaje en diferentes condiciones de uso El maacuteximo amperaje se alcanza cuando el C2 se pone en marcha con un pico de 11A Durante el funcionamiento nor-mal se mantiene justo por debajo de 1A con un dongle USB WIFI un moacutedulo RTC un adaptador de ratoacuten inalaacutembrico y el moacutedulo Bluetooth conectados El consumo total de energiacutea del ordenador portaacutetil es de alrededor de unos 12W

Mi hijo rescatoacute una vieja bateriacutea de litio recargable de un ordenador portaacutetil de Lenovo (L412) y pudo extraerle las nueve ceacutelulas disponibles dentro del paquete de bateriacuteas La mayoriacutea de las veces este tipo de paquetes de bateriacuteas ya no funcionan no por la propia bateriacutea sino debido a un defectuoso controlador de bateriacuteas integrado Utilizamos 3 y las conectamos en serie Esto nos proporcionaba 3 x 37 V un total de 111 voltios cuando la bateriacutea estaacute casi descargada y maacutes de 12V cuando estaacute completa-mente cargada La placa controladora LCD funciona sin ninguacuten problema a 11V Cada ceacutelula tiene 2200 mAh de capacidad de modo que la autonomiacutea del portaacutetil se acerca a las 2 horas Esto era suficiente para alcanzar el objetivo que nos propusimos al inicio del proyecto

Para volver a cargar las 3 ceacutelulas utilizamos un banco de bate-riacuteas solar de 12V conectada a traveacutes de un moacutedulo de sobreali-mentacioacuten que estaacute reajustado a un liacutemite de corriente de 126 V y 1A Con nuestro modelo particular de bateriacuteas podemos ajustar tanto la tensioacuten de salida como la corriente Cuando es-

PORTATIL ODROID

Clips de LCD

marco del teclado

Chasis completamente montado

ODROID MAGAZINE 16

cribiacute este artiacuteculo la bateriacutea auacuten no estaba colocada dentro del RedTop pero la teniacuteamos fuera para realizar pruebas maacutes ex-haustivas Una vez que completemos las pruebas colocaremos las 3 celdas debajo del teclado en un espacio reservado para tal fin

MaterialesEsto es lo que utiliceacute para montar mi portaacutetil ODROID-C1

Panel LCD HDMI-VGA de 133rdquo con audio httprebaycomAYZ5JU

Teclado mecaacutenico Zalman httpwwwamazonfrdpB00LHSPCS4

Cable OTG USB httpwwwamazonfrdpB007MNZ8VY

Transformador 12V-5V 3A httpwwwamazonfrdpB00JGFEQLE

Moacutedulo Bluetooth HC05 maestroesclavo httpswwwamazonfrdpB013STJSES

Moacutedulo RTC PCF8563 httpwwwamazonfrdpB01DB8JECC

Mini altavoz httprebaycombwOCZv

Impresora 3D httpwwwdagomafrproduitimprimante-dis-

covery200

Filamentos PLA para impresora 3D httpwwwamazonfrdpB00UMV7ANM

Clavijas de corriente DC de 55mm httpwwwamazonfrdpB00O1Y1X70

Interruptor de alimentacioacuten httpwwwamazonfrdpB00HUHBS1Q

Pack de bateriacuteas de ordenador portaacutetil como esta httpwwwamazonfrdpB00TVOC55Y

Conversor de sobrealimentacioacuten (4V-12V) httprebaycomw3FgNH

Varios tornillos arandelas y cables05m de PlexiglassSuper glue

PORTATIL ODROID

La placa controladora de la LCD

JUEGOS ANDROID

PAC-MAn 256iquestun juEGO CLASICO iquestunA nuEvA PERSPECTIvA DEL GEnERO DEL CORREDOR In-TERMInAbLE iexclDESCubRELOpor Bruno Doiche

Suele decirse que los claacutesicos nunca mueren pero algunos pueden quedarse bastante

anticuados Cuando era un nintildeo el Pac-Ma era un juego cuyos graacuteficos y jugabilidad eran totalmente acepta-bles para los estaacutendares de la deacutecada de los 80 A pesar de que todaviacutea se puede disfrutar del original Pac-Man hoy diacutea estaraacutes de acuerdo conmigo en que se queda algo corto en cuanto a funcionalidad incluso si aceptas el reto de jugar al modo aacutercade lo suficiente como para encontrarte con el miacutetico error del nivel 256 que soacutelo los mejores juga-dores de Pac-Man son capaces de ver

Sin embargo en la partida 256 del Pac-Man el error es la principal caracteriacutestica te prosiguen como una ola implacable desde la parte inferior de la pantalla Te hace volver a pensar lo que realmente significa correr por tu supervivencia en un labe-rinto lleno de fantasmas cada uno con su propia personalidad Exige un control muy preciso y pensar muy raacutepido para lograr salir y mantenerte un paso por delante de tus enemigos fantas-mas Ahora no tienes que jugar a los 255 niveles de Pac-Man para llegar a uno de los niveles maacutes elitistas de la historia del juego Puedes instalarlo desde Play Store en

httpbitly2cLaD5q

Un gran juego tan adictivo como lo fue en sus primeros diacuteas arcade

ODROID MAGAZINE 17

book se puede compartir faacutecilmente permitiendo una faacutecil visualizacioacuten en liacutenea y en nuestro caso gestionar la creacioacuten y el enviacuteo de aplicaciones Spark al cluacutester Los notebooks de Jupyter son una forma muy comuacuten de usar Apache Spark ya que permite al usuario centrarse especiacuteficamente en el anaacutelisis de datos en lugar de preocuparse de las herramientas o de la infraestructura que hay detraacutes

Instalar Hadoop File SystemNuestra primera tarea es instalar Java en cada nodo del

cluacutester Instalaremos el uacuteltimo software Java 8 de Oracle EL cual requiere la aceptacioacuten de la licencia durante la instalacioacuten Debido a esto necesitas iniciar sesioacuten en cada nodo de forma independiente y ejecutar el instalador Una vez alliacute crearemos una nueva cuenta de usuario desde la que ejecutaremos todo

$ sudo add-apt-repository ppawebupd8teamjava

$ sudo apt-get update

$ sudo apt-get install oracle-java8-installer

$ sudo apt-get install rsync

$ sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hduser

$ sudo usermod -aG sudo hduser

Ahora necesitamos instalar Hadoop Teacutecnicamente po-driacuteas utilizar la distribucioacuten Hadoop disponibles en el sitio web de Apache pero no estaacute compilada para la CPU ARM v71 de nuestros XU4s Puesto que en su mayor parte es Java es genial ya que se ejecutaraacute sobre JVM que acabamos de instalar en cada nodo Sin embargo hay partes de Hadoop que fueron es-

En el anterior artiacuteculo que escribiacute para ODROID Maga-zine en httpbitly2bHFij7 analice el desarrollo de un cluacutester informaacutetico autoacutenomo con nodos ODROID

XU4 En este artiacuteculo explicaremos coacutemo hacer un buen uso de ese cluacutester instalando Apache Spark y el sistema de ficheros Hadoop asiacute como tambieacuten la forma de acceder a tu cluacutester a traveacutes de la aplicacioacuten web Jupyter

Hadoop File System (HDFS) es uno de los sistemas de ar-chivos distribuidos maacutes populares y maacutes utilizados que existen hoy en diacutea Un sistema de archivos distribuido (DFS) es una aplicacioacuten para cluacutester que agrupa todas las unidades de disco duro dentro de un cluacutester para que puedan ser tratadas como una uacutenica unidad de almacenamiento de cara a sus clientes ex-ternos Utilizar un DFS tiene dos ventajas muy importantes En primer lugar y lo maacutes evidente es que te permite guardar y trabajar con grandes conjuntos de datos que se almacenan en maacutes de un disco duro del cluacutester En segundo lugar un DFS bien disentildeado proporciona mayor resistencia de datos en el nodo o ante fallos de disco mediante la replicacioacuten de bloques de datos en varias unidades del cluacutester En nuestro cluacutester XU4 los discos duros son las tarjetas MicroSD que fueron instaladas y configurada en nuestra anterior guiacutea

Apache Spark es una moderna plataforma de anaacutelisis de Big Data utilizada ampliamente en la industria del anaacutelisis de los grandes voluacutemenes de datos Proporciona herramientas de alto nivel muy simple para manipular y analizar datos ya sea a traveacutes de SQL o mapreduce ademaacutes de usar lenguajes de pro-gramacioacuten comunes tales como Python Scala y Java La pecu-liaridad maacutes significativa de Apache Spark es el uso del fondo de memoria RAM del cluacutester para almacenar objetos de datos intermedios que aceleran significativamente el procesamiento de datos Aunque los 2 GB de RAM integrados en el XU4 po-driacutean parecer un poco austeros en comparacioacuten con las grandes cantidades de memoria en un nodo de un cluacutester industrial hay espacio suficiente para hacer algunas cosas interesantes con Apache Spark

Jupyter Notebook es una aplicacioacuten web que te permite coacute-modamente aprovecharte de diversos lenguajes y plataformas de caacutelculo con tu cluacutester a traveacutes de una interfaz web El note-

InSTALAR HADOOP y SPARK En un CLuSTER ODROID-Xu4por michael Kamprath

HADOOP FILE SYSTEM

ODROID MAGAZINE 18

-l root ldquomkdir -p opthadoop-272rdquo

$ sudo rsync -avxP opthadoop-272

rootslave1opt

$ sudo rsync -avxP opthadoop-272

rootslave2opt

$ sudo rsync -avxP opthadoop-272

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop opthadoop-272rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquoln -s opthadoop-272 usrlocalhadooprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquomkdir -p datahdfstmprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop datahdfsrdquo

El uacuteltimo paso en la instalacioacuten de Hadoop es formatear el nodo como un HDFS

$ usrlocalhadoopbinhdfs namenode -format

Instalar Apache SparkVamos a utilizar un meacutetodo similar al anterior para instalar

Apache Spark En primer lugar vamos a utilizar Python 3 para acceder a Spark y a algunas librerias clave de Python por lo que tendraacutes que iniciar sesioacuten en cada nodo y ejecutar

$ sudo apt-get install python3 python3-pip

$ sudo pip3 install numpy

$ sudo pip3 install urlparse

Despueacutes en el nodo maestro instala Apache Spark

$ cd opt

$ sudo wget httpapacheclazorgspark

spark-162spark-162-bin-hadoop26tgz

$ sudo tar xvzf spark-162-bin-hadoop26tgz

$ sudo chown -R hduserhadoop

spark-162-bin-hadoop26

$ sudo ln -s optspark-162-bin-hadoop26

usrlocalspark

Al igual que en nuestra instalacioacuten de Hadoop necesitas antildeadir algunos archivos de configuracioacuten al directorio usrlo-calchispasconf Puedes localizar los archivos de configuracioacuten necesarios en mi repositorio GitHub (httpbitly2b4GnDU)

Una vez que Spark haya sido configurado en el nodo ma-

critas en C para que se ejecutaran maacutes raacutepido Si una instalacioacuten Hadoop no tiene estas libreriacuteas compiladas en la plataforma en la que estaacute se utilizaraacuten automaacuteticamente las equivalentes en Java por lo que seguiraacute funcionando pero de un modo maacutes lento Para este proyecto he desarrollado una distribucioacuten de la uacuteltima versioacuten de Hadoop para el procesador ARM v71 va-mos a descargar e instalar mi distribucioacuten En el nodo maestro inicia sesioacuten con la cuenta ldquohduserrdquo recieacuten creada y ejecuta los siguientes comandos para instalar Hadoop y configurar los no-dos del cluacutester para utilizar SSH sin contrasentildea Ten en cuenta que tendraacutes que iniciar sesioacuten en cada nodo esclavo desde el nodo maestro para configurar completamente el inicio de se-sioacuten sin contrasentildea

$ cd

$ ssh-keygen -t rsa -P ldquordquo

$ cat $HOMEsshid_rsapub gtgt $HOMEsshauthorized_

keys

$ ssh hduserlocalhost

$ exit

$ ssh hdusermaster

$ exit

$ ssh-copy-id hduserslave1

$ ssh hduserslave1

$ exit

$ ssh-copy-id hduserslave2

$ ssh hduserslave2

$ exit

$ ssh-copy-id hduserslave3

$ ssh hduserslave3

$ exit

$ cd opt

$ sudo wget httpdiybigdatanetdownloads

hadoophadoop-272armhftargz

$ sudo tar xzf hadoop-272armhftargz

$ sudo chown -R hduserhadoop hadoop-272

$ cd usrlocal

$ sudo ln -s opthadoop-272 hadoop

$ cd usrlocalhadoop

Ahora tenemos que crear los archivos de configuracioacuten para Hadoop Por comodidad ya he creado estos archivos que se de-ben instalar en el directorio usrlocalhadoopetchadoop y los he colocado a mi repositorio GitHub en httpbitly2bBehj4

Estos archivos de configuracioacuten tienen una configuracioacuten de cluacutester similar a la descrita en mi anterior artiacuteculo Es po-sible que tengas que modificarlos si has desarrollado un cluacutester diferente Ahora que el software Hadoop estaacute configurado en el nodo maestro lo vamos a copiar en los nodos esclavos

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

HADOOP FILE SYSTEM

ODROID MAGAZINE 19

estro coacutepialo a los esclavos de tu cluacutester

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo -l root

ldquomkdir -p optspark-162-bin-hadoop26rdquo

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave1opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave2opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquochown -R hduserhadoop

optspark-162-bin-hadoop26rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquoln -s optspark-162-bin-hadoop26

usrlocalsparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquomkdir -p datasparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquochown hduserhadoop datasparkrdquo

Instalar Jupyter NotebookLa instalacioacuten Jupyter Notebook es relativamente simple en

comparacioacuten con lo que hemos hecho hasta ahora Ugravenicamente en el nodo maestro ejecuta los siguientes comandos

$ sudo mkdir datajupyter

$ sudo chown -R hduserhadoop datajupyter

$ mkdir ~notebooks

$ sudo pip3 install jupyter

Para hacer visualizaciones en un notebook necesitamos compilar e instalar matplotlib Tambieacuten es uacutetil tener instalado numpy para facilitar la informaacutetica cientiacutefica a traveacutes de Py-thon Ten en cuenta que esto va a llevar un tiempo

$ sudo apt-get build-dep matplotlib

$ sudo pip3 install matplotlib

$ sudo pip3 install numpy

Ejecutar Hadoop Spark y Jupyter

Para logar que todo se ejecute usa los siguientes comandos

$ usrlocalhadoopsbinstart-dfssh

$ usrlocalsparksbinstart-allsh

$ XDG_RUNTIME_DIR=rdquodatajupyterrdquo PYSPARK_DRIVER_

PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=rdquonotebook

--no-browser --port=7777 --notebook-dir=homehduser

notebooksrdquo usrlocalsparkbinpyspark --packages

comdatabricksspark-csv_210110 --master spark

master7077

Puedes optar por convertir esta secuencia de comandos en un script bash independiente o simplemente puede crear un alias para este uacuteltimo comando Te dejo elegir cualquiera de

estas opciones como ejercicio Una vez en funcionamiento in-troduce en el navegador del ordenador httpltdireccioacuten IP del cluacutestergt7777 deberiacutea ver la interfaz Jupyter

Vamos a ejecutar una tarea de recuento de palabras en

nuestro sistema big data de XU4 Crea un nuevo notebook Python 3 haciendo clic en el botoacuten New en la parte superior derecha de la paacutegina web Ahora veraacute un espacio vaciacuteo como el que se muestra en la Figura anterior

Abre una nueva sesioacuten SSH en el nodo principal y antildeade lo siguiente

$ wget httpnorvigcombigtxt

$ hdfs dfs -mkdir usermichael

HADOOP FILE SYSTEM

Paacutegina web principal de Jupyter

Bloc de notas de Jupyter

ODROID MAGAZINE 20

$ hdfs dfs -put bigtxt usermichaelbigtxt

$ hdfs dfs -ls usermichael

Vuelve al notebook recieacuten creado antildeade el siguiente coacutedigo Python en la primera celda

from operator import add

blog_data = sctextFile(lsquohdfsmaster9000user

michaelbigtxtrsquo)cache()

counts = blog_dataflatMap(lambda x xsplit(lsquo lsquo))

map(lambda x (x 1))reduceByKey(add)

A continuacioacuten pulsa Shift + Enter para iniciar el trata-miento de las celdas Una nueva celda apareceraacute en el notebook de Jupyter Teacutecnicamente todaviacutea no ha sucedido nada dentro de Spark excepto crear un plan de consulta para ejecutar el recuento de palabras frente al conjunto de datos del blog que ya hemos colocado en HDFS Spark no hace ninguacuten caacutelculo hasta que no haga falta materializar los resultados La forma maacutes comuacuten de hacerlo es mostrar una parte de los resultados En la siguiente celda del notebook introduzca el coacutedigo y pulse Shift-Enter

countstake(100)

Veraacutes un asterisco junto a la celda en la que hemos intro-ducido el coacutedigo anterior Este asterisco seguiraacute activo mien-tras Spark esteacute haciendo sus caacutelculos Si vuelves a la sesioacuten de terminal en la que lanzaste el software Jupyter veraacutes el regis-tro log de Spark realizando sus caacutelculos Por otra parte si es-

cribes en tu navegador web la direccioacuten httpltdireccioacuten IP del cluacutestergt4040 puedes analizar el estado interno de Spark uti-lizando su interfaz de aplicacioacuten Es probable que escuches a-rrancar el ventilador de la CPU del XU4 durante los caacutelculos

Cuando los caacutelculos finalicen los primeros 100 valores de

los resultados se mostraraacuten en el notebook de JupyterCambia el nombre del notebook haciendo clic en la cadena

ldquo Untitledrdquo junto al logo de Jupyter en la parte superior izqui-erda del notebook Puede seguir trabajando con los datos antildea-diendo maacutes celdas que contengan maacutes coacutedigo python Spark Hay muchos y excelentes recursos en la web para aprender maacutes sobre Apache Spark incluyendo httpsparkapacheorg

Para guardar y cerrar el notebook haz clic en el menuacute ldquoFilerdquo en la paacutegina y selecciona ldquoClose and Haltrdquo Para finalizar Jupy-ter pulsa Control-C dos veces en la ventana de terminal desde el cual se lanzoacute Una vez que el software Juypter se detenga puedes apagar Spark y HDFS con

$ usrlocalsparksbinstop-allsh

$ usrlocalhadoopsbinstop-dfssh

Lecturas recomendadasSi deseas aprender maacutes sobre los temas tratados en este artiacute-

culo puedes utilizar los siguientes recursos para obtener maacutes informacioacuten sobre el software asiacute como mis conocimientos so-bre Big Data

Mi blog httpdiybigdatanetApache Hadoop httphadoopapacheorgApache Spark httpsparkapacheorgJupyter Notebook httpjupyterorg

HADOOP FILE SYSTEM

Los caacutelculos del recuento de palabras se han completado

ODROID MAGAZINE 21

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 6: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

HECKEAR POKEMOn GOCOn un ODROIDCOMO LOGRAR SuPLAnTAR EL GPSpor Andrew Ruggeri

POKEMON GO

Pokemon Go es un juego muy popular para teleacutefonos moacuteviles el cual ha sido descargado maacutes de 100 millones de veces por jugadores de todo el mundo Utiliza la realidad aumentada para hacer que explores el mundo real con

el objeto de capturar pokemon acudiendo a puntos reales en los que estaacute ubicado lo bueno Cuanto maacutes camines captures pokemon y entrenes en gimnasios maacutes puntos obtendraacutes

El juego utiliza el GPS del teleacutefono para registrar el movimiento de los jugadores y la distancia recorrida Aquiacute es donde el ldquotrucordquo entra en juego Quisiera disculparme por el tiacutetulo ya que en realidad no se trata de un truco sino maacutes bien una forma de en-gantildear las funciones de geolocalizacioacuten del juego Nos centraremos en el enviacuteo de datos GPS registrados o simulados en Android Lo bueno de los ODROIDs es que no soacutelo ejecutan Android sino que tambieacuten son altamente configurables Desde un punto de vista del hardware el cabezal principal GPIO tiene varias interfaces en serie Ademaacutes el software es muy faacutecil de configurar y si fuera necesario podemos acceder al coacutedigo fuente completo de Android

Por lo tanto iquestQueacute es lo que hace que este truco del GPS y ODROID sea ta in-teresante Bueno podemos decir que tiene principalmente dos ventajas Reciente-mente Niantic Inc la compantildeiacutea que hay detraacutes de Pokemon Go ha comenzado a perseguir de un modo muy agresivo a los ldquobotsrdquo verificando el uso de una API Cualquier cuenta detectada que use un bot seraacute bloqueada de forma permanente El meacutetodo GPS que describimos aquiacute utiliza la aplicacioacuten oficial de Android lo que significa que toda API que se conecte al servidor Niantic no seraacute delimitada E-xisten varias versiones ldquocraqueadasrdquo de Pokemon Go para Android que permiten al usuario hacer trampas y moverse por el juego sin tener que desplazarse en el mundo real Sin embargo algunas de estas versiones ldquocraqueadasrdquo ejecutan coacutedigos mali-ciosos y peor auacuten requieren acceso a root para instalarse de modo que representan un gran problema de seguridad

GPS sobre AndroidLos ODROIDs tienen por defecto todos los drivers necesarios para trabajar

con el tiacutepico GPS NMEA NMEA es el protocolo estaacutendar utilizado para comu-nicar datos GPS Por suerte el protocolo NMEA es utilizado tanto en modo serie como en modo texto esto hace que sea extremadamente funcional porque es faacutecil de depurar y emular NMEA es muy versaacutetil porque ofrece informacioacuten sobre los sateacutelites disponibles y utilizados la velocidad los waypoints los errores de posicioacuten y mucha maacutes informacioacuten que se puede transmitir

Los ODROIDs en siacute mismos no cuenta con una unidad GPS integrada aunque una interfaz muy comuacuten para muchas unidades de GPS externas es la USB como por ejemplo la que usa el moacutedulo GPS de Hardkernel Una vez conectado el moacutedulo se vincula normalmente en la interfaz serie disponible en devttyUSB0 o devttyACM0 Android cuenta con un archivo en la particioacuten del sistema root

ODROID MAGAZINE 6

conocido como buildprop que almacena la configuracioacuten de muchos y diferentes aspectos de Android Dos de estos ajusten inciden directamente en el fun-cionamiento del GPS

rokernelandroidgps=dev

ttyACM0

rokernelandroidgps

speed=9600

El primer valor ldquorokernelandroidgpsrdquo es la ubicacioacuten del flujo de datos en serie de NMEA que normalmente es tty El se-gundo valor es la velocidad del flujo en serie Aquiacute es donde las cosas se vuelven interesantes Si podemos ajustar la ubicacioacuten GPS tambieacuten podemos intro-ducir nuestros propios datos GPS NMEA lo cual nos permite engantildear al GPS En la gran mayoriacutea de mis pruebas utilice un ODROID-C2 conectado viacutea UART a mi ordenador portaacutetil Esto me permitiacutea cambiar raacutepidamente en el fichero buildprop el paraacutemetro tty del GPS a ldquodevttyS1rdquo el puerto TTY para UART1 sobre el C2

El engantildeoHe reescrito esta seccioacuten varias veces a la vista de los recientes acontecimientos

y medidas que Niantic ha tomado hacia los ldquotrampososrdquo En lugar de escribir el coacutedigo que he desarrollado me voy a centrar en varias teacutecnicas y herramientas que cumplen con el mismo principio baacutesico El meacutetodo maacutes sencillo es grabar y reproducir un registro log de datos NMEA En el contexto de Pokemon Go darse un paseo por una zona con una buena cantidad de pokestops gimnasios y Pokeacutemon Existen varias aplicaciones de Android que se pueden instalar en tu teleacutefono suponiendo que tiene un teleacute-fono Android que te permiten guardar los datos GPS NMEA en un registro log Mueve el archivo log al ordenador portaacutetil conectado al ODROID Se en-viacutea una liacutenea de texto del archivo log NMEA al puerto serie a una velocidad de alrededor de 1 liacutenea cada 100 o 200 ms Un simple script Python puede ha-cer esto faacutecilmente Este meacutetodo no es de lo maacutes increiacuteble pero es muy simple

POKEMON GO

flujo de datos GPS NmEA en serie

Conexioacuten USB-UART de ODROID

ODROID MAGAZINE 7

POKEMON GO

y hace bien su trabajo El hecho de que estos regis-tros log representen datos reales es una gran ventaja

La segunda opcioacuten es utilizar un simulador GPS que se ejecute en el ordena-dor portaacutetil y bombardear con datos GPS ficticios al ODROID Existen diversas herramientas de simulacioacuten GPS que incluyen interfaces muy buenas Me he dado cuenta que muchas de ellas normalmente enviacutean los datos GPS NMEA simulados a traveacutes de la conexioacuten TCP o UDP Mi solucioacuten para esto simplemente fue escribir un programa para leer desde un puerto local y luego enviar el contenido del paquete a la consola o al puerto serie Una cuestioacuten a la hora de crear datos GPS ficticios tener mucho cuidado con las distancias y la velocidad Recuerda que estaacutes intentando imitar las condiciones del mundo real asiacute que si saltas de una ciudad a otra o de un continente a otro vas a levantar sospechas

Una vez que tengas tu fuente de datos GPS seleccionada y preparada puedes pasar al siguiente paso Para una depuracioacuten raacutepida y faacutecil de los datos GPS en Android tienes algunos programas al final de esta guiacutea Te recomiendo que instale alguno te ayudara bastante con la depuracioacuten y la comprobacioacuten de errores antes de iniciar Pokemon Go

Configurar Android y ODROIDComo ya he dicho la configuracioacuten es bastante simple y consiste en tener un or-

denador portaacutetil o incluso otro ODROID para que actuacutee como fuente de datos GPS Este es el dispositivo que enviaraacute los datos GPS precargados o falsos al ODROID con Android El ordenador portaacutetil estaacute conectado al puerto UART del ODROID o a cualquier otro puerto serie En mi configuracioacuten que se muestra en la Figura anterior tengo un convertidor USB a UART conectado al puerto UART1 del C2

El software para Android es miacutenimo y soacutelo requiere un cambio raacutepido en la con-figuracioacuten y en el archivo buildprop del que he hablado antes Asumiendo que tienes instalado Google PlayStore la instalacioacuten de Pokemon Go es muy simple y soacutelo

Pokemon Go ejecutandose sobre el sistema de suplantacioacuten de geolocalicacioacuten

ODROID MAGAZINE 8

POKEMON GO

requiere unos cuantos clics Si no lo tienes instalado puedes instalarlo siguiendo las sencillas instrucciones de Hardkernel en httpbitly2aWS696 Tuve algunas difi-cultades para interactuar con la aplicacioacuten real Pokemon Go a la hora de usar un teclado y un ratoacuten Me di cuenta que algunos botones no funcionan al ser presio-nado Termineacute por usar una pantalla taacutectil y no volviacute a tener ninguacuten problema

Hay algunas cosas que debes cambiar en la configuracioacuten de tu Android Lo pri-mero que tienes que hacer es entrar en Settings-gtDeveloper Options y desactivar la casilla ldquoAllow mock locationsrdquo que se encuentra en la seccioacuten ldquoDebuggingrdquo Te daraacutes cuenta de que sigue marcada cuando Pokemon Go muestre un error de localizacioacuten GPS Una vez desmarcada la opcioacuten el error desapareceraacute La segunda cosa que tienes que cambiar estaacute en la paacutegina Locatioacuten de los ajustes A continuacioacuten haz clic en la opcioacuten superior ldquoModerdquo apareceraacuten tres opciones la que tienes que seleccionar es ldquoDevice Onlyrdquo Esto haraacute que se use uacutenicamente la informacioacuten de localizacioacuten del GPS descartando cualquier otra fuente

NotasUna vez que has enviados los datos GPS a tu ODROID y tienes tu buildprop

bien configurado para ver el puerto serie correcto puedes seguir adelante y abrir Pokemon Go Asumiendo que tienes tus datos que emulan el movimiento deberiacuteas ver a tu ldquotrainerrdquo pokemon empezando a caminar en el juego Antes de continuar quisiera hacer hincapieacute en dos puntos importantes El primero y maacutes importante estaacutes violando los teacuterminos del juego al hacer esto Si te descubren Niantic tiene todo el derecho a bloquear permanentemente tu cuenta El segundo punto en el que quiero incidir es que se trata soacutelo de un juego Si se llega a un punto donde el juego tiene que automatizarse para poder disfrutar de eacutel es probable que no valga la pena jugar Como todas las cosas se recoge lo que se siembra y espero que esta guiacutea te sirva sobre todo para adquirir conocimientos uacutetiles acerca de los sistemas GPS y Android

Enlaces uacutetiles

Apps de informacioacuten GPS para Android httpbitly2bBdoXs Esta es el que yo usohttpbitly2br7DNK Igual de buena con una interfaz muy limpia

Analizador y generador NmEA httpbitly1FjZRPk Uno de los mejores generadores simple de usar e

incluye algunos ejemplos baacutesicos Se le echa en falta un mensaje GPGLL pero es insignificante Este es el que yo utiliceacute para mi simulador El meacutetodo maacutes simple para fijar dos puntos de paso es tener el programa con un incremento automaacutetico a una velocidad determinada

Existen unos cuantos simuladores para Linux y mucho maacutes para Windows Una raacutepida buacutesqueda en Google con ldquo GPS Simulatorrdquo o ldquo GPS NMEA Simu-latorrdquo te los mostraraacute No pude encontrar uno que fuera gratuito y de coacutedigo abierto aunque si uno pre-compilado gratuito muy simple y que estaacute dis-ponible en httpitly2bBfXcm

Maacutes informacioacuten sobre NMEA GPShttpaprsgidsnlnmeahttpbitly1g91wIE

ODROID MAGAZINE 9

asiacute como Websterrsquos English Dictionary Simplemente son coleccio-nes de palabras que tienen alguacuten significado para las personas o que hayan sido utilizadas como contrasentildeas con an-terioridad como se suelen apreciar en vulneraciones de seguri-dad Por lo general los diccionarios para descifrar la contrasentildea incluyen muchos maacutes teacuterminos que un diccionario estaacutendar porque tambieacuten tienen que incluir palabras del argot (como Yolo) o palabras mal escritas habitualmente (como aprentice) Tambieacuten incluyen nombres propios (como Andreacutes) nombres de personajes o lugares ficticios (como Pellenor Fields) o teacutermi-nos teacutecnicos (como el aacutecido desoxirribonucleico) Una buena fuente de estas palabras es la Wikipedia (que viene en diferen-tes idiomas) o incluso los subtiacutetulos de peliacutecula que se puede obtener en grandes cantidades en httpbitly2a1g42j

Kali Linux viene con algunos diccionarios por defecto que puedes utilizar o buscar en Internet listas de palabras uacutetiles

RockYou (134M) httpbitly1wtmeYADarkc0de (18M) httpbitly1pwlvJJLista de diccionarios httpbitly2ayDRaPTorrents lista de palabras WPA-PSK httpbitly2azrOqN 170K de palabras WPA httpbitly2as46gm 1 milloacuten de palabras httpbitly2a1geH4

En nuestros anteriores artiacuteculos atacamos las redes WEP y redes con WPS activado pero ahora es el momento de atacar la tecnologiacutea maacutes segura de las redes inalaacutembri-

cas el cifrado WPA Como siempre pide el consentimiento del propietario de la red antes de intentar romper su red y asiacute evitar problemas legales despueacutes iexclEs mejor prevenir que curar cuando se prueban las cosas

Ataques de Diccionario - Crear listas de palabras

Dado que la gente tiene fama por ser muy deficiente a la hora de elegir contrasentildeas seguras la mejor tecnica para romper la mayoriacutea de las contrasentildeas es ejecutar un ataque de diccio-nario

La complejidad de los ataques de diccionario reside en con-

seguir palabras correctas que sean relevantes para tu objetivo Por ejemplo si estaacutes atacando una red WiFi alemana es posible que quieras probar palabras en alemaacuten (iexclalgunas son muy lar-gas) Si estaacutes atacando un punto de acceso de un centro meacutedico puedes probar con teacuterminos meacutedicos No existe el diccionario ldquoperfectordquo ndash todo depende de tus necesidades Puedes encon-trar amplia informacioacuten sobre diccionarios con vistas a realizar ataques aquiacute httpbitly2aLS6Fx

No debemos confundir el teacutermino ldquodiccionariordquo con algo

ASuMIR EL RIEGO DE PEnETRAR LAS REDES wPA - PARTE 2por Adrian Popa

SEGURIDAD WPA

La busqueda de la palabra correccta

iexclEl Ataque de diccionario iexclEs suacuteper efectivo

ODROID MAGAZINE 10

tos praacutecticos inserta un Enter despueacutes de cada palabra) Luego ejecutamos sort para hacer las palabras uacutenicas que es una o-peracioacuten muy intensa para la CPU y la memoria Si no tienes suficiente memoria RAM para sort puedes dividir la entrada en varios archivos maacutes pequentildeos y ejecutar sort luego conca-tenar los resultados y ejecutar de nuevo sort sobre el resultado

$ iconv -f UTF-8 -t US-ASCIITRANSLIT

wiki_en_fulltxt | tr -cs ldquo[alpha]rdquo ldquonrdquo gtgt

wordlist_en_fulltxt

$ sort -u wordlist_en_fulltxt gt

wordlist_en_uniquetxt

Los diccionarios anteriores no estaacuten disentildeados necesari-amente para las restricciones WPA de modo que encontraraacuten contrasentildeas maacutes pequentildeas Puede eliminar las palabras maacutes pequentildeas o puedes utilizar una teacutecnica para combinarlas y crear contrasentildeas maacutes largas Para eliminar palabras inadecuadas pu-edes ejecutar grep (menor de 8 caracteres)

$ grep -P lsquo8rsquo wordlist_en_uniquetxt gt wordlist_

en_wpatxt

Hasta aquiacute tu diccionario se compone de una uacutenica pa-labra Si deseas generar diccionarios con parejas de palabras (o varias palabras) puede hacerlo con algo como esto (que genera permutaciones de dos palabras en el diccionario)

$ cat wordlist_en_uniquetxt wordlist_en_uniquetxt

| perl -lne lsquoBEGINapush a$_ENDforeach $x(a)

foreach $y(a)print $x$yrsquo gt every2wordstxt

Para tu comodidad puedes localizar listas de palabras de Wikipedia en ingleacutes y rumano en mi paacutegina de GitHub para hacer pruebas (httpbitly2ayE1yW)

Ejecutar ataques de diccionario con Pyrit

Vamos a utilizar de nuevo Pyrit para ejecutar un ataque de diccionario pero esta vez en lugar de ejecutarlo directamente vamos a importar el diccionario dentro Pyrit y lo vamos a eje-cutar desde alliacute Esto nos da la posibilidad de poder precalcular los hashes basados en el diccionario de este modo el descifrado real queda reducido principalmente a una consulta posterior Los datos se almacenan en ~pyrit

$ pyrit -e lsquoNASA-HQ-WPArsquo create_essid

$ pyrit -i wordlist_en_wpatxt import_passwords

$ pyrit batch

El comando batch de Pyrit necesita mucho tiempo y haraacute

Tambieacuten puede crear tu propio diccionario desde un vol-cado de texto Por ejemplo puedes obtener una copia offline de Wikipedia (en muchos idiomas) desde el Proyecto Kiwix (httpbitly2awalku) Necesitaraacutes descargar el archivo no in-dexado zim para el idioma que elijas aseguraacutendose de seleccio-nar la variante ldquonopicrdquo para no descargar ninguna imagen La Wikipedia en Ingleacutes ocupa aproximadamente 16 GB mientras que en otros idiomas es sustancialmente menor Para conver-tirla en una lista de palabras uacutenica es necesario tener una gran cantidad de espacio libre Por ejemplo el tamantildeo no compri-mido de la Wikipedia en Ingleacutes es de 130 GB Ten en cuenta que el comando zimdump necesitoacute un par de diacuteas para llegar a completarse en mi C1 con almacenamiento NFS

$ wget httpwwwopenzimorg

downloadzimlib-12targz

$ tar zxvf zimlib-12targz

$ cd zimlib-12

$ sudo apt-get install liblzma-dev

$ configure --prefix=usr

$ make

$ sudo make install

$ cd

$ echo lsquoDumping all articles as html into the zimdump

directory Please waitrsquo

$ zimdump -D zimdump wikipedia_en_all_nopiczim

A continuacioacuten tenemos que convertir el HTML a texto y concatenar todos los archivos en un uacutenico archivo de texto Vamos a crear un empaquetador alrededor de html2text de manera que si se bloquea no se detendraacute toda la liacutenea de in-formacioacuten El proceso tardaraacute entre varias horas y varios diacuteas dependiendo de la cantidad de archivos HTML que tengas que procesar y el dispositivo ODROID que poseas

$ sudo apt-get install html2text

$ cat ltltEOF gthtml2textwrappersh

binbash

html2text -utf8 ldquo$rdquo

exit 0

EOF

$ chmod a+x html2textwrappersh

$ find zimdumpA -print0 | xargs -0 -P 4 -n 30

html2textwrappersh gtgt wiki_en_fulltxt

El siguiente paso es transcribir los caracteres no ASCII a sus homoacutelogos ASCII (por ejemplo I -gt i) y dividir el archivo resultante en una lista de palabras Iconv depende de la con-figuracioacuten regional asiacute que aseguacuterate de tener soporte UTF-8 (en lugar de ldquoCrdquo por ejemplo) El comando ldquotrrdquo reemplaza todos los caracteres no alfanumeacutericos por nuevas liacuteneas (a efec-

SEGURIDAD WPA

ODROID MAGAZINE 11

$ wget httpwwwwillhackforsushicomcode

cowpatty46cowpatty-46tgz

$ tar xvf cowpatty-46tgz

$ cd cowpatty-46

$ sudo apt-get install libpcap-dev libssl-dev

$ make

$ sudo make install

$ cd

$ cowpatty -d linksys2hash -r

linksys2-insidious-handshakepcap -s linksys2 -2

Puedes especificar el archivo hash que quieres revisar con la opcioacuten -d (selecciona el hash con el mismo nombre que el punto de acceso objetivo) La opcioacuten -r especifica el archivo de captura con el handshake de 4 vias -s especifica el SSID

(ya que no se puede extraer de la captura) y -2 significa no ser demasiado estricto a la hora de analizar el archivo de captura Con esta configuracioacuten fui capaz de conseguir la contrasentildea en menos de 3 segundos usando un ODROID-C1 con una tasa de 25000 PMKs (comparados con los 300 PMKs cuando calculamos los PMKs) Por lo tanto el proceso es 83 veces maacutes raacutepido a expensas de utilizar unos 7 GB de espacio en disco

para el ataque Depende de ti decidir si vale la pena aunque consumas maacutes espacio en disco

Ingeneriacutea Social El doble maleacutefico

que tu CPU se caliente bastante mientras se crea la base de da-tos Si el calor te supone un problema puedes utilizar una her-ramienta como cpuctrl (httpbitly2aon1dA) para limitar la frecuencia maacutexima de la CPU con el regulador adecuado como por ejemplo ldquoconservativerdquo

Para obtener la clave de red tienes que proporcionar el ar-chivo de captura y los resultados si existen deberiacutean aparecer raacutepidamente Aquiacute tienes un pcap de ejemplo como referencia

httpbitly2agcRug A continuacioacuten ejecuta este comando

$ pyrit -r nasa-supercalifragilistic-handshakepcap

attack_db

Como puedes ver incluso lo que parecer ser una contrasentildea larga y robusta puede llegar a descifrarse si aparece en alguacuten artiacuteculo de Internet

Ataques con tabla RainbowUna vez que tengas cargado el diccionario en Pyrit iquestQueacute es

lo que te impide descifrar cada handshake que capturas Pues bien el SSID actuacutea como los ldquogranos de salrdquo comprobando que la misma contrasentildea combinada con un SSID diferente genere un PMK diferente Tener una lista de contrasentildeas pre-calculadas se denomina tabla rainbow y te permite descifrar las contrasentildeas maacutes raacutepidamente a costa de conar con maacutes espacio en disco para almacenar estas listas

Existe un proyecto que crea tablas rainbow para WPA para los 1000 SSID maacutes comunes en httpbitly2azsBIh Si tu red ob-jetivo tiene un SSID que estaacute en la lista (httpbitly2adkjtd) potencialmente podriacuteas descifrar la contrasentildea mucho maacutes raacutepido que con otros meacutetodos Vamos a poner esto a prueba

Para este experimento prepareacute un punto de acceso llama-do linksys2 con una contrasentildea del diccionario de palabras (httpbitly2ayEXmI) Necesitas descargar el conjunto tarball que el sitio proporciona (cuanto maacutes grande sea maacutes posibilidades tendraacutes de encontrar la clave) Descompriacuteme-lo en un directorio y obtendraacutes 1000 archivos hash cada uno nombrado de acuerdo con el SSID del punto de acce-so Tambieacuten necesitaremos instalar Cowpatty (httpbitly2awaJ2A) para poder procesar las tablas

SEGURIDAD WPA

Un ataque de diccionario wPA con Pyrit

Ataque wPA con tabla rainbow

XKCD obligatorio httpsxkcdcom538

ODROID MAGAZINE 12

Cuando todo esteacute listo inicia WifiPhisher especificando la interfaz de monitor y la interfaz hostapd

$ sudo airmon-ng start wlan0

$ sudo wifiphisher -jI mon0 -aI wlan1

Si todo va bien WifiPhisher te mostraraacute una lista de pun-tos de Acceso a engantildear y configuraraacute las reglas de iptables y DHCP y te preguntaraacute por el tipo de paacutegina web falsa que quieres que muestre A continuacioacuten procederaacute a desconectar los clientes y hacer que se conecten al punto de acceso falso y les mostraraacute algo similar a la Figura 5 Seraacute entonces cuando veas la contrasentildea en el inteacuterprete de comandos Ten en cuenta que estamos hablando de algo especialmente retorcido puesto que ya no estaacutes engantildeando soacutelo a los ordenadores sino tambieacuten a la gente real

Mantener tu WiFi seguraCon esto concluimos nuestro anaacutelisis sobre la seguridad

inalaacutembrica Estas son algunas pautas que deberiacuteas tener en cuenta para mantener tu wifi segura

bull No utilices tecnologiacuteas de encriptacioacuten obsoletas (WEP)bull No confiacutees demasiado en ocultar la red o usar listas de ac-ceso mAC ya que son muy deacutebiles y muy faacuteciles de evitar bull Desactiva la tecnologiacutea WPS en redes en las que fiacutesica-mente sea posiblebull Utiliza contrasentildeas largas que no esteacuten diccionarios Si tienes que usar las palabras del diccionario para que te sea maacutes faacutecil recordarlas (despues de todo eres un ser huma-no) combiacutenalas de forma aleatoria Una opcioacuten es utilizar la teacutecnica horse-battery-staple de xkcd (httpsxkcdcom936) esta herramienta httpbitly1cubp1J puede hacerlo de forma automaacuteticabull Antildeadir caracteres a una contrasentildea aumenta su seguri-dad bastante maacutes que usar un signo de puntuacioacuten espe-cial en contrasentildeas maacutes cortasbull Si es posible considera la posibilidad de utilizar WPA2-Enterprise en tu red domeacutesticabull No utilices nombres comunes para la red SSIDbull Reducir la intensidad de la sentildeal no te ayudaraacute puesto que el atacante siempre puede conseguir una antena mejor

Como siempre puedes compartir tus propias experiencias hacer preguntas o compartir problemas en el hilo de soporte en httpbitly2azoM5N

Es posible que hayas agotado todo lo que tienes a tu alcance para romper un punto de acceso WiFi en particular y aun asiacute no consigues resultados Es probable que tenga que esperar unos 3 millones de antildeos para que el ataque de fuerza bruta alcance el 1 asiacute que iquestqueacute podemos hacer Pues bien simple-mente tienes que atacar el punto de seguridad maacutes deacutebil de la cadena iexclEl ser humano

Un proyecto que tiene por objetivo simplemente ldquopregun-tarrdquo por la contrasentildea es WifiPhisher (httpbitly1wPdPPQ) El programa configura un punto de acceso abierto maleacutefico que clona el SSID del objetivo A continuacioacuten desautentifica to-dos los clientes del objetivo y espera a que se vuelvan a conec-tar Por casualidad (o aseguraacutendose de que tienes una mejor sentildeal) los clientes se conectaraacuten automaacuteticamente en su lugar a tu punto de acceso abierto Cuando intenten acceder a los recursos de Internet seraacuten redireccionados a un portal que se presenta como su router y le solicitaraacute su contrasentildea WPA (para mejorar la seguridad por supuesto) Una vez que se obtiene la contrasentildea se desconecta el punto de acceso y el cliente se co-necta sin que se perciba la diferencia a su red original Ves ndash es faacutecil Para conseguir esto necesitaraacutes dos adaptadores inalaacutem-bricos - uno que sea compatible con la inyeccioacuten (para desco-nectar continuamente a los usuarios del AP objetivo) y otro para hacerse pasar por el falso AP Para esta prueba he utilizado dos adaptadores Wifi Modulo 4 de Hardkernel

$ git clone httpsgithubcomsophronwifiphishergit

$ sudo apt-get install tcpdump hostapd

$ cd wifiphisher

$ sudo python setuppy install

Si aparece alguacuten error indicando que no encuentra setuptools instaacutelalo y vuelve a ejecutar el comando install

$ wget httpsbootstrappypaioez_setuppy -O - |

sudo python

Ten en cuenta que para que esto funcione necesitaraacutes con-figurar hostapd para que trabaje con tu tarjeta inalaacutembrica Tienes maacutes detalles en httpbitly2aLTF6w and httpbitly2aLTlnX

SEGURIDAD WPA

Los usuarios desprevenidos escribiraacuten su contrase-ntildea wPA en tu entorno de suplantacioacuten de red

ODROID MAGAZINE 13

En los uacuteltimos antildeos el tema del big data y de la ciencia de los datos se ha convertido en una tendencia muy importante en un sinfiacuten de in-

dustrias Las empresas de alta tecnologiacutea de Silicon Valley ya no son los uacutenicos proveedores de temas como Hadoop la regresioacuten logiacutestica y el aprendizaje de maquinas Estar familiarizado con las tecnologiacuteas del big data se estaacute convirtiendo en un requisito cada vez maacutes necesario en los empleos relacionados con la tecnologiacutea en cualquier parte Por desgracia y siendo realista la experiencia praacutectica con las tecnologiacuteas de big data normalmente implica tener acceso a un costoso cluacutester de ordenadores para ejecutar tus consultas Sin embargo la reciente revolucioacuten de los orde-nadores de placa reducida ha hecho que la informaacutetica distri-buida sea accesible a nivel personal y en educacioacuten para realizar tareas como esta y muchas otras

Imparto clases sobre disentildeo y mantenimiento de sistemas digitales y redes en un instituto franceacutes Durante los uacuteltimos 4 antildeos he ido sustituyendo todos los ordenadores de sobremesa de mi aula por ordenadores SBC principalmente por razones de espacio ya que la escuela estaacute cerca de la ciudad de Pariacutes y el espacio es muy caro iexclEl uso de ordenadores SBC deja maacutes

espacio en la mesa de trabajo del estudianteEmpeceacute con una Raspberry Pi pero pronto cambieacute al

ODROID-C1 tan pronto como estuvo disponible ya que la Pi no era lo suficientemente raacutepida para el trabajo en labo-ratorios (laboratorios GNS3 diferentes anaacutelisis de protocolos bus y configuracioacuten de los equipos de red) o simplemente para navegar por Internet Para el proacuteximo antildeo escolar ya habreacute cambiado la mitad de la clase al ODROIDC2 con un total de 10 ODROID-C1s y 8 ODROID-C2s

A la hora de preparar los laboratorios para los estudiantes tuve que usar el mismo equipo que ellos con el fin de asegurar-me de que todo funcionara sin problemas cuando los estudi-antes trabajasen en sus propios entornos de laboratorios Esto requeriacutea utilizar un ODROID en lugar de un ordenador por-

taacutetil x86 para eliminar cualquier diferencia de comportamiento en-tre ambos Para ser maacutes eficiente a la hora de preparar los laborato-rios parte de ellos los configuraba en casa y no en la escuela He in-tentado buscar algunas soluciones para fabricar un ordenador portaacutetil usando un ODROID de modo que se convirtiese en mi portaacutetil ODROID de ida y vuelta desde la escuela a casa Recorro 5 km hasta la escuela en bicicleta por lo que la solucioacuten teniacutea que ser ligera y compacta para transportarla

PORTATILODROID-C1 un PROyECTO CASERO A MEDIDA COn nOMbRE En CLAvE ldquoREDTOPrdquopor fabien Thiriet

PORTATIL ODROID

Portaacutetil REDTOP y vista trasera del mismo

ODROID MAGAZINE 14

RequisitosAl principio del proyecto elaboreacute una lista de requisitos

para el ordenador portaacutetil

bull Alimentado con 12V a traveacutes de un sistema de bateriacuteas solares en casa y con una fuente de alimentacioacuten exter-na 230V-12V en la escuelabull Bateriacutea Li-ion para cuando me esteacute moviendo con una autonomiacutea de unas 2 horas Algunos entornos de labo-ratorios en la escuela requieren monitorizar los buses CAN integrados en los vehiacuteculos de modo que se hace necesario el uso de bateriacuteasbull Pantalla LCD de 10rdquo como miacutenimobull Teclado y pantalla LCD montados en forma de ordena-dor portaacutetilbull GPIOs y conectores ODROID faacutecilmente accesiblebull Bluetooth maestroesclavo disponible puesto que ten-go muchos proyectos que funcionan con placas Arduino remotasbull RTC integrado porque no siempre estoy conectado a Internet

Proceso de fabricacioacutenAl principio encontreacute un Motorola Lapdock 100 en eBay

y lo utiliceacute durante varios meses Tras solucionar los problemas HDMI entre el ODROID y el Lapdock ya que el Lapdock se apagaba despueacutes de 20 segundos si no se conectaba nada a su puerto USB todo funcionoacute correctamente Se trataba de una solucioacuten muy ligera pero no lo suficientemente coacutemoda para un uso diario ya que la pantalla LCD soacutelo teniacutea 10rdquo y el teclado era muy pequentildeo Tambieacuten echeacute un vistazo a PiTop pero el precio era muy elevado para lo que estaba dispuesto a gastar Lo que realmente necesitaba era simplemente un gran panel LCD y un buen teclado montados en conjunto

Decidiacute buscar en eBay una pantalla LCD maacutes grande y en-contreacute un modelo de 133rdquo muy econoacutemico por 85 euro con en-viacuteo e impuestos incluidos La pantalla tiene una buena resolu-cioacuten de 1900x600 y los colores se ven muy bien Sin embargo

PORTATIL ODROID

el panel LCD se vendiacutea sin marco de modo que necesita algo para solventar esta cuestioacuten

Al mismo tiempo mi hijo ha conseguido lo que ha sontildeado durante mucho tiempo por su 15 cumpleantildeos una impresora 3D personal de modo que ya no teniacutea que utilizar una que teniacutea en la escuela Eacutel es muy bueno usando software CAD como SolidWorks y me propuso disentildear un chasis para el por-taacutetil Por desgracia la placa de impresioacuten 3D con un tamantildeo maacuteximo de 200 mm era demasiado pequentildea para imprimir un marco LCD de 133rdquo y un marco del teclado Despueacutes de varias reflexiones decidimos dividir los marcos de la LCD y del teclado en cuatro partes y unirlos con los clips de montaje im-presos en 3D y pegamento Todas las partes individuales eran inferiores a los 200 mm Si te fijas bien en las fotos del marco de la LCD de los clips y del teclado veraacutes la separacioacuten entre las piezas montadas El disentildeo CAD necesita alrededor de 2 semanas de trabajo para asegurarse de que todo encaja bien

Durante el disentildeo el principal problema que nos preo-cupaba era las bisagras del panel LCD que teniacutea que ser lo suficientemente fuerte para que me permitiera abrir y cerrar con facilidad el ordenador portaacutetil Esto nos permitiacutea crear una aacutengulo perfecto entre el marco del panel LCD y el marco del teclado Para que pudiera encajar correctamente el teclado

Portaacutetil RedTop visto desde arriba Versioacuten inicial de portaacutetil con un ordenador motorola Lapdock 100

El modelo 3D del marco de la LCD

ODROID MAGAZINE 15

en su marco lo desmontamos retirando las cubiertas superior e inferior Elegimos el color rojo para la fibra de impresioacuten 3D para que el ordenador fuese maacutes divertido y llamativo 30 horas maacutes tarde teniacuteamos impresas todas las partes del chasis Las pegamos y atornillamos el panel LCD y el teclado dentro de sus respectivos marcos El siguiente paso fue colocar todas las placas y moacutedulos en el interior del chasis con firmeza las in-sertamos en el plexiglaacutes

El plexiglaacutes fue cortado para que encajara en el espacio crea-do en la etapa de disentildeo CAD para cada marco De esta forma todo el mundo puede apreciar el engranaje del portaacutetil lo cual supone una gran ventaja a la hora de ensentildear informaacutetica El paso final fue cablear todo siguiendo el diagrama por bloques

Acabamos teniendo un ordenador portaacutetil potente y fiable iexclMis estudiantes de la escuela se sorprendieron cuando vieron este portaacutetil poco convencional por primera vez

BateriacuteaAhora disponiacuteamos de un nuevo ordenador portaacutetil pero

sin ninguacuten tipo de bateriacutea recargable de modo que maacutes o me-nos es inuacutetil En primer lugar necesitaacutebamos estimar la ca-pacidad de la bateriacutea necesaria Para tal fin hicimos algunas pruebas de medicioacuten del amperaje en diferentes condiciones de uso El maacuteximo amperaje se alcanza cuando el C2 se pone en marcha con un pico de 11A Durante el funcionamiento nor-mal se mantiene justo por debajo de 1A con un dongle USB WIFI un moacutedulo RTC un adaptador de ratoacuten inalaacutembrico y el moacutedulo Bluetooth conectados El consumo total de energiacutea del ordenador portaacutetil es de alrededor de unos 12W

Mi hijo rescatoacute una vieja bateriacutea de litio recargable de un ordenador portaacutetil de Lenovo (L412) y pudo extraerle las nueve ceacutelulas disponibles dentro del paquete de bateriacuteas La mayoriacutea de las veces este tipo de paquetes de bateriacuteas ya no funcionan no por la propia bateriacutea sino debido a un defectuoso controlador de bateriacuteas integrado Utilizamos 3 y las conectamos en serie Esto nos proporcionaba 3 x 37 V un total de 111 voltios cuando la bateriacutea estaacute casi descargada y maacutes de 12V cuando estaacute completa-mente cargada La placa controladora LCD funciona sin ninguacuten problema a 11V Cada ceacutelula tiene 2200 mAh de capacidad de modo que la autonomiacutea del portaacutetil se acerca a las 2 horas Esto era suficiente para alcanzar el objetivo que nos propusimos al inicio del proyecto

Para volver a cargar las 3 ceacutelulas utilizamos un banco de bate-riacuteas solar de 12V conectada a traveacutes de un moacutedulo de sobreali-mentacioacuten que estaacute reajustado a un liacutemite de corriente de 126 V y 1A Con nuestro modelo particular de bateriacuteas podemos ajustar tanto la tensioacuten de salida como la corriente Cuando es-

PORTATIL ODROID

Clips de LCD

marco del teclado

Chasis completamente montado

ODROID MAGAZINE 16

cribiacute este artiacuteculo la bateriacutea auacuten no estaba colocada dentro del RedTop pero la teniacuteamos fuera para realizar pruebas maacutes ex-haustivas Una vez que completemos las pruebas colocaremos las 3 celdas debajo del teclado en un espacio reservado para tal fin

MaterialesEsto es lo que utiliceacute para montar mi portaacutetil ODROID-C1

Panel LCD HDMI-VGA de 133rdquo con audio httprebaycomAYZ5JU

Teclado mecaacutenico Zalman httpwwwamazonfrdpB00LHSPCS4

Cable OTG USB httpwwwamazonfrdpB007MNZ8VY

Transformador 12V-5V 3A httpwwwamazonfrdpB00JGFEQLE

Moacutedulo Bluetooth HC05 maestroesclavo httpswwwamazonfrdpB013STJSES

Moacutedulo RTC PCF8563 httpwwwamazonfrdpB01DB8JECC

Mini altavoz httprebaycombwOCZv

Impresora 3D httpwwwdagomafrproduitimprimante-dis-

covery200

Filamentos PLA para impresora 3D httpwwwamazonfrdpB00UMV7ANM

Clavijas de corriente DC de 55mm httpwwwamazonfrdpB00O1Y1X70

Interruptor de alimentacioacuten httpwwwamazonfrdpB00HUHBS1Q

Pack de bateriacuteas de ordenador portaacutetil como esta httpwwwamazonfrdpB00TVOC55Y

Conversor de sobrealimentacioacuten (4V-12V) httprebaycomw3FgNH

Varios tornillos arandelas y cables05m de PlexiglassSuper glue

PORTATIL ODROID

La placa controladora de la LCD

JUEGOS ANDROID

PAC-MAn 256iquestun juEGO CLASICO iquestunA nuEvA PERSPECTIvA DEL GEnERO DEL CORREDOR In-TERMInAbLE iexclDESCubRELOpor Bruno Doiche

Suele decirse que los claacutesicos nunca mueren pero algunos pueden quedarse bastante

anticuados Cuando era un nintildeo el Pac-Ma era un juego cuyos graacuteficos y jugabilidad eran totalmente acepta-bles para los estaacutendares de la deacutecada de los 80 A pesar de que todaviacutea se puede disfrutar del original Pac-Man hoy diacutea estaraacutes de acuerdo conmigo en que se queda algo corto en cuanto a funcionalidad incluso si aceptas el reto de jugar al modo aacutercade lo suficiente como para encontrarte con el miacutetico error del nivel 256 que soacutelo los mejores juga-dores de Pac-Man son capaces de ver

Sin embargo en la partida 256 del Pac-Man el error es la principal caracteriacutestica te prosiguen como una ola implacable desde la parte inferior de la pantalla Te hace volver a pensar lo que realmente significa correr por tu supervivencia en un labe-rinto lleno de fantasmas cada uno con su propia personalidad Exige un control muy preciso y pensar muy raacutepido para lograr salir y mantenerte un paso por delante de tus enemigos fantas-mas Ahora no tienes que jugar a los 255 niveles de Pac-Man para llegar a uno de los niveles maacutes elitistas de la historia del juego Puedes instalarlo desde Play Store en

httpbitly2cLaD5q

Un gran juego tan adictivo como lo fue en sus primeros diacuteas arcade

ODROID MAGAZINE 17

book se puede compartir faacutecilmente permitiendo una faacutecil visualizacioacuten en liacutenea y en nuestro caso gestionar la creacioacuten y el enviacuteo de aplicaciones Spark al cluacutester Los notebooks de Jupyter son una forma muy comuacuten de usar Apache Spark ya que permite al usuario centrarse especiacuteficamente en el anaacutelisis de datos en lugar de preocuparse de las herramientas o de la infraestructura que hay detraacutes

Instalar Hadoop File SystemNuestra primera tarea es instalar Java en cada nodo del

cluacutester Instalaremos el uacuteltimo software Java 8 de Oracle EL cual requiere la aceptacioacuten de la licencia durante la instalacioacuten Debido a esto necesitas iniciar sesioacuten en cada nodo de forma independiente y ejecutar el instalador Una vez alliacute crearemos una nueva cuenta de usuario desde la que ejecutaremos todo

$ sudo add-apt-repository ppawebupd8teamjava

$ sudo apt-get update

$ sudo apt-get install oracle-java8-installer

$ sudo apt-get install rsync

$ sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hduser

$ sudo usermod -aG sudo hduser

Ahora necesitamos instalar Hadoop Teacutecnicamente po-driacuteas utilizar la distribucioacuten Hadoop disponibles en el sitio web de Apache pero no estaacute compilada para la CPU ARM v71 de nuestros XU4s Puesto que en su mayor parte es Java es genial ya que se ejecutaraacute sobre JVM que acabamos de instalar en cada nodo Sin embargo hay partes de Hadoop que fueron es-

En el anterior artiacuteculo que escribiacute para ODROID Maga-zine en httpbitly2bHFij7 analice el desarrollo de un cluacutester informaacutetico autoacutenomo con nodos ODROID

XU4 En este artiacuteculo explicaremos coacutemo hacer un buen uso de ese cluacutester instalando Apache Spark y el sistema de ficheros Hadoop asiacute como tambieacuten la forma de acceder a tu cluacutester a traveacutes de la aplicacioacuten web Jupyter

Hadoop File System (HDFS) es uno de los sistemas de ar-chivos distribuidos maacutes populares y maacutes utilizados que existen hoy en diacutea Un sistema de archivos distribuido (DFS) es una aplicacioacuten para cluacutester que agrupa todas las unidades de disco duro dentro de un cluacutester para que puedan ser tratadas como una uacutenica unidad de almacenamiento de cara a sus clientes ex-ternos Utilizar un DFS tiene dos ventajas muy importantes En primer lugar y lo maacutes evidente es que te permite guardar y trabajar con grandes conjuntos de datos que se almacenan en maacutes de un disco duro del cluacutester En segundo lugar un DFS bien disentildeado proporciona mayor resistencia de datos en el nodo o ante fallos de disco mediante la replicacioacuten de bloques de datos en varias unidades del cluacutester En nuestro cluacutester XU4 los discos duros son las tarjetas MicroSD que fueron instaladas y configurada en nuestra anterior guiacutea

Apache Spark es una moderna plataforma de anaacutelisis de Big Data utilizada ampliamente en la industria del anaacutelisis de los grandes voluacutemenes de datos Proporciona herramientas de alto nivel muy simple para manipular y analizar datos ya sea a traveacutes de SQL o mapreduce ademaacutes de usar lenguajes de pro-gramacioacuten comunes tales como Python Scala y Java La pecu-liaridad maacutes significativa de Apache Spark es el uso del fondo de memoria RAM del cluacutester para almacenar objetos de datos intermedios que aceleran significativamente el procesamiento de datos Aunque los 2 GB de RAM integrados en el XU4 po-driacutean parecer un poco austeros en comparacioacuten con las grandes cantidades de memoria en un nodo de un cluacutester industrial hay espacio suficiente para hacer algunas cosas interesantes con Apache Spark

Jupyter Notebook es una aplicacioacuten web que te permite coacute-modamente aprovecharte de diversos lenguajes y plataformas de caacutelculo con tu cluacutester a traveacutes de una interfaz web El note-

InSTALAR HADOOP y SPARK En un CLuSTER ODROID-Xu4por michael Kamprath

HADOOP FILE SYSTEM

ODROID MAGAZINE 18

-l root ldquomkdir -p opthadoop-272rdquo

$ sudo rsync -avxP opthadoop-272

rootslave1opt

$ sudo rsync -avxP opthadoop-272

rootslave2opt

$ sudo rsync -avxP opthadoop-272

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop opthadoop-272rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquoln -s opthadoop-272 usrlocalhadooprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquomkdir -p datahdfstmprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop datahdfsrdquo

El uacuteltimo paso en la instalacioacuten de Hadoop es formatear el nodo como un HDFS

$ usrlocalhadoopbinhdfs namenode -format

Instalar Apache SparkVamos a utilizar un meacutetodo similar al anterior para instalar

Apache Spark En primer lugar vamos a utilizar Python 3 para acceder a Spark y a algunas librerias clave de Python por lo que tendraacutes que iniciar sesioacuten en cada nodo y ejecutar

$ sudo apt-get install python3 python3-pip

$ sudo pip3 install numpy

$ sudo pip3 install urlparse

Despueacutes en el nodo maestro instala Apache Spark

$ cd opt

$ sudo wget httpapacheclazorgspark

spark-162spark-162-bin-hadoop26tgz

$ sudo tar xvzf spark-162-bin-hadoop26tgz

$ sudo chown -R hduserhadoop

spark-162-bin-hadoop26

$ sudo ln -s optspark-162-bin-hadoop26

usrlocalspark

Al igual que en nuestra instalacioacuten de Hadoop necesitas antildeadir algunos archivos de configuracioacuten al directorio usrlo-calchispasconf Puedes localizar los archivos de configuracioacuten necesarios en mi repositorio GitHub (httpbitly2b4GnDU)

Una vez que Spark haya sido configurado en el nodo ma-

critas en C para que se ejecutaran maacutes raacutepido Si una instalacioacuten Hadoop no tiene estas libreriacuteas compiladas en la plataforma en la que estaacute se utilizaraacuten automaacuteticamente las equivalentes en Java por lo que seguiraacute funcionando pero de un modo maacutes lento Para este proyecto he desarrollado una distribucioacuten de la uacuteltima versioacuten de Hadoop para el procesador ARM v71 va-mos a descargar e instalar mi distribucioacuten En el nodo maestro inicia sesioacuten con la cuenta ldquohduserrdquo recieacuten creada y ejecuta los siguientes comandos para instalar Hadoop y configurar los no-dos del cluacutester para utilizar SSH sin contrasentildea Ten en cuenta que tendraacutes que iniciar sesioacuten en cada nodo esclavo desde el nodo maestro para configurar completamente el inicio de se-sioacuten sin contrasentildea

$ cd

$ ssh-keygen -t rsa -P ldquordquo

$ cat $HOMEsshid_rsapub gtgt $HOMEsshauthorized_

keys

$ ssh hduserlocalhost

$ exit

$ ssh hdusermaster

$ exit

$ ssh-copy-id hduserslave1

$ ssh hduserslave1

$ exit

$ ssh-copy-id hduserslave2

$ ssh hduserslave2

$ exit

$ ssh-copy-id hduserslave3

$ ssh hduserslave3

$ exit

$ cd opt

$ sudo wget httpdiybigdatanetdownloads

hadoophadoop-272armhftargz

$ sudo tar xzf hadoop-272armhftargz

$ sudo chown -R hduserhadoop hadoop-272

$ cd usrlocal

$ sudo ln -s opthadoop-272 hadoop

$ cd usrlocalhadoop

Ahora tenemos que crear los archivos de configuracioacuten para Hadoop Por comodidad ya he creado estos archivos que se de-ben instalar en el directorio usrlocalhadoopetchadoop y los he colocado a mi repositorio GitHub en httpbitly2bBehj4

Estos archivos de configuracioacuten tienen una configuracioacuten de cluacutester similar a la descrita en mi anterior artiacuteculo Es po-sible que tengas que modificarlos si has desarrollado un cluacutester diferente Ahora que el software Hadoop estaacute configurado en el nodo maestro lo vamos a copiar en los nodos esclavos

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

HADOOP FILE SYSTEM

ODROID MAGAZINE 19

estro coacutepialo a los esclavos de tu cluacutester

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo -l root

ldquomkdir -p optspark-162-bin-hadoop26rdquo

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave1opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave2opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquochown -R hduserhadoop

optspark-162-bin-hadoop26rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquoln -s optspark-162-bin-hadoop26

usrlocalsparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquomkdir -p datasparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquochown hduserhadoop datasparkrdquo

Instalar Jupyter NotebookLa instalacioacuten Jupyter Notebook es relativamente simple en

comparacioacuten con lo que hemos hecho hasta ahora Ugravenicamente en el nodo maestro ejecuta los siguientes comandos

$ sudo mkdir datajupyter

$ sudo chown -R hduserhadoop datajupyter

$ mkdir ~notebooks

$ sudo pip3 install jupyter

Para hacer visualizaciones en un notebook necesitamos compilar e instalar matplotlib Tambieacuten es uacutetil tener instalado numpy para facilitar la informaacutetica cientiacutefica a traveacutes de Py-thon Ten en cuenta que esto va a llevar un tiempo

$ sudo apt-get build-dep matplotlib

$ sudo pip3 install matplotlib

$ sudo pip3 install numpy

Ejecutar Hadoop Spark y Jupyter

Para logar que todo se ejecute usa los siguientes comandos

$ usrlocalhadoopsbinstart-dfssh

$ usrlocalsparksbinstart-allsh

$ XDG_RUNTIME_DIR=rdquodatajupyterrdquo PYSPARK_DRIVER_

PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=rdquonotebook

--no-browser --port=7777 --notebook-dir=homehduser

notebooksrdquo usrlocalsparkbinpyspark --packages

comdatabricksspark-csv_210110 --master spark

master7077

Puedes optar por convertir esta secuencia de comandos en un script bash independiente o simplemente puede crear un alias para este uacuteltimo comando Te dejo elegir cualquiera de

estas opciones como ejercicio Una vez en funcionamiento in-troduce en el navegador del ordenador httpltdireccioacuten IP del cluacutestergt7777 deberiacutea ver la interfaz Jupyter

Vamos a ejecutar una tarea de recuento de palabras en

nuestro sistema big data de XU4 Crea un nuevo notebook Python 3 haciendo clic en el botoacuten New en la parte superior derecha de la paacutegina web Ahora veraacute un espacio vaciacuteo como el que se muestra en la Figura anterior

Abre una nueva sesioacuten SSH en el nodo principal y antildeade lo siguiente

$ wget httpnorvigcombigtxt

$ hdfs dfs -mkdir usermichael

HADOOP FILE SYSTEM

Paacutegina web principal de Jupyter

Bloc de notas de Jupyter

ODROID MAGAZINE 20

$ hdfs dfs -put bigtxt usermichaelbigtxt

$ hdfs dfs -ls usermichael

Vuelve al notebook recieacuten creado antildeade el siguiente coacutedigo Python en la primera celda

from operator import add

blog_data = sctextFile(lsquohdfsmaster9000user

michaelbigtxtrsquo)cache()

counts = blog_dataflatMap(lambda x xsplit(lsquo lsquo))

map(lambda x (x 1))reduceByKey(add)

A continuacioacuten pulsa Shift + Enter para iniciar el trata-miento de las celdas Una nueva celda apareceraacute en el notebook de Jupyter Teacutecnicamente todaviacutea no ha sucedido nada dentro de Spark excepto crear un plan de consulta para ejecutar el recuento de palabras frente al conjunto de datos del blog que ya hemos colocado en HDFS Spark no hace ninguacuten caacutelculo hasta que no haga falta materializar los resultados La forma maacutes comuacuten de hacerlo es mostrar una parte de los resultados En la siguiente celda del notebook introduzca el coacutedigo y pulse Shift-Enter

countstake(100)

Veraacutes un asterisco junto a la celda en la que hemos intro-ducido el coacutedigo anterior Este asterisco seguiraacute activo mien-tras Spark esteacute haciendo sus caacutelculos Si vuelves a la sesioacuten de terminal en la que lanzaste el software Jupyter veraacutes el regis-tro log de Spark realizando sus caacutelculos Por otra parte si es-

cribes en tu navegador web la direccioacuten httpltdireccioacuten IP del cluacutestergt4040 puedes analizar el estado interno de Spark uti-lizando su interfaz de aplicacioacuten Es probable que escuches a-rrancar el ventilador de la CPU del XU4 durante los caacutelculos

Cuando los caacutelculos finalicen los primeros 100 valores de

los resultados se mostraraacuten en el notebook de JupyterCambia el nombre del notebook haciendo clic en la cadena

ldquo Untitledrdquo junto al logo de Jupyter en la parte superior izqui-erda del notebook Puede seguir trabajando con los datos antildea-diendo maacutes celdas que contengan maacutes coacutedigo python Spark Hay muchos y excelentes recursos en la web para aprender maacutes sobre Apache Spark incluyendo httpsparkapacheorg

Para guardar y cerrar el notebook haz clic en el menuacute ldquoFilerdquo en la paacutegina y selecciona ldquoClose and Haltrdquo Para finalizar Jupy-ter pulsa Control-C dos veces en la ventana de terminal desde el cual se lanzoacute Una vez que el software Juypter se detenga puedes apagar Spark y HDFS con

$ usrlocalsparksbinstop-allsh

$ usrlocalhadoopsbinstop-dfssh

Lecturas recomendadasSi deseas aprender maacutes sobre los temas tratados en este artiacute-

culo puedes utilizar los siguientes recursos para obtener maacutes informacioacuten sobre el software asiacute como mis conocimientos so-bre Big Data

Mi blog httpdiybigdatanetApache Hadoop httphadoopapacheorgApache Spark httpsparkapacheorgJupyter Notebook httpjupyterorg

HADOOP FILE SYSTEM

Los caacutelculos del recuento de palabras se han completado

ODROID MAGAZINE 21

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 7: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

conocido como buildprop que almacena la configuracioacuten de muchos y diferentes aspectos de Android Dos de estos ajusten inciden directamente en el fun-cionamiento del GPS

rokernelandroidgps=dev

ttyACM0

rokernelandroidgps

speed=9600

El primer valor ldquorokernelandroidgpsrdquo es la ubicacioacuten del flujo de datos en serie de NMEA que normalmente es tty El se-gundo valor es la velocidad del flujo en serie Aquiacute es donde las cosas se vuelven interesantes Si podemos ajustar la ubicacioacuten GPS tambieacuten podemos intro-ducir nuestros propios datos GPS NMEA lo cual nos permite engantildear al GPS En la gran mayoriacutea de mis pruebas utilice un ODROID-C2 conectado viacutea UART a mi ordenador portaacutetil Esto me permitiacutea cambiar raacutepidamente en el fichero buildprop el paraacutemetro tty del GPS a ldquodevttyS1rdquo el puerto TTY para UART1 sobre el C2

El engantildeoHe reescrito esta seccioacuten varias veces a la vista de los recientes acontecimientos

y medidas que Niantic ha tomado hacia los ldquotrampososrdquo En lugar de escribir el coacutedigo que he desarrollado me voy a centrar en varias teacutecnicas y herramientas que cumplen con el mismo principio baacutesico El meacutetodo maacutes sencillo es grabar y reproducir un registro log de datos NMEA En el contexto de Pokemon Go darse un paseo por una zona con una buena cantidad de pokestops gimnasios y Pokeacutemon Existen varias aplicaciones de Android que se pueden instalar en tu teleacutefono suponiendo que tiene un teleacute-fono Android que te permiten guardar los datos GPS NMEA en un registro log Mueve el archivo log al ordenador portaacutetil conectado al ODROID Se en-viacutea una liacutenea de texto del archivo log NMEA al puerto serie a una velocidad de alrededor de 1 liacutenea cada 100 o 200 ms Un simple script Python puede ha-cer esto faacutecilmente Este meacutetodo no es de lo maacutes increiacuteble pero es muy simple

POKEMON GO

flujo de datos GPS NmEA en serie

Conexioacuten USB-UART de ODROID

ODROID MAGAZINE 7

POKEMON GO

y hace bien su trabajo El hecho de que estos regis-tros log representen datos reales es una gran ventaja

La segunda opcioacuten es utilizar un simulador GPS que se ejecute en el ordena-dor portaacutetil y bombardear con datos GPS ficticios al ODROID Existen diversas herramientas de simulacioacuten GPS que incluyen interfaces muy buenas Me he dado cuenta que muchas de ellas normalmente enviacutean los datos GPS NMEA simulados a traveacutes de la conexioacuten TCP o UDP Mi solucioacuten para esto simplemente fue escribir un programa para leer desde un puerto local y luego enviar el contenido del paquete a la consola o al puerto serie Una cuestioacuten a la hora de crear datos GPS ficticios tener mucho cuidado con las distancias y la velocidad Recuerda que estaacutes intentando imitar las condiciones del mundo real asiacute que si saltas de una ciudad a otra o de un continente a otro vas a levantar sospechas

Una vez que tengas tu fuente de datos GPS seleccionada y preparada puedes pasar al siguiente paso Para una depuracioacuten raacutepida y faacutecil de los datos GPS en Android tienes algunos programas al final de esta guiacutea Te recomiendo que instale alguno te ayudara bastante con la depuracioacuten y la comprobacioacuten de errores antes de iniciar Pokemon Go

Configurar Android y ODROIDComo ya he dicho la configuracioacuten es bastante simple y consiste en tener un or-

denador portaacutetil o incluso otro ODROID para que actuacutee como fuente de datos GPS Este es el dispositivo que enviaraacute los datos GPS precargados o falsos al ODROID con Android El ordenador portaacutetil estaacute conectado al puerto UART del ODROID o a cualquier otro puerto serie En mi configuracioacuten que se muestra en la Figura anterior tengo un convertidor USB a UART conectado al puerto UART1 del C2

El software para Android es miacutenimo y soacutelo requiere un cambio raacutepido en la con-figuracioacuten y en el archivo buildprop del que he hablado antes Asumiendo que tienes instalado Google PlayStore la instalacioacuten de Pokemon Go es muy simple y soacutelo

Pokemon Go ejecutandose sobre el sistema de suplantacioacuten de geolocalicacioacuten

ODROID MAGAZINE 8

POKEMON GO

requiere unos cuantos clics Si no lo tienes instalado puedes instalarlo siguiendo las sencillas instrucciones de Hardkernel en httpbitly2aWS696 Tuve algunas difi-cultades para interactuar con la aplicacioacuten real Pokemon Go a la hora de usar un teclado y un ratoacuten Me di cuenta que algunos botones no funcionan al ser presio-nado Termineacute por usar una pantalla taacutectil y no volviacute a tener ninguacuten problema

Hay algunas cosas que debes cambiar en la configuracioacuten de tu Android Lo pri-mero que tienes que hacer es entrar en Settings-gtDeveloper Options y desactivar la casilla ldquoAllow mock locationsrdquo que se encuentra en la seccioacuten ldquoDebuggingrdquo Te daraacutes cuenta de que sigue marcada cuando Pokemon Go muestre un error de localizacioacuten GPS Una vez desmarcada la opcioacuten el error desapareceraacute La segunda cosa que tienes que cambiar estaacute en la paacutegina Locatioacuten de los ajustes A continuacioacuten haz clic en la opcioacuten superior ldquoModerdquo apareceraacuten tres opciones la que tienes que seleccionar es ldquoDevice Onlyrdquo Esto haraacute que se use uacutenicamente la informacioacuten de localizacioacuten del GPS descartando cualquier otra fuente

NotasUna vez que has enviados los datos GPS a tu ODROID y tienes tu buildprop

bien configurado para ver el puerto serie correcto puedes seguir adelante y abrir Pokemon Go Asumiendo que tienes tus datos que emulan el movimiento deberiacuteas ver a tu ldquotrainerrdquo pokemon empezando a caminar en el juego Antes de continuar quisiera hacer hincapieacute en dos puntos importantes El primero y maacutes importante estaacutes violando los teacuterminos del juego al hacer esto Si te descubren Niantic tiene todo el derecho a bloquear permanentemente tu cuenta El segundo punto en el que quiero incidir es que se trata soacutelo de un juego Si se llega a un punto donde el juego tiene que automatizarse para poder disfrutar de eacutel es probable que no valga la pena jugar Como todas las cosas se recoge lo que se siembra y espero que esta guiacutea te sirva sobre todo para adquirir conocimientos uacutetiles acerca de los sistemas GPS y Android

Enlaces uacutetiles

Apps de informacioacuten GPS para Android httpbitly2bBdoXs Esta es el que yo usohttpbitly2br7DNK Igual de buena con una interfaz muy limpia

Analizador y generador NmEA httpbitly1FjZRPk Uno de los mejores generadores simple de usar e

incluye algunos ejemplos baacutesicos Se le echa en falta un mensaje GPGLL pero es insignificante Este es el que yo utiliceacute para mi simulador El meacutetodo maacutes simple para fijar dos puntos de paso es tener el programa con un incremento automaacutetico a una velocidad determinada

Existen unos cuantos simuladores para Linux y mucho maacutes para Windows Una raacutepida buacutesqueda en Google con ldquo GPS Simulatorrdquo o ldquo GPS NMEA Simu-latorrdquo te los mostraraacute No pude encontrar uno que fuera gratuito y de coacutedigo abierto aunque si uno pre-compilado gratuito muy simple y que estaacute dis-ponible en httpitly2bBfXcm

Maacutes informacioacuten sobre NMEA GPShttpaprsgidsnlnmeahttpbitly1g91wIE

ODROID MAGAZINE 9

asiacute como Websterrsquos English Dictionary Simplemente son coleccio-nes de palabras que tienen alguacuten significado para las personas o que hayan sido utilizadas como contrasentildeas con an-terioridad como se suelen apreciar en vulneraciones de seguri-dad Por lo general los diccionarios para descifrar la contrasentildea incluyen muchos maacutes teacuterminos que un diccionario estaacutendar porque tambieacuten tienen que incluir palabras del argot (como Yolo) o palabras mal escritas habitualmente (como aprentice) Tambieacuten incluyen nombres propios (como Andreacutes) nombres de personajes o lugares ficticios (como Pellenor Fields) o teacutermi-nos teacutecnicos (como el aacutecido desoxirribonucleico) Una buena fuente de estas palabras es la Wikipedia (que viene en diferen-tes idiomas) o incluso los subtiacutetulos de peliacutecula que se puede obtener en grandes cantidades en httpbitly2a1g42j

Kali Linux viene con algunos diccionarios por defecto que puedes utilizar o buscar en Internet listas de palabras uacutetiles

RockYou (134M) httpbitly1wtmeYADarkc0de (18M) httpbitly1pwlvJJLista de diccionarios httpbitly2ayDRaPTorrents lista de palabras WPA-PSK httpbitly2azrOqN 170K de palabras WPA httpbitly2as46gm 1 milloacuten de palabras httpbitly2a1geH4

En nuestros anteriores artiacuteculos atacamos las redes WEP y redes con WPS activado pero ahora es el momento de atacar la tecnologiacutea maacutes segura de las redes inalaacutembri-

cas el cifrado WPA Como siempre pide el consentimiento del propietario de la red antes de intentar romper su red y asiacute evitar problemas legales despueacutes iexclEs mejor prevenir que curar cuando se prueban las cosas

Ataques de Diccionario - Crear listas de palabras

Dado que la gente tiene fama por ser muy deficiente a la hora de elegir contrasentildeas seguras la mejor tecnica para romper la mayoriacutea de las contrasentildeas es ejecutar un ataque de diccio-nario

La complejidad de los ataques de diccionario reside en con-

seguir palabras correctas que sean relevantes para tu objetivo Por ejemplo si estaacutes atacando una red WiFi alemana es posible que quieras probar palabras en alemaacuten (iexclalgunas son muy lar-gas) Si estaacutes atacando un punto de acceso de un centro meacutedico puedes probar con teacuterminos meacutedicos No existe el diccionario ldquoperfectordquo ndash todo depende de tus necesidades Puedes encon-trar amplia informacioacuten sobre diccionarios con vistas a realizar ataques aquiacute httpbitly2aLS6Fx

No debemos confundir el teacutermino ldquodiccionariordquo con algo

ASuMIR EL RIEGO DE PEnETRAR LAS REDES wPA - PARTE 2por Adrian Popa

SEGURIDAD WPA

La busqueda de la palabra correccta

iexclEl Ataque de diccionario iexclEs suacuteper efectivo

ODROID MAGAZINE 10

tos praacutecticos inserta un Enter despueacutes de cada palabra) Luego ejecutamos sort para hacer las palabras uacutenicas que es una o-peracioacuten muy intensa para la CPU y la memoria Si no tienes suficiente memoria RAM para sort puedes dividir la entrada en varios archivos maacutes pequentildeos y ejecutar sort luego conca-tenar los resultados y ejecutar de nuevo sort sobre el resultado

$ iconv -f UTF-8 -t US-ASCIITRANSLIT

wiki_en_fulltxt | tr -cs ldquo[alpha]rdquo ldquonrdquo gtgt

wordlist_en_fulltxt

$ sort -u wordlist_en_fulltxt gt

wordlist_en_uniquetxt

Los diccionarios anteriores no estaacuten disentildeados necesari-amente para las restricciones WPA de modo que encontraraacuten contrasentildeas maacutes pequentildeas Puede eliminar las palabras maacutes pequentildeas o puedes utilizar una teacutecnica para combinarlas y crear contrasentildeas maacutes largas Para eliminar palabras inadecuadas pu-edes ejecutar grep (menor de 8 caracteres)

$ grep -P lsquo8rsquo wordlist_en_uniquetxt gt wordlist_

en_wpatxt

Hasta aquiacute tu diccionario se compone de una uacutenica pa-labra Si deseas generar diccionarios con parejas de palabras (o varias palabras) puede hacerlo con algo como esto (que genera permutaciones de dos palabras en el diccionario)

$ cat wordlist_en_uniquetxt wordlist_en_uniquetxt

| perl -lne lsquoBEGINapush a$_ENDforeach $x(a)

foreach $y(a)print $x$yrsquo gt every2wordstxt

Para tu comodidad puedes localizar listas de palabras de Wikipedia en ingleacutes y rumano en mi paacutegina de GitHub para hacer pruebas (httpbitly2ayE1yW)

Ejecutar ataques de diccionario con Pyrit

Vamos a utilizar de nuevo Pyrit para ejecutar un ataque de diccionario pero esta vez en lugar de ejecutarlo directamente vamos a importar el diccionario dentro Pyrit y lo vamos a eje-cutar desde alliacute Esto nos da la posibilidad de poder precalcular los hashes basados en el diccionario de este modo el descifrado real queda reducido principalmente a una consulta posterior Los datos se almacenan en ~pyrit

$ pyrit -e lsquoNASA-HQ-WPArsquo create_essid

$ pyrit -i wordlist_en_wpatxt import_passwords

$ pyrit batch

El comando batch de Pyrit necesita mucho tiempo y haraacute

Tambieacuten puede crear tu propio diccionario desde un vol-cado de texto Por ejemplo puedes obtener una copia offline de Wikipedia (en muchos idiomas) desde el Proyecto Kiwix (httpbitly2awalku) Necesitaraacutes descargar el archivo no in-dexado zim para el idioma que elijas aseguraacutendose de seleccio-nar la variante ldquonopicrdquo para no descargar ninguna imagen La Wikipedia en Ingleacutes ocupa aproximadamente 16 GB mientras que en otros idiomas es sustancialmente menor Para conver-tirla en una lista de palabras uacutenica es necesario tener una gran cantidad de espacio libre Por ejemplo el tamantildeo no compri-mido de la Wikipedia en Ingleacutes es de 130 GB Ten en cuenta que el comando zimdump necesitoacute un par de diacuteas para llegar a completarse en mi C1 con almacenamiento NFS

$ wget httpwwwopenzimorg

downloadzimlib-12targz

$ tar zxvf zimlib-12targz

$ cd zimlib-12

$ sudo apt-get install liblzma-dev

$ configure --prefix=usr

$ make

$ sudo make install

$ cd

$ echo lsquoDumping all articles as html into the zimdump

directory Please waitrsquo

$ zimdump -D zimdump wikipedia_en_all_nopiczim

A continuacioacuten tenemos que convertir el HTML a texto y concatenar todos los archivos en un uacutenico archivo de texto Vamos a crear un empaquetador alrededor de html2text de manera que si se bloquea no se detendraacute toda la liacutenea de in-formacioacuten El proceso tardaraacute entre varias horas y varios diacuteas dependiendo de la cantidad de archivos HTML que tengas que procesar y el dispositivo ODROID que poseas

$ sudo apt-get install html2text

$ cat ltltEOF gthtml2textwrappersh

binbash

html2text -utf8 ldquo$rdquo

exit 0

EOF

$ chmod a+x html2textwrappersh

$ find zimdumpA -print0 | xargs -0 -P 4 -n 30

html2textwrappersh gtgt wiki_en_fulltxt

El siguiente paso es transcribir los caracteres no ASCII a sus homoacutelogos ASCII (por ejemplo I -gt i) y dividir el archivo resultante en una lista de palabras Iconv depende de la con-figuracioacuten regional asiacute que aseguacuterate de tener soporte UTF-8 (en lugar de ldquoCrdquo por ejemplo) El comando ldquotrrdquo reemplaza todos los caracteres no alfanumeacutericos por nuevas liacuteneas (a efec-

SEGURIDAD WPA

ODROID MAGAZINE 11

$ wget httpwwwwillhackforsushicomcode

cowpatty46cowpatty-46tgz

$ tar xvf cowpatty-46tgz

$ cd cowpatty-46

$ sudo apt-get install libpcap-dev libssl-dev

$ make

$ sudo make install

$ cd

$ cowpatty -d linksys2hash -r

linksys2-insidious-handshakepcap -s linksys2 -2

Puedes especificar el archivo hash que quieres revisar con la opcioacuten -d (selecciona el hash con el mismo nombre que el punto de acceso objetivo) La opcioacuten -r especifica el archivo de captura con el handshake de 4 vias -s especifica el SSID

(ya que no se puede extraer de la captura) y -2 significa no ser demasiado estricto a la hora de analizar el archivo de captura Con esta configuracioacuten fui capaz de conseguir la contrasentildea en menos de 3 segundos usando un ODROID-C1 con una tasa de 25000 PMKs (comparados con los 300 PMKs cuando calculamos los PMKs) Por lo tanto el proceso es 83 veces maacutes raacutepido a expensas de utilizar unos 7 GB de espacio en disco

para el ataque Depende de ti decidir si vale la pena aunque consumas maacutes espacio en disco

Ingeneriacutea Social El doble maleacutefico

que tu CPU se caliente bastante mientras se crea la base de da-tos Si el calor te supone un problema puedes utilizar una her-ramienta como cpuctrl (httpbitly2aon1dA) para limitar la frecuencia maacutexima de la CPU con el regulador adecuado como por ejemplo ldquoconservativerdquo

Para obtener la clave de red tienes que proporcionar el ar-chivo de captura y los resultados si existen deberiacutean aparecer raacutepidamente Aquiacute tienes un pcap de ejemplo como referencia

httpbitly2agcRug A continuacioacuten ejecuta este comando

$ pyrit -r nasa-supercalifragilistic-handshakepcap

attack_db

Como puedes ver incluso lo que parecer ser una contrasentildea larga y robusta puede llegar a descifrarse si aparece en alguacuten artiacuteculo de Internet

Ataques con tabla RainbowUna vez que tengas cargado el diccionario en Pyrit iquestQueacute es

lo que te impide descifrar cada handshake que capturas Pues bien el SSID actuacutea como los ldquogranos de salrdquo comprobando que la misma contrasentildea combinada con un SSID diferente genere un PMK diferente Tener una lista de contrasentildeas pre-calculadas se denomina tabla rainbow y te permite descifrar las contrasentildeas maacutes raacutepidamente a costa de conar con maacutes espacio en disco para almacenar estas listas

Existe un proyecto que crea tablas rainbow para WPA para los 1000 SSID maacutes comunes en httpbitly2azsBIh Si tu red ob-jetivo tiene un SSID que estaacute en la lista (httpbitly2adkjtd) potencialmente podriacuteas descifrar la contrasentildea mucho maacutes raacutepido que con otros meacutetodos Vamos a poner esto a prueba

Para este experimento prepareacute un punto de acceso llama-do linksys2 con una contrasentildea del diccionario de palabras (httpbitly2ayEXmI) Necesitas descargar el conjunto tarball que el sitio proporciona (cuanto maacutes grande sea maacutes posibilidades tendraacutes de encontrar la clave) Descompriacuteme-lo en un directorio y obtendraacutes 1000 archivos hash cada uno nombrado de acuerdo con el SSID del punto de acce-so Tambieacuten necesitaremos instalar Cowpatty (httpbitly2awaJ2A) para poder procesar las tablas

SEGURIDAD WPA

Un ataque de diccionario wPA con Pyrit

Ataque wPA con tabla rainbow

XKCD obligatorio httpsxkcdcom538

ODROID MAGAZINE 12

Cuando todo esteacute listo inicia WifiPhisher especificando la interfaz de monitor y la interfaz hostapd

$ sudo airmon-ng start wlan0

$ sudo wifiphisher -jI mon0 -aI wlan1

Si todo va bien WifiPhisher te mostraraacute una lista de pun-tos de Acceso a engantildear y configuraraacute las reglas de iptables y DHCP y te preguntaraacute por el tipo de paacutegina web falsa que quieres que muestre A continuacioacuten procederaacute a desconectar los clientes y hacer que se conecten al punto de acceso falso y les mostraraacute algo similar a la Figura 5 Seraacute entonces cuando veas la contrasentildea en el inteacuterprete de comandos Ten en cuenta que estamos hablando de algo especialmente retorcido puesto que ya no estaacutes engantildeando soacutelo a los ordenadores sino tambieacuten a la gente real

Mantener tu WiFi seguraCon esto concluimos nuestro anaacutelisis sobre la seguridad

inalaacutembrica Estas son algunas pautas que deberiacuteas tener en cuenta para mantener tu wifi segura

bull No utilices tecnologiacuteas de encriptacioacuten obsoletas (WEP)bull No confiacutees demasiado en ocultar la red o usar listas de ac-ceso mAC ya que son muy deacutebiles y muy faacuteciles de evitar bull Desactiva la tecnologiacutea WPS en redes en las que fiacutesica-mente sea posiblebull Utiliza contrasentildeas largas que no esteacuten diccionarios Si tienes que usar las palabras del diccionario para que te sea maacutes faacutecil recordarlas (despues de todo eres un ser huma-no) combiacutenalas de forma aleatoria Una opcioacuten es utilizar la teacutecnica horse-battery-staple de xkcd (httpsxkcdcom936) esta herramienta httpbitly1cubp1J puede hacerlo de forma automaacuteticabull Antildeadir caracteres a una contrasentildea aumenta su seguri-dad bastante maacutes que usar un signo de puntuacioacuten espe-cial en contrasentildeas maacutes cortasbull Si es posible considera la posibilidad de utilizar WPA2-Enterprise en tu red domeacutesticabull No utilices nombres comunes para la red SSIDbull Reducir la intensidad de la sentildeal no te ayudaraacute puesto que el atacante siempre puede conseguir una antena mejor

Como siempre puedes compartir tus propias experiencias hacer preguntas o compartir problemas en el hilo de soporte en httpbitly2azoM5N

Es posible que hayas agotado todo lo que tienes a tu alcance para romper un punto de acceso WiFi en particular y aun asiacute no consigues resultados Es probable que tenga que esperar unos 3 millones de antildeos para que el ataque de fuerza bruta alcance el 1 asiacute que iquestqueacute podemos hacer Pues bien simple-mente tienes que atacar el punto de seguridad maacutes deacutebil de la cadena iexclEl ser humano

Un proyecto que tiene por objetivo simplemente ldquopregun-tarrdquo por la contrasentildea es WifiPhisher (httpbitly1wPdPPQ) El programa configura un punto de acceso abierto maleacutefico que clona el SSID del objetivo A continuacioacuten desautentifica to-dos los clientes del objetivo y espera a que se vuelvan a conec-tar Por casualidad (o aseguraacutendose de que tienes una mejor sentildeal) los clientes se conectaraacuten automaacuteticamente en su lugar a tu punto de acceso abierto Cuando intenten acceder a los recursos de Internet seraacuten redireccionados a un portal que se presenta como su router y le solicitaraacute su contrasentildea WPA (para mejorar la seguridad por supuesto) Una vez que se obtiene la contrasentildea se desconecta el punto de acceso y el cliente se co-necta sin que se perciba la diferencia a su red original Ves ndash es faacutecil Para conseguir esto necesitaraacutes dos adaptadores inalaacutem-bricos - uno que sea compatible con la inyeccioacuten (para desco-nectar continuamente a los usuarios del AP objetivo) y otro para hacerse pasar por el falso AP Para esta prueba he utilizado dos adaptadores Wifi Modulo 4 de Hardkernel

$ git clone httpsgithubcomsophronwifiphishergit

$ sudo apt-get install tcpdump hostapd

$ cd wifiphisher

$ sudo python setuppy install

Si aparece alguacuten error indicando que no encuentra setuptools instaacutelalo y vuelve a ejecutar el comando install

$ wget httpsbootstrappypaioez_setuppy -O - |

sudo python

Ten en cuenta que para que esto funcione necesitaraacutes con-figurar hostapd para que trabaje con tu tarjeta inalaacutembrica Tienes maacutes detalles en httpbitly2aLTF6w and httpbitly2aLTlnX

SEGURIDAD WPA

Los usuarios desprevenidos escribiraacuten su contrase-ntildea wPA en tu entorno de suplantacioacuten de red

ODROID MAGAZINE 13

En los uacuteltimos antildeos el tema del big data y de la ciencia de los datos se ha convertido en una tendencia muy importante en un sinfiacuten de in-

dustrias Las empresas de alta tecnologiacutea de Silicon Valley ya no son los uacutenicos proveedores de temas como Hadoop la regresioacuten logiacutestica y el aprendizaje de maquinas Estar familiarizado con las tecnologiacuteas del big data se estaacute convirtiendo en un requisito cada vez maacutes necesario en los empleos relacionados con la tecnologiacutea en cualquier parte Por desgracia y siendo realista la experiencia praacutectica con las tecnologiacuteas de big data normalmente implica tener acceso a un costoso cluacutester de ordenadores para ejecutar tus consultas Sin embargo la reciente revolucioacuten de los orde-nadores de placa reducida ha hecho que la informaacutetica distri-buida sea accesible a nivel personal y en educacioacuten para realizar tareas como esta y muchas otras

Imparto clases sobre disentildeo y mantenimiento de sistemas digitales y redes en un instituto franceacutes Durante los uacuteltimos 4 antildeos he ido sustituyendo todos los ordenadores de sobremesa de mi aula por ordenadores SBC principalmente por razones de espacio ya que la escuela estaacute cerca de la ciudad de Pariacutes y el espacio es muy caro iexclEl uso de ordenadores SBC deja maacutes

espacio en la mesa de trabajo del estudianteEmpeceacute con una Raspberry Pi pero pronto cambieacute al

ODROID-C1 tan pronto como estuvo disponible ya que la Pi no era lo suficientemente raacutepida para el trabajo en labo-ratorios (laboratorios GNS3 diferentes anaacutelisis de protocolos bus y configuracioacuten de los equipos de red) o simplemente para navegar por Internet Para el proacuteximo antildeo escolar ya habreacute cambiado la mitad de la clase al ODROIDC2 con un total de 10 ODROID-C1s y 8 ODROID-C2s

A la hora de preparar los laboratorios para los estudiantes tuve que usar el mismo equipo que ellos con el fin de asegurar-me de que todo funcionara sin problemas cuando los estudi-antes trabajasen en sus propios entornos de laboratorios Esto requeriacutea utilizar un ODROID en lugar de un ordenador por-

taacutetil x86 para eliminar cualquier diferencia de comportamiento en-tre ambos Para ser maacutes eficiente a la hora de preparar los laborato-rios parte de ellos los configuraba en casa y no en la escuela He in-tentado buscar algunas soluciones para fabricar un ordenador portaacutetil usando un ODROID de modo que se convirtiese en mi portaacutetil ODROID de ida y vuelta desde la escuela a casa Recorro 5 km hasta la escuela en bicicleta por lo que la solucioacuten teniacutea que ser ligera y compacta para transportarla

PORTATILODROID-C1 un PROyECTO CASERO A MEDIDA COn nOMbRE En CLAvE ldquoREDTOPrdquopor fabien Thiriet

PORTATIL ODROID

Portaacutetil REDTOP y vista trasera del mismo

ODROID MAGAZINE 14

RequisitosAl principio del proyecto elaboreacute una lista de requisitos

para el ordenador portaacutetil

bull Alimentado con 12V a traveacutes de un sistema de bateriacuteas solares en casa y con una fuente de alimentacioacuten exter-na 230V-12V en la escuelabull Bateriacutea Li-ion para cuando me esteacute moviendo con una autonomiacutea de unas 2 horas Algunos entornos de labo-ratorios en la escuela requieren monitorizar los buses CAN integrados en los vehiacuteculos de modo que se hace necesario el uso de bateriacuteasbull Pantalla LCD de 10rdquo como miacutenimobull Teclado y pantalla LCD montados en forma de ordena-dor portaacutetilbull GPIOs y conectores ODROID faacutecilmente accesiblebull Bluetooth maestroesclavo disponible puesto que ten-go muchos proyectos que funcionan con placas Arduino remotasbull RTC integrado porque no siempre estoy conectado a Internet

Proceso de fabricacioacutenAl principio encontreacute un Motorola Lapdock 100 en eBay

y lo utiliceacute durante varios meses Tras solucionar los problemas HDMI entre el ODROID y el Lapdock ya que el Lapdock se apagaba despueacutes de 20 segundos si no se conectaba nada a su puerto USB todo funcionoacute correctamente Se trataba de una solucioacuten muy ligera pero no lo suficientemente coacutemoda para un uso diario ya que la pantalla LCD soacutelo teniacutea 10rdquo y el teclado era muy pequentildeo Tambieacuten echeacute un vistazo a PiTop pero el precio era muy elevado para lo que estaba dispuesto a gastar Lo que realmente necesitaba era simplemente un gran panel LCD y un buen teclado montados en conjunto

Decidiacute buscar en eBay una pantalla LCD maacutes grande y en-contreacute un modelo de 133rdquo muy econoacutemico por 85 euro con en-viacuteo e impuestos incluidos La pantalla tiene una buena resolu-cioacuten de 1900x600 y los colores se ven muy bien Sin embargo

PORTATIL ODROID

el panel LCD se vendiacutea sin marco de modo que necesita algo para solventar esta cuestioacuten

Al mismo tiempo mi hijo ha conseguido lo que ha sontildeado durante mucho tiempo por su 15 cumpleantildeos una impresora 3D personal de modo que ya no teniacutea que utilizar una que teniacutea en la escuela Eacutel es muy bueno usando software CAD como SolidWorks y me propuso disentildear un chasis para el por-taacutetil Por desgracia la placa de impresioacuten 3D con un tamantildeo maacuteximo de 200 mm era demasiado pequentildea para imprimir un marco LCD de 133rdquo y un marco del teclado Despueacutes de varias reflexiones decidimos dividir los marcos de la LCD y del teclado en cuatro partes y unirlos con los clips de montaje im-presos en 3D y pegamento Todas las partes individuales eran inferiores a los 200 mm Si te fijas bien en las fotos del marco de la LCD de los clips y del teclado veraacutes la separacioacuten entre las piezas montadas El disentildeo CAD necesita alrededor de 2 semanas de trabajo para asegurarse de que todo encaja bien

Durante el disentildeo el principal problema que nos preo-cupaba era las bisagras del panel LCD que teniacutea que ser lo suficientemente fuerte para que me permitiera abrir y cerrar con facilidad el ordenador portaacutetil Esto nos permitiacutea crear una aacutengulo perfecto entre el marco del panel LCD y el marco del teclado Para que pudiera encajar correctamente el teclado

Portaacutetil RedTop visto desde arriba Versioacuten inicial de portaacutetil con un ordenador motorola Lapdock 100

El modelo 3D del marco de la LCD

ODROID MAGAZINE 15

en su marco lo desmontamos retirando las cubiertas superior e inferior Elegimos el color rojo para la fibra de impresioacuten 3D para que el ordenador fuese maacutes divertido y llamativo 30 horas maacutes tarde teniacuteamos impresas todas las partes del chasis Las pegamos y atornillamos el panel LCD y el teclado dentro de sus respectivos marcos El siguiente paso fue colocar todas las placas y moacutedulos en el interior del chasis con firmeza las in-sertamos en el plexiglaacutes

El plexiglaacutes fue cortado para que encajara en el espacio crea-do en la etapa de disentildeo CAD para cada marco De esta forma todo el mundo puede apreciar el engranaje del portaacutetil lo cual supone una gran ventaja a la hora de ensentildear informaacutetica El paso final fue cablear todo siguiendo el diagrama por bloques

Acabamos teniendo un ordenador portaacutetil potente y fiable iexclMis estudiantes de la escuela se sorprendieron cuando vieron este portaacutetil poco convencional por primera vez

BateriacuteaAhora disponiacuteamos de un nuevo ordenador portaacutetil pero

sin ninguacuten tipo de bateriacutea recargable de modo que maacutes o me-nos es inuacutetil En primer lugar necesitaacutebamos estimar la ca-pacidad de la bateriacutea necesaria Para tal fin hicimos algunas pruebas de medicioacuten del amperaje en diferentes condiciones de uso El maacuteximo amperaje se alcanza cuando el C2 se pone en marcha con un pico de 11A Durante el funcionamiento nor-mal se mantiene justo por debajo de 1A con un dongle USB WIFI un moacutedulo RTC un adaptador de ratoacuten inalaacutembrico y el moacutedulo Bluetooth conectados El consumo total de energiacutea del ordenador portaacutetil es de alrededor de unos 12W

Mi hijo rescatoacute una vieja bateriacutea de litio recargable de un ordenador portaacutetil de Lenovo (L412) y pudo extraerle las nueve ceacutelulas disponibles dentro del paquete de bateriacuteas La mayoriacutea de las veces este tipo de paquetes de bateriacuteas ya no funcionan no por la propia bateriacutea sino debido a un defectuoso controlador de bateriacuteas integrado Utilizamos 3 y las conectamos en serie Esto nos proporcionaba 3 x 37 V un total de 111 voltios cuando la bateriacutea estaacute casi descargada y maacutes de 12V cuando estaacute completa-mente cargada La placa controladora LCD funciona sin ninguacuten problema a 11V Cada ceacutelula tiene 2200 mAh de capacidad de modo que la autonomiacutea del portaacutetil se acerca a las 2 horas Esto era suficiente para alcanzar el objetivo que nos propusimos al inicio del proyecto

Para volver a cargar las 3 ceacutelulas utilizamos un banco de bate-riacuteas solar de 12V conectada a traveacutes de un moacutedulo de sobreali-mentacioacuten que estaacute reajustado a un liacutemite de corriente de 126 V y 1A Con nuestro modelo particular de bateriacuteas podemos ajustar tanto la tensioacuten de salida como la corriente Cuando es-

PORTATIL ODROID

Clips de LCD

marco del teclado

Chasis completamente montado

ODROID MAGAZINE 16

cribiacute este artiacuteculo la bateriacutea auacuten no estaba colocada dentro del RedTop pero la teniacuteamos fuera para realizar pruebas maacutes ex-haustivas Una vez que completemos las pruebas colocaremos las 3 celdas debajo del teclado en un espacio reservado para tal fin

MaterialesEsto es lo que utiliceacute para montar mi portaacutetil ODROID-C1

Panel LCD HDMI-VGA de 133rdquo con audio httprebaycomAYZ5JU

Teclado mecaacutenico Zalman httpwwwamazonfrdpB00LHSPCS4

Cable OTG USB httpwwwamazonfrdpB007MNZ8VY

Transformador 12V-5V 3A httpwwwamazonfrdpB00JGFEQLE

Moacutedulo Bluetooth HC05 maestroesclavo httpswwwamazonfrdpB013STJSES

Moacutedulo RTC PCF8563 httpwwwamazonfrdpB01DB8JECC

Mini altavoz httprebaycombwOCZv

Impresora 3D httpwwwdagomafrproduitimprimante-dis-

covery200

Filamentos PLA para impresora 3D httpwwwamazonfrdpB00UMV7ANM

Clavijas de corriente DC de 55mm httpwwwamazonfrdpB00O1Y1X70

Interruptor de alimentacioacuten httpwwwamazonfrdpB00HUHBS1Q

Pack de bateriacuteas de ordenador portaacutetil como esta httpwwwamazonfrdpB00TVOC55Y

Conversor de sobrealimentacioacuten (4V-12V) httprebaycomw3FgNH

Varios tornillos arandelas y cables05m de PlexiglassSuper glue

PORTATIL ODROID

La placa controladora de la LCD

JUEGOS ANDROID

PAC-MAn 256iquestun juEGO CLASICO iquestunA nuEvA PERSPECTIvA DEL GEnERO DEL CORREDOR In-TERMInAbLE iexclDESCubRELOpor Bruno Doiche

Suele decirse que los claacutesicos nunca mueren pero algunos pueden quedarse bastante

anticuados Cuando era un nintildeo el Pac-Ma era un juego cuyos graacuteficos y jugabilidad eran totalmente acepta-bles para los estaacutendares de la deacutecada de los 80 A pesar de que todaviacutea se puede disfrutar del original Pac-Man hoy diacutea estaraacutes de acuerdo conmigo en que se queda algo corto en cuanto a funcionalidad incluso si aceptas el reto de jugar al modo aacutercade lo suficiente como para encontrarte con el miacutetico error del nivel 256 que soacutelo los mejores juga-dores de Pac-Man son capaces de ver

Sin embargo en la partida 256 del Pac-Man el error es la principal caracteriacutestica te prosiguen como una ola implacable desde la parte inferior de la pantalla Te hace volver a pensar lo que realmente significa correr por tu supervivencia en un labe-rinto lleno de fantasmas cada uno con su propia personalidad Exige un control muy preciso y pensar muy raacutepido para lograr salir y mantenerte un paso por delante de tus enemigos fantas-mas Ahora no tienes que jugar a los 255 niveles de Pac-Man para llegar a uno de los niveles maacutes elitistas de la historia del juego Puedes instalarlo desde Play Store en

httpbitly2cLaD5q

Un gran juego tan adictivo como lo fue en sus primeros diacuteas arcade

ODROID MAGAZINE 17

book se puede compartir faacutecilmente permitiendo una faacutecil visualizacioacuten en liacutenea y en nuestro caso gestionar la creacioacuten y el enviacuteo de aplicaciones Spark al cluacutester Los notebooks de Jupyter son una forma muy comuacuten de usar Apache Spark ya que permite al usuario centrarse especiacuteficamente en el anaacutelisis de datos en lugar de preocuparse de las herramientas o de la infraestructura que hay detraacutes

Instalar Hadoop File SystemNuestra primera tarea es instalar Java en cada nodo del

cluacutester Instalaremos el uacuteltimo software Java 8 de Oracle EL cual requiere la aceptacioacuten de la licencia durante la instalacioacuten Debido a esto necesitas iniciar sesioacuten en cada nodo de forma independiente y ejecutar el instalador Una vez alliacute crearemos una nueva cuenta de usuario desde la que ejecutaremos todo

$ sudo add-apt-repository ppawebupd8teamjava

$ sudo apt-get update

$ sudo apt-get install oracle-java8-installer

$ sudo apt-get install rsync

$ sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hduser

$ sudo usermod -aG sudo hduser

Ahora necesitamos instalar Hadoop Teacutecnicamente po-driacuteas utilizar la distribucioacuten Hadoop disponibles en el sitio web de Apache pero no estaacute compilada para la CPU ARM v71 de nuestros XU4s Puesto que en su mayor parte es Java es genial ya que se ejecutaraacute sobre JVM que acabamos de instalar en cada nodo Sin embargo hay partes de Hadoop que fueron es-

En el anterior artiacuteculo que escribiacute para ODROID Maga-zine en httpbitly2bHFij7 analice el desarrollo de un cluacutester informaacutetico autoacutenomo con nodos ODROID

XU4 En este artiacuteculo explicaremos coacutemo hacer un buen uso de ese cluacutester instalando Apache Spark y el sistema de ficheros Hadoop asiacute como tambieacuten la forma de acceder a tu cluacutester a traveacutes de la aplicacioacuten web Jupyter

Hadoop File System (HDFS) es uno de los sistemas de ar-chivos distribuidos maacutes populares y maacutes utilizados que existen hoy en diacutea Un sistema de archivos distribuido (DFS) es una aplicacioacuten para cluacutester que agrupa todas las unidades de disco duro dentro de un cluacutester para que puedan ser tratadas como una uacutenica unidad de almacenamiento de cara a sus clientes ex-ternos Utilizar un DFS tiene dos ventajas muy importantes En primer lugar y lo maacutes evidente es que te permite guardar y trabajar con grandes conjuntos de datos que se almacenan en maacutes de un disco duro del cluacutester En segundo lugar un DFS bien disentildeado proporciona mayor resistencia de datos en el nodo o ante fallos de disco mediante la replicacioacuten de bloques de datos en varias unidades del cluacutester En nuestro cluacutester XU4 los discos duros son las tarjetas MicroSD que fueron instaladas y configurada en nuestra anterior guiacutea

Apache Spark es una moderna plataforma de anaacutelisis de Big Data utilizada ampliamente en la industria del anaacutelisis de los grandes voluacutemenes de datos Proporciona herramientas de alto nivel muy simple para manipular y analizar datos ya sea a traveacutes de SQL o mapreduce ademaacutes de usar lenguajes de pro-gramacioacuten comunes tales como Python Scala y Java La pecu-liaridad maacutes significativa de Apache Spark es el uso del fondo de memoria RAM del cluacutester para almacenar objetos de datos intermedios que aceleran significativamente el procesamiento de datos Aunque los 2 GB de RAM integrados en el XU4 po-driacutean parecer un poco austeros en comparacioacuten con las grandes cantidades de memoria en un nodo de un cluacutester industrial hay espacio suficiente para hacer algunas cosas interesantes con Apache Spark

Jupyter Notebook es una aplicacioacuten web que te permite coacute-modamente aprovecharte de diversos lenguajes y plataformas de caacutelculo con tu cluacutester a traveacutes de una interfaz web El note-

InSTALAR HADOOP y SPARK En un CLuSTER ODROID-Xu4por michael Kamprath

HADOOP FILE SYSTEM

ODROID MAGAZINE 18

-l root ldquomkdir -p opthadoop-272rdquo

$ sudo rsync -avxP opthadoop-272

rootslave1opt

$ sudo rsync -avxP opthadoop-272

rootslave2opt

$ sudo rsync -avxP opthadoop-272

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop opthadoop-272rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquoln -s opthadoop-272 usrlocalhadooprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquomkdir -p datahdfstmprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop datahdfsrdquo

El uacuteltimo paso en la instalacioacuten de Hadoop es formatear el nodo como un HDFS

$ usrlocalhadoopbinhdfs namenode -format

Instalar Apache SparkVamos a utilizar un meacutetodo similar al anterior para instalar

Apache Spark En primer lugar vamos a utilizar Python 3 para acceder a Spark y a algunas librerias clave de Python por lo que tendraacutes que iniciar sesioacuten en cada nodo y ejecutar

$ sudo apt-get install python3 python3-pip

$ sudo pip3 install numpy

$ sudo pip3 install urlparse

Despueacutes en el nodo maestro instala Apache Spark

$ cd opt

$ sudo wget httpapacheclazorgspark

spark-162spark-162-bin-hadoop26tgz

$ sudo tar xvzf spark-162-bin-hadoop26tgz

$ sudo chown -R hduserhadoop

spark-162-bin-hadoop26

$ sudo ln -s optspark-162-bin-hadoop26

usrlocalspark

Al igual que en nuestra instalacioacuten de Hadoop necesitas antildeadir algunos archivos de configuracioacuten al directorio usrlo-calchispasconf Puedes localizar los archivos de configuracioacuten necesarios en mi repositorio GitHub (httpbitly2b4GnDU)

Una vez que Spark haya sido configurado en el nodo ma-

critas en C para que se ejecutaran maacutes raacutepido Si una instalacioacuten Hadoop no tiene estas libreriacuteas compiladas en la plataforma en la que estaacute se utilizaraacuten automaacuteticamente las equivalentes en Java por lo que seguiraacute funcionando pero de un modo maacutes lento Para este proyecto he desarrollado una distribucioacuten de la uacuteltima versioacuten de Hadoop para el procesador ARM v71 va-mos a descargar e instalar mi distribucioacuten En el nodo maestro inicia sesioacuten con la cuenta ldquohduserrdquo recieacuten creada y ejecuta los siguientes comandos para instalar Hadoop y configurar los no-dos del cluacutester para utilizar SSH sin contrasentildea Ten en cuenta que tendraacutes que iniciar sesioacuten en cada nodo esclavo desde el nodo maestro para configurar completamente el inicio de se-sioacuten sin contrasentildea

$ cd

$ ssh-keygen -t rsa -P ldquordquo

$ cat $HOMEsshid_rsapub gtgt $HOMEsshauthorized_

keys

$ ssh hduserlocalhost

$ exit

$ ssh hdusermaster

$ exit

$ ssh-copy-id hduserslave1

$ ssh hduserslave1

$ exit

$ ssh-copy-id hduserslave2

$ ssh hduserslave2

$ exit

$ ssh-copy-id hduserslave3

$ ssh hduserslave3

$ exit

$ cd opt

$ sudo wget httpdiybigdatanetdownloads

hadoophadoop-272armhftargz

$ sudo tar xzf hadoop-272armhftargz

$ sudo chown -R hduserhadoop hadoop-272

$ cd usrlocal

$ sudo ln -s opthadoop-272 hadoop

$ cd usrlocalhadoop

Ahora tenemos que crear los archivos de configuracioacuten para Hadoop Por comodidad ya he creado estos archivos que se de-ben instalar en el directorio usrlocalhadoopetchadoop y los he colocado a mi repositorio GitHub en httpbitly2bBehj4

Estos archivos de configuracioacuten tienen una configuracioacuten de cluacutester similar a la descrita en mi anterior artiacuteculo Es po-sible que tengas que modificarlos si has desarrollado un cluacutester diferente Ahora que el software Hadoop estaacute configurado en el nodo maestro lo vamos a copiar en los nodos esclavos

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

HADOOP FILE SYSTEM

ODROID MAGAZINE 19

estro coacutepialo a los esclavos de tu cluacutester

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo -l root

ldquomkdir -p optspark-162-bin-hadoop26rdquo

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave1opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave2opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquochown -R hduserhadoop

optspark-162-bin-hadoop26rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquoln -s optspark-162-bin-hadoop26

usrlocalsparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquomkdir -p datasparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquochown hduserhadoop datasparkrdquo

Instalar Jupyter NotebookLa instalacioacuten Jupyter Notebook es relativamente simple en

comparacioacuten con lo que hemos hecho hasta ahora Ugravenicamente en el nodo maestro ejecuta los siguientes comandos

$ sudo mkdir datajupyter

$ sudo chown -R hduserhadoop datajupyter

$ mkdir ~notebooks

$ sudo pip3 install jupyter

Para hacer visualizaciones en un notebook necesitamos compilar e instalar matplotlib Tambieacuten es uacutetil tener instalado numpy para facilitar la informaacutetica cientiacutefica a traveacutes de Py-thon Ten en cuenta que esto va a llevar un tiempo

$ sudo apt-get build-dep matplotlib

$ sudo pip3 install matplotlib

$ sudo pip3 install numpy

Ejecutar Hadoop Spark y Jupyter

Para logar que todo se ejecute usa los siguientes comandos

$ usrlocalhadoopsbinstart-dfssh

$ usrlocalsparksbinstart-allsh

$ XDG_RUNTIME_DIR=rdquodatajupyterrdquo PYSPARK_DRIVER_

PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=rdquonotebook

--no-browser --port=7777 --notebook-dir=homehduser

notebooksrdquo usrlocalsparkbinpyspark --packages

comdatabricksspark-csv_210110 --master spark

master7077

Puedes optar por convertir esta secuencia de comandos en un script bash independiente o simplemente puede crear un alias para este uacuteltimo comando Te dejo elegir cualquiera de

estas opciones como ejercicio Una vez en funcionamiento in-troduce en el navegador del ordenador httpltdireccioacuten IP del cluacutestergt7777 deberiacutea ver la interfaz Jupyter

Vamos a ejecutar una tarea de recuento de palabras en

nuestro sistema big data de XU4 Crea un nuevo notebook Python 3 haciendo clic en el botoacuten New en la parte superior derecha de la paacutegina web Ahora veraacute un espacio vaciacuteo como el que se muestra en la Figura anterior

Abre una nueva sesioacuten SSH en el nodo principal y antildeade lo siguiente

$ wget httpnorvigcombigtxt

$ hdfs dfs -mkdir usermichael

HADOOP FILE SYSTEM

Paacutegina web principal de Jupyter

Bloc de notas de Jupyter

ODROID MAGAZINE 20

$ hdfs dfs -put bigtxt usermichaelbigtxt

$ hdfs dfs -ls usermichael

Vuelve al notebook recieacuten creado antildeade el siguiente coacutedigo Python en la primera celda

from operator import add

blog_data = sctextFile(lsquohdfsmaster9000user

michaelbigtxtrsquo)cache()

counts = blog_dataflatMap(lambda x xsplit(lsquo lsquo))

map(lambda x (x 1))reduceByKey(add)

A continuacioacuten pulsa Shift + Enter para iniciar el trata-miento de las celdas Una nueva celda apareceraacute en el notebook de Jupyter Teacutecnicamente todaviacutea no ha sucedido nada dentro de Spark excepto crear un plan de consulta para ejecutar el recuento de palabras frente al conjunto de datos del blog que ya hemos colocado en HDFS Spark no hace ninguacuten caacutelculo hasta que no haga falta materializar los resultados La forma maacutes comuacuten de hacerlo es mostrar una parte de los resultados En la siguiente celda del notebook introduzca el coacutedigo y pulse Shift-Enter

countstake(100)

Veraacutes un asterisco junto a la celda en la que hemos intro-ducido el coacutedigo anterior Este asterisco seguiraacute activo mien-tras Spark esteacute haciendo sus caacutelculos Si vuelves a la sesioacuten de terminal en la que lanzaste el software Jupyter veraacutes el regis-tro log de Spark realizando sus caacutelculos Por otra parte si es-

cribes en tu navegador web la direccioacuten httpltdireccioacuten IP del cluacutestergt4040 puedes analizar el estado interno de Spark uti-lizando su interfaz de aplicacioacuten Es probable que escuches a-rrancar el ventilador de la CPU del XU4 durante los caacutelculos

Cuando los caacutelculos finalicen los primeros 100 valores de

los resultados se mostraraacuten en el notebook de JupyterCambia el nombre del notebook haciendo clic en la cadena

ldquo Untitledrdquo junto al logo de Jupyter en la parte superior izqui-erda del notebook Puede seguir trabajando con los datos antildea-diendo maacutes celdas que contengan maacutes coacutedigo python Spark Hay muchos y excelentes recursos en la web para aprender maacutes sobre Apache Spark incluyendo httpsparkapacheorg

Para guardar y cerrar el notebook haz clic en el menuacute ldquoFilerdquo en la paacutegina y selecciona ldquoClose and Haltrdquo Para finalizar Jupy-ter pulsa Control-C dos veces en la ventana de terminal desde el cual se lanzoacute Una vez que el software Juypter se detenga puedes apagar Spark y HDFS con

$ usrlocalsparksbinstop-allsh

$ usrlocalhadoopsbinstop-dfssh

Lecturas recomendadasSi deseas aprender maacutes sobre los temas tratados en este artiacute-

culo puedes utilizar los siguientes recursos para obtener maacutes informacioacuten sobre el software asiacute como mis conocimientos so-bre Big Data

Mi blog httpdiybigdatanetApache Hadoop httphadoopapacheorgApache Spark httpsparkapacheorgJupyter Notebook httpjupyterorg

HADOOP FILE SYSTEM

Los caacutelculos del recuento de palabras se han completado

ODROID MAGAZINE 21

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 8: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

POKEMON GO

y hace bien su trabajo El hecho de que estos regis-tros log representen datos reales es una gran ventaja

La segunda opcioacuten es utilizar un simulador GPS que se ejecute en el ordena-dor portaacutetil y bombardear con datos GPS ficticios al ODROID Existen diversas herramientas de simulacioacuten GPS que incluyen interfaces muy buenas Me he dado cuenta que muchas de ellas normalmente enviacutean los datos GPS NMEA simulados a traveacutes de la conexioacuten TCP o UDP Mi solucioacuten para esto simplemente fue escribir un programa para leer desde un puerto local y luego enviar el contenido del paquete a la consola o al puerto serie Una cuestioacuten a la hora de crear datos GPS ficticios tener mucho cuidado con las distancias y la velocidad Recuerda que estaacutes intentando imitar las condiciones del mundo real asiacute que si saltas de una ciudad a otra o de un continente a otro vas a levantar sospechas

Una vez que tengas tu fuente de datos GPS seleccionada y preparada puedes pasar al siguiente paso Para una depuracioacuten raacutepida y faacutecil de los datos GPS en Android tienes algunos programas al final de esta guiacutea Te recomiendo que instale alguno te ayudara bastante con la depuracioacuten y la comprobacioacuten de errores antes de iniciar Pokemon Go

Configurar Android y ODROIDComo ya he dicho la configuracioacuten es bastante simple y consiste en tener un or-

denador portaacutetil o incluso otro ODROID para que actuacutee como fuente de datos GPS Este es el dispositivo que enviaraacute los datos GPS precargados o falsos al ODROID con Android El ordenador portaacutetil estaacute conectado al puerto UART del ODROID o a cualquier otro puerto serie En mi configuracioacuten que se muestra en la Figura anterior tengo un convertidor USB a UART conectado al puerto UART1 del C2

El software para Android es miacutenimo y soacutelo requiere un cambio raacutepido en la con-figuracioacuten y en el archivo buildprop del que he hablado antes Asumiendo que tienes instalado Google PlayStore la instalacioacuten de Pokemon Go es muy simple y soacutelo

Pokemon Go ejecutandose sobre el sistema de suplantacioacuten de geolocalicacioacuten

ODROID MAGAZINE 8

POKEMON GO

requiere unos cuantos clics Si no lo tienes instalado puedes instalarlo siguiendo las sencillas instrucciones de Hardkernel en httpbitly2aWS696 Tuve algunas difi-cultades para interactuar con la aplicacioacuten real Pokemon Go a la hora de usar un teclado y un ratoacuten Me di cuenta que algunos botones no funcionan al ser presio-nado Termineacute por usar una pantalla taacutectil y no volviacute a tener ninguacuten problema

Hay algunas cosas que debes cambiar en la configuracioacuten de tu Android Lo pri-mero que tienes que hacer es entrar en Settings-gtDeveloper Options y desactivar la casilla ldquoAllow mock locationsrdquo que se encuentra en la seccioacuten ldquoDebuggingrdquo Te daraacutes cuenta de que sigue marcada cuando Pokemon Go muestre un error de localizacioacuten GPS Una vez desmarcada la opcioacuten el error desapareceraacute La segunda cosa que tienes que cambiar estaacute en la paacutegina Locatioacuten de los ajustes A continuacioacuten haz clic en la opcioacuten superior ldquoModerdquo apareceraacuten tres opciones la que tienes que seleccionar es ldquoDevice Onlyrdquo Esto haraacute que se use uacutenicamente la informacioacuten de localizacioacuten del GPS descartando cualquier otra fuente

NotasUna vez que has enviados los datos GPS a tu ODROID y tienes tu buildprop

bien configurado para ver el puerto serie correcto puedes seguir adelante y abrir Pokemon Go Asumiendo que tienes tus datos que emulan el movimiento deberiacuteas ver a tu ldquotrainerrdquo pokemon empezando a caminar en el juego Antes de continuar quisiera hacer hincapieacute en dos puntos importantes El primero y maacutes importante estaacutes violando los teacuterminos del juego al hacer esto Si te descubren Niantic tiene todo el derecho a bloquear permanentemente tu cuenta El segundo punto en el que quiero incidir es que se trata soacutelo de un juego Si se llega a un punto donde el juego tiene que automatizarse para poder disfrutar de eacutel es probable que no valga la pena jugar Como todas las cosas se recoge lo que se siembra y espero que esta guiacutea te sirva sobre todo para adquirir conocimientos uacutetiles acerca de los sistemas GPS y Android

Enlaces uacutetiles

Apps de informacioacuten GPS para Android httpbitly2bBdoXs Esta es el que yo usohttpbitly2br7DNK Igual de buena con una interfaz muy limpia

Analizador y generador NmEA httpbitly1FjZRPk Uno de los mejores generadores simple de usar e

incluye algunos ejemplos baacutesicos Se le echa en falta un mensaje GPGLL pero es insignificante Este es el que yo utiliceacute para mi simulador El meacutetodo maacutes simple para fijar dos puntos de paso es tener el programa con un incremento automaacutetico a una velocidad determinada

Existen unos cuantos simuladores para Linux y mucho maacutes para Windows Una raacutepida buacutesqueda en Google con ldquo GPS Simulatorrdquo o ldquo GPS NMEA Simu-latorrdquo te los mostraraacute No pude encontrar uno que fuera gratuito y de coacutedigo abierto aunque si uno pre-compilado gratuito muy simple y que estaacute dis-ponible en httpitly2bBfXcm

Maacutes informacioacuten sobre NMEA GPShttpaprsgidsnlnmeahttpbitly1g91wIE

ODROID MAGAZINE 9

asiacute como Websterrsquos English Dictionary Simplemente son coleccio-nes de palabras que tienen alguacuten significado para las personas o que hayan sido utilizadas como contrasentildeas con an-terioridad como se suelen apreciar en vulneraciones de seguri-dad Por lo general los diccionarios para descifrar la contrasentildea incluyen muchos maacutes teacuterminos que un diccionario estaacutendar porque tambieacuten tienen que incluir palabras del argot (como Yolo) o palabras mal escritas habitualmente (como aprentice) Tambieacuten incluyen nombres propios (como Andreacutes) nombres de personajes o lugares ficticios (como Pellenor Fields) o teacutermi-nos teacutecnicos (como el aacutecido desoxirribonucleico) Una buena fuente de estas palabras es la Wikipedia (que viene en diferen-tes idiomas) o incluso los subtiacutetulos de peliacutecula que se puede obtener en grandes cantidades en httpbitly2a1g42j

Kali Linux viene con algunos diccionarios por defecto que puedes utilizar o buscar en Internet listas de palabras uacutetiles

RockYou (134M) httpbitly1wtmeYADarkc0de (18M) httpbitly1pwlvJJLista de diccionarios httpbitly2ayDRaPTorrents lista de palabras WPA-PSK httpbitly2azrOqN 170K de palabras WPA httpbitly2as46gm 1 milloacuten de palabras httpbitly2a1geH4

En nuestros anteriores artiacuteculos atacamos las redes WEP y redes con WPS activado pero ahora es el momento de atacar la tecnologiacutea maacutes segura de las redes inalaacutembri-

cas el cifrado WPA Como siempre pide el consentimiento del propietario de la red antes de intentar romper su red y asiacute evitar problemas legales despueacutes iexclEs mejor prevenir que curar cuando se prueban las cosas

Ataques de Diccionario - Crear listas de palabras

Dado que la gente tiene fama por ser muy deficiente a la hora de elegir contrasentildeas seguras la mejor tecnica para romper la mayoriacutea de las contrasentildeas es ejecutar un ataque de diccio-nario

La complejidad de los ataques de diccionario reside en con-

seguir palabras correctas que sean relevantes para tu objetivo Por ejemplo si estaacutes atacando una red WiFi alemana es posible que quieras probar palabras en alemaacuten (iexclalgunas son muy lar-gas) Si estaacutes atacando un punto de acceso de un centro meacutedico puedes probar con teacuterminos meacutedicos No existe el diccionario ldquoperfectordquo ndash todo depende de tus necesidades Puedes encon-trar amplia informacioacuten sobre diccionarios con vistas a realizar ataques aquiacute httpbitly2aLS6Fx

No debemos confundir el teacutermino ldquodiccionariordquo con algo

ASuMIR EL RIEGO DE PEnETRAR LAS REDES wPA - PARTE 2por Adrian Popa

SEGURIDAD WPA

La busqueda de la palabra correccta

iexclEl Ataque de diccionario iexclEs suacuteper efectivo

ODROID MAGAZINE 10

tos praacutecticos inserta un Enter despueacutes de cada palabra) Luego ejecutamos sort para hacer las palabras uacutenicas que es una o-peracioacuten muy intensa para la CPU y la memoria Si no tienes suficiente memoria RAM para sort puedes dividir la entrada en varios archivos maacutes pequentildeos y ejecutar sort luego conca-tenar los resultados y ejecutar de nuevo sort sobre el resultado

$ iconv -f UTF-8 -t US-ASCIITRANSLIT

wiki_en_fulltxt | tr -cs ldquo[alpha]rdquo ldquonrdquo gtgt

wordlist_en_fulltxt

$ sort -u wordlist_en_fulltxt gt

wordlist_en_uniquetxt

Los diccionarios anteriores no estaacuten disentildeados necesari-amente para las restricciones WPA de modo que encontraraacuten contrasentildeas maacutes pequentildeas Puede eliminar las palabras maacutes pequentildeas o puedes utilizar una teacutecnica para combinarlas y crear contrasentildeas maacutes largas Para eliminar palabras inadecuadas pu-edes ejecutar grep (menor de 8 caracteres)

$ grep -P lsquo8rsquo wordlist_en_uniquetxt gt wordlist_

en_wpatxt

Hasta aquiacute tu diccionario se compone de una uacutenica pa-labra Si deseas generar diccionarios con parejas de palabras (o varias palabras) puede hacerlo con algo como esto (que genera permutaciones de dos palabras en el diccionario)

$ cat wordlist_en_uniquetxt wordlist_en_uniquetxt

| perl -lne lsquoBEGINapush a$_ENDforeach $x(a)

foreach $y(a)print $x$yrsquo gt every2wordstxt

Para tu comodidad puedes localizar listas de palabras de Wikipedia en ingleacutes y rumano en mi paacutegina de GitHub para hacer pruebas (httpbitly2ayE1yW)

Ejecutar ataques de diccionario con Pyrit

Vamos a utilizar de nuevo Pyrit para ejecutar un ataque de diccionario pero esta vez en lugar de ejecutarlo directamente vamos a importar el diccionario dentro Pyrit y lo vamos a eje-cutar desde alliacute Esto nos da la posibilidad de poder precalcular los hashes basados en el diccionario de este modo el descifrado real queda reducido principalmente a una consulta posterior Los datos se almacenan en ~pyrit

$ pyrit -e lsquoNASA-HQ-WPArsquo create_essid

$ pyrit -i wordlist_en_wpatxt import_passwords

$ pyrit batch

El comando batch de Pyrit necesita mucho tiempo y haraacute

Tambieacuten puede crear tu propio diccionario desde un vol-cado de texto Por ejemplo puedes obtener una copia offline de Wikipedia (en muchos idiomas) desde el Proyecto Kiwix (httpbitly2awalku) Necesitaraacutes descargar el archivo no in-dexado zim para el idioma que elijas aseguraacutendose de seleccio-nar la variante ldquonopicrdquo para no descargar ninguna imagen La Wikipedia en Ingleacutes ocupa aproximadamente 16 GB mientras que en otros idiomas es sustancialmente menor Para conver-tirla en una lista de palabras uacutenica es necesario tener una gran cantidad de espacio libre Por ejemplo el tamantildeo no compri-mido de la Wikipedia en Ingleacutes es de 130 GB Ten en cuenta que el comando zimdump necesitoacute un par de diacuteas para llegar a completarse en mi C1 con almacenamiento NFS

$ wget httpwwwopenzimorg

downloadzimlib-12targz

$ tar zxvf zimlib-12targz

$ cd zimlib-12

$ sudo apt-get install liblzma-dev

$ configure --prefix=usr

$ make

$ sudo make install

$ cd

$ echo lsquoDumping all articles as html into the zimdump

directory Please waitrsquo

$ zimdump -D zimdump wikipedia_en_all_nopiczim

A continuacioacuten tenemos que convertir el HTML a texto y concatenar todos los archivos en un uacutenico archivo de texto Vamos a crear un empaquetador alrededor de html2text de manera que si se bloquea no se detendraacute toda la liacutenea de in-formacioacuten El proceso tardaraacute entre varias horas y varios diacuteas dependiendo de la cantidad de archivos HTML que tengas que procesar y el dispositivo ODROID que poseas

$ sudo apt-get install html2text

$ cat ltltEOF gthtml2textwrappersh

binbash

html2text -utf8 ldquo$rdquo

exit 0

EOF

$ chmod a+x html2textwrappersh

$ find zimdumpA -print0 | xargs -0 -P 4 -n 30

html2textwrappersh gtgt wiki_en_fulltxt

El siguiente paso es transcribir los caracteres no ASCII a sus homoacutelogos ASCII (por ejemplo I -gt i) y dividir el archivo resultante en una lista de palabras Iconv depende de la con-figuracioacuten regional asiacute que aseguacuterate de tener soporte UTF-8 (en lugar de ldquoCrdquo por ejemplo) El comando ldquotrrdquo reemplaza todos los caracteres no alfanumeacutericos por nuevas liacuteneas (a efec-

SEGURIDAD WPA

ODROID MAGAZINE 11

$ wget httpwwwwillhackforsushicomcode

cowpatty46cowpatty-46tgz

$ tar xvf cowpatty-46tgz

$ cd cowpatty-46

$ sudo apt-get install libpcap-dev libssl-dev

$ make

$ sudo make install

$ cd

$ cowpatty -d linksys2hash -r

linksys2-insidious-handshakepcap -s linksys2 -2

Puedes especificar el archivo hash que quieres revisar con la opcioacuten -d (selecciona el hash con el mismo nombre que el punto de acceso objetivo) La opcioacuten -r especifica el archivo de captura con el handshake de 4 vias -s especifica el SSID

(ya que no se puede extraer de la captura) y -2 significa no ser demasiado estricto a la hora de analizar el archivo de captura Con esta configuracioacuten fui capaz de conseguir la contrasentildea en menos de 3 segundos usando un ODROID-C1 con una tasa de 25000 PMKs (comparados con los 300 PMKs cuando calculamos los PMKs) Por lo tanto el proceso es 83 veces maacutes raacutepido a expensas de utilizar unos 7 GB de espacio en disco

para el ataque Depende de ti decidir si vale la pena aunque consumas maacutes espacio en disco

Ingeneriacutea Social El doble maleacutefico

que tu CPU se caliente bastante mientras se crea la base de da-tos Si el calor te supone un problema puedes utilizar una her-ramienta como cpuctrl (httpbitly2aon1dA) para limitar la frecuencia maacutexima de la CPU con el regulador adecuado como por ejemplo ldquoconservativerdquo

Para obtener la clave de red tienes que proporcionar el ar-chivo de captura y los resultados si existen deberiacutean aparecer raacutepidamente Aquiacute tienes un pcap de ejemplo como referencia

httpbitly2agcRug A continuacioacuten ejecuta este comando

$ pyrit -r nasa-supercalifragilistic-handshakepcap

attack_db

Como puedes ver incluso lo que parecer ser una contrasentildea larga y robusta puede llegar a descifrarse si aparece en alguacuten artiacuteculo de Internet

Ataques con tabla RainbowUna vez que tengas cargado el diccionario en Pyrit iquestQueacute es

lo que te impide descifrar cada handshake que capturas Pues bien el SSID actuacutea como los ldquogranos de salrdquo comprobando que la misma contrasentildea combinada con un SSID diferente genere un PMK diferente Tener una lista de contrasentildeas pre-calculadas se denomina tabla rainbow y te permite descifrar las contrasentildeas maacutes raacutepidamente a costa de conar con maacutes espacio en disco para almacenar estas listas

Existe un proyecto que crea tablas rainbow para WPA para los 1000 SSID maacutes comunes en httpbitly2azsBIh Si tu red ob-jetivo tiene un SSID que estaacute en la lista (httpbitly2adkjtd) potencialmente podriacuteas descifrar la contrasentildea mucho maacutes raacutepido que con otros meacutetodos Vamos a poner esto a prueba

Para este experimento prepareacute un punto de acceso llama-do linksys2 con una contrasentildea del diccionario de palabras (httpbitly2ayEXmI) Necesitas descargar el conjunto tarball que el sitio proporciona (cuanto maacutes grande sea maacutes posibilidades tendraacutes de encontrar la clave) Descompriacuteme-lo en un directorio y obtendraacutes 1000 archivos hash cada uno nombrado de acuerdo con el SSID del punto de acce-so Tambieacuten necesitaremos instalar Cowpatty (httpbitly2awaJ2A) para poder procesar las tablas

SEGURIDAD WPA

Un ataque de diccionario wPA con Pyrit

Ataque wPA con tabla rainbow

XKCD obligatorio httpsxkcdcom538

ODROID MAGAZINE 12

Cuando todo esteacute listo inicia WifiPhisher especificando la interfaz de monitor y la interfaz hostapd

$ sudo airmon-ng start wlan0

$ sudo wifiphisher -jI mon0 -aI wlan1

Si todo va bien WifiPhisher te mostraraacute una lista de pun-tos de Acceso a engantildear y configuraraacute las reglas de iptables y DHCP y te preguntaraacute por el tipo de paacutegina web falsa que quieres que muestre A continuacioacuten procederaacute a desconectar los clientes y hacer que se conecten al punto de acceso falso y les mostraraacute algo similar a la Figura 5 Seraacute entonces cuando veas la contrasentildea en el inteacuterprete de comandos Ten en cuenta que estamos hablando de algo especialmente retorcido puesto que ya no estaacutes engantildeando soacutelo a los ordenadores sino tambieacuten a la gente real

Mantener tu WiFi seguraCon esto concluimos nuestro anaacutelisis sobre la seguridad

inalaacutembrica Estas son algunas pautas que deberiacuteas tener en cuenta para mantener tu wifi segura

bull No utilices tecnologiacuteas de encriptacioacuten obsoletas (WEP)bull No confiacutees demasiado en ocultar la red o usar listas de ac-ceso mAC ya que son muy deacutebiles y muy faacuteciles de evitar bull Desactiva la tecnologiacutea WPS en redes en las que fiacutesica-mente sea posiblebull Utiliza contrasentildeas largas que no esteacuten diccionarios Si tienes que usar las palabras del diccionario para que te sea maacutes faacutecil recordarlas (despues de todo eres un ser huma-no) combiacutenalas de forma aleatoria Una opcioacuten es utilizar la teacutecnica horse-battery-staple de xkcd (httpsxkcdcom936) esta herramienta httpbitly1cubp1J puede hacerlo de forma automaacuteticabull Antildeadir caracteres a una contrasentildea aumenta su seguri-dad bastante maacutes que usar un signo de puntuacioacuten espe-cial en contrasentildeas maacutes cortasbull Si es posible considera la posibilidad de utilizar WPA2-Enterprise en tu red domeacutesticabull No utilices nombres comunes para la red SSIDbull Reducir la intensidad de la sentildeal no te ayudaraacute puesto que el atacante siempre puede conseguir una antena mejor

Como siempre puedes compartir tus propias experiencias hacer preguntas o compartir problemas en el hilo de soporte en httpbitly2azoM5N

Es posible que hayas agotado todo lo que tienes a tu alcance para romper un punto de acceso WiFi en particular y aun asiacute no consigues resultados Es probable que tenga que esperar unos 3 millones de antildeos para que el ataque de fuerza bruta alcance el 1 asiacute que iquestqueacute podemos hacer Pues bien simple-mente tienes que atacar el punto de seguridad maacutes deacutebil de la cadena iexclEl ser humano

Un proyecto que tiene por objetivo simplemente ldquopregun-tarrdquo por la contrasentildea es WifiPhisher (httpbitly1wPdPPQ) El programa configura un punto de acceso abierto maleacutefico que clona el SSID del objetivo A continuacioacuten desautentifica to-dos los clientes del objetivo y espera a que se vuelvan a conec-tar Por casualidad (o aseguraacutendose de que tienes una mejor sentildeal) los clientes se conectaraacuten automaacuteticamente en su lugar a tu punto de acceso abierto Cuando intenten acceder a los recursos de Internet seraacuten redireccionados a un portal que se presenta como su router y le solicitaraacute su contrasentildea WPA (para mejorar la seguridad por supuesto) Una vez que se obtiene la contrasentildea se desconecta el punto de acceso y el cliente se co-necta sin que se perciba la diferencia a su red original Ves ndash es faacutecil Para conseguir esto necesitaraacutes dos adaptadores inalaacutem-bricos - uno que sea compatible con la inyeccioacuten (para desco-nectar continuamente a los usuarios del AP objetivo) y otro para hacerse pasar por el falso AP Para esta prueba he utilizado dos adaptadores Wifi Modulo 4 de Hardkernel

$ git clone httpsgithubcomsophronwifiphishergit

$ sudo apt-get install tcpdump hostapd

$ cd wifiphisher

$ sudo python setuppy install

Si aparece alguacuten error indicando que no encuentra setuptools instaacutelalo y vuelve a ejecutar el comando install

$ wget httpsbootstrappypaioez_setuppy -O - |

sudo python

Ten en cuenta que para que esto funcione necesitaraacutes con-figurar hostapd para que trabaje con tu tarjeta inalaacutembrica Tienes maacutes detalles en httpbitly2aLTF6w and httpbitly2aLTlnX

SEGURIDAD WPA

Los usuarios desprevenidos escribiraacuten su contrase-ntildea wPA en tu entorno de suplantacioacuten de red

ODROID MAGAZINE 13

En los uacuteltimos antildeos el tema del big data y de la ciencia de los datos se ha convertido en una tendencia muy importante en un sinfiacuten de in-

dustrias Las empresas de alta tecnologiacutea de Silicon Valley ya no son los uacutenicos proveedores de temas como Hadoop la regresioacuten logiacutestica y el aprendizaje de maquinas Estar familiarizado con las tecnologiacuteas del big data se estaacute convirtiendo en un requisito cada vez maacutes necesario en los empleos relacionados con la tecnologiacutea en cualquier parte Por desgracia y siendo realista la experiencia praacutectica con las tecnologiacuteas de big data normalmente implica tener acceso a un costoso cluacutester de ordenadores para ejecutar tus consultas Sin embargo la reciente revolucioacuten de los orde-nadores de placa reducida ha hecho que la informaacutetica distri-buida sea accesible a nivel personal y en educacioacuten para realizar tareas como esta y muchas otras

Imparto clases sobre disentildeo y mantenimiento de sistemas digitales y redes en un instituto franceacutes Durante los uacuteltimos 4 antildeos he ido sustituyendo todos los ordenadores de sobremesa de mi aula por ordenadores SBC principalmente por razones de espacio ya que la escuela estaacute cerca de la ciudad de Pariacutes y el espacio es muy caro iexclEl uso de ordenadores SBC deja maacutes

espacio en la mesa de trabajo del estudianteEmpeceacute con una Raspberry Pi pero pronto cambieacute al

ODROID-C1 tan pronto como estuvo disponible ya que la Pi no era lo suficientemente raacutepida para el trabajo en labo-ratorios (laboratorios GNS3 diferentes anaacutelisis de protocolos bus y configuracioacuten de los equipos de red) o simplemente para navegar por Internet Para el proacuteximo antildeo escolar ya habreacute cambiado la mitad de la clase al ODROIDC2 con un total de 10 ODROID-C1s y 8 ODROID-C2s

A la hora de preparar los laboratorios para los estudiantes tuve que usar el mismo equipo que ellos con el fin de asegurar-me de que todo funcionara sin problemas cuando los estudi-antes trabajasen en sus propios entornos de laboratorios Esto requeriacutea utilizar un ODROID en lugar de un ordenador por-

taacutetil x86 para eliminar cualquier diferencia de comportamiento en-tre ambos Para ser maacutes eficiente a la hora de preparar los laborato-rios parte de ellos los configuraba en casa y no en la escuela He in-tentado buscar algunas soluciones para fabricar un ordenador portaacutetil usando un ODROID de modo que se convirtiese en mi portaacutetil ODROID de ida y vuelta desde la escuela a casa Recorro 5 km hasta la escuela en bicicleta por lo que la solucioacuten teniacutea que ser ligera y compacta para transportarla

PORTATILODROID-C1 un PROyECTO CASERO A MEDIDA COn nOMbRE En CLAvE ldquoREDTOPrdquopor fabien Thiriet

PORTATIL ODROID

Portaacutetil REDTOP y vista trasera del mismo

ODROID MAGAZINE 14

RequisitosAl principio del proyecto elaboreacute una lista de requisitos

para el ordenador portaacutetil

bull Alimentado con 12V a traveacutes de un sistema de bateriacuteas solares en casa y con una fuente de alimentacioacuten exter-na 230V-12V en la escuelabull Bateriacutea Li-ion para cuando me esteacute moviendo con una autonomiacutea de unas 2 horas Algunos entornos de labo-ratorios en la escuela requieren monitorizar los buses CAN integrados en los vehiacuteculos de modo que se hace necesario el uso de bateriacuteasbull Pantalla LCD de 10rdquo como miacutenimobull Teclado y pantalla LCD montados en forma de ordena-dor portaacutetilbull GPIOs y conectores ODROID faacutecilmente accesiblebull Bluetooth maestroesclavo disponible puesto que ten-go muchos proyectos que funcionan con placas Arduino remotasbull RTC integrado porque no siempre estoy conectado a Internet

Proceso de fabricacioacutenAl principio encontreacute un Motorola Lapdock 100 en eBay

y lo utiliceacute durante varios meses Tras solucionar los problemas HDMI entre el ODROID y el Lapdock ya que el Lapdock se apagaba despueacutes de 20 segundos si no se conectaba nada a su puerto USB todo funcionoacute correctamente Se trataba de una solucioacuten muy ligera pero no lo suficientemente coacutemoda para un uso diario ya que la pantalla LCD soacutelo teniacutea 10rdquo y el teclado era muy pequentildeo Tambieacuten echeacute un vistazo a PiTop pero el precio era muy elevado para lo que estaba dispuesto a gastar Lo que realmente necesitaba era simplemente un gran panel LCD y un buen teclado montados en conjunto

Decidiacute buscar en eBay una pantalla LCD maacutes grande y en-contreacute un modelo de 133rdquo muy econoacutemico por 85 euro con en-viacuteo e impuestos incluidos La pantalla tiene una buena resolu-cioacuten de 1900x600 y los colores se ven muy bien Sin embargo

PORTATIL ODROID

el panel LCD se vendiacutea sin marco de modo que necesita algo para solventar esta cuestioacuten

Al mismo tiempo mi hijo ha conseguido lo que ha sontildeado durante mucho tiempo por su 15 cumpleantildeos una impresora 3D personal de modo que ya no teniacutea que utilizar una que teniacutea en la escuela Eacutel es muy bueno usando software CAD como SolidWorks y me propuso disentildear un chasis para el por-taacutetil Por desgracia la placa de impresioacuten 3D con un tamantildeo maacuteximo de 200 mm era demasiado pequentildea para imprimir un marco LCD de 133rdquo y un marco del teclado Despueacutes de varias reflexiones decidimos dividir los marcos de la LCD y del teclado en cuatro partes y unirlos con los clips de montaje im-presos en 3D y pegamento Todas las partes individuales eran inferiores a los 200 mm Si te fijas bien en las fotos del marco de la LCD de los clips y del teclado veraacutes la separacioacuten entre las piezas montadas El disentildeo CAD necesita alrededor de 2 semanas de trabajo para asegurarse de que todo encaja bien

Durante el disentildeo el principal problema que nos preo-cupaba era las bisagras del panel LCD que teniacutea que ser lo suficientemente fuerte para que me permitiera abrir y cerrar con facilidad el ordenador portaacutetil Esto nos permitiacutea crear una aacutengulo perfecto entre el marco del panel LCD y el marco del teclado Para que pudiera encajar correctamente el teclado

Portaacutetil RedTop visto desde arriba Versioacuten inicial de portaacutetil con un ordenador motorola Lapdock 100

El modelo 3D del marco de la LCD

ODROID MAGAZINE 15

en su marco lo desmontamos retirando las cubiertas superior e inferior Elegimos el color rojo para la fibra de impresioacuten 3D para que el ordenador fuese maacutes divertido y llamativo 30 horas maacutes tarde teniacuteamos impresas todas las partes del chasis Las pegamos y atornillamos el panel LCD y el teclado dentro de sus respectivos marcos El siguiente paso fue colocar todas las placas y moacutedulos en el interior del chasis con firmeza las in-sertamos en el plexiglaacutes

El plexiglaacutes fue cortado para que encajara en el espacio crea-do en la etapa de disentildeo CAD para cada marco De esta forma todo el mundo puede apreciar el engranaje del portaacutetil lo cual supone una gran ventaja a la hora de ensentildear informaacutetica El paso final fue cablear todo siguiendo el diagrama por bloques

Acabamos teniendo un ordenador portaacutetil potente y fiable iexclMis estudiantes de la escuela se sorprendieron cuando vieron este portaacutetil poco convencional por primera vez

BateriacuteaAhora disponiacuteamos de un nuevo ordenador portaacutetil pero

sin ninguacuten tipo de bateriacutea recargable de modo que maacutes o me-nos es inuacutetil En primer lugar necesitaacutebamos estimar la ca-pacidad de la bateriacutea necesaria Para tal fin hicimos algunas pruebas de medicioacuten del amperaje en diferentes condiciones de uso El maacuteximo amperaje se alcanza cuando el C2 se pone en marcha con un pico de 11A Durante el funcionamiento nor-mal se mantiene justo por debajo de 1A con un dongle USB WIFI un moacutedulo RTC un adaptador de ratoacuten inalaacutembrico y el moacutedulo Bluetooth conectados El consumo total de energiacutea del ordenador portaacutetil es de alrededor de unos 12W

Mi hijo rescatoacute una vieja bateriacutea de litio recargable de un ordenador portaacutetil de Lenovo (L412) y pudo extraerle las nueve ceacutelulas disponibles dentro del paquete de bateriacuteas La mayoriacutea de las veces este tipo de paquetes de bateriacuteas ya no funcionan no por la propia bateriacutea sino debido a un defectuoso controlador de bateriacuteas integrado Utilizamos 3 y las conectamos en serie Esto nos proporcionaba 3 x 37 V un total de 111 voltios cuando la bateriacutea estaacute casi descargada y maacutes de 12V cuando estaacute completa-mente cargada La placa controladora LCD funciona sin ninguacuten problema a 11V Cada ceacutelula tiene 2200 mAh de capacidad de modo que la autonomiacutea del portaacutetil se acerca a las 2 horas Esto era suficiente para alcanzar el objetivo que nos propusimos al inicio del proyecto

Para volver a cargar las 3 ceacutelulas utilizamos un banco de bate-riacuteas solar de 12V conectada a traveacutes de un moacutedulo de sobreali-mentacioacuten que estaacute reajustado a un liacutemite de corriente de 126 V y 1A Con nuestro modelo particular de bateriacuteas podemos ajustar tanto la tensioacuten de salida como la corriente Cuando es-

PORTATIL ODROID

Clips de LCD

marco del teclado

Chasis completamente montado

ODROID MAGAZINE 16

cribiacute este artiacuteculo la bateriacutea auacuten no estaba colocada dentro del RedTop pero la teniacuteamos fuera para realizar pruebas maacutes ex-haustivas Una vez que completemos las pruebas colocaremos las 3 celdas debajo del teclado en un espacio reservado para tal fin

MaterialesEsto es lo que utiliceacute para montar mi portaacutetil ODROID-C1

Panel LCD HDMI-VGA de 133rdquo con audio httprebaycomAYZ5JU

Teclado mecaacutenico Zalman httpwwwamazonfrdpB00LHSPCS4

Cable OTG USB httpwwwamazonfrdpB007MNZ8VY

Transformador 12V-5V 3A httpwwwamazonfrdpB00JGFEQLE

Moacutedulo Bluetooth HC05 maestroesclavo httpswwwamazonfrdpB013STJSES

Moacutedulo RTC PCF8563 httpwwwamazonfrdpB01DB8JECC

Mini altavoz httprebaycombwOCZv

Impresora 3D httpwwwdagomafrproduitimprimante-dis-

covery200

Filamentos PLA para impresora 3D httpwwwamazonfrdpB00UMV7ANM

Clavijas de corriente DC de 55mm httpwwwamazonfrdpB00O1Y1X70

Interruptor de alimentacioacuten httpwwwamazonfrdpB00HUHBS1Q

Pack de bateriacuteas de ordenador portaacutetil como esta httpwwwamazonfrdpB00TVOC55Y

Conversor de sobrealimentacioacuten (4V-12V) httprebaycomw3FgNH

Varios tornillos arandelas y cables05m de PlexiglassSuper glue

PORTATIL ODROID

La placa controladora de la LCD

JUEGOS ANDROID

PAC-MAn 256iquestun juEGO CLASICO iquestunA nuEvA PERSPECTIvA DEL GEnERO DEL CORREDOR In-TERMInAbLE iexclDESCubRELOpor Bruno Doiche

Suele decirse que los claacutesicos nunca mueren pero algunos pueden quedarse bastante

anticuados Cuando era un nintildeo el Pac-Ma era un juego cuyos graacuteficos y jugabilidad eran totalmente acepta-bles para los estaacutendares de la deacutecada de los 80 A pesar de que todaviacutea se puede disfrutar del original Pac-Man hoy diacutea estaraacutes de acuerdo conmigo en que se queda algo corto en cuanto a funcionalidad incluso si aceptas el reto de jugar al modo aacutercade lo suficiente como para encontrarte con el miacutetico error del nivel 256 que soacutelo los mejores juga-dores de Pac-Man son capaces de ver

Sin embargo en la partida 256 del Pac-Man el error es la principal caracteriacutestica te prosiguen como una ola implacable desde la parte inferior de la pantalla Te hace volver a pensar lo que realmente significa correr por tu supervivencia en un labe-rinto lleno de fantasmas cada uno con su propia personalidad Exige un control muy preciso y pensar muy raacutepido para lograr salir y mantenerte un paso por delante de tus enemigos fantas-mas Ahora no tienes que jugar a los 255 niveles de Pac-Man para llegar a uno de los niveles maacutes elitistas de la historia del juego Puedes instalarlo desde Play Store en

httpbitly2cLaD5q

Un gran juego tan adictivo como lo fue en sus primeros diacuteas arcade

ODROID MAGAZINE 17

book se puede compartir faacutecilmente permitiendo una faacutecil visualizacioacuten en liacutenea y en nuestro caso gestionar la creacioacuten y el enviacuteo de aplicaciones Spark al cluacutester Los notebooks de Jupyter son una forma muy comuacuten de usar Apache Spark ya que permite al usuario centrarse especiacuteficamente en el anaacutelisis de datos en lugar de preocuparse de las herramientas o de la infraestructura que hay detraacutes

Instalar Hadoop File SystemNuestra primera tarea es instalar Java en cada nodo del

cluacutester Instalaremos el uacuteltimo software Java 8 de Oracle EL cual requiere la aceptacioacuten de la licencia durante la instalacioacuten Debido a esto necesitas iniciar sesioacuten en cada nodo de forma independiente y ejecutar el instalador Una vez alliacute crearemos una nueva cuenta de usuario desde la que ejecutaremos todo

$ sudo add-apt-repository ppawebupd8teamjava

$ sudo apt-get update

$ sudo apt-get install oracle-java8-installer

$ sudo apt-get install rsync

$ sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hduser

$ sudo usermod -aG sudo hduser

Ahora necesitamos instalar Hadoop Teacutecnicamente po-driacuteas utilizar la distribucioacuten Hadoop disponibles en el sitio web de Apache pero no estaacute compilada para la CPU ARM v71 de nuestros XU4s Puesto que en su mayor parte es Java es genial ya que se ejecutaraacute sobre JVM que acabamos de instalar en cada nodo Sin embargo hay partes de Hadoop que fueron es-

En el anterior artiacuteculo que escribiacute para ODROID Maga-zine en httpbitly2bHFij7 analice el desarrollo de un cluacutester informaacutetico autoacutenomo con nodos ODROID

XU4 En este artiacuteculo explicaremos coacutemo hacer un buen uso de ese cluacutester instalando Apache Spark y el sistema de ficheros Hadoop asiacute como tambieacuten la forma de acceder a tu cluacutester a traveacutes de la aplicacioacuten web Jupyter

Hadoop File System (HDFS) es uno de los sistemas de ar-chivos distribuidos maacutes populares y maacutes utilizados que existen hoy en diacutea Un sistema de archivos distribuido (DFS) es una aplicacioacuten para cluacutester que agrupa todas las unidades de disco duro dentro de un cluacutester para que puedan ser tratadas como una uacutenica unidad de almacenamiento de cara a sus clientes ex-ternos Utilizar un DFS tiene dos ventajas muy importantes En primer lugar y lo maacutes evidente es que te permite guardar y trabajar con grandes conjuntos de datos que se almacenan en maacutes de un disco duro del cluacutester En segundo lugar un DFS bien disentildeado proporciona mayor resistencia de datos en el nodo o ante fallos de disco mediante la replicacioacuten de bloques de datos en varias unidades del cluacutester En nuestro cluacutester XU4 los discos duros son las tarjetas MicroSD que fueron instaladas y configurada en nuestra anterior guiacutea

Apache Spark es una moderna plataforma de anaacutelisis de Big Data utilizada ampliamente en la industria del anaacutelisis de los grandes voluacutemenes de datos Proporciona herramientas de alto nivel muy simple para manipular y analizar datos ya sea a traveacutes de SQL o mapreduce ademaacutes de usar lenguajes de pro-gramacioacuten comunes tales como Python Scala y Java La pecu-liaridad maacutes significativa de Apache Spark es el uso del fondo de memoria RAM del cluacutester para almacenar objetos de datos intermedios que aceleran significativamente el procesamiento de datos Aunque los 2 GB de RAM integrados en el XU4 po-driacutean parecer un poco austeros en comparacioacuten con las grandes cantidades de memoria en un nodo de un cluacutester industrial hay espacio suficiente para hacer algunas cosas interesantes con Apache Spark

Jupyter Notebook es una aplicacioacuten web que te permite coacute-modamente aprovecharte de diversos lenguajes y plataformas de caacutelculo con tu cluacutester a traveacutes de una interfaz web El note-

InSTALAR HADOOP y SPARK En un CLuSTER ODROID-Xu4por michael Kamprath

HADOOP FILE SYSTEM

ODROID MAGAZINE 18

-l root ldquomkdir -p opthadoop-272rdquo

$ sudo rsync -avxP opthadoop-272

rootslave1opt

$ sudo rsync -avxP opthadoop-272

rootslave2opt

$ sudo rsync -avxP opthadoop-272

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop opthadoop-272rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquoln -s opthadoop-272 usrlocalhadooprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquomkdir -p datahdfstmprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop datahdfsrdquo

El uacuteltimo paso en la instalacioacuten de Hadoop es formatear el nodo como un HDFS

$ usrlocalhadoopbinhdfs namenode -format

Instalar Apache SparkVamos a utilizar un meacutetodo similar al anterior para instalar

Apache Spark En primer lugar vamos a utilizar Python 3 para acceder a Spark y a algunas librerias clave de Python por lo que tendraacutes que iniciar sesioacuten en cada nodo y ejecutar

$ sudo apt-get install python3 python3-pip

$ sudo pip3 install numpy

$ sudo pip3 install urlparse

Despueacutes en el nodo maestro instala Apache Spark

$ cd opt

$ sudo wget httpapacheclazorgspark

spark-162spark-162-bin-hadoop26tgz

$ sudo tar xvzf spark-162-bin-hadoop26tgz

$ sudo chown -R hduserhadoop

spark-162-bin-hadoop26

$ sudo ln -s optspark-162-bin-hadoop26

usrlocalspark

Al igual que en nuestra instalacioacuten de Hadoop necesitas antildeadir algunos archivos de configuracioacuten al directorio usrlo-calchispasconf Puedes localizar los archivos de configuracioacuten necesarios en mi repositorio GitHub (httpbitly2b4GnDU)

Una vez que Spark haya sido configurado en el nodo ma-

critas en C para que se ejecutaran maacutes raacutepido Si una instalacioacuten Hadoop no tiene estas libreriacuteas compiladas en la plataforma en la que estaacute se utilizaraacuten automaacuteticamente las equivalentes en Java por lo que seguiraacute funcionando pero de un modo maacutes lento Para este proyecto he desarrollado una distribucioacuten de la uacuteltima versioacuten de Hadoop para el procesador ARM v71 va-mos a descargar e instalar mi distribucioacuten En el nodo maestro inicia sesioacuten con la cuenta ldquohduserrdquo recieacuten creada y ejecuta los siguientes comandos para instalar Hadoop y configurar los no-dos del cluacutester para utilizar SSH sin contrasentildea Ten en cuenta que tendraacutes que iniciar sesioacuten en cada nodo esclavo desde el nodo maestro para configurar completamente el inicio de se-sioacuten sin contrasentildea

$ cd

$ ssh-keygen -t rsa -P ldquordquo

$ cat $HOMEsshid_rsapub gtgt $HOMEsshauthorized_

keys

$ ssh hduserlocalhost

$ exit

$ ssh hdusermaster

$ exit

$ ssh-copy-id hduserslave1

$ ssh hduserslave1

$ exit

$ ssh-copy-id hduserslave2

$ ssh hduserslave2

$ exit

$ ssh-copy-id hduserslave3

$ ssh hduserslave3

$ exit

$ cd opt

$ sudo wget httpdiybigdatanetdownloads

hadoophadoop-272armhftargz

$ sudo tar xzf hadoop-272armhftargz

$ sudo chown -R hduserhadoop hadoop-272

$ cd usrlocal

$ sudo ln -s opthadoop-272 hadoop

$ cd usrlocalhadoop

Ahora tenemos que crear los archivos de configuracioacuten para Hadoop Por comodidad ya he creado estos archivos que se de-ben instalar en el directorio usrlocalhadoopetchadoop y los he colocado a mi repositorio GitHub en httpbitly2bBehj4

Estos archivos de configuracioacuten tienen una configuracioacuten de cluacutester similar a la descrita en mi anterior artiacuteculo Es po-sible que tengas que modificarlos si has desarrollado un cluacutester diferente Ahora que el software Hadoop estaacute configurado en el nodo maestro lo vamos a copiar en los nodos esclavos

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

HADOOP FILE SYSTEM

ODROID MAGAZINE 19

estro coacutepialo a los esclavos de tu cluacutester

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo -l root

ldquomkdir -p optspark-162-bin-hadoop26rdquo

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave1opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave2opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquochown -R hduserhadoop

optspark-162-bin-hadoop26rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquoln -s optspark-162-bin-hadoop26

usrlocalsparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquomkdir -p datasparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquochown hduserhadoop datasparkrdquo

Instalar Jupyter NotebookLa instalacioacuten Jupyter Notebook es relativamente simple en

comparacioacuten con lo que hemos hecho hasta ahora Ugravenicamente en el nodo maestro ejecuta los siguientes comandos

$ sudo mkdir datajupyter

$ sudo chown -R hduserhadoop datajupyter

$ mkdir ~notebooks

$ sudo pip3 install jupyter

Para hacer visualizaciones en un notebook necesitamos compilar e instalar matplotlib Tambieacuten es uacutetil tener instalado numpy para facilitar la informaacutetica cientiacutefica a traveacutes de Py-thon Ten en cuenta que esto va a llevar un tiempo

$ sudo apt-get build-dep matplotlib

$ sudo pip3 install matplotlib

$ sudo pip3 install numpy

Ejecutar Hadoop Spark y Jupyter

Para logar que todo se ejecute usa los siguientes comandos

$ usrlocalhadoopsbinstart-dfssh

$ usrlocalsparksbinstart-allsh

$ XDG_RUNTIME_DIR=rdquodatajupyterrdquo PYSPARK_DRIVER_

PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=rdquonotebook

--no-browser --port=7777 --notebook-dir=homehduser

notebooksrdquo usrlocalsparkbinpyspark --packages

comdatabricksspark-csv_210110 --master spark

master7077

Puedes optar por convertir esta secuencia de comandos en un script bash independiente o simplemente puede crear un alias para este uacuteltimo comando Te dejo elegir cualquiera de

estas opciones como ejercicio Una vez en funcionamiento in-troduce en el navegador del ordenador httpltdireccioacuten IP del cluacutestergt7777 deberiacutea ver la interfaz Jupyter

Vamos a ejecutar una tarea de recuento de palabras en

nuestro sistema big data de XU4 Crea un nuevo notebook Python 3 haciendo clic en el botoacuten New en la parte superior derecha de la paacutegina web Ahora veraacute un espacio vaciacuteo como el que se muestra en la Figura anterior

Abre una nueva sesioacuten SSH en el nodo principal y antildeade lo siguiente

$ wget httpnorvigcombigtxt

$ hdfs dfs -mkdir usermichael

HADOOP FILE SYSTEM

Paacutegina web principal de Jupyter

Bloc de notas de Jupyter

ODROID MAGAZINE 20

$ hdfs dfs -put bigtxt usermichaelbigtxt

$ hdfs dfs -ls usermichael

Vuelve al notebook recieacuten creado antildeade el siguiente coacutedigo Python en la primera celda

from operator import add

blog_data = sctextFile(lsquohdfsmaster9000user

michaelbigtxtrsquo)cache()

counts = blog_dataflatMap(lambda x xsplit(lsquo lsquo))

map(lambda x (x 1))reduceByKey(add)

A continuacioacuten pulsa Shift + Enter para iniciar el trata-miento de las celdas Una nueva celda apareceraacute en el notebook de Jupyter Teacutecnicamente todaviacutea no ha sucedido nada dentro de Spark excepto crear un plan de consulta para ejecutar el recuento de palabras frente al conjunto de datos del blog que ya hemos colocado en HDFS Spark no hace ninguacuten caacutelculo hasta que no haga falta materializar los resultados La forma maacutes comuacuten de hacerlo es mostrar una parte de los resultados En la siguiente celda del notebook introduzca el coacutedigo y pulse Shift-Enter

countstake(100)

Veraacutes un asterisco junto a la celda en la que hemos intro-ducido el coacutedigo anterior Este asterisco seguiraacute activo mien-tras Spark esteacute haciendo sus caacutelculos Si vuelves a la sesioacuten de terminal en la que lanzaste el software Jupyter veraacutes el regis-tro log de Spark realizando sus caacutelculos Por otra parte si es-

cribes en tu navegador web la direccioacuten httpltdireccioacuten IP del cluacutestergt4040 puedes analizar el estado interno de Spark uti-lizando su interfaz de aplicacioacuten Es probable que escuches a-rrancar el ventilador de la CPU del XU4 durante los caacutelculos

Cuando los caacutelculos finalicen los primeros 100 valores de

los resultados se mostraraacuten en el notebook de JupyterCambia el nombre del notebook haciendo clic en la cadena

ldquo Untitledrdquo junto al logo de Jupyter en la parte superior izqui-erda del notebook Puede seguir trabajando con los datos antildea-diendo maacutes celdas que contengan maacutes coacutedigo python Spark Hay muchos y excelentes recursos en la web para aprender maacutes sobre Apache Spark incluyendo httpsparkapacheorg

Para guardar y cerrar el notebook haz clic en el menuacute ldquoFilerdquo en la paacutegina y selecciona ldquoClose and Haltrdquo Para finalizar Jupy-ter pulsa Control-C dos veces en la ventana de terminal desde el cual se lanzoacute Una vez que el software Juypter se detenga puedes apagar Spark y HDFS con

$ usrlocalsparksbinstop-allsh

$ usrlocalhadoopsbinstop-dfssh

Lecturas recomendadasSi deseas aprender maacutes sobre los temas tratados en este artiacute-

culo puedes utilizar los siguientes recursos para obtener maacutes informacioacuten sobre el software asiacute como mis conocimientos so-bre Big Data

Mi blog httpdiybigdatanetApache Hadoop httphadoopapacheorgApache Spark httpsparkapacheorgJupyter Notebook httpjupyterorg

HADOOP FILE SYSTEM

Los caacutelculos del recuento de palabras se han completado

ODROID MAGAZINE 21

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 9: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

POKEMON GO

requiere unos cuantos clics Si no lo tienes instalado puedes instalarlo siguiendo las sencillas instrucciones de Hardkernel en httpbitly2aWS696 Tuve algunas difi-cultades para interactuar con la aplicacioacuten real Pokemon Go a la hora de usar un teclado y un ratoacuten Me di cuenta que algunos botones no funcionan al ser presio-nado Termineacute por usar una pantalla taacutectil y no volviacute a tener ninguacuten problema

Hay algunas cosas que debes cambiar en la configuracioacuten de tu Android Lo pri-mero que tienes que hacer es entrar en Settings-gtDeveloper Options y desactivar la casilla ldquoAllow mock locationsrdquo que se encuentra en la seccioacuten ldquoDebuggingrdquo Te daraacutes cuenta de que sigue marcada cuando Pokemon Go muestre un error de localizacioacuten GPS Una vez desmarcada la opcioacuten el error desapareceraacute La segunda cosa que tienes que cambiar estaacute en la paacutegina Locatioacuten de los ajustes A continuacioacuten haz clic en la opcioacuten superior ldquoModerdquo apareceraacuten tres opciones la que tienes que seleccionar es ldquoDevice Onlyrdquo Esto haraacute que se use uacutenicamente la informacioacuten de localizacioacuten del GPS descartando cualquier otra fuente

NotasUna vez que has enviados los datos GPS a tu ODROID y tienes tu buildprop

bien configurado para ver el puerto serie correcto puedes seguir adelante y abrir Pokemon Go Asumiendo que tienes tus datos que emulan el movimiento deberiacuteas ver a tu ldquotrainerrdquo pokemon empezando a caminar en el juego Antes de continuar quisiera hacer hincapieacute en dos puntos importantes El primero y maacutes importante estaacutes violando los teacuterminos del juego al hacer esto Si te descubren Niantic tiene todo el derecho a bloquear permanentemente tu cuenta El segundo punto en el que quiero incidir es que se trata soacutelo de un juego Si se llega a un punto donde el juego tiene que automatizarse para poder disfrutar de eacutel es probable que no valga la pena jugar Como todas las cosas se recoge lo que se siembra y espero que esta guiacutea te sirva sobre todo para adquirir conocimientos uacutetiles acerca de los sistemas GPS y Android

Enlaces uacutetiles

Apps de informacioacuten GPS para Android httpbitly2bBdoXs Esta es el que yo usohttpbitly2br7DNK Igual de buena con una interfaz muy limpia

Analizador y generador NmEA httpbitly1FjZRPk Uno de los mejores generadores simple de usar e

incluye algunos ejemplos baacutesicos Se le echa en falta un mensaje GPGLL pero es insignificante Este es el que yo utiliceacute para mi simulador El meacutetodo maacutes simple para fijar dos puntos de paso es tener el programa con un incremento automaacutetico a una velocidad determinada

Existen unos cuantos simuladores para Linux y mucho maacutes para Windows Una raacutepida buacutesqueda en Google con ldquo GPS Simulatorrdquo o ldquo GPS NMEA Simu-latorrdquo te los mostraraacute No pude encontrar uno que fuera gratuito y de coacutedigo abierto aunque si uno pre-compilado gratuito muy simple y que estaacute dis-ponible en httpitly2bBfXcm

Maacutes informacioacuten sobre NMEA GPShttpaprsgidsnlnmeahttpbitly1g91wIE

ODROID MAGAZINE 9

asiacute como Websterrsquos English Dictionary Simplemente son coleccio-nes de palabras que tienen alguacuten significado para las personas o que hayan sido utilizadas como contrasentildeas con an-terioridad como se suelen apreciar en vulneraciones de seguri-dad Por lo general los diccionarios para descifrar la contrasentildea incluyen muchos maacutes teacuterminos que un diccionario estaacutendar porque tambieacuten tienen que incluir palabras del argot (como Yolo) o palabras mal escritas habitualmente (como aprentice) Tambieacuten incluyen nombres propios (como Andreacutes) nombres de personajes o lugares ficticios (como Pellenor Fields) o teacutermi-nos teacutecnicos (como el aacutecido desoxirribonucleico) Una buena fuente de estas palabras es la Wikipedia (que viene en diferen-tes idiomas) o incluso los subtiacutetulos de peliacutecula que se puede obtener en grandes cantidades en httpbitly2a1g42j

Kali Linux viene con algunos diccionarios por defecto que puedes utilizar o buscar en Internet listas de palabras uacutetiles

RockYou (134M) httpbitly1wtmeYADarkc0de (18M) httpbitly1pwlvJJLista de diccionarios httpbitly2ayDRaPTorrents lista de palabras WPA-PSK httpbitly2azrOqN 170K de palabras WPA httpbitly2as46gm 1 milloacuten de palabras httpbitly2a1geH4

En nuestros anteriores artiacuteculos atacamos las redes WEP y redes con WPS activado pero ahora es el momento de atacar la tecnologiacutea maacutes segura de las redes inalaacutembri-

cas el cifrado WPA Como siempre pide el consentimiento del propietario de la red antes de intentar romper su red y asiacute evitar problemas legales despueacutes iexclEs mejor prevenir que curar cuando se prueban las cosas

Ataques de Diccionario - Crear listas de palabras

Dado que la gente tiene fama por ser muy deficiente a la hora de elegir contrasentildeas seguras la mejor tecnica para romper la mayoriacutea de las contrasentildeas es ejecutar un ataque de diccio-nario

La complejidad de los ataques de diccionario reside en con-

seguir palabras correctas que sean relevantes para tu objetivo Por ejemplo si estaacutes atacando una red WiFi alemana es posible que quieras probar palabras en alemaacuten (iexclalgunas son muy lar-gas) Si estaacutes atacando un punto de acceso de un centro meacutedico puedes probar con teacuterminos meacutedicos No existe el diccionario ldquoperfectordquo ndash todo depende de tus necesidades Puedes encon-trar amplia informacioacuten sobre diccionarios con vistas a realizar ataques aquiacute httpbitly2aLS6Fx

No debemos confundir el teacutermino ldquodiccionariordquo con algo

ASuMIR EL RIEGO DE PEnETRAR LAS REDES wPA - PARTE 2por Adrian Popa

SEGURIDAD WPA

La busqueda de la palabra correccta

iexclEl Ataque de diccionario iexclEs suacuteper efectivo

ODROID MAGAZINE 10

tos praacutecticos inserta un Enter despueacutes de cada palabra) Luego ejecutamos sort para hacer las palabras uacutenicas que es una o-peracioacuten muy intensa para la CPU y la memoria Si no tienes suficiente memoria RAM para sort puedes dividir la entrada en varios archivos maacutes pequentildeos y ejecutar sort luego conca-tenar los resultados y ejecutar de nuevo sort sobre el resultado

$ iconv -f UTF-8 -t US-ASCIITRANSLIT

wiki_en_fulltxt | tr -cs ldquo[alpha]rdquo ldquonrdquo gtgt

wordlist_en_fulltxt

$ sort -u wordlist_en_fulltxt gt

wordlist_en_uniquetxt

Los diccionarios anteriores no estaacuten disentildeados necesari-amente para las restricciones WPA de modo que encontraraacuten contrasentildeas maacutes pequentildeas Puede eliminar las palabras maacutes pequentildeas o puedes utilizar una teacutecnica para combinarlas y crear contrasentildeas maacutes largas Para eliminar palabras inadecuadas pu-edes ejecutar grep (menor de 8 caracteres)

$ grep -P lsquo8rsquo wordlist_en_uniquetxt gt wordlist_

en_wpatxt

Hasta aquiacute tu diccionario se compone de una uacutenica pa-labra Si deseas generar diccionarios con parejas de palabras (o varias palabras) puede hacerlo con algo como esto (que genera permutaciones de dos palabras en el diccionario)

$ cat wordlist_en_uniquetxt wordlist_en_uniquetxt

| perl -lne lsquoBEGINapush a$_ENDforeach $x(a)

foreach $y(a)print $x$yrsquo gt every2wordstxt

Para tu comodidad puedes localizar listas de palabras de Wikipedia en ingleacutes y rumano en mi paacutegina de GitHub para hacer pruebas (httpbitly2ayE1yW)

Ejecutar ataques de diccionario con Pyrit

Vamos a utilizar de nuevo Pyrit para ejecutar un ataque de diccionario pero esta vez en lugar de ejecutarlo directamente vamos a importar el diccionario dentro Pyrit y lo vamos a eje-cutar desde alliacute Esto nos da la posibilidad de poder precalcular los hashes basados en el diccionario de este modo el descifrado real queda reducido principalmente a una consulta posterior Los datos se almacenan en ~pyrit

$ pyrit -e lsquoNASA-HQ-WPArsquo create_essid

$ pyrit -i wordlist_en_wpatxt import_passwords

$ pyrit batch

El comando batch de Pyrit necesita mucho tiempo y haraacute

Tambieacuten puede crear tu propio diccionario desde un vol-cado de texto Por ejemplo puedes obtener una copia offline de Wikipedia (en muchos idiomas) desde el Proyecto Kiwix (httpbitly2awalku) Necesitaraacutes descargar el archivo no in-dexado zim para el idioma que elijas aseguraacutendose de seleccio-nar la variante ldquonopicrdquo para no descargar ninguna imagen La Wikipedia en Ingleacutes ocupa aproximadamente 16 GB mientras que en otros idiomas es sustancialmente menor Para conver-tirla en una lista de palabras uacutenica es necesario tener una gran cantidad de espacio libre Por ejemplo el tamantildeo no compri-mido de la Wikipedia en Ingleacutes es de 130 GB Ten en cuenta que el comando zimdump necesitoacute un par de diacuteas para llegar a completarse en mi C1 con almacenamiento NFS

$ wget httpwwwopenzimorg

downloadzimlib-12targz

$ tar zxvf zimlib-12targz

$ cd zimlib-12

$ sudo apt-get install liblzma-dev

$ configure --prefix=usr

$ make

$ sudo make install

$ cd

$ echo lsquoDumping all articles as html into the zimdump

directory Please waitrsquo

$ zimdump -D zimdump wikipedia_en_all_nopiczim

A continuacioacuten tenemos que convertir el HTML a texto y concatenar todos los archivos en un uacutenico archivo de texto Vamos a crear un empaquetador alrededor de html2text de manera que si se bloquea no se detendraacute toda la liacutenea de in-formacioacuten El proceso tardaraacute entre varias horas y varios diacuteas dependiendo de la cantidad de archivos HTML que tengas que procesar y el dispositivo ODROID que poseas

$ sudo apt-get install html2text

$ cat ltltEOF gthtml2textwrappersh

binbash

html2text -utf8 ldquo$rdquo

exit 0

EOF

$ chmod a+x html2textwrappersh

$ find zimdumpA -print0 | xargs -0 -P 4 -n 30

html2textwrappersh gtgt wiki_en_fulltxt

El siguiente paso es transcribir los caracteres no ASCII a sus homoacutelogos ASCII (por ejemplo I -gt i) y dividir el archivo resultante en una lista de palabras Iconv depende de la con-figuracioacuten regional asiacute que aseguacuterate de tener soporte UTF-8 (en lugar de ldquoCrdquo por ejemplo) El comando ldquotrrdquo reemplaza todos los caracteres no alfanumeacutericos por nuevas liacuteneas (a efec-

SEGURIDAD WPA

ODROID MAGAZINE 11

$ wget httpwwwwillhackforsushicomcode

cowpatty46cowpatty-46tgz

$ tar xvf cowpatty-46tgz

$ cd cowpatty-46

$ sudo apt-get install libpcap-dev libssl-dev

$ make

$ sudo make install

$ cd

$ cowpatty -d linksys2hash -r

linksys2-insidious-handshakepcap -s linksys2 -2

Puedes especificar el archivo hash que quieres revisar con la opcioacuten -d (selecciona el hash con el mismo nombre que el punto de acceso objetivo) La opcioacuten -r especifica el archivo de captura con el handshake de 4 vias -s especifica el SSID

(ya que no se puede extraer de la captura) y -2 significa no ser demasiado estricto a la hora de analizar el archivo de captura Con esta configuracioacuten fui capaz de conseguir la contrasentildea en menos de 3 segundos usando un ODROID-C1 con una tasa de 25000 PMKs (comparados con los 300 PMKs cuando calculamos los PMKs) Por lo tanto el proceso es 83 veces maacutes raacutepido a expensas de utilizar unos 7 GB de espacio en disco

para el ataque Depende de ti decidir si vale la pena aunque consumas maacutes espacio en disco

Ingeneriacutea Social El doble maleacutefico

que tu CPU se caliente bastante mientras se crea la base de da-tos Si el calor te supone un problema puedes utilizar una her-ramienta como cpuctrl (httpbitly2aon1dA) para limitar la frecuencia maacutexima de la CPU con el regulador adecuado como por ejemplo ldquoconservativerdquo

Para obtener la clave de red tienes que proporcionar el ar-chivo de captura y los resultados si existen deberiacutean aparecer raacutepidamente Aquiacute tienes un pcap de ejemplo como referencia

httpbitly2agcRug A continuacioacuten ejecuta este comando

$ pyrit -r nasa-supercalifragilistic-handshakepcap

attack_db

Como puedes ver incluso lo que parecer ser una contrasentildea larga y robusta puede llegar a descifrarse si aparece en alguacuten artiacuteculo de Internet

Ataques con tabla RainbowUna vez que tengas cargado el diccionario en Pyrit iquestQueacute es

lo que te impide descifrar cada handshake que capturas Pues bien el SSID actuacutea como los ldquogranos de salrdquo comprobando que la misma contrasentildea combinada con un SSID diferente genere un PMK diferente Tener una lista de contrasentildeas pre-calculadas se denomina tabla rainbow y te permite descifrar las contrasentildeas maacutes raacutepidamente a costa de conar con maacutes espacio en disco para almacenar estas listas

Existe un proyecto que crea tablas rainbow para WPA para los 1000 SSID maacutes comunes en httpbitly2azsBIh Si tu red ob-jetivo tiene un SSID que estaacute en la lista (httpbitly2adkjtd) potencialmente podriacuteas descifrar la contrasentildea mucho maacutes raacutepido que con otros meacutetodos Vamos a poner esto a prueba

Para este experimento prepareacute un punto de acceso llama-do linksys2 con una contrasentildea del diccionario de palabras (httpbitly2ayEXmI) Necesitas descargar el conjunto tarball que el sitio proporciona (cuanto maacutes grande sea maacutes posibilidades tendraacutes de encontrar la clave) Descompriacuteme-lo en un directorio y obtendraacutes 1000 archivos hash cada uno nombrado de acuerdo con el SSID del punto de acce-so Tambieacuten necesitaremos instalar Cowpatty (httpbitly2awaJ2A) para poder procesar las tablas

SEGURIDAD WPA

Un ataque de diccionario wPA con Pyrit

Ataque wPA con tabla rainbow

XKCD obligatorio httpsxkcdcom538

ODROID MAGAZINE 12

Cuando todo esteacute listo inicia WifiPhisher especificando la interfaz de monitor y la interfaz hostapd

$ sudo airmon-ng start wlan0

$ sudo wifiphisher -jI mon0 -aI wlan1

Si todo va bien WifiPhisher te mostraraacute una lista de pun-tos de Acceso a engantildear y configuraraacute las reglas de iptables y DHCP y te preguntaraacute por el tipo de paacutegina web falsa que quieres que muestre A continuacioacuten procederaacute a desconectar los clientes y hacer que se conecten al punto de acceso falso y les mostraraacute algo similar a la Figura 5 Seraacute entonces cuando veas la contrasentildea en el inteacuterprete de comandos Ten en cuenta que estamos hablando de algo especialmente retorcido puesto que ya no estaacutes engantildeando soacutelo a los ordenadores sino tambieacuten a la gente real

Mantener tu WiFi seguraCon esto concluimos nuestro anaacutelisis sobre la seguridad

inalaacutembrica Estas son algunas pautas que deberiacuteas tener en cuenta para mantener tu wifi segura

bull No utilices tecnologiacuteas de encriptacioacuten obsoletas (WEP)bull No confiacutees demasiado en ocultar la red o usar listas de ac-ceso mAC ya que son muy deacutebiles y muy faacuteciles de evitar bull Desactiva la tecnologiacutea WPS en redes en las que fiacutesica-mente sea posiblebull Utiliza contrasentildeas largas que no esteacuten diccionarios Si tienes que usar las palabras del diccionario para que te sea maacutes faacutecil recordarlas (despues de todo eres un ser huma-no) combiacutenalas de forma aleatoria Una opcioacuten es utilizar la teacutecnica horse-battery-staple de xkcd (httpsxkcdcom936) esta herramienta httpbitly1cubp1J puede hacerlo de forma automaacuteticabull Antildeadir caracteres a una contrasentildea aumenta su seguri-dad bastante maacutes que usar un signo de puntuacioacuten espe-cial en contrasentildeas maacutes cortasbull Si es posible considera la posibilidad de utilizar WPA2-Enterprise en tu red domeacutesticabull No utilices nombres comunes para la red SSIDbull Reducir la intensidad de la sentildeal no te ayudaraacute puesto que el atacante siempre puede conseguir una antena mejor

Como siempre puedes compartir tus propias experiencias hacer preguntas o compartir problemas en el hilo de soporte en httpbitly2azoM5N

Es posible que hayas agotado todo lo que tienes a tu alcance para romper un punto de acceso WiFi en particular y aun asiacute no consigues resultados Es probable que tenga que esperar unos 3 millones de antildeos para que el ataque de fuerza bruta alcance el 1 asiacute que iquestqueacute podemos hacer Pues bien simple-mente tienes que atacar el punto de seguridad maacutes deacutebil de la cadena iexclEl ser humano

Un proyecto que tiene por objetivo simplemente ldquopregun-tarrdquo por la contrasentildea es WifiPhisher (httpbitly1wPdPPQ) El programa configura un punto de acceso abierto maleacutefico que clona el SSID del objetivo A continuacioacuten desautentifica to-dos los clientes del objetivo y espera a que se vuelvan a conec-tar Por casualidad (o aseguraacutendose de que tienes una mejor sentildeal) los clientes se conectaraacuten automaacuteticamente en su lugar a tu punto de acceso abierto Cuando intenten acceder a los recursos de Internet seraacuten redireccionados a un portal que se presenta como su router y le solicitaraacute su contrasentildea WPA (para mejorar la seguridad por supuesto) Una vez que se obtiene la contrasentildea se desconecta el punto de acceso y el cliente se co-necta sin que se perciba la diferencia a su red original Ves ndash es faacutecil Para conseguir esto necesitaraacutes dos adaptadores inalaacutem-bricos - uno que sea compatible con la inyeccioacuten (para desco-nectar continuamente a los usuarios del AP objetivo) y otro para hacerse pasar por el falso AP Para esta prueba he utilizado dos adaptadores Wifi Modulo 4 de Hardkernel

$ git clone httpsgithubcomsophronwifiphishergit

$ sudo apt-get install tcpdump hostapd

$ cd wifiphisher

$ sudo python setuppy install

Si aparece alguacuten error indicando que no encuentra setuptools instaacutelalo y vuelve a ejecutar el comando install

$ wget httpsbootstrappypaioez_setuppy -O - |

sudo python

Ten en cuenta que para que esto funcione necesitaraacutes con-figurar hostapd para que trabaje con tu tarjeta inalaacutembrica Tienes maacutes detalles en httpbitly2aLTF6w and httpbitly2aLTlnX

SEGURIDAD WPA

Los usuarios desprevenidos escribiraacuten su contrase-ntildea wPA en tu entorno de suplantacioacuten de red

ODROID MAGAZINE 13

En los uacuteltimos antildeos el tema del big data y de la ciencia de los datos se ha convertido en una tendencia muy importante en un sinfiacuten de in-

dustrias Las empresas de alta tecnologiacutea de Silicon Valley ya no son los uacutenicos proveedores de temas como Hadoop la regresioacuten logiacutestica y el aprendizaje de maquinas Estar familiarizado con las tecnologiacuteas del big data se estaacute convirtiendo en un requisito cada vez maacutes necesario en los empleos relacionados con la tecnologiacutea en cualquier parte Por desgracia y siendo realista la experiencia praacutectica con las tecnologiacuteas de big data normalmente implica tener acceso a un costoso cluacutester de ordenadores para ejecutar tus consultas Sin embargo la reciente revolucioacuten de los orde-nadores de placa reducida ha hecho que la informaacutetica distri-buida sea accesible a nivel personal y en educacioacuten para realizar tareas como esta y muchas otras

Imparto clases sobre disentildeo y mantenimiento de sistemas digitales y redes en un instituto franceacutes Durante los uacuteltimos 4 antildeos he ido sustituyendo todos los ordenadores de sobremesa de mi aula por ordenadores SBC principalmente por razones de espacio ya que la escuela estaacute cerca de la ciudad de Pariacutes y el espacio es muy caro iexclEl uso de ordenadores SBC deja maacutes

espacio en la mesa de trabajo del estudianteEmpeceacute con una Raspberry Pi pero pronto cambieacute al

ODROID-C1 tan pronto como estuvo disponible ya que la Pi no era lo suficientemente raacutepida para el trabajo en labo-ratorios (laboratorios GNS3 diferentes anaacutelisis de protocolos bus y configuracioacuten de los equipos de red) o simplemente para navegar por Internet Para el proacuteximo antildeo escolar ya habreacute cambiado la mitad de la clase al ODROIDC2 con un total de 10 ODROID-C1s y 8 ODROID-C2s

A la hora de preparar los laboratorios para los estudiantes tuve que usar el mismo equipo que ellos con el fin de asegurar-me de que todo funcionara sin problemas cuando los estudi-antes trabajasen en sus propios entornos de laboratorios Esto requeriacutea utilizar un ODROID en lugar de un ordenador por-

taacutetil x86 para eliminar cualquier diferencia de comportamiento en-tre ambos Para ser maacutes eficiente a la hora de preparar los laborato-rios parte de ellos los configuraba en casa y no en la escuela He in-tentado buscar algunas soluciones para fabricar un ordenador portaacutetil usando un ODROID de modo que se convirtiese en mi portaacutetil ODROID de ida y vuelta desde la escuela a casa Recorro 5 km hasta la escuela en bicicleta por lo que la solucioacuten teniacutea que ser ligera y compacta para transportarla

PORTATILODROID-C1 un PROyECTO CASERO A MEDIDA COn nOMbRE En CLAvE ldquoREDTOPrdquopor fabien Thiriet

PORTATIL ODROID

Portaacutetil REDTOP y vista trasera del mismo

ODROID MAGAZINE 14

RequisitosAl principio del proyecto elaboreacute una lista de requisitos

para el ordenador portaacutetil

bull Alimentado con 12V a traveacutes de un sistema de bateriacuteas solares en casa y con una fuente de alimentacioacuten exter-na 230V-12V en la escuelabull Bateriacutea Li-ion para cuando me esteacute moviendo con una autonomiacutea de unas 2 horas Algunos entornos de labo-ratorios en la escuela requieren monitorizar los buses CAN integrados en los vehiacuteculos de modo que se hace necesario el uso de bateriacuteasbull Pantalla LCD de 10rdquo como miacutenimobull Teclado y pantalla LCD montados en forma de ordena-dor portaacutetilbull GPIOs y conectores ODROID faacutecilmente accesiblebull Bluetooth maestroesclavo disponible puesto que ten-go muchos proyectos que funcionan con placas Arduino remotasbull RTC integrado porque no siempre estoy conectado a Internet

Proceso de fabricacioacutenAl principio encontreacute un Motorola Lapdock 100 en eBay

y lo utiliceacute durante varios meses Tras solucionar los problemas HDMI entre el ODROID y el Lapdock ya que el Lapdock se apagaba despueacutes de 20 segundos si no se conectaba nada a su puerto USB todo funcionoacute correctamente Se trataba de una solucioacuten muy ligera pero no lo suficientemente coacutemoda para un uso diario ya que la pantalla LCD soacutelo teniacutea 10rdquo y el teclado era muy pequentildeo Tambieacuten echeacute un vistazo a PiTop pero el precio era muy elevado para lo que estaba dispuesto a gastar Lo que realmente necesitaba era simplemente un gran panel LCD y un buen teclado montados en conjunto

Decidiacute buscar en eBay una pantalla LCD maacutes grande y en-contreacute un modelo de 133rdquo muy econoacutemico por 85 euro con en-viacuteo e impuestos incluidos La pantalla tiene una buena resolu-cioacuten de 1900x600 y los colores se ven muy bien Sin embargo

PORTATIL ODROID

el panel LCD se vendiacutea sin marco de modo que necesita algo para solventar esta cuestioacuten

Al mismo tiempo mi hijo ha conseguido lo que ha sontildeado durante mucho tiempo por su 15 cumpleantildeos una impresora 3D personal de modo que ya no teniacutea que utilizar una que teniacutea en la escuela Eacutel es muy bueno usando software CAD como SolidWorks y me propuso disentildear un chasis para el por-taacutetil Por desgracia la placa de impresioacuten 3D con un tamantildeo maacuteximo de 200 mm era demasiado pequentildea para imprimir un marco LCD de 133rdquo y un marco del teclado Despueacutes de varias reflexiones decidimos dividir los marcos de la LCD y del teclado en cuatro partes y unirlos con los clips de montaje im-presos en 3D y pegamento Todas las partes individuales eran inferiores a los 200 mm Si te fijas bien en las fotos del marco de la LCD de los clips y del teclado veraacutes la separacioacuten entre las piezas montadas El disentildeo CAD necesita alrededor de 2 semanas de trabajo para asegurarse de que todo encaja bien

Durante el disentildeo el principal problema que nos preo-cupaba era las bisagras del panel LCD que teniacutea que ser lo suficientemente fuerte para que me permitiera abrir y cerrar con facilidad el ordenador portaacutetil Esto nos permitiacutea crear una aacutengulo perfecto entre el marco del panel LCD y el marco del teclado Para que pudiera encajar correctamente el teclado

Portaacutetil RedTop visto desde arriba Versioacuten inicial de portaacutetil con un ordenador motorola Lapdock 100

El modelo 3D del marco de la LCD

ODROID MAGAZINE 15

en su marco lo desmontamos retirando las cubiertas superior e inferior Elegimos el color rojo para la fibra de impresioacuten 3D para que el ordenador fuese maacutes divertido y llamativo 30 horas maacutes tarde teniacuteamos impresas todas las partes del chasis Las pegamos y atornillamos el panel LCD y el teclado dentro de sus respectivos marcos El siguiente paso fue colocar todas las placas y moacutedulos en el interior del chasis con firmeza las in-sertamos en el plexiglaacutes

El plexiglaacutes fue cortado para que encajara en el espacio crea-do en la etapa de disentildeo CAD para cada marco De esta forma todo el mundo puede apreciar el engranaje del portaacutetil lo cual supone una gran ventaja a la hora de ensentildear informaacutetica El paso final fue cablear todo siguiendo el diagrama por bloques

Acabamos teniendo un ordenador portaacutetil potente y fiable iexclMis estudiantes de la escuela se sorprendieron cuando vieron este portaacutetil poco convencional por primera vez

BateriacuteaAhora disponiacuteamos de un nuevo ordenador portaacutetil pero

sin ninguacuten tipo de bateriacutea recargable de modo que maacutes o me-nos es inuacutetil En primer lugar necesitaacutebamos estimar la ca-pacidad de la bateriacutea necesaria Para tal fin hicimos algunas pruebas de medicioacuten del amperaje en diferentes condiciones de uso El maacuteximo amperaje se alcanza cuando el C2 se pone en marcha con un pico de 11A Durante el funcionamiento nor-mal se mantiene justo por debajo de 1A con un dongle USB WIFI un moacutedulo RTC un adaptador de ratoacuten inalaacutembrico y el moacutedulo Bluetooth conectados El consumo total de energiacutea del ordenador portaacutetil es de alrededor de unos 12W

Mi hijo rescatoacute una vieja bateriacutea de litio recargable de un ordenador portaacutetil de Lenovo (L412) y pudo extraerle las nueve ceacutelulas disponibles dentro del paquete de bateriacuteas La mayoriacutea de las veces este tipo de paquetes de bateriacuteas ya no funcionan no por la propia bateriacutea sino debido a un defectuoso controlador de bateriacuteas integrado Utilizamos 3 y las conectamos en serie Esto nos proporcionaba 3 x 37 V un total de 111 voltios cuando la bateriacutea estaacute casi descargada y maacutes de 12V cuando estaacute completa-mente cargada La placa controladora LCD funciona sin ninguacuten problema a 11V Cada ceacutelula tiene 2200 mAh de capacidad de modo que la autonomiacutea del portaacutetil se acerca a las 2 horas Esto era suficiente para alcanzar el objetivo que nos propusimos al inicio del proyecto

Para volver a cargar las 3 ceacutelulas utilizamos un banco de bate-riacuteas solar de 12V conectada a traveacutes de un moacutedulo de sobreali-mentacioacuten que estaacute reajustado a un liacutemite de corriente de 126 V y 1A Con nuestro modelo particular de bateriacuteas podemos ajustar tanto la tensioacuten de salida como la corriente Cuando es-

PORTATIL ODROID

Clips de LCD

marco del teclado

Chasis completamente montado

ODROID MAGAZINE 16

cribiacute este artiacuteculo la bateriacutea auacuten no estaba colocada dentro del RedTop pero la teniacuteamos fuera para realizar pruebas maacutes ex-haustivas Una vez que completemos las pruebas colocaremos las 3 celdas debajo del teclado en un espacio reservado para tal fin

MaterialesEsto es lo que utiliceacute para montar mi portaacutetil ODROID-C1

Panel LCD HDMI-VGA de 133rdquo con audio httprebaycomAYZ5JU

Teclado mecaacutenico Zalman httpwwwamazonfrdpB00LHSPCS4

Cable OTG USB httpwwwamazonfrdpB007MNZ8VY

Transformador 12V-5V 3A httpwwwamazonfrdpB00JGFEQLE

Moacutedulo Bluetooth HC05 maestroesclavo httpswwwamazonfrdpB013STJSES

Moacutedulo RTC PCF8563 httpwwwamazonfrdpB01DB8JECC

Mini altavoz httprebaycombwOCZv

Impresora 3D httpwwwdagomafrproduitimprimante-dis-

covery200

Filamentos PLA para impresora 3D httpwwwamazonfrdpB00UMV7ANM

Clavijas de corriente DC de 55mm httpwwwamazonfrdpB00O1Y1X70

Interruptor de alimentacioacuten httpwwwamazonfrdpB00HUHBS1Q

Pack de bateriacuteas de ordenador portaacutetil como esta httpwwwamazonfrdpB00TVOC55Y

Conversor de sobrealimentacioacuten (4V-12V) httprebaycomw3FgNH

Varios tornillos arandelas y cables05m de PlexiglassSuper glue

PORTATIL ODROID

La placa controladora de la LCD

JUEGOS ANDROID

PAC-MAn 256iquestun juEGO CLASICO iquestunA nuEvA PERSPECTIvA DEL GEnERO DEL CORREDOR In-TERMInAbLE iexclDESCubRELOpor Bruno Doiche

Suele decirse que los claacutesicos nunca mueren pero algunos pueden quedarse bastante

anticuados Cuando era un nintildeo el Pac-Ma era un juego cuyos graacuteficos y jugabilidad eran totalmente acepta-bles para los estaacutendares de la deacutecada de los 80 A pesar de que todaviacutea se puede disfrutar del original Pac-Man hoy diacutea estaraacutes de acuerdo conmigo en que se queda algo corto en cuanto a funcionalidad incluso si aceptas el reto de jugar al modo aacutercade lo suficiente como para encontrarte con el miacutetico error del nivel 256 que soacutelo los mejores juga-dores de Pac-Man son capaces de ver

Sin embargo en la partida 256 del Pac-Man el error es la principal caracteriacutestica te prosiguen como una ola implacable desde la parte inferior de la pantalla Te hace volver a pensar lo que realmente significa correr por tu supervivencia en un labe-rinto lleno de fantasmas cada uno con su propia personalidad Exige un control muy preciso y pensar muy raacutepido para lograr salir y mantenerte un paso por delante de tus enemigos fantas-mas Ahora no tienes que jugar a los 255 niveles de Pac-Man para llegar a uno de los niveles maacutes elitistas de la historia del juego Puedes instalarlo desde Play Store en

httpbitly2cLaD5q

Un gran juego tan adictivo como lo fue en sus primeros diacuteas arcade

ODROID MAGAZINE 17

book se puede compartir faacutecilmente permitiendo una faacutecil visualizacioacuten en liacutenea y en nuestro caso gestionar la creacioacuten y el enviacuteo de aplicaciones Spark al cluacutester Los notebooks de Jupyter son una forma muy comuacuten de usar Apache Spark ya que permite al usuario centrarse especiacuteficamente en el anaacutelisis de datos en lugar de preocuparse de las herramientas o de la infraestructura que hay detraacutes

Instalar Hadoop File SystemNuestra primera tarea es instalar Java en cada nodo del

cluacutester Instalaremos el uacuteltimo software Java 8 de Oracle EL cual requiere la aceptacioacuten de la licencia durante la instalacioacuten Debido a esto necesitas iniciar sesioacuten en cada nodo de forma independiente y ejecutar el instalador Una vez alliacute crearemos una nueva cuenta de usuario desde la que ejecutaremos todo

$ sudo add-apt-repository ppawebupd8teamjava

$ sudo apt-get update

$ sudo apt-get install oracle-java8-installer

$ sudo apt-get install rsync

$ sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hduser

$ sudo usermod -aG sudo hduser

Ahora necesitamos instalar Hadoop Teacutecnicamente po-driacuteas utilizar la distribucioacuten Hadoop disponibles en el sitio web de Apache pero no estaacute compilada para la CPU ARM v71 de nuestros XU4s Puesto que en su mayor parte es Java es genial ya que se ejecutaraacute sobre JVM que acabamos de instalar en cada nodo Sin embargo hay partes de Hadoop que fueron es-

En el anterior artiacuteculo que escribiacute para ODROID Maga-zine en httpbitly2bHFij7 analice el desarrollo de un cluacutester informaacutetico autoacutenomo con nodos ODROID

XU4 En este artiacuteculo explicaremos coacutemo hacer un buen uso de ese cluacutester instalando Apache Spark y el sistema de ficheros Hadoop asiacute como tambieacuten la forma de acceder a tu cluacutester a traveacutes de la aplicacioacuten web Jupyter

Hadoop File System (HDFS) es uno de los sistemas de ar-chivos distribuidos maacutes populares y maacutes utilizados que existen hoy en diacutea Un sistema de archivos distribuido (DFS) es una aplicacioacuten para cluacutester que agrupa todas las unidades de disco duro dentro de un cluacutester para que puedan ser tratadas como una uacutenica unidad de almacenamiento de cara a sus clientes ex-ternos Utilizar un DFS tiene dos ventajas muy importantes En primer lugar y lo maacutes evidente es que te permite guardar y trabajar con grandes conjuntos de datos que se almacenan en maacutes de un disco duro del cluacutester En segundo lugar un DFS bien disentildeado proporciona mayor resistencia de datos en el nodo o ante fallos de disco mediante la replicacioacuten de bloques de datos en varias unidades del cluacutester En nuestro cluacutester XU4 los discos duros son las tarjetas MicroSD que fueron instaladas y configurada en nuestra anterior guiacutea

Apache Spark es una moderna plataforma de anaacutelisis de Big Data utilizada ampliamente en la industria del anaacutelisis de los grandes voluacutemenes de datos Proporciona herramientas de alto nivel muy simple para manipular y analizar datos ya sea a traveacutes de SQL o mapreduce ademaacutes de usar lenguajes de pro-gramacioacuten comunes tales como Python Scala y Java La pecu-liaridad maacutes significativa de Apache Spark es el uso del fondo de memoria RAM del cluacutester para almacenar objetos de datos intermedios que aceleran significativamente el procesamiento de datos Aunque los 2 GB de RAM integrados en el XU4 po-driacutean parecer un poco austeros en comparacioacuten con las grandes cantidades de memoria en un nodo de un cluacutester industrial hay espacio suficiente para hacer algunas cosas interesantes con Apache Spark

Jupyter Notebook es una aplicacioacuten web que te permite coacute-modamente aprovecharte de diversos lenguajes y plataformas de caacutelculo con tu cluacutester a traveacutes de una interfaz web El note-

InSTALAR HADOOP y SPARK En un CLuSTER ODROID-Xu4por michael Kamprath

HADOOP FILE SYSTEM

ODROID MAGAZINE 18

-l root ldquomkdir -p opthadoop-272rdquo

$ sudo rsync -avxP opthadoop-272

rootslave1opt

$ sudo rsync -avxP opthadoop-272

rootslave2opt

$ sudo rsync -avxP opthadoop-272

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop opthadoop-272rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquoln -s opthadoop-272 usrlocalhadooprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquomkdir -p datahdfstmprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop datahdfsrdquo

El uacuteltimo paso en la instalacioacuten de Hadoop es formatear el nodo como un HDFS

$ usrlocalhadoopbinhdfs namenode -format

Instalar Apache SparkVamos a utilizar un meacutetodo similar al anterior para instalar

Apache Spark En primer lugar vamos a utilizar Python 3 para acceder a Spark y a algunas librerias clave de Python por lo que tendraacutes que iniciar sesioacuten en cada nodo y ejecutar

$ sudo apt-get install python3 python3-pip

$ sudo pip3 install numpy

$ sudo pip3 install urlparse

Despueacutes en el nodo maestro instala Apache Spark

$ cd opt

$ sudo wget httpapacheclazorgspark

spark-162spark-162-bin-hadoop26tgz

$ sudo tar xvzf spark-162-bin-hadoop26tgz

$ sudo chown -R hduserhadoop

spark-162-bin-hadoop26

$ sudo ln -s optspark-162-bin-hadoop26

usrlocalspark

Al igual que en nuestra instalacioacuten de Hadoop necesitas antildeadir algunos archivos de configuracioacuten al directorio usrlo-calchispasconf Puedes localizar los archivos de configuracioacuten necesarios en mi repositorio GitHub (httpbitly2b4GnDU)

Una vez que Spark haya sido configurado en el nodo ma-

critas en C para que se ejecutaran maacutes raacutepido Si una instalacioacuten Hadoop no tiene estas libreriacuteas compiladas en la plataforma en la que estaacute se utilizaraacuten automaacuteticamente las equivalentes en Java por lo que seguiraacute funcionando pero de un modo maacutes lento Para este proyecto he desarrollado una distribucioacuten de la uacuteltima versioacuten de Hadoop para el procesador ARM v71 va-mos a descargar e instalar mi distribucioacuten En el nodo maestro inicia sesioacuten con la cuenta ldquohduserrdquo recieacuten creada y ejecuta los siguientes comandos para instalar Hadoop y configurar los no-dos del cluacutester para utilizar SSH sin contrasentildea Ten en cuenta que tendraacutes que iniciar sesioacuten en cada nodo esclavo desde el nodo maestro para configurar completamente el inicio de se-sioacuten sin contrasentildea

$ cd

$ ssh-keygen -t rsa -P ldquordquo

$ cat $HOMEsshid_rsapub gtgt $HOMEsshauthorized_

keys

$ ssh hduserlocalhost

$ exit

$ ssh hdusermaster

$ exit

$ ssh-copy-id hduserslave1

$ ssh hduserslave1

$ exit

$ ssh-copy-id hduserslave2

$ ssh hduserslave2

$ exit

$ ssh-copy-id hduserslave3

$ ssh hduserslave3

$ exit

$ cd opt

$ sudo wget httpdiybigdatanetdownloads

hadoophadoop-272armhftargz

$ sudo tar xzf hadoop-272armhftargz

$ sudo chown -R hduserhadoop hadoop-272

$ cd usrlocal

$ sudo ln -s opthadoop-272 hadoop

$ cd usrlocalhadoop

Ahora tenemos que crear los archivos de configuracioacuten para Hadoop Por comodidad ya he creado estos archivos que se de-ben instalar en el directorio usrlocalhadoopetchadoop y los he colocado a mi repositorio GitHub en httpbitly2bBehj4

Estos archivos de configuracioacuten tienen una configuracioacuten de cluacutester similar a la descrita en mi anterior artiacuteculo Es po-sible que tengas que modificarlos si has desarrollado un cluacutester diferente Ahora que el software Hadoop estaacute configurado en el nodo maestro lo vamos a copiar en los nodos esclavos

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

HADOOP FILE SYSTEM

ODROID MAGAZINE 19

estro coacutepialo a los esclavos de tu cluacutester

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo -l root

ldquomkdir -p optspark-162-bin-hadoop26rdquo

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave1opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave2opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquochown -R hduserhadoop

optspark-162-bin-hadoop26rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquoln -s optspark-162-bin-hadoop26

usrlocalsparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquomkdir -p datasparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquochown hduserhadoop datasparkrdquo

Instalar Jupyter NotebookLa instalacioacuten Jupyter Notebook es relativamente simple en

comparacioacuten con lo que hemos hecho hasta ahora Ugravenicamente en el nodo maestro ejecuta los siguientes comandos

$ sudo mkdir datajupyter

$ sudo chown -R hduserhadoop datajupyter

$ mkdir ~notebooks

$ sudo pip3 install jupyter

Para hacer visualizaciones en un notebook necesitamos compilar e instalar matplotlib Tambieacuten es uacutetil tener instalado numpy para facilitar la informaacutetica cientiacutefica a traveacutes de Py-thon Ten en cuenta que esto va a llevar un tiempo

$ sudo apt-get build-dep matplotlib

$ sudo pip3 install matplotlib

$ sudo pip3 install numpy

Ejecutar Hadoop Spark y Jupyter

Para logar que todo se ejecute usa los siguientes comandos

$ usrlocalhadoopsbinstart-dfssh

$ usrlocalsparksbinstart-allsh

$ XDG_RUNTIME_DIR=rdquodatajupyterrdquo PYSPARK_DRIVER_

PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=rdquonotebook

--no-browser --port=7777 --notebook-dir=homehduser

notebooksrdquo usrlocalsparkbinpyspark --packages

comdatabricksspark-csv_210110 --master spark

master7077

Puedes optar por convertir esta secuencia de comandos en un script bash independiente o simplemente puede crear un alias para este uacuteltimo comando Te dejo elegir cualquiera de

estas opciones como ejercicio Una vez en funcionamiento in-troduce en el navegador del ordenador httpltdireccioacuten IP del cluacutestergt7777 deberiacutea ver la interfaz Jupyter

Vamos a ejecutar una tarea de recuento de palabras en

nuestro sistema big data de XU4 Crea un nuevo notebook Python 3 haciendo clic en el botoacuten New en la parte superior derecha de la paacutegina web Ahora veraacute un espacio vaciacuteo como el que se muestra en la Figura anterior

Abre una nueva sesioacuten SSH en el nodo principal y antildeade lo siguiente

$ wget httpnorvigcombigtxt

$ hdfs dfs -mkdir usermichael

HADOOP FILE SYSTEM

Paacutegina web principal de Jupyter

Bloc de notas de Jupyter

ODROID MAGAZINE 20

$ hdfs dfs -put bigtxt usermichaelbigtxt

$ hdfs dfs -ls usermichael

Vuelve al notebook recieacuten creado antildeade el siguiente coacutedigo Python en la primera celda

from operator import add

blog_data = sctextFile(lsquohdfsmaster9000user

michaelbigtxtrsquo)cache()

counts = blog_dataflatMap(lambda x xsplit(lsquo lsquo))

map(lambda x (x 1))reduceByKey(add)

A continuacioacuten pulsa Shift + Enter para iniciar el trata-miento de las celdas Una nueva celda apareceraacute en el notebook de Jupyter Teacutecnicamente todaviacutea no ha sucedido nada dentro de Spark excepto crear un plan de consulta para ejecutar el recuento de palabras frente al conjunto de datos del blog que ya hemos colocado en HDFS Spark no hace ninguacuten caacutelculo hasta que no haga falta materializar los resultados La forma maacutes comuacuten de hacerlo es mostrar una parte de los resultados En la siguiente celda del notebook introduzca el coacutedigo y pulse Shift-Enter

countstake(100)

Veraacutes un asterisco junto a la celda en la que hemos intro-ducido el coacutedigo anterior Este asterisco seguiraacute activo mien-tras Spark esteacute haciendo sus caacutelculos Si vuelves a la sesioacuten de terminal en la que lanzaste el software Jupyter veraacutes el regis-tro log de Spark realizando sus caacutelculos Por otra parte si es-

cribes en tu navegador web la direccioacuten httpltdireccioacuten IP del cluacutestergt4040 puedes analizar el estado interno de Spark uti-lizando su interfaz de aplicacioacuten Es probable que escuches a-rrancar el ventilador de la CPU del XU4 durante los caacutelculos

Cuando los caacutelculos finalicen los primeros 100 valores de

los resultados se mostraraacuten en el notebook de JupyterCambia el nombre del notebook haciendo clic en la cadena

ldquo Untitledrdquo junto al logo de Jupyter en la parte superior izqui-erda del notebook Puede seguir trabajando con los datos antildea-diendo maacutes celdas que contengan maacutes coacutedigo python Spark Hay muchos y excelentes recursos en la web para aprender maacutes sobre Apache Spark incluyendo httpsparkapacheorg

Para guardar y cerrar el notebook haz clic en el menuacute ldquoFilerdquo en la paacutegina y selecciona ldquoClose and Haltrdquo Para finalizar Jupy-ter pulsa Control-C dos veces en la ventana de terminal desde el cual se lanzoacute Una vez que el software Juypter se detenga puedes apagar Spark y HDFS con

$ usrlocalsparksbinstop-allsh

$ usrlocalhadoopsbinstop-dfssh

Lecturas recomendadasSi deseas aprender maacutes sobre los temas tratados en este artiacute-

culo puedes utilizar los siguientes recursos para obtener maacutes informacioacuten sobre el software asiacute como mis conocimientos so-bre Big Data

Mi blog httpdiybigdatanetApache Hadoop httphadoopapacheorgApache Spark httpsparkapacheorgJupyter Notebook httpjupyterorg

HADOOP FILE SYSTEM

Los caacutelculos del recuento de palabras se han completado

ODROID MAGAZINE 21

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 10: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

asiacute como Websterrsquos English Dictionary Simplemente son coleccio-nes de palabras que tienen alguacuten significado para las personas o que hayan sido utilizadas como contrasentildeas con an-terioridad como se suelen apreciar en vulneraciones de seguri-dad Por lo general los diccionarios para descifrar la contrasentildea incluyen muchos maacutes teacuterminos que un diccionario estaacutendar porque tambieacuten tienen que incluir palabras del argot (como Yolo) o palabras mal escritas habitualmente (como aprentice) Tambieacuten incluyen nombres propios (como Andreacutes) nombres de personajes o lugares ficticios (como Pellenor Fields) o teacutermi-nos teacutecnicos (como el aacutecido desoxirribonucleico) Una buena fuente de estas palabras es la Wikipedia (que viene en diferen-tes idiomas) o incluso los subtiacutetulos de peliacutecula que se puede obtener en grandes cantidades en httpbitly2a1g42j

Kali Linux viene con algunos diccionarios por defecto que puedes utilizar o buscar en Internet listas de palabras uacutetiles

RockYou (134M) httpbitly1wtmeYADarkc0de (18M) httpbitly1pwlvJJLista de diccionarios httpbitly2ayDRaPTorrents lista de palabras WPA-PSK httpbitly2azrOqN 170K de palabras WPA httpbitly2as46gm 1 milloacuten de palabras httpbitly2a1geH4

En nuestros anteriores artiacuteculos atacamos las redes WEP y redes con WPS activado pero ahora es el momento de atacar la tecnologiacutea maacutes segura de las redes inalaacutembri-

cas el cifrado WPA Como siempre pide el consentimiento del propietario de la red antes de intentar romper su red y asiacute evitar problemas legales despueacutes iexclEs mejor prevenir que curar cuando se prueban las cosas

Ataques de Diccionario - Crear listas de palabras

Dado que la gente tiene fama por ser muy deficiente a la hora de elegir contrasentildeas seguras la mejor tecnica para romper la mayoriacutea de las contrasentildeas es ejecutar un ataque de diccio-nario

La complejidad de los ataques de diccionario reside en con-

seguir palabras correctas que sean relevantes para tu objetivo Por ejemplo si estaacutes atacando una red WiFi alemana es posible que quieras probar palabras en alemaacuten (iexclalgunas son muy lar-gas) Si estaacutes atacando un punto de acceso de un centro meacutedico puedes probar con teacuterminos meacutedicos No existe el diccionario ldquoperfectordquo ndash todo depende de tus necesidades Puedes encon-trar amplia informacioacuten sobre diccionarios con vistas a realizar ataques aquiacute httpbitly2aLS6Fx

No debemos confundir el teacutermino ldquodiccionariordquo con algo

ASuMIR EL RIEGO DE PEnETRAR LAS REDES wPA - PARTE 2por Adrian Popa

SEGURIDAD WPA

La busqueda de la palabra correccta

iexclEl Ataque de diccionario iexclEs suacuteper efectivo

ODROID MAGAZINE 10

tos praacutecticos inserta un Enter despueacutes de cada palabra) Luego ejecutamos sort para hacer las palabras uacutenicas que es una o-peracioacuten muy intensa para la CPU y la memoria Si no tienes suficiente memoria RAM para sort puedes dividir la entrada en varios archivos maacutes pequentildeos y ejecutar sort luego conca-tenar los resultados y ejecutar de nuevo sort sobre el resultado

$ iconv -f UTF-8 -t US-ASCIITRANSLIT

wiki_en_fulltxt | tr -cs ldquo[alpha]rdquo ldquonrdquo gtgt

wordlist_en_fulltxt

$ sort -u wordlist_en_fulltxt gt

wordlist_en_uniquetxt

Los diccionarios anteriores no estaacuten disentildeados necesari-amente para las restricciones WPA de modo que encontraraacuten contrasentildeas maacutes pequentildeas Puede eliminar las palabras maacutes pequentildeas o puedes utilizar una teacutecnica para combinarlas y crear contrasentildeas maacutes largas Para eliminar palabras inadecuadas pu-edes ejecutar grep (menor de 8 caracteres)

$ grep -P lsquo8rsquo wordlist_en_uniquetxt gt wordlist_

en_wpatxt

Hasta aquiacute tu diccionario se compone de una uacutenica pa-labra Si deseas generar diccionarios con parejas de palabras (o varias palabras) puede hacerlo con algo como esto (que genera permutaciones de dos palabras en el diccionario)

$ cat wordlist_en_uniquetxt wordlist_en_uniquetxt

| perl -lne lsquoBEGINapush a$_ENDforeach $x(a)

foreach $y(a)print $x$yrsquo gt every2wordstxt

Para tu comodidad puedes localizar listas de palabras de Wikipedia en ingleacutes y rumano en mi paacutegina de GitHub para hacer pruebas (httpbitly2ayE1yW)

Ejecutar ataques de diccionario con Pyrit

Vamos a utilizar de nuevo Pyrit para ejecutar un ataque de diccionario pero esta vez en lugar de ejecutarlo directamente vamos a importar el diccionario dentro Pyrit y lo vamos a eje-cutar desde alliacute Esto nos da la posibilidad de poder precalcular los hashes basados en el diccionario de este modo el descifrado real queda reducido principalmente a una consulta posterior Los datos se almacenan en ~pyrit

$ pyrit -e lsquoNASA-HQ-WPArsquo create_essid

$ pyrit -i wordlist_en_wpatxt import_passwords

$ pyrit batch

El comando batch de Pyrit necesita mucho tiempo y haraacute

Tambieacuten puede crear tu propio diccionario desde un vol-cado de texto Por ejemplo puedes obtener una copia offline de Wikipedia (en muchos idiomas) desde el Proyecto Kiwix (httpbitly2awalku) Necesitaraacutes descargar el archivo no in-dexado zim para el idioma que elijas aseguraacutendose de seleccio-nar la variante ldquonopicrdquo para no descargar ninguna imagen La Wikipedia en Ingleacutes ocupa aproximadamente 16 GB mientras que en otros idiomas es sustancialmente menor Para conver-tirla en una lista de palabras uacutenica es necesario tener una gran cantidad de espacio libre Por ejemplo el tamantildeo no compri-mido de la Wikipedia en Ingleacutes es de 130 GB Ten en cuenta que el comando zimdump necesitoacute un par de diacuteas para llegar a completarse en mi C1 con almacenamiento NFS

$ wget httpwwwopenzimorg

downloadzimlib-12targz

$ tar zxvf zimlib-12targz

$ cd zimlib-12

$ sudo apt-get install liblzma-dev

$ configure --prefix=usr

$ make

$ sudo make install

$ cd

$ echo lsquoDumping all articles as html into the zimdump

directory Please waitrsquo

$ zimdump -D zimdump wikipedia_en_all_nopiczim

A continuacioacuten tenemos que convertir el HTML a texto y concatenar todos los archivos en un uacutenico archivo de texto Vamos a crear un empaquetador alrededor de html2text de manera que si se bloquea no se detendraacute toda la liacutenea de in-formacioacuten El proceso tardaraacute entre varias horas y varios diacuteas dependiendo de la cantidad de archivos HTML que tengas que procesar y el dispositivo ODROID que poseas

$ sudo apt-get install html2text

$ cat ltltEOF gthtml2textwrappersh

binbash

html2text -utf8 ldquo$rdquo

exit 0

EOF

$ chmod a+x html2textwrappersh

$ find zimdumpA -print0 | xargs -0 -P 4 -n 30

html2textwrappersh gtgt wiki_en_fulltxt

El siguiente paso es transcribir los caracteres no ASCII a sus homoacutelogos ASCII (por ejemplo I -gt i) y dividir el archivo resultante en una lista de palabras Iconv depende de la con-figuracioacuten regional asiacute que aseguacuterate de tener soporte UTF-8 (en lugar de ldquoCrdquo por ejemplo) El comando ldquotrrdquo reemplaza todos los caracteres no alfanumeacutericos por nuevas liacuteneas (a efec-

SEGURIDAD WPA

ODROID MAGAZINE 11

$ wget httpwwwwillhackforsushicomcode

cowpatty46cowpatty-46tgz

$ tar xvf cowpatty-46tgz

$ cd cowpatty-46

$ sudo apt-get install libpcap-dev libssl-dev

$ make

$ sudo make install

$ cd

$ cowpatty -d linksys2hash -r

linksys2-insidious-handshakepcap -s linksys2 -2

Puedes especificar el archivo hash que quieres revisar con la opcioacuten -d (selecciona el hash con el mismo nombre que el punto de acceso objetivo) La opcioacuten -r especifica el archivo de captura con el handshake de 4 vias -s especifica el SSID

(ya que no se puede extraer de la captura) y -2 significa no ser demasiado estricto a la hora de analizar el archivo de captura Con esta configuracioacuten fui capaz de conseguir la contrasentildea en menos de 3 segundos usando un ODROID-C1 con una tasa de 25000 PMKs (comparados con los 300 PMKs cuando calculamos los PMKs) Por lo tanto el proceso es 83 veces maacutes raacutepido a expensas de utilizar unos 7 GB de espacio en disco

para el ataque Depende de ti decidir si vale la pena aunque consumas maacutes espacio en disco

Ingeneriacutea Social El doble maleacutefico

que tu CPU se caliente bastante mientras se crea la base de da-tos Si el calor te supone un problema puedes utilizar una her-ramienta como cpuctrl (httpbitly2aon1dA) para limitar la frecuencia maacutexima de la CPU con el regulador adecuado como por ejemplo ldquoconservativerdquo

Para obtener la clave de red tienes que proporcionar el ar-chivo de captura y los resultados si existen deberiacutean aparecer raacutepidamente Aquiacute tienes un pcap de ejemplo como referencia

httpbitly2agcRug A continuacioacuten ejecuta este comando

$ pyrit -r nasa-supercalifragilistic-handshakepcap

attack_db

Como puedes ver incluso lo que parecer ser una contrasentildea larga y robusta puede llegar a descifrarse si aparece en alguacuten artiacuteculo de Internet

Ataques con tabla RainbowUna vez que tengas cargado el diccionario en Pyrit iquestQueacute es

lo que te impide descifrar cada handshake que capturas Pues bien el SSID actuacutea como los ldquogranos de salrdquo comprobando que la misma contrasentildea combinada con un SSID diferente genere un PMK diferente Tener una lista de contrasentildeas pre-calculadas se denomina tabla rainbow y te permite descifrar las contrasentildeas maacutes raacutepidamente a costa de conar con maacutes espacio en disco para almacenar estas listas

Existe un proyecto que crea tablas rainbow para WPA para los 1000 SSID maacutes comunes en httpbitly2azsBIh Si tu red ob-jetivo tiene un SSID que estaacute en la lista (httpbitly2adkjtd) potencialmente podriacuteas descifrar la contrasentildea mucho maacutes raacutepido que con otros meacutetodos Vamos a poner esto a prueba

Para este experimento prepareacute un punto de acceso llama-do linksys2 con una contrasentildea del diccionario de palabras (httpbitly2ayEXmI) Necesitas descargar el conjunto tarball que el sitio proporciona (cuanto maacutes grande sea maacutes posibilidades tendraacutes de encontrar la clave) Descompriacuteme-lo en un directorio y obtendraacutes 1000 archivos hash cada uno nombrado de acuerdo con el SSID del punto de acce-so Tambieacuten necesitaremos instalar Cowpatty (httpbitly2awaJ2A) para poder procesar las tablas

SEGURIDAD WPA

Un ataque de diccionario wPA con Pyrit

Ataque wPA con tabla rainbow

XKCD obligatorio httpsxkcdcom538

ODROID MAGAZINE 12

Cuando todo esteacute listo inicia WifiPhisher especificando la interfaz de monitor y la interfaz hostapd

$ sudo airmon-ng start wlan0

$ sudo wifiphisher -jI mon0 -aI wlan1

Si todo va bien WifiPhisher te mostraraacute una lista de pun-tos de Acceso a engantildear y configuraraacute las reglas de iptables y DHCP y te preguntaraacute por el tipo de paacutegina web falsa que quieres que muestre A continuacioacuten procederaacute a desconectar los clientes y hacer que se conecten al punto de acceso falso y les mostraraacute algo similar a la Figura 5 Seraacute entonces cuando veas la contrasentildea en el inteacuterprete de comandos Ten en cuenta que estamos hablando de algo especialmente retorcido puesto que ya no estaacutes engantildeando soacutelo a los ordenadores sino tambieacuten a la gente real

Mantener tu WiFi seguraCon esto concluimos nuestro anaacutelisis sobre la seguridad

inalaacutembrica Estas son algunas pautas que deberiacuteas tener en cuenta para mantener tu wifi segura

bull No utilices tecnologiacuteas de encriptacioacuten obsoletas (WEP)bull No confiacutees demasiado en ocultar la red o usar listas de ac-ceso mAC ya que son muy deacutebiles y muy faacuteciles de evitar bull Desactiva la tecnologiacutea WPS en redes en las que fiacutesica-mente sea posiblebull Utiliza contrasentildeas largas que no esteacuten diccionarios Si tienes que usar las palabras del diccionario para que te sea maacutes faacutecil recordarlas (despues de todo eres un ser huma-no) combiacutenalas de forma aleatoria Una opcioacuten es utilizar la teacutecnica horse-battery-staple de xkcd (httpsxkcdcom936) esta herramienta httpbitly1cubp1J puede hacerlo de forma automaacuteticabull Antildeadir caracteres a una contrasentildea aumenta su seguri-dad bastante maacutes que usar un signo de puntuacioacuten espe-cial en contrasentildeas maacutes cortasbull Si es posible considera la posibilidad de utilizar WPA2-Enterprise en tu red domeacutesticabull No utilices nombres comunes para la red SSIDbull Reducir la intensidad de la sentildeal no te ayudaraacute puesto que el atacante siempre puede conseguir una antena mejor

Como siempre puedes compartir tus propias experiencias hacer preguntas o compartir problemas en el hilo de soporte en httpbitly2azoM5N

Es posible que hayas agotado todo lo que tienes a tu alcance para romper un punto de acceso WiFi en particular y aun asiacute no consigues resultados Es probable que tenga que esperar unos 3 millones de antildeos para que el ataque de fuerza bruta alcance el 1 asiacute que iquestqueacute podemos hacer Pues bien simple-mente tienes que atacar el punto de seguridad maacutes deacutebil de la cadena iexclEl ser humano

Un proyecto que tiene por objetivo simplemente ldquopregun-tarrdquo por la contrasentildea es WifiPhisher (httpbitly1wPdPPQ) El programa configura un punto de acceso abierto maleacutefico que clona el SSID del objetivo A continuacioacuten desautentifica to-dos los clientes del objetivo y espera a que se vuelvan a conec-tar Por casualidad (o aseguraacutendose de que tienes una mejor sentildeal) los clientes se conectaraacuten automaacuteticamente en su lugar a tu punto de acceso abierto Cuando intenten acceder a los recursos de Internet seraacuten redireccionados a un portal que se presenta como su router y le solicitaraacute su contrasentildea WPA (para mejorar la seguridad por supuesto) Una vez que se obtiene la contrasentildea se desconecta el punto de acceso y el cliente se co-necta sin que se perciba la diferencia a su red original Ves ndash es faacutecil Para conseguir esto necesitaraacutes dos adaptadores inalaacutem-bricos - uno que sea compatible con la inyeccioacuten (para desco-nectar continuamente a los usuarios del AP objetivo) y otro para hacerse pasar por el falso AP Para esta prueba he utilizado dos adaptadores Wifi Modulo 4 de Hardkernel

$ git clone httpsgithubcomsophronwifiphishergit

$ sudo apt-get install tcpdump hostapd

$ cd wifiphisher

$ sudo python setuppy install

Si aparece alguacuten error indicando que no encuentra setuptools instaacutelalo y vuelve a ejecutar el comando install

$ wget httpsbootstrappypaioez_setuppy -O - |

sudo python

Ten en cuenta que para que esto funcione necesitaraacutes con-figurar hostapd para que trabaje con tu tarjeta inalaacutembrica Tienes maacutes detalles en httpbitly2aLTF6w and httpbitly2aLTlnX

SEGURIDAD WPA

Los usuarios desprevenidos escribiraacuten su contrase-ntildea wPA en tu entorno de suplantacioacuten de red

ODROID MAGAZINE 13

En los uacuteltimos antildeos el tema del big data y de la ciencia de los datos se ha convertido en una tendencia muy importante en un sinfiacuten de in-

dustrias Las empresas de alta tecnologiacutea de Silicon Valley ya no son los uacutenicos proveedores de temas como Hadoop la regresioacuten logiacutestica y el aprendizaje de maquinas Estar familiarizado con las tecnologiacuteas del big data se estaacute convirtiendo en un requisito cada vez maacutes necesario en los empleos relacionados con la tecnologiacutea en cualquier parte Por desgracia y siendo realista la experiencia praacutectica con las tecnologiacuteas de big data normalmente implica tener acceso a un costoso cluacutester de ordenadores para ejecutar tus consultas Sin embargo la reciente revolucioacuten de los orde-nadores de placa reducida ha hecho que la informaacutetica distri-buida sea accesible a nivel personal y en educacioacuten para realizar tareas como esta y muchas otras

Imparto clases sobre disentildeo y mantenimiento de sistemas digitales y redes en un instituto franceacutes Durante los uacuteltimos 4 antildeos he ido sustituyendo todos los ordenadores de sobremesa de mi aula por ordenadores SBC principalmente por razones de espacio ya que la escuela estaacute cerca de la ciudad de Pariacutes y el espacio es muy caro iexclEl uso de ordenadores SBC deja maacutes

espacio en la mesa de trabajo del estudianteEmpeceacute con una Raspberry Pi pero pronto cambieacute al

ODROID-C1 tan pronto como estuvo disponible ya que la Pi no era lo suficientemente raacutepida para el trabajo en labo-ratorios (laboratorios GNS3 diferentes anaacutelisis de protocolos bus y configuracioacuten de los equipos de red) o simplemente para navegar por Internet Para el proacuteximo antildeo escolar ya habreacute cambiado la mitad de la clase al ODROIDC2 con un total de 10 ODROID-C1s y 8 ODROID-C2s

A la hora de preparar los laboratorios para los estudiantes tuve que usar el mismo equipo que ellos con el fin de asegurar-me de que todo funcionara sin problemas cuando los estudi-antes trabajasen en sus propios entornos de laboratorios Esto requeriacutea utilizar un ODROID en lugar de un ordenador por-

taacutetil x86 para eliminar cualquier diferencia de comportamiento en-tre ambos Para ser maacutes eficiente a la hora de preparar los laborato-rios parte de ellos los configuraba en casa y no en la escuela He in-tentado buscar algunas soluciones para fabricar un ordenador portaacutetil usando un ODROID de modo que se convirtiese en mi portaacutetil ODROID de ida y vuelta desde la escuela a casa Recorro 5 km hasta la escuela en bicicleta por lo que la solucioacuten teniacutea que ser ligera y compacta para transportarla

PORTATILODROID-C1 un PROyECTO CASERO A MEDIDA COn nOMbRE En CLAvE ldquoREDTOPrdquopor fabien Thiriet

PORTATIL ODROID

Portaacutetil REDTOP y vista trasera del mismo

ODROID MAGAZINE 14

RequisitosAl principio del proyecto elaboreacute una lista de requisitos

para el ordenador portaacutetil

bull Alimentado con 12V a traveacutes de un sistema de bateriacuteas solares en casa y con una fuente de alimentacioacuten exter-na 230V-12V en la escuelabull Bateriacutea Li-ion para cuando me esteacute moviendo con una autonomiacutea de unas 2 horas Algunos entornos de labo-ratorios en la escuela requieren monitorizar los buses CAN integrados en los vehiacuteculos de modo que se hace necesario el uso de bateriacuteasbull Pantalla LCD de 10rdquo como miacutenimobull Teclado y pantalla LCD montados en forma de ordena-dor portaacutetilbull GPIOs y conectores ODROID faacutecilmente accesiblebull Bluetooth maestroesclavo disponible puesto que ten-go muchos proyectos que funcionan con placas Arduino remotasbull RTC integrado porque no siempre estoy conectado a Internet

Proceso de fabricacioacutenAl principio encontreacute un Motorola Lapdock 100 en eBay

y lo utiliceacute durante varios meses Tras solucionar los problemas HDMI entre el ODROID y el Lapdock ya que el Lapdock se apagaba despueacutes de 20 segundos si no se conectaba nada a su puerto USB todo funcionoacute correctamente Se trataba de una solucioacuten muy ligera pero no lo suficientemente coacutemoda para un uso diario ya que la pantalla LCD soacutelo teniacutea 10rdquo y el teclado era muy pequentildeo Tambieacuten echeacute un vistazo a PiTop pero el precio era muy elevado para lo que estaba dispuesto a gastar Lo que realmente necesitaba era simplemente un gran panel LCD y un buen teclado montados en conjunto

Decidiacute buscar en eBay una pantalla LCD maacutes grande y en-contreacute un modelo de 133rdquo muy econoacutemico por 85 euro con en-viacuteo e impuestos incluidos La pantalla tiene una buena resolu-cioacuten de 1900x600 y los colores se ven muy bien Sin embargo

PORTATIL ODROID

el panel LCD se vendiacutea sin marco de modo que necesita algo para solventar esta cuestioacuten

Al mismo tiempo mi hijo ha conseguido lo que ha sontildeado durante mucho tiempo por su 15 cumpleantildeos una impresora 3D personal de modo que ya no teniacutea que utilizar una que teniacutea en la escuela Eacutel es muy bueno usando software CAD como SolidWorks y me propuso disentildear un chasis para el por-taacutetil Por desgracia la placa de impresioacuten 3D con un tamantildeo maacuteximo de 200 mm era demasiado pequentildea para imprimir un marco LCD de 133rdquo y un marco del teclado Despueacutes de varias reflexiones decidimos dividir los marcos de la LCD y del teclado en cuatro partes y unirlos con los clips de montaje im-presos en 3D y pegamento Todas las partes individuales eran inferiores a los 200 mm Si te fijas bien en las fotos del marco de la LCD de los clips y del teclado veraacutes la separacioacuten entre las piezas montadas El disentildeo CAD necesita alrededor de 2 semanas de trabajo para asegurarse de que todo encaja bien

Durante el disentildeo el principal problema que nos preo-cupaba era las bisagras del panel LCD que teniacutea que ser lo suficientemente fuerte para que me permitiera abrir y cerrar con facilidad el ordenador portaacutetil Esto nos permitiacutea crear una aacutengulo perfecto entre el marco del panel LCD y el marco del teclado Para que pudiera encajar correctamente el teclado

Portaacutetil RedTop visto desde arriba Versioacuten inicial de portaacutetil con un ordenador motorola Lapdock 100

El modelo 3D del marco de la LCD

ODROID MAGAZINE 15

en su marco lo desmontamos retirando las cubiertas superior e inferior Elegimos el color rojo para la fibra de impresioacuten 3D para que el ordenador fuese maacutes divertido y llamativo 30 horas maacutes tarde teniacuteamos impresas todas las partes del chasis Las pegamos y atornillamos el panel LCD y el teclado dentro de sus respectivos marcos El siguiente paso fue colocar todas las placas y moacutedulos en el interior del chasis con firmeza las in-sertamos en el plexiglaacutes

El plexiglaacutes fue cortado para que encajara en el espacio crea-do en la etapa de disentildeo CAD para cada marco De esta forma todo el mundo puede apreciar el engranaje del portaacutetil lo cual supone una gran ventaja a la hora de ensentildear informaacutetica El paso final fue cablear todo siguiendo el diagrama por bloques

Acabamos teniendo un ordenador portaacutetil potente y fiable iexclMis estudiantes de la escuela se sorprendieron cuando vieron este portaacutetil poco convencional por primera vez

BateriacuteaAhora disponiacuteamos de un nuevo ordenador portaacutetil pero

sin ninguacuten tipo de bateriacutea recargable de modo que maacutes o me-nos es inuacutetil En primer lugar necesitaacutebamos estimar la ca-pacidad de la bateriacutea necesaria Para tal fin hicimos algunas pruebas de medicioacuten del amperaje en diferentes condiciones de uso El maacuteximo amperaje se alcanza cuando el C2 se pone en marcha con un pico de 11A Durante el funcionamiento nor-mal se mantiene justo por debajo de 1A con un dongle USB WIFI un moacutedulo RTC un adaptador de ratoacuten inalaacutembrico y el moacutedulo Bluetooth conectados El consumo total de energiacutea del ordenador portaacutetil es de alrededor de unos 12W

Mi hijo rescatoacute una vieja bateriacutea de litio recargable de un ordenador portaacutetil de Lenovo (L412) y pudo extraerle las nueve ceacutelulas disponibles dentro del paquete de bateriacuteas La mayoriacutea de las veces este tipo de paquetes de bateriacuteas ya no funcionan no por la propia bateriacutea sino debido a un defectuoso controlador de bateriacuteas integrado Utilizamos 3 y las conectamos en serie Esto nos proporcionaba 3 x 37 V un total de 111 voltios cuando la bateriacutea estaacute casi descargada y maacutes de 12V cuando estaacute completa-mente cargada La placa controladora LCD funciona sin ninguacuten problema a 11V Cada ceacutelula tiene 2200 mAh de capacidad de modo que la autonomiacutea del portaacutetil se acerca a las 2 horas Esto era suficiente para alcanzar el objetivo que nos propusimos al inicio del proyecto

Para volver a cargar las 3 ceacutelulas utilizamos un banco de bate-riacuteas solar de 12V conectada a traveacutes de un moacutedulo de sobreali-mentacioacuten que estaacute reajustado a un liacutemite de corriente de 126 V y 1A Con nuestro modelo particular de bateriacuteas podemos ajustar tanto la tensioacuten de salida como la corriente Cuando es-

PORTATIL ODROID

Clips de LCD

marco del teclado

Chasis completamente montado

ODROID MAGAZINE 16

cribiacute este artiacuteculo la bateriacutea auacuten no estaba colocada dentro del RedTop pero la teniacuteamos fuera para realizar pruebas maacutes ex-haustivas Una vez que completemos las pruebas colocaremos las 3 celdas debajo del teclado en un espacio reservado para tal fin

MaterialesEsto es lo que utiliceacute para montar mi portaacutetil ODROID-C1

Panel LCD HDMI-VGA de 133rdquo con audio httprebaycomAYZ5JU

Teclado mecaacutenico Zalman httpwwwamazonfrdpB00LHSPCS4

Cable OTG USB httpwwwamazonfrdpB007MNZ8VY

Transformador 12V-5V 3A httpwwwamazonfrdpB00JGFEQLE

Moacutedulo Bluetooth HC05 maestroesclavo httpswwwamazonfrdpB013STJSES

Moacutedulo RTC PCF8563 httpwwwamazonfrdpB01DB8JECC

Mini altavoz httprebaycombwOCZv

Impresora 3D httpwwwdagomafrproduitimprimante-dis-

covery200

Filamentos PLA para impresora 3D httpwwwamazonfrdpB00UMV7ANM

Clavijas de corriente DC de 55mm httpwwwamazonfrdpB00O1Y1X70

Interruptor de alimentacioacuten httpwwwamazonfrdpB00HUHBS1Q

Pack de bateriacuteas de ordenador portaacutetil como esta httpwwwamazonfrdpB00TVOC55Y

Conversor de sobrealimentacioacuten (4V-12V) httprebaycomw3FgNH

Varios tornillos arandelas y cables05m de PlexiglassSuper glue

PORTATIL ODROID

La placa controladora de la LCD

JUEGOS ANDROID

PAC-MAn 256iquestun juEGO CLASICO iquestunA nuEvA PERSPECTIvA DEL GEnERO DEL CORREDOR In-TERMInAbLE iexclDESCubRELOpor Bruno Doiche

Suele decirse que los claacutesicos nunca mueren pero algunos pueden quedarse bastante

anticuados Cuando era un nintildeo el Pac-Ma era un juego cuyos graacuteficos y jugabilidad eran totalmente acepta-bles para los estaacutendares de la deacutecada de los 80 A pesar de que todaviacutea se puede disfrutar del original Pac-Man hoy diacutea estaraacutes de acuerdo conmigo en que se queda algo corto en cuanto a funcionalidad incluso si aceptas el reto de jugar al modo aacutercade lo suficiente como para encontrarte con el miacutetico error del nivel 256 que soacutelo los mejores juga-dores de Pac-Man son capaces de ver

Sin embargo en la partida 256 del Pac-Man el error es la principal caracteriacutestica te prosiguen como una ola implacable desde la parte inferior de la pantalla Te hace volver a pensar lo que realmente significa correr por tu supervivencia en un labe-rinto lleno de fantasmas cada uno con su propia personalidad Exige un control muy preciso y pensar muy raacutepido para lograr salir y mantenerte un paso por delante de tus enemigos fantas-mas Ahora no tienes que jugar a los 255 niveles de Pac-Man para llegar a uno de los niveles maacutes elitistas de la historia del juego Puedes instalarlo desde Play Store en

httpbitly2cLaD5q

Un gran juego tan adictivo como lo fue en sus primeros diacuteas arcade

ODROID MAGAZINE 17

book se puede compartir faacutecilmente permitiendo una faacutecil visualizacioacuten en liacutenea y en nuestro caso gestionar la creacioacuten y el enviacuteo de aplicaciones Spark al cluacutester Los notebooks de Jupyter son una forma muy comuacuten de usar Apache Spark ya que permite al usuario centrarse especiacuteficamente en el anaacutelisis de datos en lugar de preocuparse de las herramientas o de la infraestructura que hay detraacutes

Instalar Hadoop File SystemNuestra primera tarea es instalar Java en cada nodo del

cluacutester Instalaremos el uacuteltimo software Java 8 de Oracle EL cual requiere la aceptacioacuten de la licencia durante la instalacioacuten Debido a esto necesitas iniciar sesioacuten en cada nodo de forma independiente y ejecutar el instalador Una vez alliacute crearemos una nueva cuenta de usuario desde la que ejecutaremos todo

$ sudo add-apt-repository ppawebupd8teamjava

$ sudo apt-get update

$ sudo apt-get install oracle-java8-installer

$ sudo apt-get install rsync

$ sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hduser

$ sudo usermod -aG sudo hduser

Ahora necesitamos instalar Hadoop Teacutecnicamente po-driacuteas utilizar la distribucioacuten Hadoop disponibles en el sitio web de Apache pero no estaacute compilada para la CPU ARM v71 de nuestros XU4s Puesto que en su mayor parte es Java es genial ya que se ejecutaraacute sobre JVM que acabamos de instalar en cada nodo Sin embargo hay partes de Hadoop que fueron es-

En el anterior artiacuteculo que escribiacute para ODROID Maga-zine en httpbitly2bHFij7 analice el desarrollo de un cluacutester informaacutetico autoacutenomo con nodos ODROID

XU4 En este artiacuteculo explicaremos coacutemo hacer un buen uso de ese cluacutester instalando Apache Spark y el sistema de ficheros Hadoop asiacute como tambieacuten la forma de acceder a tu cluacutester a traveacutes de la aplicacioacuten web Jupyter

Hadoop File System (HDFS) es uno de los sistemas de ar-chivos distribuidos maacutes populares y maacutes utilizados que existen hoy en diacutea Un sistema de archivos distribuido (DFS) es una aplicacioacuten para cluacutester que agrupa todas las unidades de disco duro dentro de un cluacutester para que puedan ser tratadas como una uacutenica unidad de almacenamiento de cara a sus clientes ex-ternos Utilizar un DFS tiene dos ventajas muy importantes En primer lugar y lo maacutes evidente es que te permite guardar y trabajar con grandes conjuntos de datos que se almacenan en maacutes de un disco duro del cluacutester En segundo lugar un DFS bien disentildeado proporciona mayor resistencia de datos en el nodo o ante fallos de disco mediante la replicacioacuten de bloques de datos en varias unidades del cluacutester En nuestro cluacutester XU4 los discos duros son las tarjetas MicroSD que fueron instaladas y configurada en nuestra anterior guiacutea

Apache Spark es una moderna plataforma de anaacutelisis de Big Data utilizada ampliamente en la industria del anaacutelisis de los grandes voluacutemenes de datos Proporciona herramientas de alto nivel muy simple para manipular y analizar datos ya sea a traveacutes de SQL o mapreduce ademaacutes de usar lenguajes de pro-gramacioacuten comunes tales como Python Scala y Java La pecu-liaridad maacutes significativa de Apache Spark es el uso del fondo de memoria RAM del cluacutester para almacenar objetos de datos intermedios que aceleran significativamente el procesamiento de datos Aunque los 2 GB de RAM integrados en el XU4 po-driacutean parecer un poco austeros en comparacioacuten con las grandes cantidades de memoria en un nodo de un cluacutester industrial hay espacio suficiente para hacer algunas cosas interesantes con Apache Spark

Jupyter Notebook es una aplicacioacuten web que te permite coacute-modamente aprovecharte de diversos lenguajes y plataformas de caacutelculo con tu cluacutester a traveacutes de una interfaz web El note-

InSTALAR HADOOP y SPARK En un CLuSTER ODROID-Xu4por michael Kamprath

HADOOP FILE SYSTEM

ODROID MAGAZINE 18

-l root ldquomkdir -p opthadoop-272rdquo

$ sudo rsync -avxP opthadoop-272

rootslave1opt

$ sudo rsync -avxP opthadoop-272

rootslave2opt

$ sudo rsync -avxP opthadoop-272

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop opthadoop-272rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquoln -s opthadoop-272 usrlocalhadooprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquomkdir -p datahdfstmprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop datahdfsrdquo

El uacuteltimo paso en la instalacioacuten de Hadoop es formatear el nodo como un HDFS

$ usrlocalhadoopbinhdfs namenode -format

Instalar Apache SparkVamos a utilizar un meacutetodo similar al anterior para instalar

Apache Spark En primer lugar vamos a utilizar Python 3 para acceder a Spark y a algunas librerias clave de Python por lo que tendraacutes que iniciar sesioacuten en cada nodo y ejecutar

$ sudo apt-get install python3 python3-pip

$ sudo pip3 install numpy

$ sudo pip3 install urlparse

Despueacutes en el nodo maestro instala Apache Spark

$ cd opt

$ sudo wget httpapacheclazorgspark

spark-162spark-162-bin-hadoop26tgz

$ sudo tar xvzf spark-162-bin-hadoop26tgz

$ sudo chown -R hduserhadoop

spark-162-bin-hadoop26

$ sudo ln -s optspark-162-bin-hadoop26

usrlocalspark

Al igual que en nuestra instalacioacuten de Hadoop necesitas antildeadir algunos archivos de configuracioacuten al directorio usrlo-calchispasconf Puedes localizar los archivos de configuracioacuten necesarios en mi repositorio GitHub (httpbitly2b4GnDU)

Una vez que Spark haya sido configurado en el nodo ma-

critas en C para que se ejecutaran maacutes raacutepido Si una instalacioacuten Hadoop no tiene estas libreriacuteas compiladas en la plataforma en la que estaacute se utilizaraacuten automaacuteticamente las equivalentes en Java por lo que seguiraacute funcionando pero de un modo maacutes lento Para este proyecto he desarrollado una distribucioacuten de la uacuteltima versioacuten de Hadoop para el procesador ARM v71 va-mos a descargar e instalar mi distribucioacuten En el nodo maestro inicia sesioacuten con la cuenta ldquohduserrdquo recieacuten creada y ejecuta los siguientes comandos para instalar Hadoop y configurar los no-dos del cluacutester para utilizar SSH sin contrasentildea Ten en cuenta que tendraacutes que iniciar sesioacuten en cada nodo esclavo desde el nodo maestro para configurar completamente el inicio de se-sioacuten sin contrasentildea

$ cd

$ ssh-keygen -t rsa -P ldquordquo

$ cat $HOMEsshid_rsapub gtgt $HOMEsshauthorized_

keys

$ ssh hduserlocalhost

$ exit

$ ssh hdusermaster

$ exit

$ ssh-copy-id hduserslave1

$ ssh hduserslave1

$ exit

$ ssh-copy-id hduserslave2

$ ssh hduserslave2

$ exit

$ ssh-copy-id hduserslave3

$ ssh hduserslave3

$ exit

$ cd opt

$ sudo wget httpdiybigdatanetdownloads

hadoophadoop-272armhftargz

$ sudo tar xzf hadoop-272armhftargz

$ sudo chown -R hduserhadoop hadoop-272

$ cd usrlocal

$ sudo ln -s opthadoop-272 hadoop

$ cd usrlocalhadoop

Ahora tenemos que crear los archivos de configuracioacuten para Hadoop Por comodidad ya he creado estos archivos que se de-ben instalar en el directorio usrlocalhadoopetchadoop y los he colocado a mi repositorio GitHub en httpbitly2bBehj4

Estos archivos de configuracioacuten tienen una configuracioacuten de cluacutester similar a la descrita en mi anterior artiacuteculo Es po-sible que tengas que modificarlos si has desarrollado un cluacutester diferente Ahora que el software Hadoop estaacute configurado en el nodo maestro lo vamos a copiar en los nodos esclavos

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

HADOOP FILE SYSTEM

ODROID MAGAZINE 19

estro coacutepialo a los esclavos de tu cluacutester

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo -l root

ldquomkdir -p optspark-162-bin-hadoop26rdquo

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave1opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave2opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquochown -R hduserhadoop

optspark-162-bin-hadoop26rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquoln -s optspark-162-bin-hadoop26

usrlocalsparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquomkdir -p datasparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquochown hduserhadoop datasparkrdquo

Instalar Jupyter NotebookLa instalacioacuten Jupyter Notebook es relativamente simple en

comparacioacuten con lo que hemos hecho hasta ahora Ugravenicamente en el nodo maestro ejecuta los siguientes comandos

$ sudo mkdir datajupyter

$ sudo chown -R hduserhadoop datajupyter

$ mkdir ~notebooks

$ sudo pip3 install jupyter

Para hacer visualizaciones en un notebook necesitamos compilar e instalar matplotlib Tambieacuten es uacutetil tener instalado numpy para facilitar la informaacutetica cientiacutefica a traveacutes de Py-thon Ten en cuenta que esto va a llevar un tiempo

$ sudo apt-get build-dep matplotlib

$ sudo pip3 install matplotlib

$ sudo pip3 install numpy

Ejecutar Hadoop Spark y Jupyter

Para logar que todo se ejecute usa los siguientes comandos

$ usrlocalhadoopsbinstart-dfssh

$ usrlocalsparksbinstart-allsh

$ XDG_RUNTIME_DIR=rdquodatajupyterrdquo PYSPARK_DRIVER_

PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=rdquonotebook

--no-browser --port=7777 --notebook-dir=homehduser

notebooksrdquo usrlocalsparkbinpyspark --packages

comdatabricksspark-csv_210110 --master spark

master7077

Puedes optar por convertir esta secuencia de comandos en un script bash independiente o simplemente puede crear un alias para este uacuteltimo comando Te dejo elegir cualquiera de

estas opciones como ejercicio Una vez en funcionamiento in-troduce en el navegador del ordenador httpltdireccioacuten IP del cluacutestergt7777 deberiacutea ver la interfaz Jupyter

Vamos a ejecutar una tarea de recuento de palabras en

nuestro sistema big data de XU4 Crea un nuevo notebook Python 3 haciendo clic en el botoacuten New en la parte superior derecha de la paacutegina web Ahora veraacute un espacio vaciacuteo como el que se muestra en la Figura anterior

Abre una nueva sesioacuten SSH en el nodo principal y antildeade lo siguiente

$ wget httpnorvigcombigtxt

$ hdfs dfs -mkdir usermichael

HADOOP FILE SYSTEM

Paacutegina web principal de Jupyter

Bloc de notas de Jupyter

ODROID MAGAZINE 20

$ hdfs dfs -put bigtxt usermichaelbigtxt

$ hdfs dfs -ls usermichael

Vuelve al notebook recieacuten creado antildeade el siguiente coacutedigo Python en la primera celda

from operator import add

blog_data = sctextFile(lsquohdfsmaster9000user

michaelbigtxtrsquo)cache()

counts = blog_dataflatMap(lambda x xsplit(lsquo lsquo))

map(lambda x (x 1))reduceByKey(add)

A continuacioacuten pulsa Shift + Enter para iniciar el trata-miento de las celdas Una nueva celda apareceraacute en el notebook de Jupyter Teacutecnicamente todaviacutea no ha sucedido nada dentro de Spark excepto crear un plan de consulta para ejecutar el recuento de palabras frente al conjunto de datos del blog que ya hemos colocado en HDFS Spark no hace ninguacuten caacutelculo hasta que no haga falta materializar los resultados La forma maacutes comuacuten de hacerlo es mostrar una parte de los resultados En la siguiente celda del notebook introduzca el coacutedigo y pulse Shift-Enter

countstake(100)

Veraacutes un asterisco junto a la celda en la que hemos intro-ducido el coacutedigo anterior Este asterisco seguiraacute activo mien-tras Spark esteacute haciendo sus caacutelculos Si vuelves a la sesioacuten de terminal en la que lanzaste el software Jupyter veraacutes el regis-tro log de Spark realizando sus caacutelculos Por otra parte si es-

cribes en tu navegador web la direccioacuten httpltdireccioacuten IP del cluacutestergt4040 puedes analizar el estado interno de Spark uti-lizando su interfaz de aplicacioacuten Es probable que escuches a-rrancar el ventilador de la CPU del XU4 durante los caacutelculos

Cuando los caacutelculos finalicen los primeros 100 valores de

los resultados se mostraraacuten en el notebook de JupyterCambia el nombre del notebook haciendo clic en la cadena

ldquo Untitledrdquo junto al logo de Jupyter en la parte superior izqui-erda del notebook Puede seguir trabajando con los datos antildea-diendo maacutes celdas que contengan maacutes coacutedigo python Spark Hay muchos y excelentes recursos en la web para aprender maacutes sobre Apache Spark incluyendo httpsparkapacheorg

Para guardar y cerrar el notebook haz clic en el menuacute ldquoFilerdquo en la paacutegina y selecciona ldquoClose and Haltrdquo Para finalizar Jupy-ter pulsa Control-C dos veces en la ventana de terminal desde el cual se lanzoacute Una vez que el software Juypter se detenga puedes apagar Spark y HDFS con

$ usrlocalsparksbinstop-allsh

$ usrlocalhadoopsbinstop-dfssh

Lecturas recomendadasSi deseas aprender maacutes sobre los temas tratados en este artiacute-

culo puedes utilizar los siguientes recursos para obtener maacutes informacioacuten sobre el software asiacute como mis conocimientos so-bre Big Data

Mi blog httpdiybigdatanetApache Hadoop httphadoopapacheorgApache Spark httpsparkapacheorgJupyter Notebook httpjupyterorg

HADOOP FILE SYSTEM

Los caacutelculos del recuento de palabras se han completado

ODROID MAGAZINE 21

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 11: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

tos praacutecticos inserta un Enter despueacutes de cada palabra) Luego ejecutamos sort para hacer las palabras uacutenicas que es una o-peracioacuten muy intensa para la CPU y la memoria Si no tienes suficiente memoria RAM para sort puedes dividir la entrada en varios archivos maacutes pequentildeos y ejecutar sort luego conca-tenar los resultados y ejecutar de nuevo sort sobre el resultado

$ iconv -f UTF-8 -t US-ASCIITRANSLIT

wiki_en_fulltxt | tr -cs ldquo[alpha]rdquo ldquonrdquo gtgt

wordlist_en_fulltxt

$ sort -u wordlist_en_fulltxt gt

wordlist_en_uniquetxt

Los diccionarios anteriores no estaacuten disentildeados necesari-amente para las restricciones WPA de modo que encontraraacuten contrasentildeas maacutes pequentildeas Puede eliminar las palabras maacutes pequentildeas o puedes utilizar una teacutecnica para combinarlas y crear contrasentildeas maacutes largas Para eliminar palabras inadecuadas pu-edes ejecutar grep (menor de 8 caracteres)

$ grep -P lsquo8rsquo wordlist_en_uniquetxt gt wordlist_

en_wpatxt

Hasta aquiacute tu diccionario se compone de una uacutenica pa-labra Si deseas generar diccionarios con parejas de palabras (o varias palabras) puede hacerlo con algo como esto (que genera permutaciones de dos palabras en el diccionario)

$ cat wordlist_en_uniquetxt wordlist_en_uniquetxt

| perl -lne lsquoBEGINapush a$_ENDforeach $x(a)

foreach $y(a)print $x$yrsquo gt every2wordstxt

Para tu comodidad puedes localizar listas de palabras de Wikipedia en ingleacutes y rumano en mi paacutegina de GitHub para hacer pruebas (httpbitly2ayE1yW)

Ejecutar ataques de diccionario con Pyrit

Vamos a utilizar de nuevo Pyrit para ejecutar un ataque de diccionario pero esta vez en lugar de ejecutarlo directamente vamos a importar el diccionario dentro Pyrit y lo vamos a eje-cutar desde alliacute Esto nos da la posibilidad de poder precalcular los hashes basados en el diccionario de este modo el descifrado real queda reducido principalmente a una consulta posterior Los datos se almacenan en ~pyrit

$ pyrit -e lsquoNASA-HQ-WPArsquo create_essid

$ pyrit -i wordlist_en_wpatxt import_passwords

$ pyrit batch

El comando batch de Pyrit necesita mucho tiempo y haraacute

Tambieacuten puede crear tu propio diccionario desde un vol-cado de texto Por ejemplo puedes obtener una copia offline de Wikipedia (en muchos idiomas) desde el Proyecto Kiwix (httpbitly2awalku) Necesitaraacutes descargar el archivo no in-dexado zim para el idioma que elijas aseguraacutendose de seleccio-nar la variante ldquonopicrdquo para no descargar ninguna imagen La Wikipedia en Ingleacutes ocupa aproximadamente 16 GB mientras que en otros idiomas es sustancialmente menor Para conver-tirla en una lista de palabras uacutenica es necesario tener una gran cantidad de espacio libre Por ejemplo el tamantildeo no compri-mido de la Wikipedia en Ingleacutes es de 130 GB Ten en cuenta que el comando zimdump necesitoacute un par de diacuteas para llegar a completarse en mi C1 con almacenamiento NFS

$ wget httpwwwopenzimorg

downloadzimlib-12targz

$ tar zxvf zimlib-12targz

$ cd zimlib-12

$ sudo apt-get install liblzma-dev

$ configure --prefix=usr

$ make

$ sudo make install

$ cd

$ echo lsquoDumping all articles as html into the zimdump

directory Please waitrsquo

$ zimdump -D zimdump wikipedia_en_all_nopiczim

A continuacioacuten tenemos que convertir el HTML a texto y concatenar todos los archivos en un uacutenico archivo de texto Vamos a crear un empaquetador alrededor de html2text de manera que si se bloquea no se detendraacute toda la liacutenea de in-formacioacuten El proceso tardaraacute entre varias horas y varios diacuteas dependiendo de la cantidad de archivos HTML que tengas que procesar y el dispositivo ODROID que poseas

$ sudo apt-get install html2text

$ cat ltltEOF gthtml2textwrappersh

binbash

html2text -utf8 ldquo$rdquo

exit 0

EOF

$ chmod a+x html2textwrappersh

$ find zimdumpA -print0 | xargs -0 -P 4 -n 30

html2textwrappersh gtgt wiki_en_fulltxt

El siguiente paso es transcribir los caracteres no ASCII a sus homoacutelogos ASCII (por ejemplo I -gt i) y dividir el archivo resultante en una lista de palabras Iconv depende de la con-figuracioacuten regional asiacute que aseguacuterate de tener soporte UTF-8 (en lugar de ldquoCrdquo por ejemplo) El comando ldquotrrdquo reemplaza todos los caracteres no alfanumeacutericos por nuevas liacuteneas (a efec-

SEGURIDAD WPA

ODROID MAGAZINE 11

$ wget httpwwwwillhackforsushicomcode

cowpatty46cowpatty-46tgz

$ tar xvf cowpatty-46tgz

$ cd cowpatty-46

$ sudo apt-get install libpcap-dev libssl-dev

$ make

$ sudo make install

$ cd

$ cowpatty -d linksys2hash -r

linksys2-insidious-handshakepcap -s linksys2 -2

Puedes especificar el archivo hash que quieres revisar con la opcioacuten -d (selecciona el hash con el mismo nombre que el punto de acceso objetivo) La opcioacuten -r especifica el archivo de captura con el handshake de 4 vias -s especifica el SSID

(ya que no se puede extraer de la captura) y -2 significa no ser demasiado estricto a la hora de analizar el archivo de captura Con esta configuracioacuten fui capaz de conseguir la contrasentildea en menos de 3 segundos usando un ODROID-C1 con una tasa de 25000 PMKs (comparados con los 300 PMKs cuando calculamos los PMKs) Por lo tanto el proceso es 83 veces maacutes raacutepido a expensas de utilizar unos 7 GB de espacio en disco

para el ataque Depende de ti decidir si vale la pena aunque consumas maacutes espacio en disco

Ingeneriacutea Social El doble maleacutefico

que tu CPU se caliente bastante mientras se crea la base de da-tos Si el calor te supone un problema puedes utilizar una her-ramienta como cpuctrl (httpbitly2aon1dA) para limitar la frecuencia maacutexima de la CPU con el regulador adecuado como por ejemplo ldquoconservativerdquo

Para obtener la clave de red tienes que proporcionar el ar-chivo de captura y los resultados si existen deberiacutean aparecer raacutepidamente Aquiacute tienes un pcap de ejemplo como referencia

httpbitly2agcRug A continuacioacuten ejecuta este comando

$ pyrit -r nasa-supercalifragilistic-handshakepcap

attack_db

Como puedes ver incluso lo que parecer ser una contrasentildea larga y robusta puede llegar a descifrarse si aparece en alguacuten artiacuteculo de Internet

Ataques con tabla RainbowUna vez que tengas cargado el diccionario en Pyrit iquestQueacute es

lo que te impide descifrar cada handshake que capturas Pues bien el SSID actuacutea como los ldquogranos de salrdquo comprobando que la misma contrasentildea combinada con un SSID diferente genere un PMK diferente Tener una lista de contrasentildeas pre-calculadas se denomina tabla rainbow y te permite descifrar las contrasentildeas maacutes raacutepidamente a costa de conar con maacutes espacio en disco para almacenar estas listas

Existe un proyecto que crea tablas rainbow para WPA para los 1000 SSID maacutes comunes en httpbitly2azsBIh Si tu red ob-jetivo tiene un SSID que estaacute en la lista (httpbitly2adkjtd) potencialmente podriacuteas descifrar la contrasentildea mucho maacutes raacutepido que con otros meacutetodos Vamos a poner esto a prueba

Para este experimento prepareacute un punto de acceso llama-do linksys2 con una contrasentildea del diccionario de palabras (httpbitly2ayEXmI) Necesitas descargar el conjunto tarball que el sitio proporciona (cuanto maacutes grande sea maacutes posibilidades tendraacutes de encontrar la clave) Descompriacuteme-lo en un directorio y obtendraacutes 1000 archivos hash cada uno nombrado de acuerdo con el SSID del punto de acce-so Tambieacuten necesitaremos instalar Cowpatty (httpbitly2awaJ2A) para poder procesar las tablas

SEGURIDAD WPA

Un ataque de diccionario wPA con Pyrit

Ataque wPA con tabla rainbow

XKCD obligatorio httpsxkcdcom538

ODROID MAGAZINE 12

Cuando todo esteacute listo inicia WifiPhisher especificando la interfaz de monitor y la interfaz hostapd

$ sudo airmon-ng start wlan0

$ sudo wifiphisher -jI mon0 -aI wlan1

Si todo va bien WifiPhisher te mostraraacute una lista de pun-tos de Acceso a engantildear y configuraraacute las reglas de iptables y DHCP y te preguntaraacute por el tipo de paacutegina web falsa que quieres que muestre A continuacioacuten procederaacute a desconectar los clientes y hacer que se conecten al punto de acceso falso y les mostraraacute algo similar a la Figura 5 Seraacute entonces cuando veas la contrasentildea en el inteacuterprete de comandos Ten en cuenta que estamos hablando de algo especialmente retorcido puesto que ya no estaacutes engantildeando soacutelo a los ordenadores sino tambieacuten a la gente real

Mantener tu WiFi seguraCon esto concluimos nuestro anaacutelisis sobre la seguridad

inalaacutembrica Estas son algunas pautas que deberiacuteas tener en cuenta para mantener tu wifi segura

bull No utilices tecnologiacuteas de encriptacioacuten obsoletas (WEP)bull No confiacutees demasiado en ocultar la red o usar listas de ac-ceso mAC ya que son muy deacutebiles y muy faacuteciles de evitar bull Desactiva la tecnologiacutea WPS en redes en las que fiacutesica-mente sea posiblebull Utiliza contrasentildeas largas que no esteacuten diccionarios Si tienes que usar las palabras del diccionario para que te sea maacutes faacutecil recordarlas (despues de todo eres un ser huma-no) combiacutenalas de forma aleatoria Una opcioacuten es utilizar la teacutecnica horse-battery-staple de xkcd (httpsxkcdcom936) esta herramienta httpbitly1cubp1J puede hacerlo de forma automaacuteticabull Antildeadir caracteres a una contrasentildea aumenta su seguri-dad bastante maacutes que usar un signo de puntuacioacuten espe-cial en contrasentildeas maacutes cortasbull Si es posible considera la posibilidad de utilizar WPA2-Enterprise en tu red domeacutesticabull No utilices nombres comunes para la red SSIDbull Reducir la intensidad de la sentildeal no te ayudaraacute puesto que el atacante siempre puede conseguir una antena mejor

Como siempre puedes compartir tus propias experiencias hacer preguntas o compartir problemas en el hilo de soporte en httpbitly2azoM5N

Es posible que hayas agotado todo lo que tienes a tu alcance para romper un punto de acceso WiFi en particular y aun asiacute no consigues resultados Es probable que tenga que esperar unos 3 millones de antildeos para que el ataque de fuerza bruta alcance el 1 asiacute que iquestqueacute podemos hacer Pues bien simple-mente tienes que atacar el punto de seguridad maacutes deacutebil de la cadena iexclEl ser humano

Un proyecto que tiene por objetivo simplemente ldquopregun-tarrdquo por la contrasentildea es WifiPhisher (httpbitly1wPdPPQ) El programa configura un punto de acceso abierto maleacutefico que clona el SSID del objetivo A continuacioacuten desautentifica to-dos los clientes del objetivo y espera a que se vuelvan a conec-tar Por casualidad (o aseguraacutendose de que tienes una mejor sentildeal) los clientes se conectaraacuten automaacuteticamente en su lugar a tu punto de acceso abierto Cuando intenten acceder a los recursos de Internet seraacuten redireccionados a un portal que se presenta como su router y le solicitaraacute su contrasentildea WPA (para mejorar la seguridad por supuesto) Una vez que se obtiene la contrasentildea se desconecta el punto de acceso y el cliente se co-necta sin que se perciba la diferencia a su red original Ves ndash es faacutecil Para conseguir esto necesitaraacutes dos adaptadores inalaacutem-bricos - uno que sea compatible con la inyeccioacuten (para desco-nectar continuamente a los usuarios del AP objetivo) y otro para hacerse pasar por el falso AP Para esta prueba he utilizado dos adaptadores Wifi Modulo 4 de Hardkernel

$ git clone httpsgithubcomsophronwifiphishergit

$ sudo apt-get install tcpdump hostapd

$ cd wifiphisher

$ sudo python setuppy install

Si aparece alguacuten error indicando que no encuentra setuptools instaacutelalo y vuelve a ejecutar el comando install

$ wget httpsbootstrappypaioez_setuppy -O - |

sudo python

Ten en cuenta que para que esto funcione necesitaraacutes con-figurar hostapd para que trabaje con tu tarjeta inalaacutembrica Tienes maacutes detalles en httpbitly2aLTF6w and httpbitly2aLTlnX

SEGURIDAD WPA

Los usuarios desprevenidos escribiraacuten su contrase-ntildea wPA en tu entorno de suplantacioacuten de red

ODROID MAGAZINE 13

En los uacuteltimos antildeos el tema del big data y de la ciencia de los datos se ha convertido en una tendencia muy importante en un sinfiacuten de in-

dustrias Las empresas de alta tecnologiacutea de Silicon Valley ya no son los uacutenicos proveedores de temas como Hadoop la regresioacuten logiacutestica y el aprendizaje de maquinas Estar familiarizado con las tecnologiacuteas del big data se estaacute convirtiendo en un requisito cada vez maacutes necesario en los empleos relacionados con la tecnologiacutea en cualquier parte Por desgracia y siendo realista la experiencia praacutectica con las tecnologiacuteas de big data normalmente implica tener acceso a un costoso cluacutester de ordenadores para ejecutar tus consultas Sin embargo la reciente revolucioacuten de los orde-nadores de placa reducida ha hecho que la informaacutetica distri-buida sea accesible a nivel personal y en educacioacuten para realizar tareas como esta y muchas otras

Imparto clases sobre disentildeo y mantenimiento de sistemas digitales y redes en un instituto franceacutes Durante los uacuteltimos 4 antildeos he ido sustituyendo todos los ordenadores de sobremesa de mi aula por ordenadores SBC principalmente por razones de espacio ya que la escuela estaacute cerca de la ciudad de Pariacutes y el espacio es muy caro iexclEl uso de ordenadores SBC deja maacutes

espacio en la mesa de trabajo del estudianteEmpeceacute con una Raspberry Pi pero pronto cambieacute al

ODROID-C1 tan pronto como estuvo disponible ya que la Pi no era lo suficientemente raacutepida para el trabajo en labo-ratorios (laboratorios GNS3 diferentes anaacutelisis de protocolos bus y configuracioacuten de los equipos de red) o simplemente para navegar por Internet Para el proacuteximo antildeo escolar ya habreacute cambiado la mitad de la clase al ODROIDC2 con un total de 10 ODROID-C1s y 8 ODROID-C2s

A la hora de preparar los laboratorios para los estudiantes tuve que usar el mismo equipo que ellos con el fin de asegurar-me de que todo funcionara sin problemas cuando los estudi-antes trabajasen en sus propios entornos de laboratorios Esto requeriacutea utilizar un ODROID en lugar de un ordenador por-

taacutetil x86 para eliminar cualquier diferencia de comportamiento en-tre ambos Para ser maacutes eficiente a la hora de preparar los laborato-rios parte de ellos los configuraba en casa y no en la escuela He in-tentado buscar algunas soluciones para fabricar un ordenador portaacutetil usando un ODROID de modo que se convirtiese en mi portaacutetil ODROID de ida y vuelta desde la escuela a casa Recorro 5 km hasta la escuela en bicicleta por lo que la solucioacuten teniacutea que ser ligera y compacta para transportarla

PORTATILODROID-C1 un PROyECTO CASERO A MEDIDA COn nOMbRE En CLAvE ldquoREDTOPrdquopor fabien Thiriet

PORTATIL ODROID

Portaacutetil REDTOP y vista trasera del mismo

ODROID MAGAZINE 14

RequisitosAl principio del proyecto elaboreacute una lista de requisitos

para el ordenador portaacutetil

bull Alimentado con 12V a traveacutes de un sistema de bateriacuteas solares en casa y con una fuente de alimentacioacuten exter-na 230V-12V en la escuelabull Bateriacutea Li-ion para cuando me esteacute moviendo con una autonomiacutea de unas 2 horas Algunos entornos de labo-ratorios en la escuela requieren monitorizar los buses CAN integrados en los vehiacuteculos de modo que se hace necesario el uso de bateriacuteasbull Pantalla LCD de 10rdquo como miacutenimobull Teclado y pantalla LCD montados en forma de ordena-dor portaacutetilbull GPIOs y conectores ODROID faacutecilmente accesiblebull Bluetooth maestroesclavo disponible puesto que ten-go muchos proyectos que funcionan con placas Arduino remotasbull RTC integrado porque no siempre estoy conectado a Internet

Proceso de fabricacioacutenAl principio encontreacute un Motorola Lapdock 100 en eBay

y lo utiliceacute durante varios meses Tras solucionar los problemas HDMI entre el ODROID y el Lapdock ya que el Lapdock se apagaba despueacutes de 20 segundos si no se conectaba nada a su puerto USB todo funcionoacute correctamente Se trataba de una solucioacuten muy ligera pero no lo suficientemente coacutemoda para un uso diario ya que la pantalla LCD soacutelo teniacutea 10rdquo y el teclado era muy pequentildeo Tambieacuten echeacute un vistazo a PiTop pero el precio era muy elevado para lo que estaba dispuesto a gastar Lo que realmente necesitaba era simplemente un gran panel LCD y un buen teclado montados en conjunto

Decidiacute buscar en eBay una pantalla LCD maacutes grande y en-contreacute un modelo de 133rdquo muy econoacutemico por 85 euro con en-viacuteo e impuestos incluidos La pantalla tiene una buena resolu-cioacuten de 1900x600 y los colores se ven muy bien Sin embargo

PORTATIL ODROID

el panel LCD se vendiacutea sin marco de modo que necesita algo para solventar esta cuestioacuten

Al mismo tiempo mi hijo ha conseguido lo que ha sontildeado durante mucho tiempo por su 15 cumpleantildeos una impresora 3D personal de modo que ya no teniacutea que utilizar una que teniacutea en la escuela Eacutel es muy bueno usando software CAD como SolidWorks y me propuso disentildear un chasis para el por-taacutetil Por desgracia la placa de impresioacuten 3D con un tamantildeo maacuteximo de 200 mm era demasiado pequentildea para imprimir un marco LCD de 133rdquo y un marco del teclado Despueacutes de varias reflexiones decidimos dividir los marcos de la LCD y del teclado en cuatro partes y unirlos con los clips de montaje im-presos en 3D y pegamento Todas las partes individuales eran inferiores a los 200 mm Si te fijas bien en las fotos del marco de la LCD de los clips y del teclado veraacutes la separacioacuten entre las piezas montadas El disentildeo CAD necesita alrededor de 2 semanas de trabajo para asegurarse de que todo encaja bien

Durante el disentildeo el principal problema que nos preo-cupaba era las bisagras del panel LCD que teniacutea que ser lo suficientemente fuerte para que me permitiera abrir y cerrar con facilidad el ordenador portaacutetil Esto nos permitiacutea crear una aacutengulo perfecto entre el marco del panel LCD y el marco del teclado Para que pudiera encajar correctamente el teclado

Portaacutetil RedTop visto desde arriba Versioacuten inicial de portaacutetil con un ordenador motorola Lapdock 100

El modelo 3D del marco de la LCD

ODROID MAGAZINE 15

en su marco lo desmontamos retirando las cubiertas superior e inferior Elegimos el color rojo para la fibra de impresioacuten 3D para que el ordenador fuese maacutes divertido y llamativo 30 horas maacutes tarde teniacuteamos impresas todas las partes del chasis Las pegamos y atornillamos el panel LCD y el teclado dentro de sus respectivos marcos El siguiente paso fue colocar todas las placas y moacutedulos en el interior del chasis con firmeza las in-sertamos en el plexiglaacutes

El plexiglaacutes fue cortado para que encajara en el espacio crea-do en la etapa de disentildeo CAD para cada marco De esta forma todo el mundo puede apreciar el engranaje del portaacutetil lo cual supone una gran ventaja a la hora de ensentildear informaacutetica El paso final fue cablear todo siguiendo el diagrama por bloques

Acabamos teniendo un ordenador portaacutetil potente y fiable iexclMis estudiantes de la escuela se sorprendieron cuando vieron este portaacutetil poco convencional por primera vez

BateriacuteaAhora disponiacuteamos de un nuevo ordenador portaacutetil pero

sin ninguacuten tipo de bateriacutea recargable de modo que maacutes o me-nos es inuacutetil En primer lugar necesitaacutebamos estimar la ca-pacidad de la bateriacutea necesaria Para tal fin hicimos algunas pruebas de medicioacuten del amperaje en diferentes condiciones de uso El maacuteximo amperaje se alcanza cuando el C2 se pone en marcha con un pico de 11A Durante el funcionamiento nor-mal se mantiene justo por debajo de 1A con un dongle USB WIFI un moacutedulo RTC un adaptador de ratoacuten inalaacutembrico y el moacutedulo Bluetooth conectados El consumo total de energiacutea del ordenador portaacutetil es de alrededor de unos 12W

Mi hijo rescatoacute una vieja bateriacutea de litio recargable de un ordenador portaacutetil de Lenovo (L412) y pudo extraerle las nueve ceacutelulas disponibles dentro del paquete de bateriacuteas La mayoriacutea de las veces este tipo de paquetes de bateriacuteas ya no funcionan no por la propia bateriacutea sino debido a un defectuoso controlador de bateriacuteas integrado Utilizamos 3 y las conectamos en serie Esto nos proporcionaba 3 x 37 V un total de 111 voltios cuando la bateriacutea estaacute casi descargada y maacutes de 12V cuando estaacute completa-mente cargada La placa controladora LCD funciona sin ninguacuten problema a 11V Cada ceacutelula tiene 2200 mAh de capacidad de modo que la autonomiacutea del portaacutetil se acerca a las 2 horas Esto era suficiente para alcanzar el objetivo que nos propusimos al inicio del proyecto

Para volver a cargar las 3 ceacutelulas utilizamos un banco de bate-riacuteas solar de 12V conectada a traveacutes de un moacutedulo de sobreali-mentacioacuten que estaacute reajustado a un liacutemite de corriente de 126 V y 1A Con nuestro modelo particular de bateriacuteas podemos ajustar tanto la tensioacuten de salida como la corriente Cuando es-

PORTATIL ODROID

Clips de LCD

marco del teclado

Chasis completamente montado

ODROID MAGAZINE 16

cribiacute este artiacuteculo la bateriacutea auacuten no estaba colocada dentro del RedTop pero la teniacuteamos fuera para realizar pruebas maacutes ex-haustivas Una vez que completemos las pruebas colocaremos las 3 celdas debajo del teclado en un espacio reservado para tal fin

MaterialesEsto es lo que utiliceacute para montar mi portaacutetil ODROID-C1

Panel LCD HDMI-VGA de 133rdquo con audio httprebaycomAYZ5JU

Teclado mecaacutenico Zalman httpwwwamazonfrdpB00LHSPCS4

Cable OTG USB httpwwwamazonfrdpB007MNZ8VY

Transformador 12V-5V 3A httpwwwamazonfrdpB00JGFEQLE

Moacutedulo Bluetooth HC05 maestroesclavo httpswwwamazonfrdpB013STJSES

Moacutedulo RTC PCF8563 httpwwwamazonfrdpB01DB8JECC

Mini altavoz httprebaycombwOCZv

Impresora 3D httpwwwdagomafrproduitimprimante-dis-

covery200

Filamentos PLA para impresora 3D httpwwwamazonfrdpB00UMV7ANM

Clavijas de corriente DC de 55mm httpwwwamazonfrdpB00O1Y1X70

Interruptor de alimentacioacuten httpwwwamazonfrdpB00HUHBS1Q

Pack de bateriacuteas de ordenador portaacutetil como esta httpwwwamazonfrdpB00TVOC55Y

Conversor de sobrealimentacioacuten (4V-12V) httprebaycomw3FgNH

Varios tornillos arandelas y cables05m de PlexiglassSuper glue

PORTATIL ODROID

La placa controladora de la LCD

JUEGOS ANDROID

PAC-MAn 256iquestun juEGO CLASICO iquestunA nuEvA PERSPECTIvA DEL GEnERO DEL CORREDOR In-TERMInAbLE iexclDESCubRELOpor Bruno Doiche

Suele decirse que los claacutesicos nunca mueren pero algunos pueden quedarse bastante

anticuados Cuando era un nintildeo el Pac-Ma era un juego cuyos graacuteficos y jugabilidad eran totalmente acepta-bles para los estaacutendares de la deacutecada de los 80 A pesar de que todaviacutea se puede disfrutar del original Pac-Man hoy diacutea estaraacutes de acuerdo conmigo en que se queda algo corto en cuanto a funcionalidad incluso si aceptas el reto de jugar al modo aacutercade lo suficiente como para encontrarte con el miacutetico error del nivel 256 que soacutelo los mejores juga-dores de Pac-Man son capaces de ver

Sin embargo en la partida 256 del Pac-Man el error es la principal caracteriacutestica te prosiguen como una ola implacable desde la parte inferior de la pantalla Te hace volver a pensar lo que realmente significa correr por tu supervivencia en un labe-rinto lleno de fantasmas cada uno con su propia personalidad Exige un control muy preciso y pensar muy raacutepido para lograr salir y mantenerte un paso por delante de tus enemigos fantas-mas Ahora no tienes que jugar a los 255 niveles de Pac-Man para llegar a uno de los niveles maacutes elitistas de la historia del juego Puedes instalarlo desde Play Store en

httpbitly2cLaD5q

Un gran juego tan adictivo como lo fue en sus primeros diacuteas arcade

ODROID MAGAZINE 17

book se puede compartir faacutecilmente permitiendo una faacutecil visualizacioacuten en liacutenea y en nuestro caso gestionar la creacioacuten y el enviacuteo de aplicaciones Spark al cluacutester Los notebooks de Jupyter son una forma muy comuacuten de usar Apache Spark ya que permite al usuario centrarse especiacuteficamente en el anaacutelisis de datos en lugar de preocuparse de las herramientas o de la infraestructura que hay detraacutes

Instalar Hadoop File SystemNuestra primera tarea es instalar Java en cada nodo del

cluacutester Instalaremos el uacuteltimo software Java 8 de Oracle EL cual requiere la aceptacioacuten de la licencia durante la instalacioacuten Debido a esto necesitas iniciar sesioacuten en cada nodo de forma independiente y ejecutar el instalador Una vez alliacute crearemos una nueva cuenta de usuario desde la que ejecutaremos todo

$ sudo add-apt-repository ppawebupd8teamjava

$ sudo apt-get update

$ sudo apt-get install oracle-java8-installer

$ sudo apt-get install rsync

$ sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hduser

$ sudo usermod -aG sudo hduser

Ahora necesitamos instalar Hadoop Teacutecnicamente po-driacuteas utilizar la distribucioacuten Hadoop disponibles en el sitio web de Apache pero no estaacute compilada para la CPU ARM v71 de nuestros XU4s Puesto que en su mayor parte es Java es genial ya que se ejecutaraacute sobre JVM que acabamos de instalar en cada nodo Sin embargo hay partes de Hadoop que fueron es-

En el anterior artiacuteculo que escribiacute para ODROID Maga-zine en httpbitly2bHFij7 analice el desarrollo de un cluacutester informaacutetico autoacutenomo con nodos ODROID

XU4 En este artiacuteculo explicaremos coacutemo hacer un buen uso de ese cluacutester instalando Apache Spark y el sistema de ficheros Hadoop asiacute como tambieacuten la forma de acceder a tu cluacutester a traveacutes de la aplicacioacuten web Jupyter

Hadoop File System (HDFS) es uno de los sistemas de ar-chivos distribuidos maacutes populares y maacutes utilizados que existen hoy en diacutea Un sistema de archivos distribuido (DFS) es una aplicacioacuten para cluacutester que agrupa todas las unidades de disco duro dentro de un cluacutester para que puedan ser tratadas como una uacutenica unidad de almacenamiento de cara a sus clientes ex-ternos Utilizar un DFS tiene dos ventajas muy importantes En primer lugar y lo maacutes evidente es que te permite guardar y trabajar con grandes conjuntos de datos que se almacenan en maacutes de un disco duro del cluacutester En segundo lugar un DFS bien disentildeado proporciona mayor resistencia de datos en el nodo o ante fallos de disco mediante la replicacioacuten de bloques de datos en varias unidades del cluacutester En nuestro cluacutester XU4 los discos duros son las tarjetas MicroSD que fueron instaladas y configurada en nuestra anterior guiacutea

Apache Spark es una moderna plataforma de anaacutelisis de Big Data utilizada ampliamente en la industria del anaacutelisis de los grandes voluacutemenes de datos Proporciona herramientas de alto nivel muy simple para manipular y analizar datos ya sea a traveacutes de SQL o mapreduce ademaacutes de usar lenguajes de pro-gramacioacuten comunes tales como Python Scala y Java La pecu-liaridad maacutes significativa de Apache Spark es el uso del fondo de memoria RAM del cluacutester para almacenar objetos de datos intermedios que aceleran significativamente el procesamiento de datos Aunque los 2 GB de RAM integrados en el XU4 po-driacutean parecer un poco austeros en comparacioacuten con las grandes cantidades de memoria en un nodo de un cluacutester industrial hay espacio suficiente para hacer algunas cosas interesantes con Apache Spark

Jupyter Notebook es una aplicacioacuten web que te permite coacute-modamente aprovecharte de diversos lenguajes y plataformas de caacutelculo con tu cluacutester a traveacutes de una interfaz web El note-

InSTALAR HADOOP y SPARK En un CLuSTER ODROID-Xu4por michael Kamprath

HADOOP FILE SYSTEM

ODROID MAGAZINE 18

-l root ldquomkdir -p opthadoop-272rdquo

$ sudo rsync -avxP opthadoop-272

rootslave1opt

$ sudo rsync -avxP opthadoop-272

rootslave2opt

$ sudo rsync -avxP opthadoop-272

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop opthadoop-272rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquoln -s opthadoop-272 usrlocalhadooprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquomkdir -p datahdfstmprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop datahdfsrdquo

El uacuteltimo paso en la instalacioacuten de Hadoop es formatear el nodo como un HDFS

$ usrlocalhadoopbinhdfs namenode -format

Instalar Apache SparkVamos a utilizar un meacutetodo similar al anterior para instalar

Apache Spark En primer lugar vamos a utilizar Python 3 para acceder a Spark y a algunas librerias clave de Python por lo que tendraacutes que iniciar sesioacuten en cada nodo y ejecutar

$ sudo apt-get install python3 python3-pip

$ sudo pip3 install numpy

$ sudo pip3 install urlparse

Despueacutes en el nodo maestro instala Apache Spark

$ cd opt

$ sudo wget httpapacheclazorgspark

spark-162spark-162-bin-hadoop26tgz

$ sudo tar xvzf spark-162-bin-hadoop26tgz

$ sudo chown -R hduserhadoop

spark-162-bin-hadoop26

$ sudo ln -s optspark-162-bin-hadoop26

usrlocalspark

Al igual que en nuestra instalacioacuten de Hadoop necesitas antildeadir algunos archivos de configuracioacuten al directorio usrlo-calchispasconf Puedes localizar los archivos de configuracioacuten necesarios en mi repositorio GitHub (httpbitly2b4GnDU)

Una vez que Spark haya sido configurado en el nodo ma-

critas en C para que se ejecutaran maacutes raacutepido Si una instalacioacuten Hadoop no tiene estas libreriacuteas compiladas en la plataforma en la que estaacute se utilizaraacuten automaacuteticamente las equivalentes en Java por lo que seguiraacute funcionando pero de un modo maacutes lento Para este proyecto he desarrollado una distribucioacuten de la uacuteltima versioacuten de Hadoop para el procesador ARM v71 va-mos a descargar e instalar mi distribucioacuten En el nodo maestro inicia sesioacuten con la cuenta ldquohduserrdquo recieacuten creada y ejecuta los siguientes comandos para instalar Hadoop y configurar los no-dos del cluacutester para utilizar SSH sin contrasentildea Ten en cuenta que tendraacutes que iniciar sesioacuten en cada nodo esclavo desde el nodo maestro para configurar completamente el inicio de se-sioacuten sin contrasentildea

$ cd

$ ssh-keygen -t rsa -P ldquordquo

$ cat $HOMEsshid_rsapub gtgt $HOMEsshauthorized_

keys

$ ssh hduserlocalhost

$ exit

$ ssh hdusermaster

$ exit

$ ssh-copy-id hduserslave1

$ ssh hduserslave1

$ exit

$ ssh-copy-id hduserslave2

$ ssh hduserslave2

$ exit

$ ssh-copy-id hduserslave3

$ ssh hduserslave3

$ exit

$ cd opt

$ sudo wget httpdiybigdatanetdownloads

hadoophadoop-272armhftargz

$ sudo tar xzf hadoop-272armhftargz

$ sudo chown -R hduserhadoop hadoop-272

$ cd usrlocal

$ sudo ln -s opthadoop-272 hadoop

$ cd usrlocalhadoop

Ahora tenemos que crear los archivos de configuracioacuten para Hadoop Por comodidad ya he creado estos archivos que se de-ben instalar en el directorio usrlocalhadoopetchadoop y los he colocado a mi repositorio GitHub en httpbitly2bBehj4

Estos archivos de configuracioacuten tienen una configuracioacuten de cluacutester similar a la descrita en mi anterior artiacuteculo Es po-sible que tengas que modificarlos si has desarrollado un cluacutester diferente Ahora que el software Hadoop estaacute configurado en el nodo maestro lo vamos a copiar en los nodos esclavos

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

HADOOP FILE SYSTEM

ODROID MAGAZINE 19

estro coacutepialo a los esclavos de tu cluacutester

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo -l root

ldquomkdir -p optspark-162-bin-hadoop26rdquo

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave1opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave2opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquochown -R hduserhadoop

optspark-162-bin-hadoop26rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquoln -s optspark-162-bin-hadoop26

usrlocalsparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquomkdir -p datasparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquochown hduserhadoop datasparkrdquo

Instalar Jupyter NotebookLa instalacioacuten Jupyter Notebook es relativamente simple en

comparacioacuten con lo que hemos hecho hasta ahora Ugravenicamente en el nodo maestro ejecuta los siguientes comandos

$ sudo mkdir datajupyter

$ sudo chown -R hduserhadoop datajupyter

$ mkdir ~notebooks

$ sudo pip3 install jupyter

Para hacer visualizaciones en un notebook necesitamos compilar e instalar matplotlib Tambieacuten es uacutetil tener instalado numpy para facilitar la informaacutetica cientiacutefica a traveacutes de Py-thon Ten en cuenta que esto va a llevar un tiempo

$ sudo apt-get build-dep matplotlib

$ sudo pip3 install matplotlib

$ sudo pip3 install numpy

Ejecutar Hadoop Spark y Jupyter

Para logar que todo se ejecute usa los siguientes comandos

$ usrlocalhadoopsbinstart-dfssh

$ usrlocalsparksbinstart-allsh

$ XDG_RUNTIME_DIR=rdquodatajupyterrdquo PYSPARK_DRIVER_

PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=rdquonotebook

--no-browser --port=7777 --notebook-dir=homehduser

notebooksrdquo usrlocalsparkbinpyspark --packages

comdatabricksspark-csv_210110 --master spark

master7077

Puedes optar por convertir esta secuencia de comandos en un script bash independiente o simplemente puede crear un alias para este uacuteltimo comando Te dejo elegir cualquiera de

estas opciones como ejercicio Una vez en funcionamiento in-troduce en el navegador del ordenador httpltdireccioacuten IP del cluacutestergt7777 deberiacutea ver la interfaz Jupyter

Vamos a ejecutar una tarea de recuento de palabras en

nuestro sistema big data de XU4 Crea un nuevo notebook Python 3 haciendo clic en el botoacuten New en la parte superior derecha de la paacutegina web Ahora veraacute un espacio vaciacuteo como el que se muestra en la Figura anterior

Abre una nueva sesioacuten SSH en el nodo principal y antildeade lo siguiente

$ wget httpnorvigcombigtxt

$ hdfs dfs -mkdir usermichael

HADOOP FILE SYSTEM

Paacutegina web principal de Jupyter

Bloc de notas de Jupyter

ODROID MAGAZINE 20

$ hdfs dfs -put bigtxt usermichaelbigtxt

$ hdfs dfs -ls usermichael

Vuelve al notebook recieacuten creado antildeade el siguiente coacutedigo Python en la primera celda

from operator import add

blog_data = sctextFile(lsquohdfsmaster9000user

michaelbigtxtrsquo)cache()

counts = blog_dataflatMap(lambda x xsplit(lsquo lsquo))

map(lambda x (x 1))reduceByKey(add)

A continuacioacuten pulsa Shift + Enter para iniciar el trata-miento de las celdas Una nueva celda apareceraacute en el notebook de Jupyter Teacutecnicamente todaviacutea no ha sucedido nada dentro de Spark excepto crear un plan de consulta para ejecutar el recuento de palabras frente al conjunto de datos del blog que ya hemos colocado en HDFS Spark no hace ninguacuten caacutelculo hasta que no haga falta materializar los resultados La forma maacutes comuacuten de hacerlo es mostrar una parte de los resultados En la siguiente celda del notebook introduzca el coacutedigo y pulse Shift-Enter

countstake(100)

Veraacutes un asterisco junto a la celda en la que hemos intro-ducido el coacutedigo anterior Este asterisco seguiraacute activo mien-tras Spark esteacute haciendo sus caacutelculos Si vuelves a la sesioacuten de terminal en la que lanzaste el software Jupyter veraacutes el regis-tro log de Spark realizando sus caacutelculos Por otra parte si es-

cribes en tu navegador web la direccioacuten httpltdireccioacuten IP del cluacutestergt4040 puedes analizar el estado interno de Spark uti-lizando su interfaz de aplicacioacuten Es probable que escuches a-rrancar el ventilador de la CPU del XU4 durante los caacutelculos

Cuando los caacutelculos finalicen los primeros 100 valores de

los resultados se mostraraacuten en el notebook de JupyterCambia el nombre del notebook haciendo clic en la cadena

ldquo Untitledrdquo junto al logo de Jupyter en la parte superior izqui-erda del notebook Puede seguir trabajando con los datos antildea-diendo maacutes celdas que contengan maacutes coacutedigo python Spark Hay muchos y excelentes recursos en la web para aprender maacutes sobre Apache Spark incluyendo httpsparkapacheorg

Para guardar y cerrar el notebook haz clic en el menuacute ldquoFilerdquo en la paacutegina y selecciona ldquoClose and Haltrdquo Para finalizar Jupy-ter pulsa Control-C dos veces en la ventana de terminal desde el cual se lanzoacute Una vez que el software Juypter se detenga puedes apagar Spark y HDFS con

$ usrlocalsparksbinstop-allsh

$ usrlocalhadoopsbinstop-dfssh

Lecturas recomendadasSi deseas aprender maacutes sobre los temas tratados en este artiacute-

culo puedes utilizar los siguientes recursos para obtener maacutes informacioacuten sobre el software asiacute como mis conocimientos so-bre Big Data

Mi blog httpdiybigdatanetApache Hadoop httphadoopapacheorgApache Spark httpsparkapacheorgJupyter Notebook httpjupyterorg

HADOOP FILE SYSTEM

Los caacutelculos del recuento de palabras se han completado

ODROID MAGAZINE 21

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 12: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

$ wget httpwwwwillhackforsushicomcode

cowpatty46cowpatty-46tgz

$ tar xvf cowpatty-46tgz

$ cd cowpatty-46

$ sudo apt-get install libpcap-dev libssl-dev

$ make

$ sudo make install

$ cd

$ cowpatty -d linksys2hash -r

linksys2-insidious-handshakepcap -s linksys2 -2

Puedes especificar el archivo hash que quieres revisar con la opcioacuten -d (selecciona el hash con el mismo nombre que el punto de acceso objetivo) La opcioacuten -r especifica el archivo de captura con el handshake de 4 vias -s especifica el SSID

(ya que no se puede extraer de la captura) y -2 significa no ser demasiado estricto a la hora de analizar el archivo de captura Con esta configuracioacuten fui capaz de conseguir la contrasentildea en menos de 3 segundos usando un ODROID-C1 con una tasa de 25000 PMKs (comparados con los 300 PMKs cuando calculamos los PMKs) Por lo tanto el proceso es 83 veces maacutes raacutepido a expensas de utilizar unos 7 GB de espacio en disco

para el ataque Depende de ti decidir si vale la pena aunque consumas maacutes espacio en disco

Ingeneriacutea Social El doble maleacutefico

que tu CPU se caliente bastante mientras se crea la base de da-tos Si el calor te supone un problema puedes utilizar una her-ramienta como cpuctrl (httpbitly2aon1dA) para limitar la frecuencia maacutexima de la CPU con el regulador adecuado como por ejemplo ldquoconservativerdquo

Para obtener la clave de red tienes que proporcionar el ar-chivo de captura y los resultados si existen deberiacutean aparecer raacutepidamente Aquiacute tienes un pcap de ejemplo como referencia

httpbitly2agcRug A continuacioacuten ejecuta este comando

$ pyrit -r nasa-supercalifragilistic-handshakepcap

attack_db

Como puedes ver incluso lo que parecer ser una contrasentildea larga y robusta puede llegar a descifrarse si aparece en alguacuten artiacuteculo de Internet

Ataques con tabla RainbowUna vez que tengas cargado el diccionario en Pyrit iquestQueacute es

lo que te impide descifrar cada handshake que capturas Pues bien el SSID actuacutea como los ldquogranos de salrdquo comprobando que la misma contrasentildea combinada con un SSID diferente genere un PMK diferente Tener una lista de contrasentildeas pre-calculadas se denomina tabla rainbow y te permite descifrar las contrasentildeas maacutes raacutepidamente a costa de conar con maacutes espacio en disco para almacenar estas listas

Existe un proyecto que crea tablas rainbow para WPA para los 1000 SSID maacutes comunes en httpbitly2azsBIh Si tu red ob-jetivo tiene un SSID que estaacute en la lista (httpbitly2adkjtd) potencialmente podriacuteas descifrar la contrasentildea mucho maacutes raacutepido que con otros meacutetodos Vamos a poner esto a prueba

Para este experimento prepareacute un punto de acceso llama-do linksys2 con una contrasentildea del diccionario de palabras (httpbitly2ayEXmI) Necesitas descargar el conjunto tarball que el sitio proporciona (cuanto maacutes grande sea maacutes posibilidades tendraacutes de encontrar la clave) Descompriacuteme-lo en un directorio y obtendraacutes 1000 archivos hash cada uno nombrado de acuerdo con el SSID del punto de acce-so Tambieacuten necesitaremos instalar Cowpatty (httpbitly2awaJ2A) para poder procesar las tablas

SEGURIDAD WPA

Un ataque de diccionario wPA con Pyrit

Ataque wPA con tabla rainbow

XKCD obligatorio httpsxkcdcom538

ODROID MAGAZINE 12

Cuando todo esteacute listo inicia WifiPhisher especificando la interfaz de monitor y la interfaz hostapd

$ sudo airmon-ng start wlan0

$ sudo wifiphisher -jI mon0 -aI wlan1

Si todo va bien WifiPhisher te mostraraacute una lista de pun-tos de Acceso a engantildear y configuraraacute las reglas de iptables y DHCP y te preguntaraacute por el tipo de paacutegina web falsa que quieres que muestre A continuacioacuten procederaacute a desconectar los clientes y hacer que se conecten al punto de acceso falso y les mostraraacute algo similar a la Figura 5 Seraacute entonces cuando veas la contrasentildea en el inteacuterprete de comandos Ten en cuenta que estamos hablando de algo especialmente retorcido puesto que ya no estaacutes engantildeando soacutelo a los ordenadores sino tambieacuten a la gente real

Mantener tu WiFi seguraCon esto concluimos nuestro anaacutelisis sobre la seguridad

inalaacutembrica Estas son algunas pautas que deberiacuteas tener en cuenta para mantener tu wifi segura

bull No utilices tecnologiacuteas de encriptacioacuten obsoletas (WEP)bull No confiacutees demasiado en ocultar la red o usar listas de ac-ceso mAC ya que son muy deacutebiles y muy faacuteciles de evitar bull Desactiva la tecnologiacutea WPS en redes en las que fiacutesica-mente sea posiblebull Utiliza contrasentildeas largas que no esteacuten diccionarios Si tienes que usar las palabras del diccionario para que te sea maacutes faacutecil recordarlas (despues de todo eres un ser huma-no) combiacutenalas de forma aleatoria Una opcioacuten es utilizar la teacutecnica horse-battery-staple de xkcd (httpsxkcdcom936) esta herramienta httpbitly1cubp1J puede hacerlo de forma automaacuteticabull Antildeadir caracteres a una contrasentildea aumenta su seguri-dad bastante maacutes que usar un signo de puntuacioacuten espe-cial en contrasentildeas maacutes cortasbull Si es posible considera la posibilidad de utilizar WPA2-Enterprise en tu red domeacutesticabull No utilices nombres comunes para la red SSIDbull Reducir la intensidad de la sentildeal no te ayudaraacute puesto que el atacante siempre puede conseguir una antena mejor

Como siempre puedes compartir tus propias experiencias hacer preguntas o compartir problemas en el hilo de soporte en httpbitly2azoM5N

Es posible que hayas agotado todo lo que tienes a tu alcance para romper un punto de acceso WiFi en particular y aun asiacute no consigues resultados Es probable que tenga que esperar unos 3 millones de antildeos para que el ataque de fuerza bruta alcance el 1 asiacute que iquestqueacute podemos hacer Pues bien simple-mente tienes que atacar el punto de seguridad maacutes deacutebil de la cadena iexclEl ser humano

Un proyecto que tiene por objetivo simplemente ldquopregun-tarrdquo por la contrasentildea es WifiPhisher (httpbitly1wPdPPQ) El programa configura un punto de acceso abierto maleacutefico que clona el SSID del objetivo A continuacioacuten desautentifica to-dos los clientes del objetivo y espera a que se vuelvan a conec-tar Por casualidad (o aseguraacutendose de que tienes una mejor sentildeal) los clientes se conectaraacuten automaacuteticamente en su lugar a tu punto de acceso abierto Cuando intenten acceder a los recursos de Internet seraacuten redireccionados a un portal que se presenta como su router y le solicitaraacute su contrasentildea WPA (para mejorar la seguridad por supuesto) Una vez que se obtiene la contrasentildea se desconecta el punto de acceso y el cliente se co-necta sin que se perciba la diferencia a su red original Ves ndash es faacutecil Para conseguir esto necesitaraacutes dos adaptadores inalaacutem-bricos - uno que sea compatible con la inyeccioacuten (para desco-nectar continuamente a los usuarios del AP objetivo) y otro para hacerse pasar por el falso AP Para esta prueba he utilizado dos adaptadores Wifi Modulo 4 de Hardkernel

$ git clone httpsgithubcomsophronwifiphishergit

$ sudo apt-get install tcpdump hostapd

$ cd wifiphisher

$ sudo python setuppy install

Si aparece alguacuten error indicando que no encuentra setuptools instaacutelalo y vuelve a ejecutar el comando install

$ wget httpsbootstrappypaioez_setuppy -O - |

sudo python

Ten en cuenta que para que esto funcione necesitaraacutes con-figurar hostapd para que trabaje con tu tarjeta inalaacutembrica Tienes maacutes detalles en httpbitly2aLTF6w and httpbitly2aLTlnX

SEGURIDAD WPA

Los usuarios desprevenidos escribiraacuten su contrase-ntildea wPA en tu entorno de suplantacioacuten de red

ODROID MAGAZINE 13

En los uacuteltimos antildeos el tema del big data y de la ciencia de los datos se ha convertido en una tendencia muy importante en un sinfiacuten de in-

dustrias Las empresas de alta tecnologiacutea de Silicon Valley ya no son los uacutenicos proveedores de temas como Hadoop la regresioacuten logiacutestica y el aprendizaje de maquinas Estar familiarizado con las tecnologiacuteas del big data se estaacute convirtiendo en un requisito cada vez maacutes necesario en los empleos relacionados con la tecnologiacutea en cualquier parte Por desgracia y siendo realista la experiencia praacutectica con las tecnologiacuteas de big data normalmente implica tener acceso a un costoso cluacutester de ordenadores para ejecutar tus consultas Sin embargo la reciente revolucioacuten de los orde-nadores de placa reducida ha hecho que la informaacutetica distri-buida sea accesible a nivel personal y en educacioacuten para realizar tareas como esta y muchas otras

Imparto clases sobre disentildeo y mantenimiento de sistemas digitales y redes en un instituto franceacutes Durante los uacuteltimos 4 antildeos he ido sustituyendo todos los ordenadores de sobremesa de mi aula por ordenadores SBC principalmente por razones de espacio ya que la escuela estaacute cerca de la ciudad de Pariacutes y el espacio es muy caro iexclEl uso de ordenadores SBC deja maacutes

espacio en la mesa de trabajo del estudianteEmpeceacute con una Raspberry Pi pero pronto cambieacute al

ODROID-C1 tan pronto como estuvo disponible ya que la Pi no era lo suficientemente raacutepida para el trabajo en labo-ratorios (laboratorios GNS3 diferentes anaacutelisis de protocolos bus y configuracioacuten de los equipos de red) o simplemente para navegar por Internet Para el proacuteximo antildeo escolar ya habreacute cambiado la mitad de la clase al ODROIDC2 con un total de 10 ODROID-C1s y 8 ODROID-C2s

A la hora de preparar los laboratorios para los estudiantes tuve que usar el mismo equipo que ellos con el fin de asegurar-me de que todo funcionara sin problemas cuando los estudi-antes trabajasen en sus propios entornos de laboratorios Esto requeriacutea utilizar un ODROID en lugar de un ordenador por-

taacutetil x86 para eliminar cualquier diferencia de comportamiento en-tre ambos Para ser maacutes eficiente a la hora de preparar los laborato-rios parte de ellos los configuraba en casa y no en la escuela He in-tentado buscar algunas soluciones para fabricar un ordenador portaacutetil usando un ODROID de modo que se convirtiese en mi portaacutetil ODROID de ida y vuelta desde la escuela a casa Recorro 5 km hasta la escuela en bicicleta por lo que la solucioacuten teniacutea que ser ligera y compacta para transportarla

PORTATILODROID-C1 un PROyECTO CASERO A MEDIDA COn nOMbRE En CLAvE ldquoREDTOPrdquopor fabien Thiriet

PORTATIL ODROID

Portaacutetil REDTOP y vista trasera del mismo

ODROID MAGAZINE 14

RequisitosAl principio del proyecto elaboreacute una lista de requisitos

para el ordenador portaacutetil

bull Alimentado con 12V a traveacutes de un sistema de bateriacuteas solares en casa y con una fuente de alimentacioacuten exter-na 230V-12V en la escuelabull Bateriacutea Li-ion para cuando me esteacute moviendo con una autonomiacutea de unas 2 horas Algunos entornos de labo-ratorios en la escuela requieren monitorizar los buses CAN integrados en los vehiacuteculos de modo que se hace necesario el uso de bateriacuteasbull Pantalla LCD de 10rdquo como miacutenimobull Teclado y pantalla LCD montados en forma de ordena-dor portaacutetilbull GPIOs y conectores ODROID faacutecilmente accesiblebull Bluetooth maestroesclavo disponible puesto que ten-go muchos proyectos que funcionan con placas Arduino remotasbull RTC integrado porque no siempre estoy conectado a Internet

Proceso de fabricacioacutenAl principio encontreacute un Motorola Lapdock 100 en eBay

y lo utiliceacute durante varios meses Tras solucionar los problemas HDMI entre el ODROID y el Lapdock ya que el Lapdock se apagaba despueacutes de 20 segundos si no se conectaba nada a su puerto USB todo funcionoacute correctamente Se trataba de una solucioacuten muy ligera pero no lo suficientemente coacutemoda para un uso diario ya que la pantalla LCD soacutelo teniacutea 10rdquo y el teclado era muy pequentildeo Tambieacuten echeacute un vistazo a PiTop pero el precio era muy elevado para lo que estaba dispuesto a gastar Lo que realmente necesitaba era simplemente un gran panel LCD y un buen teclado montados en conjunto

Decidiacute buscar en eBay una pantalla LCD maacutes grande y en-contreacute un modelo de 133rdquo muy econoacutemico por 85 euro con en-viacuteo e impuestos incluidos La pantalla tiene una buena resolu-cioacuten de 1900x600 y los colores se ven muy bien Sin embargo

PORTATIL ODROID

el panel LCD se vendiacutea sin marco de modo que necesita algo para solventar esta cuestioacuten

Al mismo tiempo mi hijo ha conseguido lo que ha sontildeado durante mucho tiempo por su 15 cumpleantildeos una impresora 3D personal de modo que ya no teniacutea que utilizar una que teniacutea en la escuela Eacutel es muy bueno usando software CAD como SolidWorks y me propuso disentildear un chasis para el por-taacutetil Por desgracia la placa de impresioacuten 3D con un tamantildeo maacuteximo de 200 mm era demasiado pequentildea para imprimir un marco LCD de 133rdquo y un marco del teclado Despueacutes de varias reflexiones decidimos dividir los marcos de la LCD y del teclado en cuatro partes y unirlos con los clips de montaje im-presos en 3D y pegamento Todas las partes individuales eran inferiores a los 200 mm Si te fijas bien en las fotos del marco de la LCD de los clips y del teclado veraacutes la separacioacuten entre las piezas montadas El disentildeo CAD necesita alrededor de 2 semanas de trabajo para asegurarse de que todo encaja bien

Durante el disentildeo el principal problema que nos preo-cupaba era las bisagras del panel LCD que teniacutea que ser lo suficientemente fuerte para que me permitiera abrir y cerrar con facilidad el ordenador portaacutetil Esto nos permitiacutea crear una aacutengulo perfecto entre el marco del panel LCD y el marco del teclado Para que pudiera encajar correctamente el teclado

Portaacutetil RedTop visto desde arriba Versioacuten inicial de portaacutetil con un ordenador motorola Lapdock 100

El modelo 3D del marco de la LCD

ODROID MAGAZINE 15

en su marco lo desmontamos retirando las cubiertas superior e inferior Elegimos el color rojo para la fibra de impresioacuten 3D para que el ordenador fuese maacutes divertido y llamativo 30 horas maacutes tarde teniacuteamos impresas todas las partes del chasis Las pegamos y atornillamos el panel LCD y el teclado dentro de sus respectivos marcos El siguiente paso fue colocar todas las placas y moacutedulos en el interior del chasis con firmeza las in-sertamos en el plexiglaacutes

El plexiglaacutes fue cortado para que encajara en el espacio crea-do en la etapa de disentildeo CAD para cada marco De esta forma todo el mundo puede apreciar el engranaje del portaacutetil lo cual supone una gran ventaja a la hora de ensentildear informaacutetica El paso final fue cablear todo siguiendo el diagrama por bloques

Acabamos teniendo un ordenador portaacutetil potente y fiable iexclMis estudiantes de la escuela se sorprendieron cuando vieron este portaacutetil poco convencional por primera vez

BateriacuteaAhora disponiacuteamos de un nuevo ordenador portaacutetil pero

sin ninguacuten tipo de bateriacutea recargable de modo que maacutes o me-nos es inuacutetil En primer lugar necesitaacutebamos estimar la ca-pacidad de la bateriacutea necesaria Para tal fin hicimos algunas pruebas de medicioacuten del amperaje en diferentes condiciones de uso El maacuteximo amperaje se alcanza cuando el C2 se pone en marcha con un pico de 11A Durante el funcionamiento nor-mal se mantiene justo por debajo de 1A con un dongle USB WIFI un moacutedulo RTC un adaptador de ratoacuten inalaacutembrico y el moacutedulo Bluetooth conectados El consumo total de energiacutea del ordenador portaacutetil es de alrededor de unos 12W

Mi hijo rescatoacute una vieja bateriacutea de litio recargable de un ordenador portaacutetil de Lenovo (L412) y pudo extraerle las nueve ceacutelulas disponibles dentro del paquete de bateriacuteas La mayoriacutea de las veces este tipo de paquetes de bateriacuteas ya no funcionan no por la propia bateriacutea sino debido a un defectuoso controlador de bateriacuteas integrado Utilizamos 3 y las conectamos en serie Esto nos proporcionaba 3 x 37 V un total de 111 voltios cuando la bateriacutea estaacute casi descargada y maacutes de 12V cuando estaacute completa-mente cargada La placa controladora LCD funciona sin ninguacuten problema a 11V Cada ceacutelula tiene 2200 mAh de capacidad de modo que la autonomiacutea del portaacutetil se acerca a las 2 horas Esto era suficiente para alcanzar el objetivo que nos propusimos al inicio del proyecto

Para volver a cargar las 3 ceacutelulas utilizamos un banco de bate-riacuteas solar de 12V conectada a traveacutes de un moacutedulo de sobreali-mentacioacuten que estaacute reajustado a un liacutemite de corriente de 126 V y 1A Con nuestro modelo particular de bateriacuteas podemos ajustar tanto la tensioacuten de salida como la corriente Cuando es-

PORTATIL ODROID

Clips de LCD

marco del teclado

Chasis completamente montado

ODROID MAGAZINE 16

cribiacute este artiacuteculo la bateriacutea auacuten no estaba colocada dentro del RedTop pero la teniacuteamos fuera para realizar pruebas maacutes ex-haustivas Una vez que completemos las pruebas colocaremos las 3 celdas debajo del teclado en un espacio reservado para tal fin

MaterialesEsto es lo que utiliceacute para montar mi portaacutetil ODROID-C1

Panel LCD HDMI-VGA de 133rdquo con audio httprebaycomAYZ5JU

Teclado mecaacutenico Zalman httpwwwamazonfrdpB00LHSPCS4

Cable OTG USB httpwwwamazonfrdpB007MNZ8VY

Transformador 12V-5V 3A httpwwwamazonfrdpB00JGFEQLE

Moacutedulo Bluetooth HC05 maestroesclavo httpswwwamazonfrdpB013STJSES

Moacutedulo RTC PCF8563 httpwwwamazonfrdpB01DB8JECC

Mini altavoz httprebaycombwOCZv

Impresora 3D httpwwwdagomafrproduitimprimante-dis-

covery200

Filamentos PLA para impresora 3D httpwwwamazonfrdpB00UMV7ANM

Clavijas de corriente DC de 55mm httpwwwamazonfrdpB00O1Y1X70

Interruptor de alimentacioacuten httpwwwamazonfrdpB00HUHBS1Q

Pack de bateriacuteas de ordenador portaacutetil como esta httpwwwamazonfrdpB00TVOC55Y

Conversor de sobrealimentacioacuten (4V-12V) httprebaycomw3FgNH

Varios tornillos arandelas y cables05m de PlexiglassSuper glue

PORTATIL ODROID

La placa controladora de la LCD

JUEGOS ANDROID

PAC-MAn 256iquestun juEGO CLASICO iquestunA nuEvA PERSPECTIvA DEL GEnERO DEL CORREDOR In-TERMInAbLE iexclDESCubRELOpor Bruno Doiche

Suele decirse que los claacutesicos nunca mueren pero algunos pueden quedarse bastante

anticuados Cuando era un nintildeo el Pac-Ma era un juego cuyos graacuteficos y jugabilidad eran totalmente acepta-bles para los estaacutendares de la deacutecada de los 80 A pesar de que todaviacutea se puede disfrutar del original Pac-Man hoy diacutea estaraacutes de acuerdo conmigo en que se queda algo corto en cuanto a funcionalidad incluso si aceptas el reto de jugar al modo aacutercade lo suficiente como para encontrarte con el miacutetico error del nivel 256 que soacutelo los mejores juga-dores de Pac-Man son capaces de ver

Sin embargo en la partida 256 del Pac-Man el error es la principal caracteriacutestica te prosiguen como una ola implacable desde la parte inferior de la pantalla Te hace volver a pensar lo que realmente significa correr por tu supervivencia en un labe-rinto lleno de fantasmas cada uno con su propia personalidad Exige un control muy preciso y pensar muy raacutepido para lograr salir y mantenerte un paso por delante de tus enemigos fantas-mas Ahora no tienes que jugar a los 255 niveles de Pac-Man para llegar a uno de los niveles maacutes elitistas de la historia del juego Puedes instalarlo desde Play Store en

httpbitly2cLaD5q

Un gran juego tan adictivo como lo fue en sus primeros diacuteas arcade

ODROID MAGAZINE 17

book se puede compartir faacutecilmente permitiendo una faacutecil visualizacioacuten en liacutenea y en nuestro caso gestionar la creacioacuten y el enviacuteo de aplicaciones Spark al cluacutester Los notebooks de Jupyter son una forma muy comuacuten de usar Apache Spark ya que permite al usuario centrarse especiacuteficamente en el anaacutelisis de datos en lugar de preocuparse de las herramientas o de la infraestructura que hay detraacutes

Instalar Hadoop File SystemNuestra primera tarea es instalar Java en cada nodo del

cluacutester Instalaremos el uacuteltimo software Java 8 de Oracle EL cual requiere la aceptacioacuten de la licencia durante la instalacioacuten Debido a esto necesitas iniciar sesioacuten en cada nodo de forma independiente y ejecutar el instalador Una vez alliacute crearemos una nueva cuenta de usuario desde la que ejecutaremos todo

$ sudo add-apt-repository ppawebupd8teamjava

$ sudo apt-get update

$ sudo apt-get install oracle-java8-installer

$ sudo apt-get install rsync

$ sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hduser

$ sudo usermod -aG sudo hduser

Ahora necesitamos instalar Hadoop Teacutecnicamente po-driacuteas utilizar la distribucioacuten Hadoop disponibles en el sitio web de Apache pero no estaacute compilada para la CPU ARM v71 de nuestros XU4s Puesto que en su mayor parte es Java es genial ya que se ejecutaraacute sobre JVM que acabamos de instalar en cada nodo Sin embargo hay partes de Hadoop que fueron es-

En el anterior artiacuteculo que escribiacute para ODROID Maga-zine en httpbitly2bHFij7 analice el desarrollo de un cluacutester informaacutetico autoacutenomo con nodos ODROID

XU4 En este artiacuteculo explicaremos coacutemo hacer un buen uso de ese cluacutester instalando Apache Spark y el sistema de ficheros Hadoop asiacute como tambieacuten la forma de acceder a tu cluacutester a traveacutes de la aplicacioacuten web Jupyter

Hadoop File System (HDFS) es uno de los sistemas de ar-chivos distribuidos maacutes populares y maacutes utilizados que existen hoy en diacutea Un sistema de archivos distribuido (DFS) es una aplicacioacuten para cluacutester que agrupa todas las unidades de disco duro dentro de un cluacutester para que puedan ser tratadas como una uacutenica unidad de almacenamiento de cara a sus clientes ex-ternos Utilizar un DFS tiene dos ventajas muy importantes En primer lugar y lo maacutes evidente es que te permite guardar y trabajar con grandes conjuntos de datos que se almacenan en maacutes de un disco duro del cluacutester En segundo lugar un DFS bien disentildeado proporciona mayor resistencia de datos en el nodo o ante fallos de disco mediante la replicacioacuten de bloques de datos en varias unidades del cluacutester En nuestro cluacutester XU4 los discos duros son las tarjetas MicroSD que fueron instaladas y configurada en nuestra anterior guiacutea

Apache Spark es una moderna plataforma de anaacutelisis de Big Data utilizada ampliamente en la industria del anaacutelisis de los grandes voluacutemenes de datos Proporciona herramientas de alto nivel muy simple para manipular y analizar datos ya sea a traveacutes de SQL o mapreduce ademaacutes de usar lenguajes de pro-gramacioacuten comunes tales como Python Scala y Java La pecu-liaridad maacutes significativa de Apache Spark es el uso del fondo de memoria RAM del cluacutester para almacenar objetos de datos intermedios que aceleran significativamente el procesamiento de datos Aunque los 2 GB de RAM integrados en el XU4 po-driacutean parecer un poco austeros en comparacioacuten con las grandes cantidades de memoria en un nodo de un cluacutester industrial hay espacio suficiente para hacer algunas cosas interesantes con Apache Spark

Jupyter Notebook es una aplicacioacuten web que te permite coacute-modamente aprovecharte de diversos lenguajes y plataformas de caacutelculo con tu cluacutester a traveacutes de una interfaz web El note-

InSTALAR HADOOP y SPARK En un CLuSTER ODROID-Xu4por michael Kamprath

HADOOP FILE SYSTEM

ODROID MAGAZINE 18

-l root ldquomkdir -p opthadoop-272rdquo

$ sudo rsync -avxP opthadoop-272

rootslave1opt

$ sudo rsync -avxP opthadoop-272

rootslave2opt

$ sudo rsync -avxP opthadoop-272

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop opthadoop-272rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquoln -s opthadoop-272 usrlocalhadooprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquomkdir -p datahdfstmprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop datahdfsrdquo

El uacuteltimo paso en la instalacioacuten de Hadoop es formatear el nodo como un HDFS

$ usrlocalhadoopbinhdfs namenode -format

Instalar Apache SparkVamos a utilizar un meacutetodo similar al anterior para instalar

Apache Spark En primer lugar vamos a utilizar Python 3 para acceder a Spark y a algunas librerias clave de Python por lo que tendraacutes que iniciar sesioacuten en cada nodo y ejecutar

$ sudo apt-get install python3 python3-pip

$ sudo pip3 install numpy

$ sudo pip3 install urlparse

Despueacutes en el nodo maestro instala Apache Spark

$ cd opt

$ sudo wget httpapacheclazorgspark

spark-162spark-162-bin-hadoop26tgz

$ sudo tar xvzf spark-162-bin-hadoop26tgz

$ sudo chown -R hduserhadoop

spark-162-bin-hadoop26

$ sudo ln -s optspark-162-bin-hadoop26

usrlocalspark

Al igual que en nuestra instalacioacuten de Hadoop necesitas antildeadir algunos archivos de configuracioacuten al directorio usrlo-calchispasconf Puedes localizar los archivos de configuracioacuten necesarios en mi repositorio GitHub (httpbitly2b4GnDU)

Una vez que Spark haya sido configurado en el nodo ma-

critas en C para que se ejecutaran maacutes raacutepido Si una instalacioacuten Hadoop no tiene estas libreriacuteas compiladas en la plataforma en la que estaacute se utilizaraacuten automaacuteticamente las equivalentes en Java por lo que seguiraacute funcionando pero de un modo maacutes lento Para este proyecto he desarrollado una distribucioacuten de la uacuteltima versioacuten de Hadoop para el procesador ARM v71 va-mos a descargar e instalar mi distribucioacuten En el nodo maestro inicia sesioacuten con la cuenta ldquohduserrdquo recieacuten creada y ejecuta los siguientes comandos para instalar Hadoop y configurar los no-dos del cluacutester para utilizar SSH sin contrasentildea Ten en cuenta que tendraacutes que iniciar sesioacuten en cada nodo esclavo desde el nodo maestro para configurar completamente el inicio de se-sioacuten sin contrasentildea

$ cd

$ ssh-keygen -t rsa -P ldquordquo

$ cat $HOMEsshid_rsapub gtgt $HOMEsshauthorized_

keys

$ ssh hduserlocalhost

$ exit

$ ssh hdusermaster

$ exit

$ ssh-copy-id hduserslave1

$ ssh hduserslave1

$ exit

$ ssh-copy-id hduserslave2

$ ssh hduserslave2

$ exit

$ ssh-copy-id hduserslave3

$ ssh hduserslave3

$ exit

$ cd opt

$ sudo wget httpdiybigdatanetdownloads

hadoophadoop-272armhftargz

$ sudo tar xzf hadoop-272armhftargz

$ sudo chown -R hduserhadoop hadoop-272

$ cd usrlocal

$ sudo ln -s opthadoop-272 hadoop

$ cd usrlocalhadoop

Ahora tenemos que crear los archivos de configuracioacuten para Hadoop Por comodidad ya he creado estos archivos que se de-ben instalar en el directorio usrlocalhadoopetchadoop y los he colocado a mi repositorio GitHub en httpbitly2bBehj4

Estos archivos de configuracioacuten tienen una configuracioacuten de cluacutester similar a la descrita en mi anterior artiacuteculo Es po-sible que tengas que modificarlos si has desarrollado un cluacutester diferente Ahora que el software Hadoop estaacute configurado en el nodo maestro lo vamos a copiar en los nodos esclavos

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

HADOOP FILE SYSTEM

ODROID MAGAZINE 19

estro coacutepialo a los esclavos de tu cluacutester

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo -l root

ldquomkdir -p optspark-162-bin-hadoop26rdquo

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave1opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave2opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquochown -R hduserhadoop

optspark-162-bin-hadoop26rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquoln -s optspark-162-bin-hadoop26

usrlocalsparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquomkdir -p datasparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquochown hduserhadoop datasparkrdquo

Instalar Jupyter NotebookLa instalacioacuten Jupyter Notebook es relativamente simple en

comparacioacuten con lo que hemos hecho hasta ahora Ugravenicamente en el nodo maestro ejecuta los siguientes comandos

$ sudo mkdir datajupyter

$ sudo chown -R hduserhadoop datajupyter

$ mkdir ~notebooks

$ sudo pip3 install jupyter

Para hacer visualizaciones en un notebook necesitamos compilar e instalar matplotlib Tambieacuten es uacutetil tener instalado numpy para facilitar la informaacutetica cientiacutefica a traveacutes de Py-thon Ten en cuenta que esto va a llevar un tiempo

$ sudo apt-get build-dep matplotlib

$ sudo pip3 install matplotlib

$ sudo pip3 install numpy

Ejecutar Hadoop Spark y Jupyter

Para logar que todo se ejecute usa los siguientes comandos

$ usrlocalhadoopsbinstart-dfssh

$ usrlocalsparksbinstart-allsh

$ XDG_RUNTIME_DIR=rdquodatajupyterrdquo PYSPARK_DRIVER_

PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=rdquonotebook

--no-browser --port=7777 --notebook-dir=homehduser

notebooksrdquo usrlocalsparkbinpyspark --packages

comdatabricksspark-csv_210110 --master spark

master7077

Puedes optar por convertir esta secuencia de comandos en un script bash independiente o simplemente puede crear un alias para este uacuteltimo comando Te dejo elegir cualquiera de

estas opciones como ejercicio Una vez en funcionamiento in-troduce en el navegador del ordenador httpltdireccioacuten IP del cluacutestergt7777 deberiacutea ver la interfaz Jupyter

Vamos a ejecutar una tarea de recuento de palabras en

nuestro sistema big data de XU4 Crea un nuevo notebook Python 3 haciendo clic en el botoacuten New en la parte superior derecha de la paacutegina web Ahora veraacute un espacio vaciacuteo como el que se muestra en la Figura anterior

Abre una nueva sesioacuten SSH en el nodo principal y antildeade lo siguiente

$ wget httpnorvigcombigtxt

$ hdfs dfs -mkdir usermichael

HADOOP FILE SYSTEM

Paacutegina web principal de Jupyter

Bloc de notas de Jupyter

ODROID MAGAZINE 20

$ hdfs dfs -put bigtxt usermichaelbigtxt

$ hdfs dfs -ls usermichael

Vuelve al notebook recieacuten creado antildeade el siguiente coacutedigo Python en la primera celda

from operator import add

blog_data = sctextFile(lsquohdfsmaster9000user

michaelbigtxtrsquo)cache()

counts = blog_dataflatMap(lambda x xsplit(lsquo lsquo))

map(lambda x (x 1))reduceByKey(add)

A continuacioacuten pulsa Shift + Enter para iniciar el trata-miento de las celdas Una nueva celda apareceraacute en el notebook de Jupyter Teacutecnicamente todaviacutea no ha sucedido nada dentro de Spark excepto crear un plan de consulta para ejecutar el recuento de palabras frente al conjunto de datos del blog que ya hemos colocado en HDFS Spark no hace ninguacuten caacutelculo hasta que no haga falta materializar los resultados La forma maacutes comuacuten de hacerlo es mostrar una parte de los resultados En la siguiente celda del notebook introduzca el coacutedigo y pulse Shift-Enter

countstake(100)

Veraacutes un asterisco junto a la celda en la que hemos intro-ducido el coacutedigo anterior Este asterisco seguiraacute activo mien-tras Spark esteacute haciendo sus caacutelculos Si vuelves a la sesioacuten de terminal en la que lanzaste el software Jupyter veraacutes el regis-tro log de Spark realizando sus caacutelculos Por otra parte si es-

cribes en tu navegador web la direccioacuten httpltdireccioacuten IP del cluacutestergt4040 puedes analizar el estado interno de Spark uti-lizando su interfaz de aplicacioacuten Es probable que escuches a-rrancar el ventilador de la CPU del XU4 durante los caacutelculos

Cuando los caacutelculos finalicen los primeros 100 valores de

los resultados se mostraraacuten en el notebook de JupyterCambia el nombre del notebook haciendo clic en la cadena

ldquo Untitledrdquo junto al logo de Jupyter en la parte superior izqui-erda del notebook Puede seguir trabajando con los datos antildea-diendo maacutes celdas que contengan maacutes coacutedigo python Spark Hay muchos y excelentes recursos en la web para aprender maacutes sobre Apache Spark incluyendo httpsparkapacheorg

Para guardar y cerrar el notebook haz clic en el menuacute ldquoFilerdquo en la paacutegina y selecciona ldquoClose and Haltrdquo Para finalizar Jupy-ter pulsa Control-C dos veces en la ventana de terminal desde el cual se lanzoacute Una vez que el software Juypter se detenga puedes apagar Spark y HDFS con

$ usrlocalsparksbinstop-allsh

$ usrlocalhadoopsbinstop-dfssh

Lecturas recomendadasSi deseas aprender maacutes sobre los temas tratados en este artiacute-

culo puedes utilizar los siguientes recursos para obtener maacutes informacioacuten sobre el software asiacute como mis conocimientos so-bre Big Data

Mi blog httpdiybigdatanetApache Hadoop httphadoopapacheorgApache Spark httpsparkapacheorgJupyter Notebook httpjupyterorg

HADOOP FILE SYSTEM

Los caacutelculos del recuento de palabras se han completado

ODROID MAGAZINE 21

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 13: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

Cuando todo esteacute listo inicia WifiPhisher especificando la interfaz de monitor y la interfaz hostapd

$ sudo airmon-ng start wlan0

$ sudo wifiphisher -jI mon0 -aI wlan1

Si todo va bien WifiPhisher te mostraraacute una lista de pun-tos de Acceso a engantildear y configuraraacute las reglas de iptables y DHCP y te preguntaraacute por el tipo de paacutegina web falsa que quieres que muestre A continuacioacuten procederaacute a desconectar los clientes y hacer que se conecten al punto de acceso falso y les mostraraacute algo similar a la Figura 5 Seraacute entonces cuando veas la contrasentildea en el inteacuterprete de comandos Ten en cuenta que estamos hablando de algo especialmente retorcido puesto que ya no estaacutes engantildeando soacutelo a los ordenadores sino tambieacuten a la gente real

Mantener tu WiFi seguraCon esto concluimos nuestro anaacutelisis sobre la seguridad

inalaacutembrica Estas son algunas pautas que deberiacuteas tener en cuenta para mantener tu wifi segura

bull No utilices tecnologiacuteas de encriptacioacuten obsoletas (WEP)bull No confiacutees demasiado en ocultar la red o usar listas de ac-ceso mAC ya que son muy deacutebiles y muy faacuteciles de evitar bull Desactiva la tecnologiacutea WPS en redes en las que fiacutesica-mente sea posiblebull Utiliza contrasentildeas largas que no esteacuten diccionarios Si tienes que usar las palabras del diccionario para que te sea maacutes faacutecil recordarlas (despues de todo eres un ser huma-no) combiacutenalas de forma aleatoria Una opcioacuten es utilizar la teacutecnica horse-battery-staple de xkcd (httpsxkcdcom936) esta herramienta httpbitly1cubp1J puede hacerlo de forma automaacuteticabull Antildeadir caracteres a una contrasentildea aumenta su seguri-dad bastante maacutes que usar un signo de puntuacioacuten espe-cial en contrasentildeas maacutes cortasbull Si es posible considera la posibilidad de utilizar WPA2-Enterprise en tu red domeacutesticabull No utilices nombres comunes para la red SSIDbull Reducir la intensidad de la sentildeal no te ayudaraacute puesto que el atacante siempre puede conseguir una antena mejor

Como siempre puedes compartir tus propias experiencias hacer preguntas o compartir problemas en el hilo de soporte en httpbitly2azoM5N

Es posible que hayas agotado todo lo que tienes a tu alcance para romper un punto de acceso WiFi en particular y aun asiacute no consigues resultados Es probable que tenga que esperar unos 3 millones de antildeos para que el ataque de fuerza bruta alcance el 1 asiacute que iquestqueacute podemos hacer Pues bien simple-mente tienes que atacar el punto de seguridad maacutes deacutebil de la cadena iexclEl ser humano

Un proyecto que tiene por objetivo simplemente ldquopregun-tarrdquo por la contrasentildea es WifiPhisher (httpbitly1wPdPPQ) El programa configura un punto de acceso abierto maleacutefico que clona el SSID del objetivo A continuacioacuten desautentifica to-dos los clientes del objetivo y espera a que se vuelvan a conec-tar Por casualidad (o aseguraacutendose de que tienes una mejor sentildeal) los clientes se conectaraacuten automaacuteticamente en su lugar a tu punto de acceso abierto Cuando intenten acceder a los recursos de Internet seraacuten redireccionados a un portal que se presenta como su router y le solicitaraacute su contrasentildea WPA (para mejorar la seguridad por supuesto) Una vez que se obtiene la contrasentildea se desconecta el punto de acceso y el cliente se co-necta sin que se perciba la diferencia a su red original Ves ndash es faacutecil Para conseguir esto necesitaraacutes dos adaptadores inalaacutem-bricos - uno que sea compatible con la inyeccioacuten (para desco-nectar continuamente a los usuarios del AP objetivo) y otro para hacerse pasar por el falso AP Para esta prueba he utilizado dos adaptadores Wifi Modulo 4 de Hardkernel

$ git clone httpsgithubcomsophronwifiphishergit

$ sudo apt-get install tcpdump hostapd

$ cd wifiphisher

$ sudo python setuppy install

Si aparece alguacuten error indicando que no encuentra setuptools instaacutelalo y vuelve a ejecutar el comando install

$ wget httpsbootstrappypaioez_setuppy -O - |

sudo python

Ten en cuenta que para que esto funcione necesitaraacutes con-figurar hostapd para que trabaje con tu tarjeta inalaacutembrica Tienes maacutes detalles en httpbitly2aLTF6w and httpbitly2aLTlnX

SEGURIDAD WPA

Los usuarios desprevenidos escribiraacuten su contrase-ntildea wPA en tu entorno de suplantacioacuten de red

ODROID MAGAZINE 13

En los uacuteltimos antildeos el tema del big data y de la ciencia de los datos se ha convertido en una tendencia muy importante en un sinfiacuten de in-

dustrias Las empresas de alta tecnologiacutea de Silicon Valley ya no son los uacutenicos proveedores de temas como Hadoop la regresioacuten logiacutestica y el aprendizaje de maquinas Estar familiarizado con las tecnologiacuteas del big data se estaacute convirtiendo en un requisito cada vez maacutes necesario en los empleos relacionados con la tecnologiacutea en cualquier parte Por desgracia y siendo realista la experiencia praacutectica con las tecnologiacuteas de big data normalmente implica tener acceso a un costoso cluacutester de ordenadores para ejecutar tus consultas Sin embargo la reciente revolucioacuten de los orde-nadores de placa reducida ha hecho que la informaacutetica distri-buida sea accesible a nivel personal y en educacioacuten para realizar tareas como esta y muchas otras

Imparto clases sobre disentildeo y mantenimiento de sistemas digitales y redes en un instituto franceacutes Durante los uacuteltimos 4 antildeos he ido sustituyendo todos los ordenadores de sobremesa de mi aula por ordenadores SBC principalmente por razones de espacio ya que la escuela estaacute cerca de la ciudad de Pariacutes y el espacio es muy caro iexclEl uso de ordenadores SBC deja maacutes

espacio en la mesa de trabajo del estudianteEmpeceacute con una Raspberry Pi pero pronto cambieacute al

ODROID-C1 tan pronto como estuvo disponible ya que la Pi no era lo suficientemente raacutepida para el trabajo en labo-ratorios (laboratorios GNS3 diferentes anaacutelisis de protocolos bus y configuracioacuten de los equipos de red) o simplemente para navegar por Internet Para el proacuteximo antildeo escolar ya habreacute cambiado la mitad de la clase al ODROIDC2 con un total de 10 ODROID-C1s y 8 ODROID-C2s

A la hora de preparar los laboratorios para los estudiantes tuve que usar el mismo equipo que ellos con el fin de asegurar-me de que todo funcionara sin problemas cuando los estudi-antes trabajasen en sus propios entornos de laboratorios Esto requeriacutea utilizar un ODROID en lugar de un ordenador por-

taacutetil x86 para eliminar cualquier diferencia de comportamiento en-tre ambos Para ser maacutes eficiente a la hora de preparar los laborato-rios parte de ellos los configuraba en casa y no en la escuela He in-tentado buscar algunas soluciones para fabricar un ordenador portaacutetil usando un ODROID de modo que se convirtiese en mi portaacutetil ODROID de ida y vuelta desde la escuela a casa Recorro 5 km hasta la escuela en bicicleta por lo que la solucioacuten teniacutea que ser ligera y compacta para transportarla

PORTATILODROID-C1 un PROyECTO CASERO A MEDIDA COn nOMbRE En CLAvE ldquoREDTOPrdquopor fabien Thiriet

PORTATIL ODROID

Portaacutetil REDTOP y vista trasera del mismo

ODROID MAGAZINE 14

RequisitosAl principio del proyecto elaboreacute una lista de requisitos

para el ordenador portaacutetil

bull Alimentado con 12V a traveacutes de un sistema de bateriacuteas solares en casa y con una fuente de alimentacioacuten exter-na 230V-12V en la escuelabull Bateriacutea Li-ion para cuando me esteacute moviendo con una autonomiacutea de unas 2 horas Algunos entornos de labo-ratorios en la escuela requieren monitorizar los buses CAN integrados en los vehiacuteculos de modo que se hace necesario el uso de bateriacuteasbull Pantalla LCD de 10rdquo como miacutenimobull Teclado y pantalla LCD montados en forma de ordena-dor portaacutetilbull GPIOs y conectores ODROID faacutecilmente accesiblebull Bluetooth maestroesclavo disponible puesto que ten-go muchos proyectos que funcionan con placas Arduino remotasbull RTC integrado porque no siempre estoy conectado a Internet

Proceso de fabricacioacutenAl principio encontreacute un Motorola Lapdock 100 en eBay

y lo utiliceacute durante varios meses Tras solucionar los problemas HDMI entre el ODROID y el Lapdock ya que el Lapdock se apagaba despueacutes de 20 segundos si no se conectaba nada a su puerto USB todo funcionoacute correctamente Se trataba de una solucioacuten muy ligera pero no lo suficientemente coacutemoda para un uso diario ya que la pantalla LCD soacutelo teniacutea 10rdquo y el teclado era muy pequentildeo Tambieacuten echeacute un vistazo a PiTop pero el precio era muy elevado para lo que estaba dispuesto a gastar Lo que realmente necesitaba era simplemente un gran panel LCD y un buen teclado montados en conjunto

Decidiacute buscar en eBay una pantalla LCD maacutes grande y en-contreacute un modelo de 133rdquo muy econoacutemico por 85 euro con en-viacuteo e impuestos incluidos La pantalla tiene una buena resolu-cioacuten de 1900x600 y los colores se ven muy bien Sin embargo

PORTATIL ODROID

el panel LCD se vendiacutea sin marco de modo que necesita algo para solventar esta cuestioacuten

Al mismo tiempo mi hijo ha conseguido lo que ha sontildeado durante mucho tiempo por su 15 cumpleantildeos una impresora 3D personal de modo que ya no teniacutea que utilizar una que teniacutea en la escuela Eacutel es muy bueno usando software CAD como SolidWorks y me propuso disentildear un chasis para el por-taacutetil Por desgracia la placa de impresioacuten 3D con un tamantildeo maacuteximo de 200 mm era demasiado pequentildea para imprimir un marco LCD de 133rdquo y un marco del teclado Despueacutes de varias reflexiones decidimos dividir los marcos de la LCD y del teclado en cuatro partes y unirlos con los clips de montaje im-presos en 3D y pegamento Todas las partes individuales eran inferiores a los 200 mm Si te fijas bien en las fotos del marco de la LCD de los clips y del teclado veraacutes la separacioacuten entre las piezas montadas El disentildeo CAD necesita alrededor de 2 semanas de trabajo para asegurarse de que todo encaja bien

Durante el disentildeo el principal problema que nos preo-cupaba era las bisagras del panel LCD que teniacutea que ser lo suficientemente fuerte para que me permitiera abrir y cerrar con facilidad el ordenador portaacutetil Esto nos permitiacutea crear una aacutengulo perfecto entre el marco del panel LCD y el marco del teclado Para que pudiera encajar correctamente el teclado

Portaacutetil RedTop visto desde arriba Versioacuten inicial de portaacutetil con un ordenador motorola Lapdock 100

El modelo 3D del marco de la LCD

ODROID MAGAZINE 15

en su marco lo desmontamos retirando las cubiertas superior e inferior Elegimos el color rojo para la fibra de impresioacuten 3D para que el ordenador fuese maacutes divertido y llamativo 30 horas maacutes tarde teniacuteamos impresas todas las partes del chasis Las pegamos y atornillamos el panel LCD y el teclado dentro de sus respectivos marcos El siguiente paso fue colocar todas las placas y moacutedulos en el interior del chasis con firmeza las in-sertamos en el plexiglaacutes

El plexiglaacutes fue cortado para que encajara en el espacio crea-do en la etapa de disentildeo CAD para cada marco De esta forma todo el mundo puede apreciar el engranaje del portaacutetil lo cual supone una gran ventaja a la hora de ensentildear informaacutetica El paso final fue cablear todo siguiendo el diagrama por bloques

Acabamos teniendo un ordenador portaacutetil potente y fiable iexclMis estudiantes de la escuela se sorprendieron cuando vieron este portaacutetil poco convencional por primera vez

BateriacuteaAhora disponiacuteamos de un nuevo ordenador portaacutetil pero

sin ninguacuten tipo de bateriacutea recargable de modo que maacutes o me-nos es inuacutetil En primer lugar necesitaacutebamos estimar la ca-pacidad de la bateriacutea necesaria Para tal fin hicimos algunas pruebas de medicioacuten del amperaje en diferentes condiciones de uso El maacuteximo amperaje se alcanza cuando el C2 se pone en marcha con un pico de 11A Durante el funcionamiento nor-mal se mantiene justo por debajo de 1A con un dongle USB WIFI un moacutedulo RTC un adaptador de ratoacuten inalaacutembrico y el moacutedulo Bluetooth conectados El consumo total de energiacutea del ordenador portaacutetil es de alrededor de unos 12W

Mi hijo rescatoacute una vieja bateriacutea de litio recargable de un ordenador portaacutetil de Lenovo (L412) y pudo extraerle las nueve ceacutelulas disponibles dentro del paquete de bateriacuteas La mayoriacutea de las veces este tipo de paquetes de bateriacuteas ya no funcionan no por la propia bateriacutea sino debido a un defectuoso controlador de bateriacuteas integrado Utilizamos 3 y las conectamos en serie Esto nos proporcionaba 3 x 37 V un total de 111 voltios cuando la bateriacutea estaacute casi descargada y maacutes de 12V cuando estaacute completa-mente cargada La placa controladora LCD funciona sin ninguacuten problema a 11V Cada ceacutelula tiene 2200 mAh de capacidad de modo que la autonomiacutea del portaacutetil se acerca a las 2 horas Esto era suficiente para alcanzar el objetivo que nos propusimos al inicio del proyecto

Para volver a cargar las 3 ceacutelulas utilizamos un banco de bate-riacuteas solar de 12V conectada a traveacutes de un moacutedulo de sobreali-mentacioacuten que estaacute reajustado a un liacutemite de corriente de 126 V y 1A Con nuestro modelo particular de bateriacuteas podemos ajustar tanto la tensioacuten de salida como la corriente Cuando es-

PORTATIL ODROID

Clips de LCD

marco del teclado

Chasis completamente montado

ODROID MAGAZINE 16

cribiacute este artiacuteculo la bateriacutea auacuten no estaba colocada dentro del RedTop pero la teniacuteamos fuera para realizar pruebas maacutes ex-haustivas Una vez que completemos las pruebas colocaremos las 3 celdas debajo del teclado en un espacio reservado para tal fin

MaterialesEsto es lo que utiliceacute para montar mi portaacutetil ODROID-C1

Panel LCD HDMI-VGA de 133rdquo con audio httprebaycomAYZ5JU

Teclado mecaacutenico Zalman httpwwwamazonfrdpB00LHSPCS4

Cable OTG USB httpwwwamazonfrdpB007MNZ8VY

Transformador 12V-5V 3A httpwwwamazonfrdpB00JGFEQLE

Moacutedulo Bluetooth HC05 maestroesclavo httpswwwamazonfrdpB013STJSES

Moacutedulo RTC PCF8563 httpwwwamazonfrdpB01DB8JECC

Mini altavoz httprebaycombwOCZv

Impresora 3D httpwwwdagomafrproduitimprimante-dis-

covery200

Filamentos PLA para impresora 3D httpwwwamazonfrdpB00UMV7ANM

Clavijas de corriente DC de 55mm httpwwwamazonfrdpB00O1Y1X70

Interruptor de alimentacioacuten httpwwwamazonfrdpB00HUHBS1Q

Pack de bateriacuteas de ordenador portaacutetil como esta httpwwwamazonfrdpB00TVOC55Y

Conversor de sobrealimentacioacuten (4V-12V) httprebaycomw3FgNH

Varios tornillos arandelas y cables05m de PlexiglassSuper glue

PORTATIL ODROID

La placa controladora de la LCD

JUEGOS ANDROID

PAC-MAn 256iquestun juEGO CLASICO iquestunA nuEvA PERSPECTIvA DEL GEnERO DEL CORREDOR In-TERMInAbLE iexclDESCubRELOpor Bruno Doiche

Suele decirse que los claacutesicos nunca mueren pero algunos pueden quedarse bastante

anticuados Cuando era un nintildeo el Pac-Ma era un juego cuyos graacuteficos y jugabilidad eran totalmente acepta-bles para los estaacutendares de la deacutecada de los 80 A pesar de que todaviacutea se puede disfrutar del original Pac-Man hoy diacutea estaraacutes de acuerdo conmigo en que se queda algo corto en cuanto a funcionalidad incluso si aceptas el reto de jugar al modo aacutercade lo suficiente como para encontrarte con el miacutetico error del nivel 256 que soacutelo los mejores juga-dores de Pac-Man son capaces de ver

Sin embargo en la partida 256 del Pac-Man el error es la principal caracteriacutestica te prosiguen como una ola implacable desde la parte inferior de la pantalla Te hace volver a pensar lo que realmente significa correr por tu supervivencia en un labe-rinto lleno de fantasmas cada uno con su propia personalidad Exige un control muy preciso y pensar muy raacutepido para lograr salir y mantenerte un paso por delante de tus enemigos fantas-mas Ahora no tienes que jugar a los 255 niveles de Pac-Man para llegar a uno de los niveles maacutes elitistas de la historia del juego Puedes instalarlo desde Play Store en

httpbitly2cLaD5q

Un gran juego tan adictivo como lo fue en sus primeros diacuteas arcade

ODROID MAGAZINE 17

book se puede compartir faacutecilmente permitiendo una faacutecil visualizacioacuten en liacutenea y en nuestro caso gestionar la creacioacuten y el enviacuteo de aplicaciones Spark al cluacutester Los notebooks de Jupyter son una forma muy comuacuten de usar Apache Spark ya que permite al usuario centrarse especiacuteficamente en el anaacutelisis de datos en lugar de preocuparse de las herramientas o de la infraestructura que hay detraacutes

Instalar Hadoop File SystemNuestra primera tarea es instalar Java en cada nodo del

cluacutester Instalaremos el uacuteltimo software Java 8 de Oracle EL cual requiere la aceptacioacuten de la licencia durante la instalacioacuten Debido a esto necesitas iniciar sesioacuten en cada nodo de forma independiente y ejecutar el instalador Una vez alliacute crearemos una nueva cuenta de usuario desde la que ejecutaremos todo

$ sudo add-apt-repository ppawebupd8teamjava

$ sudo apt-get update

$ sudo apt-get install oracle-java8-installer

$ sudo apt-get install rsync

$ sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hduser

$ sudo usermod -aG sudo hduser

Ahora necesitamos instalar Hadoop Teacutecnicamente po-driacuteas utilizar la distribucioacuten Hadoop disponibles en el sitio web de Apache pero no estaacute compilada para la CPU ARM v71 de nuestros XU4s Puesto que en su mayor parte es Java es genial ya que se ejecutaraacute sobre JVM que acabamos de instalar en cada nodo Sin embargo hay partes de Hadoop que fueron es-

En el anterior artiacuteculo que escribiacute para ODROID Maga-zine en httpbitly2bHFij7 analice el desarrollo de un cluacutester informaacutetico autoacutenomo con nodos ODROID

XU4 En este artiacuteculo explicaremos coacutemo hacer un buen uso de ese cluacutester instalando Apache Spark y el sistema de ficheros Hadoop asiacute como tambieacuten la forma de acceder a tu cluacutester a traveacutes de la aplicacioacuten web Jupyter

Hadoop File System (HDFS) es uno de los sistemas de ar-chivos distribuidos maacutes populares y maacutes utilizados que existen hoy en diacutea Un sistema de archivos distribuido (DFS) es una aplicacioacuten para cluacutester que agrupa todas las unidades de disco duro dentro de un cluacutester para que puedan ser tratadas como una uacutenica unidad de almacenamiento de cara a sus clientes ex-ternos Utilizar un DFS tiene dos ventajas muy importantes En primer lugar y lo maacutes evidente es que te permite guardar y trabajar con grandes conjuntos de datos que se almacenan en maacutes de un disco duro del cluacutester En segundo lugar un DFS bien disentildeado proporciona mayor resistencia de datos en el nodo o ante fallos de disco mediante la replicacioacuten de bloques de datos en varias unidades del cluacutester En nuestro cluacutester XU4 los discos duros son las tarjetas MicroSD que fueron instaladas y configurada en nuestra anterior guiacutea

Apache Spark es una moderna plataforma de anaacutelisis de Big Data utilizada ampliamente en la industria del anaacutelisis de los grandes voluacutemenes de datos Proporciona herramientas de alto nivel muy simple para manipular y analizar datos ya sea a traveacutes de SQL o mapreduce ademaacutes de usar lenguajes de pro-gramacioacuten comunes tales como Python Scala y Java La pecu-liaridad maacutes significativa de Apache Spark es el uso del fondo de memoria RAM del cluacutester para almacenar objetos de datos intermedios que aceleran significativamente el procesamiento de datos Aunque los 2 GB de RAM integrados en el XU4 po-driacutean parecer un poco austeros en comparacioacuten con las grandes cantidades de memoria en un nodo de un cluacutester industrial hay espacio suficiente para hacer algunas cosas interesantes con Apache Spark

Jupyter Notebook es una aplicacioacuten web que te permite coacute-modamente aprovecharte de diversos lenguajes y plataformas de caacutelculo con tu cluacutester a traveacutes de una interfaz web El note-

InSTALAR HADOOP y SPARK En un CLuSTER ODROID-Xu4por michael Kamprath

HADOOP FILE SYSTEM

ODROID MAGAZINE 18

-l root ldquomkdir -p opthadoop-272rdquo

$ sudo rsync -avxP opthadoop-272

rootslave1opt

$ sudo rsync -avxP opthadoop-272

rootslave2opt

$ sudo rsync -avxP opthadoop-272

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop opthadoop-272rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquoln -s opthadoop-272 usrlocalhadooprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquomkdir -p datahdfstmprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop datahdfsrdquo

El uacuteltimo paso en la instalacioacuten de Hadoop es formatear el nodo como un HDFS

$ usrlocalhadoopbinhdfs namenode -format

Instalar Apache SparkVamos a utilizar un meacutetodo similar al anterior para instalar

Apache Spark En primer lugar vamos a utilizar Python 3 para acceder a Spark y a algunas librerias clave de Python por lo que tendraacutes que iniciar sesioacuten en cada nodo y ejecutar

$ sudo apt-get install python3 python3-pip

$ sudo pip3 install numpy

$ sudo pip3 install urlparse

Despueacutes en el nodo maestro instala Apache Spark

$ cd opt

$ sudo wget httpapacheclazorgspark

spark-162spark-162-bin-hadoop26tgz

$ sudo tar xvzf spark-162-bin-hadoop26tgz

$ sudo chown -R hduserhadoop

spark-162-bin-hadoop26

$ sudo ln -s optspark-162-bin-hadoop26

usrlocalspark

Al igual que en nuestra instalacioacuten de Hadoop necesitas antildeadir algunos archivos de configuracioacuten al directorio usrlo-calchispasconf Puedes localizar los archivos de configuracioacuten necesarios en mi repositorio GitHub (httpbitly2b4GnDU)

Una vez que Spark haya sido configurado en el nodo ma-

critas en C para que se ejecutaran maacutes raacutepido Si una instalacioacuten Hadoop no tiene estas libreriacuteas compiladas en la plataforma en la que estaacute se utilizaraacuten automaacuteticamente las equivalentes en Java por lo que seguiraacute funcionando pero de un modo maacutes lento Para este proyecto he desarrollado una distribucioacuten de la uacuteltima versioacuten de Hadoop para el procesador ARM v71 va-mos a descargar e instalar mi distribucioacuten En el nodo maestro inicia sesioacuten con la cuenta ldquohduserrdquo recieacuten creada y ejecuta los siguientes comandos para instalar Hadoop y configurar los no-dos del cluacutester para utilizar SSH sin contrasentildea Ten en cuenta que tendraacutes que iniciar sesioacuten en cada nodo esclavo desde el nodo maestro para configurar completamente el inicio de se-sioacuten sin contrasentildea

$ cd

$ ssh-keygen -t rsa -P ldquordquo

$ cat $HOMEsshid_rsapub gtgt $HOMEsshauthorized_

keys

$ ssh hduserlocalhost

$ exit

$ ssh hdusermaster

$ exit

$ ssh-copy-id hduserslave1

$ ssh hduserslave1

$ exit

$ ssh-copy-id hduserslave2

$ ssh hduserslave2

$ exit

$ ssh-copy-id hduserslave3

$ ssh hduserslave3

$ exit

$ cd opt

$ sudo wget httpdiybigdatanetdownloads

hadoophadoop-272armhftargz

$ sudo tar xzf hadoop-272armhftargz

$ sudo chown -R hduserhadoop hadoop-272

$ cd usrlocal

$ sudo ln -s opthadoop-272 hadoop

$ cd usrlocalhadoop

Ahora tenemos que crear los archivos de configuracioacuten para Hadoop Por comodidad ya he creado estos archivos que se de-ben instalar en el directorio usrlocalhadoopetchadoop y los he colocado a mi repositorio GitHub en httpbitly2bBehj4

Estos archivos de configuracioacuten tienen una configuracioacuten de cluacutester similar a la descrita en mi anterior artiacuteculo Es po-sible que tengas que modificarlos si has desarrollado un cluacutester diferente Ahora que el software Hadoop estaacute configurado en el nodo maestro lo vamos a copiar en los nodos esclavos

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

HADOOP FILE SYSTEM

ODROID MAGAZINE 19

estro coacutepialo a los esclavos de tu cluacutester

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo -l root

ldquomkdir -p optspark-162-bin-hadoop26rdquo

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave1opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave2opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquochown -R hduserhadoop

optspark-162-bin-hadoop26rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquoln -s optspark-162-bin-hadoop26

usrlocalsparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquomkdir -p datasparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquochown hduserhadoop datasparkrdquo

Instalar Jupyter NotebookLa instalacioacuten Jupyter Notebook es relativamente simple en

comparacioacuten con lo que hemos hecho hasta ahora Ugravenicamente en el nodo maestro ejecuta los siguientes comandos

$ sudo mkdir datajupyter

$ sudo chown -R hduserhadoop datajupyter

$ mkdir ~notebooks

$ sudo pip3 install jupyter

Para hacer visualizaciones en un notebook necesitamos compilar e instalar matplotlib Tambieacuten es uacutetil tener instalado numpy para facilitar la informaacutetica cientiacutefica a traveacutes de Py-thon Ten en cuenta que esto va a llevar un tiempo

$ sudo apt-get build-dep matplotlib

$ sudo pip3 install matplotlib

$ sudo pip3 install numpy

Ejecutar Hadoop Spark y Jupyter

Para logar que todo se ejecute usa los siguientes comandos

$ usrlocalhadoopsbinstart-dfssh

$ usrlocalsparksbinstart-allsh

$ XDG_RUNTIME_DIR=rdquodatajupyterrdquo PYSPARK_DRIVER_

PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=rdquonotebook

--no-browser --port=7777 --notebook-dir=homehduser

notebooksrdquo usrlocalsparkbinpyspark --packages

comdatabricksspark-csv_210110 --master spark

master7077

Puedes optar por convertir esta secuencia de comandos en un script bash independiente o simplemente puede crear un alias para este uacuteltimo comando Te dejo elegir cualquiera de

estas opciones como ejercicio Una vez en funcionamiento in-troduce en el navegador del ordenador httpltdireccioacuten IP del cluacutestergt7777 deberiacutea ver la interfaz Jupyter

Vamos a ejecutar una tarea de recuento de palabras en

nuestro sistema big data de XU4 Crea un nuevo notebook Python 3 haciendo clic en el botoacuten New en la parte superior derecha de la paacutegina web Ahora veraacute un espacio vaciacuteo como el que se muestra en la Figura anterior

Abre una nueva sesioacuten SSH en el nodo principal y antildeade lo siguiente

$ wget httpnorvigcombigtxt

$ hdfs dfs -mkdir usermichael

HADOOP FILE SYSTEM

Paacutegina web principal de Jupyter

Bloc de notas de Jupyter

ODROID MAGAZINE 20

$ hdfs dfs -put bigtxt usermichaelbigtxt

$ hdfs dfs -ls usermichael

Vuelve al notebook recieacuten creado antildeade el siguiente coacutedigo Python en la primera celda

from operator import add

blog_data = sctextFile(lsquohdfsmaster9000user

michaelbigtxtrsquo)cache()

counts = blog_dataflatMap(lambda x xsplit(lsquo lsquo))

map(lambda x (x 1))reduceByKey(add)

A continuacioacuten pulsa Shift + Enter para iniciar el trata-miento de las celdas Una nueva celda apareceraacute en el notebook de Jupyter Teacutecnicamente todaviacutea no ha sucedido nada dentro de Spark excepto crear un plan de consulta para ejecutar el recuento de palabras frente al conjunto de datos del blog que ya hemos colocado en HDFS Spark no hace ninguacuten caacutelculo hasta que no haga falta materializar los resultados La forma maacutes comuacuten de hacerlo es mostrar una parte de los resultados En la siguiente celda del notebook introduzca el coacutedigo y pulse Shift-Enter

countstake(100)

Veraacutes un asterisco junto a la celda en la que hemos intro-ducido el coacutedigo anterior Este asterisco seguiraacute activo mien-tras Spark esteacute haciendo sus caacutelculos Si vuelves a la sesioacuten de terminal en la que lanzaste el software Jupyter veraacutes el regis-tro log de Spark realizando sus caacutelculos Por otra parte si es-

cribes en tu navegador web la direccioacuten httpltdireccioacuten IP del cluacutestergt4040 puedes analizar el estado interno de Spark uti-lizando su interfaz de aplicacioacuten Es probable que escuches a-rrancar el ventilador de la CPU del XU4 durante los caacutelculos

Cuando los caacutelculos finalicen los primeros 100 valores de

los resultados se mostraraacuten en el notebook de JupyterCambia el nombre del notebook haciendo clic en la cadena

ldquo Untitledrdquo junto al logo de Jupyter en la parte superior izqui-erda del notebook Puede seguir trabajando con los datos antildea-diendo maacutes celdas que contengan maacutes coacutedigo python Spark Hay muchos y excelentes recursos en la web para aprender maacutes sobre Apache Spark incluyendo httpsparkapacheorg

Para guardar y cerrar el notebook haz clic en el menuacute ldquoFilerdquo en la paacutegina y selecciona ldquoClose and Haltrdquo Para finalizar Jupy-ter pulsa Control-C dos veces en la ventana de terminal desde el cual se lanzoacute Una vez que el software Juypter se detenga puedes apagar Spark y HDFS con

$ usrlocalsparksbinstop-allsh

$ usrlocalhadoopsbinstop-dfssh

Lecturas recomendadasSi deseas aprender maacutes sobre los temas tratados en este artiacute-

culo puedes utilizar los siguientes recursos para obtener maacutes informacioacuten sobre el software asiacute como mis conocimientos so-bre Big Data

Mi blog httpdiybigdatanetApache Hadoop httphadoopapacheorgApache Spark httpsparkapacheorgJupyter Notebook httpjupyterorg

HADOOP FILE SYSTEM

Los caacutelculos del recuento de palabras se han completado

ODROID MAGAZINE 21

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 14: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

En los uacuteltimos antildeos el tema del big data y de la ciencia de los datos se ha convertido en una tendencia muy importante en un sinfiacuten de in-

dustrias Las empresas de alta tecnologiacutea de Silicon Valley ya no son los uacutenicos proveedores de temas como Hadoop la regresioacuten logiacutestica y el aprendizaje de maquinas Estar familiarizado con las tecnologiacuteas del big data se estaacute convirtiendo en un requisito cada vez maacutes necesario en los empleos relacionados con la tecnologiacutea en cualquier parte Por desgracia y siendo realista la experiencia praacutectica con las tecnologiacuteas de big data normalmente implica tener acceso a un costoso cluacutester de ordenadores para ejecutar tus consultas Sin embargo la reciente revolucioacuten de los orde-nadores de placa reducida ha hecho que la informaacutetica distri-buida sea accesible a nivel personal y en educacioacuten para realizar tareas como esta y muchas otras

Imparto clases sobre disentildeo y mantenimiento de sistemas digitales y redes en un instituto franceacutes Durante los uacuteltimos 4 antildeos he ido sustituyendo todos los ordenadores de sobremesa de mi aula por ordenadores SBC principalmente por razones de espacio ya que la escuela estaacute cerca de la ciudad de Pariacutes y el espacio es muy caro iexclEl uso de ordenadores SBC deja maacutes

espacio en la mesa de trabajo del estudianteEmpeceacute con una Raspberry Pi pero pronto cambieacute al

ODROID-C1 tan pronto como estuvo disponible ya que la Pi no era lo suficientemente raacutepida para el trabajo en labo-ratorios (laboratorios GNS3 diferentes anaacutelisis de protocolos bus y configuracioacuten de los equipos de red) o simplemente para navegar por Internet Para el proacuteximo antildeo escolar ya habreacute cambiado la mitad de la clase al ODROIDC2 con un total de 10 ODROID-C1s y 8 ODROID-C2s

A la hora de preparar los laboratorios para los estudiantes tuve que usar el mismo equipo que ellos con el fin de asegurar-me de que todo funcionara sin problemas cuando los estudi-antes trabajasen en sus propios entornos de laboratorios Esto requeriacutea utilizar un ODROID en lugar de un ordenador por-

taacutetil x86 para eliminar cualquier diferencia de comportamiento en-tre ambos Para ser maacutes eficiente a la hora de preparar los laborato-rios parte de ellos los configuraba en casa y no en la escuela He in-tentado buscar algunas soluciones para fabricar un ordenador portaacutetil usando un ODROID de modo que se convirtiese en mi portaacutetil ODROID de ida y vuelta desde la escuela a casa Recorro 5 km hasta la escuela en bicicleta por lo que la solucioacuten teniacutea que ser ligera y compacta para transportarla

PORTATILODROID-C1 un PROyECTO CASERO A MEDIDA COn nOMbRE En CLAvE ldquoREDTOPrdquopor fabien Thiriet

PORTATIL ODROID

Portaacutetil REDTOP y vista trasera del mismo

ODROID MAGAZINE 14

RequisitosAl principio del proyecto elaboreacute una lista de requisitos

para el ordenador portaacutetil

bull Alimentado con 12V a traveacutes de un sistema de bateriacuteas solares en casa y con una fuente de alimentacioacuten exter-na 230V-12V en la escuelabull Bateriacutea Li-ion para cuando me esteacute moviendo con una autonomiacutea de unas 2 horas Algunos entornos de labo-ratorios en la escuela requieren monitorizar los buses CAN integrados en los vehiacuteculos de modo que se hace necesario el uso de bateriacuteasbull Pantalla LCD de 10rdquo como miacutenimobull Teclado y pantalla LCD montados en forma de ordena-dor portaacutetilbull GPIOs y conectores ODROID faacutecilmente accesiblebull Bluetooth maestroesclavo disponible puesto que ten-go muchos proyectos que funcionan con placas Arduino remotasbull RTC integrado porque no siempre estoy conectado a Internet

Proceso de fabricacioacutenAl principio encontreacute un Motorola Lapdock 100 en eBay

y lo utiliceacute durante varios meses Tras solucionar los problemas HDMI entre el ODROID y el Lapdock ya que el Lapdock se apagaba despueacutes de 20 segundos si no se conectaba nada a su puerto USB todo funcionoacute correctamente Se trataba de una solucioacuten muy ligera pero no lo suficientemente coacutemoda para un uso diario ya que la pantalla LCD soacutelo teniacutea 10rdquo y el teclado era muy pequentildeo Tambieacuten echeacute un vistazo a PiTop pero el precio era muy elevado para lo que estaba dispuesto a gastar Lo que realmente necesitaba era simplemente un gran panel LCD y un buen teclado montados en conjunto

Decidiacute buscar en eBay una pantalla LCD maacutes grande y en-contreacute un modelo de 133rdquo muy econoacutemico por 85 euro con en-viacuteo e impuestos incluidos La pantalla tiene una buena resolu-cioacuten de 1900x600 y los colores se ven muy bien Sin embargo

PORTATIL ODROID

el panel LCD se vendiacutea sin marco de modo que necesita algo para solventar esta cuestioacuten

Al mismo tiempo mi hijo ha conseguido lo que ha sontildeado durante mucho tiempo por su 15 cumpleantildeos una impresora 3D personal de modo que ya no teniacutea que utilizar una que teniacutea en la escuela Eacutel es muy bueno usando software CAD como SolidWorks y me propuso disentildear un chasis para el por-taacutetil Por desgracia la placa de impresioacuten 3D con un tamantildeo maacuteximo de 200 mm era demasiado pequentildea para imprimir un marco LCD de 133rdquo y un marco del teclado Despueacutes de varias reflexiones decidimos dividir los marcos de la LCD y del teclado en cuatro partes y unirlos con los clips de montaje im-presos en 3D y pegamento Todas las partes individuales eran inferiores a los 200 mm Si te fijas bien en las fotos del marco de la LCD de los clips y del teclado veraacutes la separacioacuten entre las piezas montadas El disentildeo CAD necesita alrededor de 2 semanas de trabajo para asegurarse de que todo encaja bien

Durante el disentildeo el principal problema que nos preo-cupaba era las bisagras del panel LCD que teniacutea que ser lo suficientemente fuerte para que me permitiera abrir y cerrar con facilidad el ordenador portaacutetil Esto nos permitiacutea crear una aacutengulo perfecto entre el marco del panel LCD y el marco del teclado Para que pudiera encajar correctamente el teclado

Portaacutetil RedTop visto desde arriba Versioacuten inicial de portaacutetil con un ordenador motorola Lapdock 100

El modelo 3D del marco de la LCD

ODROID MAGAZINE 15

en su marco lo desmontamos retirando las cubiertas superior e inferior Elegimos el color rojo para la fibra de impresioacuten 3D para que el ordenador fuese maacutes divertido y llamativo 30 horas maacutes tarde teniacuteamos impresas todas las partes del chasis Las pegamos y atornillamos el panel LCD y el teclado dentro de sus respectivos marcos El siguiente paso fue colocar todas las placas y moacutedulos en el interior del chasis con firmeza las in-sertamos en el plexiglaacutes

El plexiglaacutes fue cortado para que encajara en el espacio crea-do en la etapa de disentildeo CAD para cada marco De esta forma todo el mundo puede apreciar el engranaje del portaacutetil lo cual supone una gran ventaja a la hora de ensentildear informaacutetica El paso final fue cablear todo siguiendo el diagrama por bloques

Acabamos teniendo un ordenador portaacutetil potente y fiable iexclMis estudiantes de la escuela se sorprendieron cuando vieron este portaacutetil poco convencional por primera vez

BateriacuteaAhora disponiacuteamos de un nuevo ordenador portaacutetil pero

sin ninguacuten tipo de bateriacutea recargable de modo que maacutes o me-nos es inuacutetil En primer lugar necesitaacutebamos estimar la ca-pacidad de la bateriacutea necesaria Para tal fin hicimos algunas pruebas de medicioacuten del amperaje en diferentes condiciones de uso El maacuteximo amperaje se alcanza cuando el C2 se pone en marcha con un pico de 11A Durante el funcionamiento nor-mal se mantiene justo por debajo de 1A con un dongle USB WIFI un moacutedulo RTC un adaptador de ratoacuten inalaacutembrico y el moacutedulo Bluetooth conectados El consumo total de energiacutea del ordenador portaacutetil es de alrededor de unos 12W

Mi hijo rescatoacute una vieja bateriacutea de litio recargable de un ordenador portaacutetil de Lenovo (L412) y pudo extraerle las nueve ceacutelulas disponibles dentro del paquete de bateriacuteas La mayoriacutea de las veces este tipo de paquetes de bateriacuteas ya no funcionan no por la propia bateriacutea sino debido a un defectuoso controlador de bateriacuteas integrado Utilizamos 3 y las conectamos en serie Esto nos proporcionaba 3 x 37 V un total de 111 voltios cuando la bateriacutea estaacute casi descargada y maacutes de 12V cuando estaacute completa-mente cargada La placa controladora LCD funciona sin ninguacuten problema a 11V Cada ceacutelula tiene 2200 mAh de capacidad de modo que la autonomiacutea del portaacutetil se acerca a las 2 horas Esto era suficiente para alcanzar el objetivo que nos propusimos al inicio del proyecto

Para volver a cargar las 3 ceacutelulas utilizamos un banco de bate-riacuteas solar de 12V conectada a traveacutes de un moacutedulo de sobreali-mentacioacuten que estaacute reajustado a un liacutemite de corriente de 126 V y 1A Con nuestro modelo particular de bateriacuteas podemos ajustar tanto la tensioacuten de salida como la corriente Cuando es-

PORTATIL ODROID

Clips de LCD

marco del teclado

Chasis completamente montado

ODROID MAGAZINE 16

cribiacute este artiacuteculo la bateriacutea auacuten no estaba colocada dentro del RedTop pero la teniacuteamos fuera para realizar pruebas maacutes ex-haustivas Una vez que completemos las pruebas colocaremos las 3 celdas debajo del teclado en un espacio reservado para tal fin

MaterialesEsto es lo que utiliceacute para montar mi portaacutetil ODROID-C1

Panel LCD HDMI-VGA de 133rdquo con audio httprebaycomAYZ5JU

Teclado mecaacutenico Zalman httpwwwamazonfrdpB00LHSPCS4

Cable OTG USB httpwwwamazonfrdpB007MNZ8VY

Transformador 12V-5V 3A httpwwwamazonfrdpB00JGFEQLE

Moacutedulo Bluetooth HC05 maestroesclavo httpswwwamazonfrdpB013STJSES

Moacutedulo RTC PCF8563 httpwwwamazonfrdpB01DB8JECC

Mini altavoz httprebaycombwOCZv

Impresora 3D httpwwwdagomafrproduitimprimante-dis-

covery200

Filamentos PLA para impresora 3D httpwwwamazonfrdpB00UMV7ANM

Clavijas de corriente DC de 55mm httpwwwamazonfrdpB00O1Y1X70

Interruptor de alimentacioacuten httpwwwamazonfrdpB00HUHBS1Q

Pack de bateriacuteas de ordenador portaacutetil como esta httpwwwamazonfrdpB00TVOC55Y

Conversor de sobrealimentacioacuten (4V-12V) httprebaycomw3FgNH

Varios tornillos arandelas y cables05m de PlexiglassSuper glue

PORTATIL ODROID

La placa controladora de la LCD

JUEGOS ANDROID

PAC-MAn 256iquestun juEGO CLASICO iquestunA nuEvA PERSPECTIvA DEL GEnERO DEL CORREDOR In-TERMInAbLE iexclDESCubRELOpor Bruno Doiche

Suele decirse que los claacutesicos nunca mueren pero algunos pueden quedarse bastante

anticuados Cuando era un nintildeo el Pac-Ma era un juego cuyos graacuteficos y jugabilidad eran totalmente acepta-bles para los estaacutendares de la deacutecada de los 80 A pesar de que todaviacutea se puede disfrutar del original Pac-Man hoy diacutea estaraacutes de acuerdo conmigo en que se queda algo corto en cuanto a funcionalidad incluso si aceptas el reto de jugar al modo aacutercade lo suficiente como para encontrarte con el miacutetico error del nivel 256 que soacutelo los mejores juga-dores de Pac-Man son capaces de ver

Sin embargo en la partida 256 del Pac-Man el error es la principal caracteriacutestica te prosiguen como una ola implacable desde la parte inferior de la pantalla Te hace volver a pensar lo que realmente significa correr por tu supervivencia en un labe-rinto lleno de fantasmas cada uno con su propia personalidad Exige un control muy preciso y pensar muy raacutepido para lograr salir y mantenerte un paso por delante de tus enemigos fantas-mas Ahora no tienes que jugar a los 255 niveles de Pac-Man para llegar a uno de los niveles maacutes elitistas de la historia del juego Puedes instalarlo desde Play Store en

httpbitly2cLaD5q

Un gran juego tan adictivo como lo fue en sus primeros diacuteas arcade

ODROID MAGAZINE 17

book se puede compartir faacutecilmente permitiendo una faacutecil visualizacioacuten en liacutenea y en nuestro caso gestionar la creacioacuten y el enviacuteo de aplicaciones Spark al cluacutester Los notebooks de Jupyter son una forma muy comuacuten de usar Apache Spark ya que permite al usuario centrarse especiacuteficamente en el anaacutelisis de datos en lugar de preocuparse de las herramientas o de la infraestructura que hay detraacutes

Instalar Hadoop File SystemNuestra primera tarea es instalar Java en cada nodo del

cluacutester Instalaremos el uacuteltimo software Java 8 de Oracle EL cual requiere la aceptacioacuten de la licencia durante la instalacioacuten Debido a esto necesitas iniciar sesioacuten en cada nodo de forma independiente y ejecutar el instalador Una vez alliacute crearemos una nueva cuenta de usuario desde la que ejecutaremos todo

$ sudo add-apt-repository ppawebupd8teamjava

$ sudo apt-get update

$ sudo apt-get install oracle-java8-installer

$ sudo apt-get install rsync

$ sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hduser

$ sudo usermod -aG sudo hduser

Ahora necesitamos instalar Hadoop Teacutecnicamente po-driacuteas utilizar la distribucioacuten Hadoop disponibles en el sitio web de Apache pero no estaacute compilada para la CPU ARM v71 de nuestros XU4s Puesto que en su mayor parte es Java es genial ya que se ejecutaraacute sobre JVM que acabamos de instalar en cada nodo Sin embargo hay partes de Hadoop que fueron es-

En el anterior artiacuteculo que escribiacute para ODROID Maga-zine en httpbitly2bHFij7 analice el desarrollo de un cluacutester informaacutetico autoacutenomo con nodos ODROID

XU4 En este artiacuteculo explicaremos coacutemo hacer un buen uso de ese cluacutester instalando Apache Spark y el sistema de ficheros Hadoop asiacute como tambieacuten la forma de acceder a tu cluacutester a traveacutes de la aplicacioacuten web Jupyter

Hadoop File System (HDFS) es uno de los sistemas de ar-chivos distribuidos maacutes populares y maacutes utilizados que existen hoy en diacutea Un sistema de archivos distribuido (DFS) es una aplicacioacuten para cluacutester que agrupa todas las unidades de disco duro dentro de un cluacutester para que puedan ser tratadas como una uacutenica unidad de almacenamiento de cara a sus clientes ex-ternos Utilizar un DFS tiene dos ventajas muy importantes En primer lugar y lo maacutes evidente es que te permite guardar y trabajar con grandes conjuntos de datos que se almacenan en maacutes de un disco duro del cluacutester En segundo lugar un DFS bien disentildeado proporciona mayor resistencia de datos en el nodo o ante fallos de disco mediante la replicacioacuten de bloques de datos en varias unidades del cluacutester En nuestro cluacutester XU4 los discos duros son las tarjetas MicroSD que fueron instaladas y configurada en nuestra anterior guiacutea

Apache Spark es una moderna plataforma de anaacutelisis de Big Data utilizada ampliamente en la industria del anaacutelisis de los grandes voluacutemenes de datos Proporciona herramientas de alto nivel muy simple para manipular y analizar datos ya sea a traveacutes de SQL o mapreduce ademaacutes de usar lenguajes de pro-gramacioacuten comunes tales como Python Scala y Java La pecu-liaridad maacutes significativa de Apache Spark es el uso del fondo de memoria RAM del cluacutester para almacenar objetos de datos intermedios que aceleran significativamente el procesamiento de datos Aunque los 2 GB de RAM integrados en el XU4 po-driacutean parecer un poco austeros en comparacioacuten con las grandes cantidades de memoria en un nodo de un cluacutester industrial hay espacio suficiente para hacer algunas cosas interesantes con Apache Spark

Jupyter Notebook es una aplicacioacuten web que te permite coacute-modamente aprovecharte de diversos lenguajes y plataformas de caacutelculo con tu cluacutester a traveacutes de una interfaz web El note-

InSTALAR HADOOP y SPARK En un CLuSTER ODROID-Xu4por michael Kamprath

HADOOP FILE SYSTEM

ODROID MAGAZINE 18

-l root ldquomkdir -p opthadoop-272rdquo

$ sudo rsync -avxP opthadoop-272

rootslave1opt

$ sudo rsync -avxP opthadoop-272

rootslave2opt

$ sudo rsync -avxP opthadoop-272

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop opthadoop-272rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquoln -s opthadoop-272 usrlocalhadooprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquomkdir -p datahdfstmprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop datahdfsrdquo

El uacuteltimo paso en la instalacioacuten de Hadoop es formatear el nodo como un HDFS

$ usrlocalhadoopbinhdfs namenode -format

Instalar Apache SparkVamos a utilizar un meacutetodo similar al anterior para instalar

Apache Spark En primer lugar vamos a utilizar Python 3 para acceder a Spark y a algunas librerias clave de Python por lo que tendraacutes que iniciar sesioacuten en cada nodo y ejecutar

$ sudo apt-get install python3 python3-pip

$ sudo pip3 install numpy

$ sudo pip3 install urlparse

Despueacutes en el nodo maestro instala Apache Spark

$ cd opt

$ sudo wget httpapacheclazorgspark

spark-162spark-162-bin-hadoop26tgz

$ sudo tar xvzf spark-162-bin-hadoop26tgz

$ sudo chown -R hduserhadoop

spark-162-bin-hadoop26

$ sudo ln -s optspark-162-bin-hadoop26

usrlocalspark

Al igual que en nuestra instalacioacuten de Hadoop necesitas antildeadir algunos archivos de configuracioacuten al directorio usrlo-calchispasconf Puedes localizar los archivos de configuracioacuten necesarios en mi repositorio GitHub (httpbitly2b4GnDU)

Una vez que Spark haya sido configurado en el nodo ma-

critas en C para que se ejecutaran maacutes raacutepido Si una instalacioacuten Hadoop no tiene estas libreriacuteas compiladas en la plataforma en la que estaacute se utilizaraacuten automaacuteticamente las equivalentes en Java por lo que seguiraacute funcionando pero de un modo maacutes lento Para este proyecto he desarrollado una distribucioacuten de la uacuteltima versioacuten de Hadoop para el procesador ARM v71 va-mos a descargar e instalar mi distribucioacuten En el nodo maestro inicia sesioacuten con la cuenta ldquohduserrdquo recieacuten creada y ejecuta los siguientes comandos para instalar Hadoop y configurar los no-dos del cluacutester para utilizar SSH sin contrasentildea Ten en cuenta que tendraacutes que iniciar sesioacuten en cada nodo esclavo desde el nodo maestro para configurar completamente el inicio de se-sioacuten sin contrasentildea

$ cd

$ ssh-keygen -t rsa -P ldquordquo

$ cat $HOMEsshid_rsapub gtgt $HOMEsshauthorized_

keys

$ ssh hduserlocalhost

$ exit

$ ssh hdusermaster

$ exit

$ ssh-copy-id hduserslave1

$ ssh hduserslave1

$ exit

$ ssh-copy-id hduserslave2

$ ssh hduserslave2

$ exit

$ ssh-copy-id hduserslave3

$ ssh hduserslave3

$ exit

$ cd opt

$ sudo wget httpdiybigdatanetdownloads

hadoophadoop-272armhftargz

$ sudo tar xzf hadoop-272armhftargz

$ sudo chown -R hduserhadoop hadoop-272

$ cd usrlocal

$ sudo ln -s opthadoop-272 hadoop

$ cd usrlocalhadoop

Ahora tenemos que crear los archivos de configuracioacuten para Hadoop Por comodidad ya he creado estos archivos que se de-ben instalar en el directorio usrlocalhadoopetchadoop y los he colocado a mi repositorio GitHub en httpbitly2bBehj4

Estos archivos de configuracioacuten tienen una configuracioacuten de cluacutester similar a la descrita en mi anterior artiacuteculo Es po-sible que tengas que modificarlos si has desarrollado un cluacutester diferente Ahora que el software Hadoop estaacute configurado en el nodo maestro lo vamos a copiar en los nodos esclavos

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

HADOOP FILE SYSTEM

ODROID MAGAZINE 19

estro coacutepialo a los esclavos de tu cluacutester

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo -l root

ldquomkdir -p optspark-162-bin-hadoop26rdquo

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave1opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave2opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquochown -R hduserhadoop

optspark-162-bin-hadoop26rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquoln -s optspark-162-bin-hadoop26

usrlocalsparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquomkdir -p datasparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquochown hduserhadoop datasparkrdquo

Instalar Jupyter NotebookLa instalacioacuten Jupyter Notebook es relativamente simple en

comparacioacuten con lo que hemos hecho hasta ahora Ugravenicamente en el nodo maestro ejecuta los siguientes comandos

$ sudo mkdir datajupyter

$ sudo chown -R hduserhadoop datajupyter

$ mkdir ~notebooks

$ sudo pip3 install jupyter

Para hacer visualizaciones en un notebook necesitamos compilar e instalar matplotlib Tambieacuten es uacutetil tener instalado numpy para facilitar la informaacutetica cientiacutefica a traveacutes de Py-thon Ten en cuenta que esto va a llevar un tiempo

$ sudo apt-get build-dep matplotlib

$ sudo pip3 install matplotlib

$ sudo pip3 install numpy

Ejecutar Hadoop Spark y Jupyter

Para logar que todo se ejecute usa los siguientes comandos

$ usrlocalhadoopsbinstart-dfssh

$ usrlocalsparksbinstart-allsh

$ XDG_RUNTIME_DIR=rdquodatajupyterrdquo PYSPARK_DRIVER_

PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=rdquonotebook

--no-browser --port=7777 --notebook-dir=homehduser

notebooksrdquo usrlocalsparkbinpyspark --packages

comdatabricksspark-csv_210110 --master spark

master7077

Puedes optar por convertir esta secuencia de comandos en un script bash independiente o simplemente puede crear un alias para este uacuteltimo comando Te dejo elegir cualquiera de

estas opciones como ejercicio Una vez en funcionamiento in-troduce en el navegador del ordenador httpltdireccioacuten IP del cluacutestergt7777 deberiacutea ver la interfaz Jupyter

Vamos a ejecutar una tarea de recuento de palabras en

nuestro sistema big data de XU4 Crea un nuevo notebook Python 3 haciendo clic en el botoacuten New en la parte superior derecha de la paacutegina web Ahora veraacute un espacio vaciacuteo como el que se muestra en la Figura anterior

Abre una nueva sesioacuten SSH en el nodo principal y antildeade lo siguiente

$ wget httpnorvigcombigtxt

$ hdfs dfs -mkdir usermichael

HADOOP FILE SYSTEM

Paacutegina web principal de Jupyter

Bloc de notas de Jupyter

ODROID MAGAZINE 20

$ hdfs dfs -put bigtxt usermichaelbigtxt

$ hdfs dfs -ls usermichael

Vuelve al notebook recieacuten creado antildeade el siguiente coacutedigo Python en la primera celda

from operator import add

blog_data = sctextFile(lsquohdfsmaster9000user

michaelbigtxtrsquo)cache()

counts = blog_dataflatMap(lambda x xsplit(lsquo lsquo))

map(lambda x (x 1))reduceByKey(add)

A continuacioacuten pulsa Shift + Enter para iniciar el trata-miento de las celdas Una nueva celda apareceraacute en el notebook de Jupyter Teacutecnicamente todaviacutea no ha sucedido nada dentro de Spark excepto crear un plan de consulta para ejecutar el recuento de palabras frente al conjunto de datos del blog que ya hemos colocado en HDFS Spark no hace ninguacuten caacutelculo hasta que no haga falta materializar los resultados La forma maacutes comuacuten de hacerlo es mostrar una parte de los resultados En la siguiente celda del notebook introduzca el coacutedigo y pulse Shift-Enter

countstake(100)

Veraacutes un asterisco junto a la celda en la que hemos intro-ducido el coacutedigo anterior Este asterisco seguiraacute activo mien-tras Spark esteacute haciendo sus caacutelculos Si vuelves a la sesioacuten de terminal en la que lanzaste el software Jupyter veraacutes el regis-tro log de Spark realizando sus caacutelculos Por otra parte si es-

cribes en tu navegador web la direccioacuten httpltdireccioacuten IP del cluacutestergt4040 puedes analizar el estado interno de Spark uti-lizando su interfaz de aplicacioacuten Es probable que escuches a-rrancar el ventilador de la CPU del XU4 durante los caacutelculos

Cuando los caacutelculos finalicen los primeros 100 valores de

los resultados se mostraraacuten en el notebook de JupyterCambia el nombre del notebook haciendo clic en la cadena

ldquo Untitledrdquo junto al logo de Jupyter en la parte superior izqui-erda del notebook Puede seguir trabajando con los datos antildea-diendo maacutes celdas que contengan maacutes coacutedigo python Spark Hay muchos y excelentes recursos en la web para aprender maacutes sobre Apache Spark incluyendo httpsparkapacheorg

Para guardar y cerrar el notebook haz clic en el menuacute ldquoFilerdquo en la paacutegina y selecciona ldquoClose and Haltrdquo Para finalizar Jupy-ter pulsa Control-C dos veces en la ventana de terminal desde el cual se lanzoacute Una vez que el software Juypter se detenga puedes apagar Spark y HDFS con

$ usrlocalsparksbinstop-allsh

$ usrlocalhadoopsbinstop-dfssh

Lecturas recomendadasSi deseas aprender maacutes sobre los temas tratados en este artiacute-

culo puedes utilizar los siguientes recursos para obtener maacutes informacioacuten sobre el software asiacute como mis conocimientos so-bre Big Data

Mi blog httpdiybigdatanetApache Hadoop httphadoopapacheorgApache Spark httpsparkapacheorgJupyter Notebook httpjupyterorg

HADOOP FILE SYSTEM

Los caacutelculos del recuento de palabras se han completado

ODROID MAGAZINE 21

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 15: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

RequisitosAl principio del proyecto elaboreacute una lista de requisitos

para el ordenador portaacutetil

bull Alimentado con 12V a traveacutes de un sistema de bateriacuteas solares en casa y con una fuente de alimentacioacuten exter-na 230V-12V en la escuelabull Bateriacutea Li-ion para cuando me esteacute moviendo con una autonomiacutea de unas 2 horas Algunos entornos de labo-ratorios en la escuela requieren monitorizar los buses CAN integrados en los vehiacuteculos de modo que se hace necesario el uso de bateriacuteasbull Pantalla LCD de 10rdquo como miacutenimobull Teclado y pantalla LCD montados en forma de ordena-dor portaacutetilbull GPIOs y conectores ODROID faacutecilmente accesiblebull Bluetooth maestroesclavo disponible puesto que ten-go muchos proyectos que funcionan con placas Arduino remotasbull RTC integrado porque no siempre estoy conectado a Internet

Proceso de fabricacioacutenAl principio encontreacute un Motorola Lapdock 100 en eBay

y lo utiliceacute durante varios meses Tras solucionar los problemas HDMI entre el ODROID y el Lapdock ya que el Lapdock se apagaba despueacutes de 20 segundos si no se conectaba nada a su puerto USB todo funcionoacute correctamente Se trataba de una solucioacuten muy ligera pero no lo suficientemente coacutemoda para un uso diario ya que la pantalla LCD soacutelo teniacutea 10rdquo y el teclado era muy pequentildeo Tambieacuten echeacute un vistazo a PiTop pero el precio era muy elevado para lo que estaba dispuesto a gastar Lo que realmente necesitaba era simplemente un gran panel LCD y un buen teclado montados en conjunto

Decidiacute buscar en eBay una pantalla LCD maacutes grande y en-contreacute un modelo de 133rdquo muy econoacutemico por 85 euro con en-viacuteo e impuestos incluidos La pantalla tiene una buena resolu-cioacuten de 1900x600 y los colores se ven muy bien Sin embargo

PORTATIL ODROID

el panel LCD se vendiacutea sin marco de modo que necesita algo para solventar esta cuestioacuten

Al mismo tiempo mi hijo ha conseguido lo que ha sontildeado durante mucho tiempo por su 15 cumpleantildeos una impresora 3D personal de modo que ya no teniacutea que utilizar una que teniacutea en la escuela Eacutel es muy bueno usando software CAD como SolidWorks y me propuso disentildear un chasis para el por-taacutetil Por desgracia la placa de impresioacuten 3D con un tamantildeo maacuteximo de 200 mm era demasiado pequentildea para imprimir un marco LCD de 133rdquo y un marco del teclado Despueacutes de varias reflexiones decidimos dividir los marcos de la LCD y del teclado en cuatro partes y unirlos con los clips de montaje im-presos en 3D y pegamento Todas las partes individuales eran inferiores a los 200 mm Si te fijas bien en las fotos del marco de la LCD de los clips y del teclado veraacutes la separacioacuten entre las piezas montadas El disentildeo CAD necesita alrededor de 2 semanas de trabajo para asegurarse de que todo encaja bien

Durante el disentildeo el principal problema que nos preo-cupaba era las bisagras del panel LCD que teniacutea que ser lo suficientemente fuerte para que me permitiera abrir y cerrar con facilidad el ordenador portaacutetil Esto nos permitiacutea crear una aacutengulo perfecto entre el marco del panel LCD y el marco del teclado Para que pudiera encajar correctamente el teclado

Portaacutetil RedTop visto desde arriba Versioacuten inicial de portaacutetil con un ordenador motorola Lapdock 100

El modelo 3D del marco de la LCD

ODROID MAGAZINE 15

en su marco lo desmontamos retirando las cubiertas superior e inferior Elegimos el color rojo para la fibra de impresioacuten 3D para que el ordenador fuese maacutes divertido y llamativo 30 horas maacutes tarde teniacuteamos impresas todas las partes del chasis Las pegamos y atornillamos el panel LCD y el teclado dentro de sus respectivos marcos El siguiente paso fue colocar todas las placas y moacutedulos en el interior del chasis con firmeza las in-sertamos en el plexiglaacutes

El plexiglaacutes fue cortado para que encajara en el espacio crea-do en la etapa de disentildeo CAD para cada marco De esta forma todo el mundo puede apreciar el engranaje del portaacutetil lo cual supone una gran ventaja a la hora de ensentildear informaacutetica El paso final fue cablear todo siguiendo el diagrama por bloques

Acabamos teniendo un ordenador portaacutetil potente y fiable iexclMis estudiantes de la escuela se sorprendieron cuando vieron este portaacutetil poco convencional por primera vez

BateriacuteaAhora disponiacuteamos de un nuevo ordenador portaacutetil pero

sin ninguacuten tipo de bateriacutea recargable de modo que maacutes o me-nos es inuacutetil En primer lugar necesitaacutebamos estimar la ca-pacidad de la bateriacutea necesaria Para tal fin hicimos algunas pruebas de medicioacuten del amperaje en diferentes condiciones de uso El maacuteximo amperaje se alcanza cuando el C2 se pone en marcha con un pico de 11A Durante el funcionamiento nor-mal se mantiene justo por debajo de 1A con un dongle USB WIFI un moacutedulo RTC un adaptador de ratoacuten inalaacutembrico y el moacutedulo Bluetooth conectados El consumo total de energiacutea del ordenador portaacutetil es de alrededor de unos 12W

Mi hijo rescatoacute una vieja bateriacutea de litio recargable de un ordenador portaacutetil de Lenovo (L412) y pudo extraerle las nueve ceacutelulas disponibles dentro del paquete de bateriacuteas La mayoriacutea de las veces este tipo de paquetes de bateriacuteas ya no funcionan no por la propia bateriacutea sino debido a un defectuoso controlador de bateriacuteas integrado Utilizamos 3 y las conectamos en serie Esto nos proporcionaba 3 x 37 V un total de 111 voltios cuando la bateriacutea estaacute casi descargada y maacutes de 12V cuando estaacute completa-mente cargada La placa controladora LCD funciona sin ninguacuten problema a 11V Cada ceacutelula tiene 2200 mAh de capacidad de modo que la autonomiacutea del portaacutetil se acerca a las 2 horas Esto era suficiente para alcanzar el objetivo que nos propusimos al inicio del proyecto

Para volver a cargar las 3 ceacutelulas utilizamos un banco de bate-riacuteas solar de 12V conectada a traveacutes de un moacutedulo de sobreali-mentacioacuten que estaacute reajustado a un liacutemite de corriente de 126 V y 1A Con nuestro modelo particular de bateriacuteas podemos ajustar tanto la tensioacuten de salida como la corriente Cuando es-

PORTATIL ODROID

Clips de LCD

marco del teclado

Chasis completamente montado

ODROID MAGAZINE 16

cribiacute este artiacuteculo la bateriacutea auacuten no estaba colocada dentro del RedTop pero la teniacuteamos fuera para realizar pruebas maacutes ex-haustivas Una vez que completemos las pruebas colocaremos las 3 celdas debajo del teclado en un espacio reservado para tal fin

MaterialesEsto es lo que utiliceacute para montar mi portaacutetil ODROID-C1

Panel LCD HDMI-VGA de 133rdquo con audio httprebaycomAYZ5JU

Teclado mecaacutenico Zalman httpwwwamazonfrdpB00LHSPCS4

Cable OTG USB httpwwwamazonfrdpB007MNZ8VY

Transformador 12V-5V 3A httpwwwamazonfrdpB00JGFEQLE

Moacutedulo Bluetooth HC05 maestroesclavo httpswwwamazonfrdpB013STJSES

Moacutedulo RTC PCF8563 httpwwwamazonfrdpB01DB8JECC

Mini altavoz httprebaycombwOCZv

Impresora 3D httpwwwdagomafrproduitimprimante-dis-

covery200

Filamentos PLA para impresora 3D httpwwwamazonfrdpB00UMV7ANM

Clavijas de corriente DC de 55mm httpwwwamazonfrdpB00O1Y1X70

Interruptor de alimentacioacuten httpwwwamazonfrdpB00HUHBS1Q

Pack de bateriacuteas de ordenador portaacutetil como esta httpwwwamazonfrdpB00TVOC55Y

Conversor de sobrealimentacioacuten (4V-12V) httprebaycomw3FgNH

Varios tornillos arandelas y cables05m de PlexiglassSuper glue

PORTATIL ODROID

La placa controladora de la LCD

JUEGOS ANDROID

PAC-MAn 256iquestun juEGO CLASICO iquestunA nuEvA PERSPECTIvA DEL GEnERO DEL CORREDOR In-TERMInAbLE iexclDESCubRELOpor Bruno Doiche

Suele decirse que los claacutesicos nunca mueren pero algunos pueden quedarse bastante

anticuados Cuando era un nintildeo el Pac-Ma era un juego cuyos graacuteficos y jugabilidad eran totalmente acepta-bles para los estaacutendares de la deacutecada de los 80 A pesar de que todaviacutea se puede disfrutar del original Pac-Man hoy diacutea estaraacutes de acuerdo conmigo en que se queda algo corto en cuanto a funcionalidad incluso si aceptas el reto de jugar al modo aacutercade lo suficiente como para encontrarte con el miacutetico error del nivel 256 que soacutelo los mejores juga-dores de Pac-Man son capaces de ver

Sin embargo en la partida 256 del Pac-Man el error es la principal caracteriacutestica te prosiguen como una ola implacable desde la parte inferior de la pantalla Te hace volver a pensar lo que realmente significa correr por tu supervivencia en un labe-rinto lleno de fantasmas cada uno con su propia personalidad Exige un control muy preciso y pensar muy raacutepido para lograr salir y mantenerte un paso por delante de tus enemigos fantas-mas Ahora no tienes que jugar a los 255 niveles de Pac-Man para llegar a uno de los niveles maacutes elitistas de la historia del juego Puedes instalarlo desde Play Store en

httpbitly2cLaD5q

Un gran juego tan adictivo como lo fue en sus primeros diacuteas arcade

ODROID MAGAZINE 17

book se puede compartir faacutecilmente permitiendo una faacutecil visualizacioacuten en liacutenea y en nuestro caso gestionar la creacioacuten y el enviacuteo de aplicaciones Spark al cluacutester Los notebooks de Jupyter son una forma muy comuacuten de usar Apache Spark ya que permite al usuario centrarse especiacuteficamente en el anaacutelisis de datos en lugar de preocuparse de las herramientas o de la infraestructura que hay detraacutes

Instalar Hadoop File SystemNuestra primera tarea es instalar Java en cada nodo del

cluacutester Instalaremos el uacuteltimo software Java 8 de Oracle EL cual requiere la aceptacioacuten de la licencia durante la instalacioacuten Debido a esto necesitas iniciar sesioacuten en cada nodo de forma independiente y ejecutar el instalador Una vez alliacute crearemos una nueva cuenta de usuario desde la que ejecutaremos todo

$ sudo add-apt-repository ppawebupd8teamjava

$ sudo apt-get update

$ sudo apt-get install oracle-java8-installer

$ sudo apt-get install rsync

$ sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hduser

$ sudo usermod -aG sudo hduser

Ahora necesitamos instalar Hadoop Teacutecnicamente po-driacuteas utilizar la distribucioacuten Hadoop disponibles en el sitio web de Apache pero no estaacute compilada para la CPU ARM v71 de nuestros XU4s Puesto que en su mayor parte es Java es genial ya que se ejecutaraacute sobre JVM que acabamos de instalar en cada nodo Sin embargo hay partes de Hadoop que fueron es-

En el anterior artiacuteculo que escribiacute para ODROID Maga-zine en httpbitly2bHFij7 analice el desarrollo de un cluacutester informaacutetico autoacutenomo con nodos ODROID

XU4 En este artiacuteculo explicaremos coacutemo hacer un buen uso de ese cluacutester instalando Apache Spark y el sistema de ficheros Hadoop asiacute como tambieacuten la forma de acceder a tu cluacutester a traveacutes de la aplicacioacuten web Jupyter

Hadoop File System (HDFS) es uno de los sistemas de ar-chivos distribuidos maacutes populares y maacutes utilizados que existen hoy en diacutea Un sistema de archivos distribuido (DFS) es una aplicacioacuten para cluacutester que agrupa todas las unidades de disco duro dentro de un cluacutester para que puedan ser tratadas como una uacutenica unidad de almacenamiento de cara a sus clientes ex-ternos Utilizar un DFS tiene dos ventajas muy importantes En primer lugar y lo maacutes evidente es que te permite guardar y trabajar con grandes conjuntos de datos que se almacenan en maacutes de un disco duro del cluacutester En segundo lugar un DFS bien disentildeado proporciona mayor resistencia de datos en el nodo o ante fallos de disco mediante la replicacioacuten de bloques de datos en varias unidades del cluacutester En nuestro cluacutester XU4 los discos duros son las tarjetas MicroSD que fueron instaladas y configurada en nuestra anterior guiacutea

Apache Spark es una moderna plataforma de anaacutelisis de Big Data utilizada ampliamente en la industria del anaacutelisis de los grandes voluacutemenes de datos Proporciona herramientas de alto nivel muy simple para manipular y analizar datos ya sea a traveacutes de SQL o mapreduce ademaacutes de usar lenguajes de pro-gramacioacuten comunes tales como Python Scala y Java La pecu-liaridad maacutes significativa de Apache Spark es el uso del fondo de memoria RAM del cluacutester para almacenar objetos de datos intermedios que aceleran significativamente el procesamiento de datos Aunque los 2 GB de RAM integrados en el XU4 po-driacutean parecer un poco austeros en comparacioacuten con las grandes cantidades de memoria en un nodo de un cluacutester industrial hay espacio suficiente para hacer algunas cosas interesantes con Apache Spark

Jupyter Notebook es una aplicacioacuten web que te permite coacute-modamente aprovecharte de diversos lenguajes y plataformas de caacutelculo con tu cluacutester a traveacutes de una interfaz web El note-

InSTALAR HADOOP y SPARK En un CLuSTER ODROID-Xu4por michael Kamprath

HADOOP FILE SYSTEM

ODROID MAGAZINE 18

-l root ldquomkdir -p opthadoop-272rdquo

$ sudo rsync -avxP opthadoop-272

rootslave1opt

$ sudo rsync -avxP opthadoop-272

rootslave2opt

$ sudo rsync -avxP opthadoop-272

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop opthadoop-272rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquoln -s opthadoop-272 usrlocalhadooprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquomkdir -p datahdfstmprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop datahdfsrdquo

El uacuteltimo paso en la instalacioacuten de Hadoop es formatear el nodo como un HDFS

$ usrlocalhadoopbinhdfs namenode -format

Instalar Apache SparkVamos a utilizar un meacutetodo similar al anterior para instalar

Apache Spark En primer lugar vamos a utilizar Python 3 para acceder a Spark y a algunas librerias clave de Python por lo que tendraacutes que iniciar sesioacuten en cada nodo y ejecutar

$ sudo apt-get install python3 python3-pip

$ sudo pip3 install numpy

$ sudo pip3 install urlparse

Despueacutes en el nodo maestro instala Apache Spark

$ cd opt

$ sudo wget httpapacheclazorgspark

spark-162spark-162-bin-hadoop26tgz

$ sudo tar xvzf spark-162-bin-hadoop26tgz

$ sudo chown -R hduserhadoop

spark-162-bin-hadoop26

$ sudo ln -s optspark-162-bin-hadoop26

usrlocalspark

Al igual que en nuestra instalacioacuten de Hadoop necesitas antildeadir algunos archivos de configuracioacuten al directorio usrlo-calchispasconf Puedes localizar los archivos de configuracioacuten necesarios en mi repositorio GitHub (httpbitly2b4GnDU)

Una vez que Spark haya sido configurado en el nodo ma-

critas en C para que se ejecutaran maacutes raacutepido Si una instalacioacuten Hadoop no tiene estas libreriacuteas compiladas en la plataforma en la que estaacute se utilizaraacuten automaacuteticamente las equivalentes en Java por lo que seguiraacute funcionando pero de un modo maacutes lento Para este proyecto he desarrollado una distribucioacuten de la uacuteltima versioacuten de Hadoop para el procesador ARM v71 va-mos a descargar e instalar mi distribucioacuten En el nodo maestro inicia sesioacuten con la cuenta ldquohduserrdquo recieacuten creada y ejecuta los siguientes comandos para instalar Hadoop y configurar los no-dos del cluacutester para utilizar SSH sin contrasentildea Ten en cuenta que tendraacutes que iniciar sesioacuten en cada nodo esclavo desde el nodo maestro para configurar completamente el inicio de se-sioacuten sin contrasentildea

$ cd

$ ssh-keygen -t rsa -P ldquordquo

$ cat $HOMEsshid_rsapub gtgt $HOMEsshauthorized_

keys

$ ssh hduserlocalhost

$ exit

$ ssh hdusermaster

$ exit

$ ssh-copy-id hduserslave1

$ ssh hduserslave1

$ exit

$ ssh-copy-id hduserslave2

$ ssh hduserslave2

$ exit

$ ssh-copy-id hduserslave3

$ ssh hduserslave3

$ exit

$ cd opt

$ sudo wget httpdiybigdatanetdownloads

hadoophadoop-272armhftargz

$ sudo tar xzf hadoop-272armhftargz

$ sudo chown -R hduserhadoop hadoop-272

$ cd usrlocal

$ sudo ln -s opthadoop-272 hadoop

$ cd usrlocalhadoop

Ahora tenemos que crear los archivos de configuracioacuten para Hadoop Por comodidad ya he creado estos archivos que se de-ben instalar en el directorio usrlocalhadoopetchadoop y los he colocado a mi repositorio GitHub en httpbitly2bBehj4

Estos archivos de configuracioacuten tienen una configuracioacuten de cluacutester similar a la descrita en mi anterior artiacuteculo Es po-sible que tengas que modificarlos si has desarrollado un cluacutester diferente Ahora que el software Hadoop estaacute configurado en el nodo maestro lo vamos a copiar en los nodos esclavos

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

HADOOP FILE SYSTEM

ODROID MAGAZINE 19

estro coacutepialo a los esclavos de tu cluacutester

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo -l root

ldquomkdir -p optspark-162-bin-hadoop26rdquo

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave1opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave2opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquochown -R hduserhadoop

optspark-162-bin-hadoop26rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquoln -s optspark-162-bin-hadoop26

usrlocalsparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquomkdir -p datasparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquochown hduserhadoop datasparkrdquo

Instalar Jupyter NotebookLa instalacioacuten Jupyter Notebook es relativamente simple en

comparacioacuten con lo que hemos hecho hasta ahora Ugravenicamente en el nodo maestro ejecuta los siguientes comandos

$ sudo mkdir datajupyter

$ sudo chown -R hduserhadoop datajupyter

$ mkdir ~notebooks

$ sudo pip3 install jupyter

Para hacer visualizaciones en un notebook necesitamos compilar e instalar matplotlib Tambieacuten es uacutetil tener instalado numpy para facilitar la informaacutetica cientiacutefica a traveacutes de Py-thon Ten en cuenta que esto va a llevar un tiempo

$ sudo apt-get build-dep matplotlib

$ sudo pip3 install matplotlib

$ sudo pip3 install numpy

Ejecutar Hadoop Spark y Jupyter

Para logar que todo se ejecute usa los siguientes comandos

$ usrlocalhadoopsbinstart-dfssh

$ usrlocalsparksbinstart-allsh

$ XDG_RUNTIME_DIR=rdquodatajupyterrdquo PYSPARK_DRIVER_

PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=rdquonotebook

--no-browser --port=7777 --notebook-dir=homehduser

notebooksrdquo usrlocalsparkbinpyspark --packages

comdatabricksspark-csv_210110 --master spark

master7077

Puedes optar por convertir esta secuencia de comandos en un script bash independiente o simplemente puede crear un alias para este uacuteltimo comando Te dejo elegir cualquiera de

estas opciones como ejercicio Una vez en funcionamiento in-troduce en el navegador del ordenador httpltdireccioacuten IP del cluacutestergt7777 deberiacutea ver la interfaz Jupyter

Vamos a ejecutar una tarea de recuento de palabras en

nuestro sistema big data de XU4 Crea un nuevo notebook Python 3 haciendo clic en el botoacuten New en la parte superior derecha de la paacutegina web Ahora veraacute un espacio vaciacuteo como el que se muestra en la Figura anterior

Abre una nueva sesioacuten SSH en el nodo principal y antildeade lo siguiente

$ wget httpnorvigcombigtxt

$ hdfs dfs -mkdir usermichael

HADOOP FILE SYSTEM

Paacutegina web principal de Jupyter

Bloc de notas de Jupyter

ODROID MAGAZINE 20

$ hdfs dfs -put bigtxt usermichaelbigtxt

$ hdfs dfs -ls usermichael

Vuelve al notebook recieacuten creado antildeade el siguiente coacutedigo Python en la primera celda

from operator import add

blog_data = sctextFile(lsquohdfsmaster9000user

michaelbigtxtrsquo)cache()

counts = blog_dataflatMap(lambda x xsplit(lsquo lsquo))

map(lambda x (x 1))reduceByKey(add)

A continuacioacuten pulsa Shift + Enter para iniciar el trata-miento de las celdas Una nueva celda apareceraacute en el notebook de Jupyter Teacutecnicamente todaviacutea no ha sucedido nada dentro de Spark excepto crear un plan de consulta para ejecutar el recuento de palabras frente al conjunto de datos del blog que ya hemos colocado en HDFS Spark no hace ninguacuten caacutelculo hasta que no haga falta materializar los resultados La forma maacutes comuacuten de hacerlo es mostrar una parte de los resultados En la siguiente celda del notebook introduzca el coacutedigo y pulse Shift-Enter

countstake(100)

Veraacutes un asterisco junto a la celda en la que hemos intro-ducido el coacutedigo anterior Este asterisco seguiraacute activo mien-tras Spark esteacute haciendo sus caacutelculos Si vuelves a la sesioacuten de terminal en la que lanzaste el software Jupyter veraacutes el regis-tro log de Spark realizando sus caacutelculos Por otra parte si es-

cribes en tu navegador web la direccioacuten httpltdireccioacuten IP del cluacutestergt4040 puedes analizar el estado interno de Spark uti-lizando su interfaz de aplicacioacuten Es probable que escuches a-rrancar el ventilador de la CPU del XU4 durante los caacutelculos

Cuando los caacutelculos finalicen los primeros 100 valores de

los resultados se mostraraacuten en el notebook de JupyterCambia el nombre del notebook haciendo clic en la cadena

ldquo Untitledrdquo junto al logo de Jupyter en la parte superior izqui-erda del notebook Puede seguir trabajando con los datos antildea-diendo maacutes celdas que contengan maacutes coacutedigo python Spark Hay muchos y excelentes recursos en la web para aprender maacutes sobre Apache Spark incluyendo httpsparkapacheorg

Para guardar y cerrar el notebook haz clic en el menuacute ldquoFilerdquo en la paacutegina y selecciona ldquoClose and Haltrdquo Para finalizar Jupy-ter pulsa Control-C dos veces en la ventana de terminal desde el cual se lanzoacute Una vez que el software Juypter se detenga puedes apagar Spark y HDFS con

$ usrlocalsparksbinstop-allsh

$ usrlocalhadoopsbinstop-dfssh

Lecturas recomendadasSi deseas aprender maacutes sobre los temas tratados en este artiacute-

culo puedes utilizar los siguientes recursos para obtener maacutes informacioacuten sobre el software asiacute como mis conocimientos so-bre Big Data

Mi blog httpdiybigdatanetApache Hadoop httphadoopapacheorgApache Spark httpsparkapacheorgJupyter Notebook httpjupyterorg

HADOOP FILE SYSTEM

Los caacutelculos del recuento de palabras se han completado

ODROID MAGAZINE 21

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 16: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

en su marco lo desmontamos retirando las cubiertas superior e inferior Elegimos el color rojo para la fibra de impresioacuten 3D para que el ordenador fuese maacutes divertido y llamativo 30 horas maacutes tarde teniacuteamos impresas todas las partes del chasis Las pegamos y atornillamos el panel LCD y el teclado dentro de sus respectivos marcos El siguiente paso fue colocar todas las placas y moacutedulos en el interior del chasis con firmeza las in-sertamos en el plexiglaacutes

El plexiglaacutes fue cortado para que encajara en el espacio crea-do en la etapa de disentildeo CAD para cada marco De esta forma todo el mundo puede apreciar el engranaje del portaacutetil lo cual supone una gran ventaja a la hora de ensentildear informaacutetica El paso final fue cablear todo siguiendo el diagrama por bloques

Acabamos teniendo un ordenador portaacutetil potente y fiable iexclMis estudiantes de la escuela se sorprendieron cuando vieron este portaacutetil poco convencional por primera vez

BateriacuteaAhora disponiacuteamos de un nuevo ordenador portaacutetil pero

sin ninguacuten tipo de bateriacutea recargable de modo que maacutes o me-nos es inuacutetil En primer lugar necesitaacutebamos estimar la ca-pacidad de la bateriacutea necesaria Para tal fin hicimos algunas pruebas de medicioacuten del amperaje en diferentes condiciones de uso El maacuteximo amperaje se alcanza cuando el C2 se pone en marcha con un pico de 11A Durante el funcionamiento nor-mal se mantiene justo por debajo de 1A con un dongle USB WIFI un moacutedulo RTC un adaptador de ratoacuten inalaacutembrico y el moacutedulo Bluetooth conectados El consumo total de energiacutea del ordenador portaacutetil es de alrededor de unos 12W

Mi hijo rescatoacute una vieja bateriacutea de litio recargable de un ordenador portaacutetil de Lenovo (L412) y pudo extraerle las nueve ceacutelulas disponibles dentro del paquete de bateriacuteas La mayoriacutea de las veces este tipo de paquetes de bateriacuteas ya no funcionan no por la propia bateriacutea sino debido a un defectuoso controlador de bateriacuteas integrado Utilizamos 3 y las conectamos en serie Esto nos proporcionaba 3 x 37 V un total de 111 voltios cuando la bateriacutea estaacute casi descargada y maacutes de 12V cuando estaacute completa-mente cargada La placa controladora LCD funciona sin ninguacuten problema a 11V Cada ceacutelula tiene 2200 mAh de capacidad de modo que la autonomiacutea del portaacutetil se acerca a las 2 horas Esto era suficiente para alcanzar el objetivo que nos propusimos al inicio del proyecto

Para volver a cargar las 3 ceacutelulas utilizamos un banco de bate-riacuteas solar de 12V conectada a traveacutes de un moacutedulo de sobreali-mentacioacuten que estaacute reajustado a un liacutemite de corriente de 126 V y 1A Con nuestro modelo particular de bateriacuteas podemos ajustar tanto la tensioacuten de salida como la corriente Cuando es-

PORTATIL ODROID

Clips de LCD

marco del teclado

Chasis completamente montado

ODROID MAGAZINE 16

cribiacute este artiacuteculo la bateriacutea auacuten no estaba colocada dentro del RedTop pero la teniacuteamos fuera para realizar pruebas maacutes ex-haustivas Una vez que completemos las pruebas colocaremos las 3 celdas debajo del teclado en un espacio reservado para tal fin

MaterialesEsto es lo que utiliceacute para montar mi portaacutetil ODROID-C1

Panel LCD HDMI-VGA de 133rdquo con audio httprebaycomAYZ5JU

Teclado mecaacutenico Zalman httpwwwamazonfrdpB00LHSPCS4

Cable OTG USB httpwwwamazonfrdpB007MNZ8VY

Transformador 12V-5V 3A httpwwwamazonfrdpB00JGFEQLE

Moacutedulo Bluetooth HC05 maestroesclavo httpswwwamazonfrdpB013STJSES

Moacutedulo RTC PCF8563 httpwwwamazonfrdpB01DB8JECC

Mini altavoz httprebaycombwOCZv

Impresora 3D httpwwwdagomafrproduitimprimante-dis-

covery200

Filamentos PLA para impresora 3D httpwwwamazonfrdpB00UMV7ANM

Clavijas de corriente DC de 55mm httpwwwamazonfrdpB00O1Y1X70

Interruptor de alimentacioacuten httpwwwamazonfrdpB00HUHBS1Q

Pack de bateriacuteas de ordenador portaacutetil como esta httpwwwamazonfrdpB00TVOC55Y

Conversor de sobrealimentacioacuten (4V-12V) httprebaycomw3FgNH

Varios tornillos arandelas y cables05m de PlexiglassSuper glue

PORTATIL ODROID

La placa controladora de la LCD

JUEGOS ANDROID

PAC-MAn 256iquestun juEGO CLASICO iquestunA nuEvA PERSPECTIvA DEL GEnERO DEL CORREDOR In-TERMInAbLE iexclDESCubRELOpor Bruno Doiche

Suele decirse que los claacutesicos nunca mueren pero algunos pueden quedarse bastante

anticuados Cuando era un nintildeo el Pac-Ma era un juego cuyos graacuteficos y jugabilidad eran totalmente acepta-bles para los estaacutendares de la deacutecada de los 80 A pesar de que todaviacutea se puede disfrutar del original Pac-Man hoy diacutea estaraacutes de acuerdo conmigo en que se queda algo corto en cuanto a funcionalidad incluso si aceptas el reto de jugar al modo aacutercade lo suficiente como para encontrarte con el miacutetico error del nivel 256 que soacutelo los mejores juga-dores de Pac-Man son capaces de ver

Sin embargo en la partida 256 del Pac-Man el error es la principal caracteriacutestica te prosiguen como una ola implacable desde la parte inferior de la pantalla Te hace volver a pensar lo que realmente significa correr por tu supervivencia en un labe-rinto lleno de fantasmas cada uno con su propia personalidad Exige un control muy preciso y pensar muy raacutepido para lograr salir y mantenerte un paso por delante de tus enemigos fantas-mas Ahora no tienes que jugar a los 255 niveles de Pac-Man para llegar a uno de los niveles maacutes elitistas de la historia del juego Puedes instalarlo desde Play Store en

httpbitly2cLaD5q

Un gran juego tan adictivo como lo fue en sus primeros diacuteas arcade

ODROID MAGAZINE 17

book se puede compartir faacutecilmente permitiendo una faacutecil visualizacioacuten en liacutenea y en nuestro caso gestionar la creacioacuten y el enviacuteo de aplicaciones Spark al cluacutester Los notebooks de Jupyter son una forma muy comuacuten de usar Apache Spark ya que permite al usuario centrarse especiacuteficamente en el anaacutelisis de datos en lugar de preocuparse de las herramientas o de la infraestructura que hay detraacutes

Instalar Hadoop File SystemNuestra primera tarea es instalar Java en cada nodo del

cluacutester Instalaremos el uacuteltimo software Java 8 de Oracle EL cual requiere la aceptacioacuten de la licencia durante la instalacioacuten Debido a esto necesitas iniciar sesioacuten en cada nodo de forma independiente y ejecutar el instalador Una vez alliacute crearemos una nueva cuenta de usuario desde la que ejecutaremos todo

$ sudo add-apt-repository ppawebupd8teamjava

$ sudo apt-get update

$ sudo apt-get install oracle-java8-installer

$ sudo apt-get install rsync

$ sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hduser

$ sudo usermod -aG sudo hduser

Ahora necesitamos instalar Hadoop Teacutecnicamente po-driacuteas utilizar la distribucioacuten Hadoop disponibles en el sitio web de Apache pero no estaacute compilada para la CPU ARM v71 de nuestros XU4s Puesto que en su mayor parte es Java es genial ya que se ejecutaraacute sobre JVM que acabamos de instalar en cada nodo Sin embargo hay partes de Hadoop que fueron es-

En el anterior artiacuteculo que escribiacute para ODROID Maga-zine en httpbitly2bHFij7 analice el desarrollo de un cluacutester informaacutetico autoacutenomo con nodos ODROID

XU4 En este artiacuteculo explicaremos coacutemo hacer un buen uso de ese cluacutester instalando Apache Spark y el sistema de ficheros Hadoop asiacute como tambieacuten la forma de acceder a tu cluacutester a traveacutes de la aplicacioacuten web Jupyter

Hadoop File System (HDFS) es uno de los sistemas de ar-chivos distribuidos maacutes populares y maacutes utilizados que existen hoy en diacutea Un sistema de archivos distribuido (DFS) es una aplicacioacuten para cluacutester que agrupa todas las unidades de disco duro dentro de un cluacutester para que puedan ser tratadas como una uacutenica unidad de almacenamiento de cara a sus clientes ex-ternos Utilizar un DFS tiene dos ventajas muy importantes En primer lugar y lo maacutes evidente es que te permite guardar y trabajar con grandes conjuntos de datos que se almacenan en maacutes de un disco duro del cluacutester En segundo lugar un DFS bien disentildeado proporciona mayor resistencia de datos en el nodo o ante fallos de disco mediante la replicacioacuten de bloques de datos en varias unidades del cluacutester En nuestro cluacutester XU4 los discos duros son las tarjetas MicroSD que fueron instaladas y configurada en nuestra anterior guiacutea

Apache Spark es una moderna plataforma de anaacutelisis de Big Data utilizada ampliamente en la industria del anaacutelisis de los grandes voluacutemenes de datos Proporciona herramientas de alto nivel muy simple para manipular y analizar datos ya sea a traveacutes de SQL o mapreduce ademaacutes de usar lenguajes de pro-gramacioacuten comunes tales como Python Scala y Java La pecu-liaridad maacutes significativa de Apache Spark es el uso del fondo de memoria RAM del cluacutester para almacenar objetos de datos intermedios que aceleran significativamente el procesamiento de datos Aunque los 2 GB de RAM integrados en el XU4 po-driacutean parecer un poco austeros en comparacioacuten con las grandes cantidades de memoria en un nodo de un cluacutester industrial hay espacio suficiente para hacer algunas cosas interesantes con Apache Spark

Jupyter Notebook es una aplicacioacuten web que te permite coacute-modamente aprovecharte de diversos lenguajes y plataformas de caacutelculo con tu cluacutester a traveacutes de una interfaz web El note-

InSTALAR HADOOP y SPARK En un CLuSTER ODROID-Xu4por michael Kamprath

HADOOP FILE SYSTEM

ODROID MAGAZINE 18

-l root ldquomkdir -p opthadoop-272rdquo

$ sudo rsync -avxP opthadoop-272

rootslave1opt

$ sudo rsync -avxP opthadoop-272

rootslave2opt

$ sudo rsync -avxP opthadoop-272

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop opthadoop-272rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquoln -s opthadoop-272 usrlocalhadooprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquomkdir -p datahdfstmprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop datahdfsrdquo

El uacuteltimo paso en la instalacioacuten de Hadoop es formatear el nodo como un HDFS

$ usrlocalhadoopbinhdfs namenode -format

Instalar Apache SparkVamos a utilizar un meacutetodo similar al anterior para instalar

Apache Spark En primer lugar vamos a utilizar Python 3 para acceder a Spark y a algunas librerias clave de Python por lo que tendraacutes que iniciar sesioacuten en cada nodo y ejecutar

$ sudo apt-get install python3 python3-pip

$ sudo pip3 install numpy

$ sudo pip3 install urlparse

Despueacutes en el nodo maestro instala Apache Spark

$ cd opt

$ sudo wget httpapacheclazorgspark

spark-162spark-162-bin-hadoop26tgz

$ sudo tar xvzf spark-162-bin-hadoop26tgz

$ sudo chown -R hduserhadoop

spark-162-bin-hadoop26

$ sudo ln -s optspark-162-bin-hadoop26

usrlocalspark

Al igual que en nuestra instalacioacuten de Hadoop necesitas antildeadir algunos archivos de configuracioacuten al directorio usrlo-calchispasconf Puedes localizar los archivos de configuracioacuten necesarios en mi repositorio GitHub (httpbitly2b4GnDU)

Una vez que Spark haya sido configurado en el nodo ma-

critas en C para que se ejecutaran maacutes raacutepido Si una instalacioacuten Hadoop no tiene estas libreriacuteas compiladas en la plataforma en la que estaacute se utilizaraacuten automaacuteticamente las equivalentes en Java por lo que seguiraacute funcionando pero de un modo maacutes lento Para este proyecto he desarrollado una distribucioacuten de la uacuteltima versioacuten de Hadoop para el procesador ARM v71 va-mos a descargar e instalar mi distribucioacuten En el nodo maestro inicia sesioacuten con la cuenta ldquohduserrdquo recieacuten creada y ejecuta los siguientes comandos para instalar Hadoop y configurar los no-dos del cluacutester para utilizar SSH sin contrasentildea Ten en cuenta que tendraacutes que iniciar sesioacuten en cada nodo esclavo desde el nodo maestro para configurar completamente el inicio de se-sioacuten sin contrasentildea

$ cd

$ ssh-keygen -t rsa -P ldquordquo

$ cat $HOMEsshid_rsapub gtgt $HOMEsshauthorized_

keys

$ ssh hduserlocalhost

$ exit

$ ssh hdusermaster

$ exit

$ ssh-copy-id hduserslave1

$ ssh hduserslave1

$ exit

$ ssh-copy-id hduserslave2

$ ssh hduserslave2

$ exit

$ ssh-copy-id hduserslave3

$ ssh hduserslave3

$ exit

$ cd opt

$ sudo wget httpdiybigdatanetdownloads

hadoophadoop-272armhftargz

$ sudo tar xzf hadoop-272armhftargz

$ sudo chown -R hduserhadoop hadoop-272

$ cd usrlocal

$ sudo ln -s opthadoop-272 hadoop

$ cd usrlocalhadoop

Ahora tenemos que crear los archivos de configuracioacuten para Hadoop Por comodidad ya he creado estos archivos que se de-ben instalar en el directorio usrlocalhadoopetchadoop y los he colocado a mi repositorio GitHub en httpbitly2bBehj4

Estos archivos de configuracioacuten tienen una configuracioacuten de cluacutester similar a la descrita en mi anterior artiacuteculo Es po-sible que tengas que modificarlos si has desarrollado un cluacutester diferente Ahora que el software Hadoop estaacute configurado en el nodo maestro lo vamos a copiar en los nodos esclavos

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

HADOOP FILE SYSTEM

ODROID MAGAZINE 19

estro coacutepialo a los esclavos de tu cluacutester

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo -l root

ldquomkdir -p optspark-162-bin-hadoop26rdquo

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave1opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave2opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquochown -R hduserhadoop

optspark-162-bin-hadoop26rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquoln -s optspark-162-bin-hadoop26

usrlocalsparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquomkdir -p datasparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquochown hduserhadoop datasparkrdquo

Instalar Jupyter NotebookLa instalacioacuten Jupyter Notebook es relativamente simple en

comparacioacuten con lo que hemos hecho hasta ahora Ugravenicamente en el nodo maestro ejecuta los siguientes comandos

$ sudo mkdir datajupyter

$ sudo chown -R hduserhadoop datajupyter

$ mkdir ~notebooks

$ sudo pip3 install jupyter

Para hacer visualizaciones en un notebook necesitamos compilar e instalar matplotlib Tambieacuten es uacutetil tener instalado numpy para facilitar la informaacutetica cientiacutefica a traveacutes de Py-thon Ten en cuenta que esto va a llevar un tiempo

$ sudo apt-get build-dep matplotlib

$ sudo pip3 install matplotlib

$ sudo pip3 install numpy

Ejecutar Hadoop Spark y Jupyter

Para logar que todo se ejecute usa los siguientes comandos

$ usrlocalhadoopsbinstart-dfssh

$ usrlocalsparksbinstart-allsh

$ XDG_RUNTIME_DIR=rdquodatajupyterrdquo PYSPARK_DRIVER_

PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=rdquonotebook

--no-browser --port=7777 --notebook-dir=homehduser

notebooksrdquo usrlocalsparkbinpyspark --packages

comdatabricksspark-csv_210110 --master spark

master7077

Puedes optar por convertir esta secuencia de comandos en un script bash independiente o simplemente puede crear un alias para este uacuteltimo comando Te dejo elegir cualquiera de

estas opciones como ejercicio Una vez en funcionamiento in-troduce en el navegador del ordenador httpltdireccioacuten IP del cluacutestergt7777 deberiacutea ver la interfaz Jupyter

Vamos a ejecutar una tarea de recuento de palabras en

nuestro sistema big data de XU4 Crea un nuevo notebook Python 3 haciendo clic en el botoacuten New en la parte superior derecha de la paacutegina web Ahora veraacute un espacio vaciacuteo como el que se muestra en la Figura anterior

Abre una nueva sesioacuten SSH en el nodo principal y antildeade lo siguiente

$ wget httpnorvigcombigtxt

$ hdfs dfs -mkdir usermichael

HADOOP FILE SYSTEM

Paacutegina web principal de Jupyter

Bloc de notas de Jupyter

ODROID MAGAZINE 20

$ hdfs dfs -put bigtxt usermichaelbigtxt

$ hdfs dfs -ls usermichael

Vuelve al notebook recieacuten creado antildeade el siguiente coacutedigo Python en la primera celda

from operator import add

blog_data = sctextFile(lsquohdfsmaster9000user

michaelbigtxtrsquo)cache()

counts = blog_dataflatMap(lambda x xsplit(lsquo lsquo))

map(lambda x (x 1))reduceByKey(add)

A continuacioacuten pulsa Shift + Enter para iniciar el trata-miento de las celdas Una nueva celda apareceraacute en el notebook de Jupyter Teacutecnicamente todaviacutea no ha sucedido nada dentro de Spark excepto crear un plan de consulta para ejecutar el recuento de palabras frente al conjunto de datos del blog que ya hemos colocado en HDFS Spark no hace ninguacuten caacutelculo hasta que no haga falta materializar los resultados La forma maacutes comuacuten de hacerlo es mostrar una parte de los resultados En la siguiente celda del notebook introduzca el coacutedigo y pulse Shift-Enter

countstake(100)

Veraacutes un asterisco junto a la celda en la que hemos intro-ducido el coacutedigo anterior Este asterisco seguiraacute activo mien-tras Spark esteacute haciendo sus caacutelculos Si vuelves a la sesioacuten de terminal en la que lanzaste el software Jupyter veraacutes el regis-tro log de Spark realizando sus caacutelculos Por otra parte si es-

cribes en tu navegador web la direccioacuten httpltdireccioacuten IP del cluacutestergt4040 puedes analizar el estado interno de Spark uti-lizando su interfaz de aplicacioacuten Es probable que escuches a-rrancar el ventilador de la CPU del XU4 durante los caacutelculos

Cuando los caacutelculos finalicen los primeros 100 valores de

los resultados se mostraraacuten en el notebook de JupyterCambia el nombre del notebook haciendo clic en la cadena

ldquo Untitledrdquo junto al logo de Jupyter en la parte superior izqui-erda del notebook Puede seguir trabajando con los datos antildea-diendo maacutes celdas que contengan maacutes coacutedigo python Spark Hay muchos y excelentes recursos en la web para aprender maacutes sobre Apache Spark incluyendo httpsparkapacheorg

Para guardar y cerrar el notebook haz clic en el menuacute ldquoFilerdquo en la paacutegina y selecciona ldquoClose and Haltrdquo Para finalizar Jupy-ter pulsa Control-C dos veces en la ventana de terminal desde el cual se lanzoacute Una vez que el software Juypter se detenga puedes apagar Spark y HDFS con

$ usrlocalsparksbinstop-allsh

$ usrlocalhadoopsbinstop-dfssh

Lecturas recomendadasSi deseas aprender maacutes sobre los temas tratados en este artiacute-

culo puedes utilizar los siguientes recursos para obtener maacutes informacioacuten sobre el software asiacute como mis conocimientos so-bre Big Data

Mi blog httpdiybigdatanetApache Hadoop httphadoopapacheorgApache Spark httpsparkapacheorgJupyter Notebook httpjupyterorg

HADOOP FILE SYSTEM

Los caacutelculos del recuento de palabras se han completado

ODROID MAGAZINE 21

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 17: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

cribiacute este artiacuteculo la bateriacutea auacuten no estaba colocada dentro del RedTop pero la teniacuteamos fuera para realizar pruebas maacutes ex-haustivas Una vez que completemos las pruebas colocaremos las 3 celdas debajo del teclado en un espacio reservado para tal fin

MaterialesEsto es lo que utiliceacute para montar mi portaacutetil ODROID-C1

Panel LCD HDMI-VGA de 133rdquo con audio httprebaycomAYZ5JU

Teclado mecaacutenico Zalman httpwwwamazonfrdpB00LHSPCS4

Cable OTG USB httpwwwamazonfrdpB007MNZ8VY

Transformador 12V-5V 3A httpwwwamazonfrdpB00JGFEQLE

Moacutedulo Bluetooth HC05 maestroesclavo httpswwwamazonfrdpB013STJSES

Moacutedulo RTC PCF8563 httpwwwamazonfrdpB01DB8JECC

Mini altavoz httprebaycombwOCZv

Impresora 3D httpwwwdagomafrproduitimprimante-dis-

covery200

Filamentos PLA para impresora 3D httpwwwamazonfrdpB00UMV7ANM

Clavijas de corriente DC de 55mm httpwwwamazonfrdpB00O1Y1X70

Interruptor de alimentacioacuten httpwwwamazonfrdpB00HUHBS1Q

Pack de bateriacuteas de ordenador portaacutetil como esta httpwwwamazonfrdpB00TVOC55Y

Conversor de sobrealimentacioacuten (4V-12V) httprebaycomw3FgNH

Varios tornillos arandelas y cables05m de PlexiglassSuper glue

PORTATIL ODROID

La placa controladora de la LCD

JUEGOS ANDROID

PAC-MAn 256iquestun juEGO CLASICO iquestunA nuEvA PERSPECTIvA DEL GEnERO DEL CORREDOR In-TERMInAbLE iexclDESCubRELOpor Bruno Doiche

Suele decirse que los claacutesicos nunca mueren pero algunos pueden quedarse bastante

anticuados Cuando era un nintildeo el Pac-Ma era un juego cuyos graacuteficos y jugabilidad eran totalmente acepta-bles para los estaacutendares de la deacutecada de los 80 A pesar de que todaviacutea se puede disfrutar del original Pac-Man hoy diacutea estaraacutes de acuerdo conmigo en que se queda algo corto en cuanto a funcionalidad incluso si aceptas el reto de jugar al modo aacutercade lo suficiente como para encontrarte con el miacutetico error del nivel 256 que soacutelo los mejores juga-dores de Pac-Man son capaces de ver

Sin embargo en la partida 256 del Pac-Man el error es la principal caracteriacutestica te prosiguen como una ola implacable desde la parte inferior de la pantalla Te hace volver a pensar lo que realmente significa correr por tu supervivencia en un labe-rinto lleno de fantasmas cada uno con su propia personalidad Exige un control muy preciso y pensar muy raacutepido para lograr salir y mantenerte un paso por delante de tus enemigos fantas-mas Ahora no tienes que jugar a los 255 niveles de Pac-Man para llegar a uno de los niveles maacutes elitistas de la historia del juego Puedes instalarlo desde Play Store en

httpbitly2cLaD5q

Un gran juego tan adictivo como lo fue en sus primeros diacuteas arcade

ODROID MAGAZINE 17

book se puede compartir faacutecilmente permitiendo una faacutecil visualizacioacuten en liacutenea y en nuestro caso gestionar la creacioacuten y el enviacuteo de aplicaciones Spark al cluacutester Los notebooks de Jupyter son una forma muy comuacuten de usar Apache Spark ya que permite al usuario centrarse especiacuteficamente en el anaacutelisis de datos en lugar de preocuparse de las herramientas o de la infraestructura que hay detraacutes

Instalar Hadoop File SystemNuestra primera tarea es instalar Java en cada nodo del

cluacutester Instalaremos el uacuteltimo software Java 8 de Oracle EL cual requiere la aceptacioacuten de la licencia durante la instalacioacuten Debido a esto necesitas iniciar sesioacuten en cada nodo de forma independiente y ejecutar el instalador Una vez alliacute crearemos una nueva cuenta de usuario desde la que ejecutaremos todo

$ sudo add-apt-repository ppawebupd8teamjava

$ sudo apt-get update

$ sudo apt-get install oracle-java8-installer

$ sudo apt-get install rsync

$ sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hduser

$ sudo usermod -aG sudo hduser

Ahora necesitamos instalar Hadoop Teacutecnicamente po-driacuteas utilizar la distribucioacuten Hadoop disponibles en el sitio web de Apache pero no estaacute compilada para la CPU ARM v71 de nuestros XU4s Puesto que en su mayor parte es Java es genial ya que se ejecutaraacute sobre JVM que acabamos de instalar en cada nodo Sin embargo hay partes de Hadoop que fueron es-

En el anterior artiacuteculo que escribiacute para ODROID Maga-zine en httpbitly2bHFij7 analice el desarrollo de un cluacutester informaacutetico autoacutenomo con nodos ODROID

XU4 En este artiacuteculo explicaremos coacutemo hacer un buen uso de ese cluacutester instalando Apache Spark y el sistema de ficheros Hadoop asiacute como tambieacuten la forma de acceder a tu cluacutester a traveacutes de la aplicacioacuten web Jupyter

Hadoop File System (HDFS) es uno de los sistemas de ar-chivos distribuidos maacutes populares y maacutes utilizados que existen hoy en diacutea Un sistema de archivos distribuido (DFS) es una aplicacioacuten para cluacutester que agrupa todas las unidades de disco duro dentro de un cluacutester para que puedan ser tratadas como una uacutenica unidad de almacenamiento de cara a sus clientes ex-ternos Utilizar un DFS tiene dos ventajas muy importantes En primer lugar y lo maacutes evidente es que te permite guardar y trabajar con grandes conjuntos de datos que se almacenan en maacutes de un disco duro del cluacutester En segundo lugar un DFS bien disentildeado proporciona mayor resistencia de datos en el nodo o ante fallos de disco mediante la replicacioacuten de bloques de datos en varias unidades del cluacutester En nuestro cluacutester XU4 los discos duros son las tarjetas MicroSD que fueron instaladas y configurada en nuestra anterior guiacutea

Apache Spark es una moderna plataforma de anaacutelisis de Big Data utilizada ampliamente en la industria del anaacutelisis de los grandes voluacutemenes de datos Proporciona herramientas de alto nivel muy simple para manipular y analizar datos ya sea a traveacutes de SQL o mapreduce ademaacutes de usar lenguajes de pro-gramacioacuten comunes tales como Python Scala y Java La pecu-liaridad maacutes significativa de Apache Spark es el uso del fondo de memoria RAM del cluacutester para almacenar objetos de datos intermedios que aceleran significativamente el procesamiento de datos Aunque los 2 GB de RAM integrados en el XU4 po-driacutean parecer un poco austeros en comparacioacuten con las grandes cantidades de memoria en un nodo de un cluacutester industrial hay espacio suficiente para hacer algunas cosas interesantes con Apache Spark

Jupyter Notebook es una aplicacioacuten web que te permite coacute-modamente aprovecharte de diversos lenguajes y plataformas de caacutelculo con tu cluacutester a traveacutes de una interfaz web El note-

InSTALAR HADOOP y SPARK En un CLuSTER ODROID-Xu4por michael Kamprath

HADOOP FILE SYSTEM

ODROID MAGAZINE 18

-l root ldquomkdir -p opthadoop-272rdquo

$ sudo rsync -avxP opthadoop-272

rootslave1opt

$ sudo rsync -avxP opthadoop-272

rootslave2opt

$ sudo rsync -avxP opthadoop-272

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop opthadoop-272rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquoln -s opthadoop-272 usrlocalhadooprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquomkdir -p datahdfstmprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop datahdfsrdquo

El uacuteltimo paso en la instalacioacuten de Hadoop es formatear el nodo como un HDFS

$ usrlocalhadoopbinhdfs namenode -format

Instalar Apache SparkVamos a utilizar un meacutetodo similar al anterior para instalar

Apache Spark En primer lugar vamos a utilizar Python 3 para acceder a Spark y a algunas librerias clave de Python por lo que tendraacutes que iniciar sesioacuten en cada nodo y ejecutar

$ sudo apt-get install python3 python3-pip

$ sudo pip3 install numpy

$ sudo pip3 install urlparse

Despueacutes en el nodo maestro instala Apache Spark

$ cd opt

$ sudo wget httpapacheclazorgspark

spark-162spark-162-bin-hadoop26tgz

$ sudo tar xvzf spark-162-bin-hadoop26tgz

$ sudo chown -R hduserhadoop

spark-162-bin-hadoop26

$ sudo ln -s optspark-162-bin-hadoop26

usrlocalspark

Al igual que en nuestra instalacioacuten de Hadoop necesitas antildeadir algunos archivos de configuracioacuten al directorio usrlo-calchispasconf Puedes localizar los archivos de configuracioacuten necesarios en mi repositorio GitHub (httpbitly2b4GnDU)

Una vez que Spark haya sido configurado en el nodo ma-

critas en C para que se ejecutaran maacutes raacutepido Si una instalacioacuten Hadoop no tiene estas libreriacuteas compiladas en la plataforma en la que estaacute se utilizaraacuten automaacuteticamente las equivalentes en Java por lo que seguiraacute funcionando pero de un modo maacutes lento Para este proyecto he desarrollado una distribucioacuten de la uacuteltima versioacuten de Hadoop para el procesador ARM v71 va-mos a descargar e instalar mi distribucioacuten En el nodo maestro inicia sesioacuten con la cuenta ldquohduserrdquo recieacuten creada y ejecuta los siguientes comandos para instalar Hadoop y configurar los no-dos del cluacutester para utilizar SSH sin contrasentildea Ten en cuenta que tendraacutes que iniciar sesioacuten en cada nodo esclavo desde el nodo maestro para configurar completamente el inicio de se-sioacuten sin contrasentildea

$ cd

$ ssh-keygen -t rsa -P ldquordquo

$ cat $HOMEsshid_rsapub gtgt $HOMEsshauthorized_

keys

$ ssh hduserlocalhost

$ exit

$ ssh hdusermaster

$ exit

$ ssh-copy-id hduserslave1

$ ssh hduserslave1

$ exit

$ ssh-copy-id hduserslave2

$ ssh hduserslave2

$ exit

$ ssh-copy-id hduserslave3

$ ssh hduserslave3

$ exit

$ cd opt

$ sudo wget httpdiybigdatanetdownloads

hadoophadoop-272armhftargz

$ sudo tar xzf hadoop-272armhftargz

$ sudo chown -R hduserhadoop hadoop-272

$ cd usrlocal

$ sudo ln -s opthadoop-272 hadoop

$ cd usrlocalhadoop

Ahora tenemos que crear los archivos de configuracioacuten para Hadoop Por comodidad ya he creado estos archivos que se de-ben instalar en el directorio usrlocalhadoopetchadoop y los he colocado a mi repositorio GitHub en httpbitly2bBehj4

Estos archivos de configuracioacuten tienen una configuracioacuten de cluacutester similar a la descrita en mi anterior artiacuteculo Es po-sible que tengas que modificarlos si has desarrollado un cluacutester diferente Ahora que el software Hadoop estaacute configurado en el nodo maestro lo vamos a copiar en los nodos esclavos

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

HADOOP FILE SYSTEM

ODROID MAGAZINE 19

estro coacutepialo a los esclavos de tu cluacutester

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo -l root

ldquomkdir -p optspark-162-bin-hadoop26rdquo

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave1opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave2opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquochown -R hduserhadoop

optspark-162-bin-hadoop26rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquoln -s optspark-162-bin-hadoop26

usrlocalsparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquomkdir -p datasparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquochown hduserhadoop datasparkrdquo

Instalar Jupyter NotebookLa instalacioacuten Jupyter Notebook es relativamente simple en

comparacioacuten con lo que hemos hecho hasta ahora Ugravenicamente en el nodo maestro ejecuta los siguientes comandos

$ sudo mkdir datajupyter

$ sudo chown -R hduserhadoop datajupyter

$ mkdir ~notebooks

$ sudo pip3 install jupyter

Para hacer visualizaciones en un notebook necesitamos compilar e instalar matplotlib Tambieacuten es uacutetil tener instalado numpy para facilitar la informaacutetica cientiacutefica a traveacutes de Py-thon Ten en cuenta que esto va a llevar un tiempo

$ sudo apt-get build-dep matplotlib

$ sudo pip3 install matplotlib

$ sudo pip3 install numpy

Ejecutar Hadoop Spark y Jupyter

Para logar que todo se ejecute usa los siguientes comandos

$ usrlocalhadoopsbinstart-dfssh

$ usrlocalsparksbinstart-allsh

$ XDG_RUNTIME_DIR=rdquodatajupyterrdquo PYSPARK_DRIVER_

PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=rdquonotebook

--no-browser --port=7777 --notebook-dir=homehduser

notebooksrdquo usrlocalsparkbinpyspark --packages

comdatabricksspark-csv_210110 --master spark

master7077

Puedes optar por convertir esta secuencia de comandos en un script bash independiente o simplemente puede crear un alias para este uacuteltimo comando Te dejo elegir cualquiera de

estas opciones como ejercicio Una vez en funcionamiento in-troduce en el navegador del ordenador httpltdireccioacuten IP del cluacutestergt7777 deberiacutea ver la interfaz Jupyter

Vamos a ejecutar una tarea de recuento de palabras en

nuestro sistema big data de XU4 Crea un nuevo notebook Python 3 haciendo clic en el botoacuten New en la parte superior derecha de la paacutegina web Ahora veraacute un espacio vaciacuteo como el que se muestra en la Figura anterior

Abre una nueva sesioacuten SSH en el nodo principal y antildeade lo siguiente

$ wget httpnorvigcombigtxt

$ hdfs dfs -mkdir usermichael

HADOOP FILE SYSTEM

Paacutegina web principal de Jupyter

Bloc de notas de Jupyter

ODROID MAGAZINE 20

$ hdfs dfs -put bigtxt usermichaelbigtxt

$ hdfs dfs -ls usermichael

Vuelve al notebook recieacuten creado antildeade el siguiente coacutedigo Python en la primera celda

from operator import add

blog_data = sctextFile(lsquohdfsmaster9000user

michaelbigtxtrsquo)cache()

counts = blog_dataflatMap(lambda x xsplit(lsquo lsquo))

map(lambda x (x 1))reduceByKey(add)

A continuacioacuten pulsa Shift + Enter para iniciar el trata-miento de las celdas Una nueva celda apareceraacute en el notebook de Jupyter Teacutecnicamente todaviacutea no ha sucedido nada dentro de Spark excepto crear un plan de consulta para ejecutar el recuento de palabras frente al conjunto de datos del blog que ya hemos colocado en HDFS Spark no hace ninguacuten caacutelculo hasta que no haga falta materializar los resultados La forma maacutes comuacuten de hacerlo es mostrar una parte de los resultados En la siguiente celda del notebook introduzca el coacutedigo y pulse Shift-Enter

countstake(100)

Veraacutes un asterisco junto a la celda en la que hemos intro-ducido el coacutedigo anterior Este asterisco seguiraacute activo mien-tras Spark esteacute haciendo sus caacutelculos Si vuelves a la sesioacuten de terminal en la que lanzaste el software Jupyter veraacutes el regis-tro log de Spark realizando sus caacutelculos Por otra parte si es-

cribes en tu navegador web la direccioacuten httpltdireccioacuten IP del cluacutestergt4040 puedes analizar el estado interno de Spark uti-lizando su interfaz de aplicacioacuten Es probable que escuches a-rrancar el ventilador de la CPU del XU4 durante los caacutelculos

Cuando los caacutelculos finalicen los primeros 100 valores de

los resultados se mostraraacuten en el notebook de JupyterCambia el nombre del notebook haciendo clic en la cadena

ldquo Untitledrdquo junto al logo de Jupyter en la parte superior izqui-erda del notebook Puede seguir trabajando con los datos antildea-diendo maacutes celdas que contengan maacutes coacutedigo python Spark Hay muchos y excelentes recursos en la web para aprender maacutes sobre Apache Spark incluyendo httpsparkapacheorg

Para guardar y cerrar el notebook haz clic en el menuacute ldquoFilerdquo en la paacutegina y selecciona ldquoClose and Haltrdquo Para finalizar Jupy-ter pulsa Control-C dos veces en la ventana de terminal desde el cual se lanzoacute Una vez que el software Juypter se detenga puedes apagar Spark y HDFS con

$ usrlocalsparksbinstop-allsh

$ usrlocalhadoopsbinstop-dfssh

Lecturas recomendadasSi deseas aprender maacutes sobre los temas tratados en este artiacute-

culo puedes utilizar los siguientes recursos para obtener maacutes informacioacuten sobre el software asiacute como mis conocimientos so-bre Big Data

Mi blog httpdiybigdatanetApache Hadoop httphadoopapacheorgApache Spark httpsparkapacheorgJupyter Notebook httpjupyterorg

HADOOP FILE SYSTEM

Los caacutelculos del recuento de palabras se han completado

ODROID MAGAZINE 21

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 18: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

book se puede compartir faacutecilmente permitiendo una faacutecil visualizacioacuten en liacutenea y en nuestro caso gestionar la creacioacuten y el enviacuteo de aplicaciones Spark al cluacutester Los notebooks de Jupyter son una forma muy comuacuten de usar Apache Spark ya que permite al usuario centrarse especiacuteficamente en el anaacutelisis de datos en lugar de preocuparse de las herramientas o de la infraestructura que hay detraacutes

Instalar Hadoop File SystemNuestra primera tarea es instalar Java en cada nodo del

cluacutester Instalaremos el uacuteltimo software Java 8 de Oracle EL cual requiere la aceptacioacuten de la licencia durante la instalacioacuten Debido a esto necesitas iniciar sesioacuten en cada nodo de forma independiente y ejecutar el instalador Una vez alliacute crearemos una nueva cuenta de usuario desde la que ejecutaremos todo

$ sudo add-apt-repository ppawebupd8teamjava

$ sudo apt-get update

$ sudo apt-get install oracle-java8-installer

$ sudo apt-get install rsync

$ sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hduser

$ sudo usermod -aG sudo hduser

Ahora necesitamos instalar Hadoop Teacutecnicamente po-driacuteas utilizar la distribucioacuten Hadoop disponibles en el sitio web de Apache pero no estaacute compilada para la CPU ARM v71 de nuestros XU4s Puesto que en su mayor parte es Java es genial ya que se ejecutaraacute sobre JVM que acabamos de instalar en cada nodo Sin embargo hay partes de Hadoop que fueron es-

En el anterior artiacuteculo que escribiacute para ODROID Maga-zine en httpbitly2bHFij7 analice el desarrollo de un cluacutester informaacutetico autoacutenomo con nodos ODROID

XU4 En este artiacuteculo explicaremos coacutemo hacer un buen uso de ese cluacutester instalando Apache Spark y el sistema de ficheros Hadoop asiacute como tambieacuten la forma de acceder a tu cluacutester a traveacutes de la aplicacioacuten web Jupyter

Hadoop File System (HDFS) es uno de los sistemas de ar-chivos distribuidos maacutes populares y maacutes utilizados que existen hoy en diacutea Un sistema de archivos distribuido (DFS) es una aplicacioacuten para cluacutester que agrupa todas las unidades de disco duro dentro de un cluacutester para que puedan ser tratadas como una uacutenica unidad de almacenamiento de cara a sus clientes ex-ternos Utilizar un DFS tiene dos ventajas muy importantes En primer lugar y lo maacutes evidente es que te permite guardar y trabajar con grandes conjuntos de datos que se almacenan en maacutes de un disco duro del cluacutester En segundo lugar un DFS bien disentildeado proporciona mayor resistencia de datos en el nodo o ante fallos de disco mediante la replicacioacuten de bloques de datos en varias unidades del cluacutester En nuestro cluacutester XU4 los discos duros son las tarjetas MicroSD que fueron instaladas y configurada en nuestra anterior guiacutea

Apache Spark es una moderna plataforma de anaacutelisis de Big Data utilizada ampliamente en la industria del anaacutelisis de los grandes voluacutemenes de datos Proporciona herramientas de alto nivel muy simple para manipular y analizar datos ya sea a traveacutes de SQL o mapreduce ademaacutes de usar lenguajes de pro-gramacioacuten comunes tales como Python Scala y Java La pecu-liaridad maacutes significativa de Apache Spark es el uso del fondo de memoria RAM del cluacutester para almacenar objetos de datos intermedios que aceleran significativamente el procesamiento de datos Aunque los 2 GB de RAM integrados en el XU4 po-driacutean parecer un poco austeros en comparacioacuten con las grandes cantidades de memoria en un nodo de un cluacutester industrial hay espacio suficiente para hacer algunas cosas interesantes con Apache Spark

Jupyter Notebook es una aplicacioacuten web que te permite coacute-modamente aprovecharte de diversos lenguajes y plataformas de caacutelculo con tu cluacutester a traveacutes de una interfaz web El note-

InSTALAR HADOOP y SPARK En un CLuSTER ODROID-Xu4por michael Kamprath

HADOOP FILE SYSTEM

ODROID MAGAZINE 18

-l root ldquomkdir -p opthadoop-272rdquo

$ sudo rsync -avxP opthadoop-272

rootslave1opt

$ sudo rsync -avxP opthadoop-272

rootslave2opt

$ sudo rsync -avxP opthadoop-272

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop opthadoop-272rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquoln -s opthadoop-272 usrlocalhadooprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquomkdir -p datahdfstmprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop datahdfsrdquo

El uacuteltimo paso en la instalacioacuten de Hadoop es formatear el nodo como un HDFS

$ usrlocalhadoopbinhdfs namenode -format

Instalar Apache SparkVamos a utilizar un meacutetodo similar al anterior para instalar

Apache Spark En primer lugar vamos a utilizar Python 3 para acceder a Spark y a algunas librerias clave de Python por lo que tendraacutes que iniciar sesioacuten en cada nodo y ejecutar

$ sudo apt-get install python3 python3-pip

$ sudo pip3 install numpy

$ sudo pip3 install urlparse

Despueacutes en el nodo maestro instala Apache Spark

$ cd opt

$ sudo wget httpapacheclazorgspark

spark-162spark-162-bin-hadoop26tgz

$ sudo tar xvzf spark-162-bin-hadoop26tgz

$ sudo chown -R hduserhadoop

spark-162-bin-hadoop26

$ sudo ln -s optspark-162-bin-hadoop26

usrlocalspark

Al igual que en nuestra instalacioacuten de Hadoop necesitas antildeadir algunos archivos de configuracioacuten al directorio usrlo-calchispasconf Puedes localizar los archivos de configuracioacuten necesarios en mi repositorio GitHub (httpbitly2b4GnDU)

Una vez que Spark haya sido configurado en el nodo ma-

critas en C para que se ejecutaran maacutes raacutepido Si una instalacioacuten Hadoop no tiene estas libreriacuteas compiladas en la plataforma en la que estaacute se utilizaraacuten automaacuteticamente las equivalentes en Java por lo que seguiraacute funcionando pero de un modo maacutes lento Para este proyecto he desarrollado una distribucioacuten de la uacuteltima versioacuten de Hadoop para el procesador ARM v71 va-mos a descargar e instalar mi distribucioacuten En el nodo maestro inicia sesioacuten con la cuenta ldquohduserrdquo recieacuten creada y ejecuta los siguientes comandos para instalar Hadoop y configurar los no-dos del cluacutester para utilizar SSH sin contrasentildea Ten en cuenta que tendraacutes que iniciar sesioacuten en cada nodo esclavo desde el nodo maestro para configurar completamente el inicio de se-sioacuten sin contrasentildea

$ cd

$ ssh-keygen -t rsa -P ldquordquo

$ cat $HOMEsshid_rsapub gtgt $HOMEsshauthorized_

keys

$ ssh hduserlocalhost

$ exit

$ ssh hdusermaster

$ exit

$ ssh-copy-id hduserslave1

$ ssh hduserslave1

$ exit

$ ssh-copy-id hduserslave2

$ ssh hduserslave2

$ exit

$ ssh-copy-id hduserslave3

$ ssh hduserslave3

$ exit

$ cd opt

$ sudo wget httpdiybigdatanetdownloads

hadoophadoop-272armhftargz

$ sudo tar xzf hadoop-272armhftargz

$ sudo chown -R hduserhadoop hadoop-272

$ cd usrlocal

$ sudo ln -s opthadoop-272 hadoop

$ cd usrlocalhadoop

Ahora tenemos que crear los archivos de configuracioacuten para Hadoop Por comodidad ya he creado estos archivos que se de-ben instalar en el directorio usrlocalhadoopetchadoop y los he colocado a mi repositorio GitHub en httpbitly2bBehj4

Estos archivos de configuracioacuten tienen una configuracioacuten de cluacutester similar a la descrita en mi anterior artiacuteculo Es po-sible que tengas que modificarlos si has desarrollado un cluacutester diferente Ahora que el software Hadoop estaacute configurado en el nodo maestro lo vamos a copiar en los nodos esclavos

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

HADOOP FILE SYSTEM

ODROID MAGAZINE 19

estro coacutepialo a los esclavos de tu cluacutester

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo -l root

ldquomkdir -p optspark-162-bin-hadoop26rdquo

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave1opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave2opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquochown -R hduserhadoop

optspark-162-bin-hadoop26rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquoln -s optspark-162-bin-hadoop26

usrlocalsparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquomkdir -p datasparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquochown hduserhadoop datasparkrdquo

Instalar Jupyter NotebookLa instalacioacuten Jupyter Notebook es relativamente simple en

comparacioacuten con lo que hemos hecho hasta ahora Ugravenicamente en el nodo maestro ejecuta los siguientes comandos

$ sudo mkdir datajupyter

$ sudo chown -R hduserhadoop datajupyter

$ mkdir ~notebooks

$ sudo pip3 install jupyter

Para hacer visualizaciones en un notebook necesitamos compilar e instalar matplotlib Tambieacuten es uacutetil tener instalado numpy para facilitar la informaacutetica cientiacutefica a traveacutes de Py-thon Ten en cuenta que esto va a llevar un tiempo

$ sudo apt-get build-dep matplotlib

$ sudo pip3 install matplotlib

$ sudo pip3 install numpy

Ejecutar Hadoop Spark y Jupyter

Para logar que todo se ejecute usa los siguientes comandos

$ usrlocalhadoopsbinstart-dfssh

$ usrlocalsparksbinstart-allsh

$ XDG_RUNTIME_DIR=rdquodatajupyterrdquo PYSPARK_DRIVER_

PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=rdquonotebook

--no-browser --port=7777 --notebook-dir=homehduser

notebooksrdquo usrlocalsparkbinpyspark --packages

comdatabricksspark-csv_210110 --master spark

master7077

Puedes optar por convertir esta secuencia de comandos en un script bash independiente o simplemente puede crear un alias para este uacuteltimo comando Te dejo elegir cualquiera de

estas opciones como ejercicio Una vez en funcionamiento in-troduce en el navegador del ordenador httpltdireccioacuten IP del cluacutestergt7777 deberiacutea ver la interfaz Jupyter

Vamos a ejecutar una tarea de recuento de palabras en

nuestro sistema big data de XU4 Crea un nuevo notebook Python 3 haciendo clic en el botoacuten New en la parte superior derecha de la paacutegina web Ahora veraacute un espacio vaciacuteo como el que se muestra en la Figura anterior

Abre una nueva sesioacuten SSH en el nodo principal y antildeade lo siguiente

$ wget httpnorvigcombigtxt

$ hdfs dfs -mkdir usermichael

HADOOP FILE SYSTEM

Paacutegina web principal de Jupyter

Bloc de notas de Jupyter

ODROID MAGAZINE 20

$ hdfs dfs -put bigtxt usermichaelbigtxt

$ hdfs dfs -ls usermichael

Vuelve al notebook recieacuten creado antildeade el siguiente coacutedigo Python en la primera celda

from operator import add

blog_data = sctextFile(lsquohdfsmaster9000user

michaelbigtxtrsquo)cache()

counts = blog_dataflatMap(lambda x xsplit(lsquo lsquo))

map(lambda x (x 1))reduceByKey(add)

A continuacioacuten pulsa Shift + Enter para iniciar el trata-miento de las celdas Una nueva celda apareceraacute en el notebook de Jupyter Teacutecnicamente todaviacutea no ha sucedido nada dentro de Spark excepto crear un plan de consulta para ejecutar el recuento de palabras frente al conjunto de datos del blog que ya hemos colocado en HDFS Spark no hace ninguacuten caacutelculo hasta que no haga falta materializar los resultados La forma maacutes comuacuten de hacerlo es mostrar una parte de los resultados En la siguiente celda del notebook introduzca el coacutedigo y pulse Shift-Enter

countstake(100)

Veraacutes un asterisco junto a la celda en la que hemos intro-ducido el coacutedigo anterior Este asterisco seguiraacute activo mien-tras Spark esteacute haciendo sus caacutelculos Si vuelves a la sesioacuten de terminal en la que lanzaste el software Jupyter veraacutes el regis-tro log de Spark realizando sus caacutelculos Por otra parte si es-

cribes en tu navegador web la direccioacuten httpltdireccioacuten IP del cluacutestergt4040 puedes analizar el estado interno de Spark uti-lizando su interfaz de aplicacioacuten Es probable que escuches a-rrancar el ventilador de la CPU del XU4 durante los caacutelculos

Cuando los caacutelculos finalicen los primeros 100 valores de

los resultados se mostraraacuten en el notebook de JupyterCambia el nombre del notebook haciendo clic en la cadena

ldquo Untitledrdquo junto al logo de Jupyter en la parte superior izqui-erda del notebook Puede seguir trabajando con los datos antildea-diendo maacutes celdas que contengan maacutes coacutedigo python Spark Hay muchos y excelentes recursos en la web para aprender maacutes sobre Apache Spark incluyendo httpsparkapacheorg

Para guardar y cerrar el notebook haz clic en el menuacute ldquoFilerdquo en la paacutegina y selecciona ldquoClose and Haltrdquo Para finalizar Jupy-ter pulsa Control-C dos veces en la ventana de terminal desde el cual se lanzoacute Una vez que el software Juypter se detenga puedes apagar Spark y HDFS con

$ usrlocalsparksbinstop-allsh

$ usrlocalhadoopsbinstop-dfssh

Lecturas recomendadasSi deseas aprender maacutes sobre los temas tratados en este artiacute-

culo puedes utilizar los siguientes recursos para obtener maacutes informacioacuten sobre el software asiacute como mis conocimientos so-bre Big Data

Mi blog httpdiybigdatanetApache Hadoop httphadoopapacheorgApache Spark httpsparkapacheorgJupyter Notebook httpjupyterorg

HADOOP FILE SYSTEM

Los caacutelculos del recuento de palabras se han completado

ODROID MAGAZINE 21

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 19: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

-l root ldquomkdir -p opthadoop-272rdquo

$ sudo rsync -avxP opthadoop-272

rootslave1opt

$ sudo rsync -avxP opthadoop-272

rootslave2opt

$ sudo rsync -avxP opthadoop-272

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop opthadoop-272rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root

ldquoln -s opthadoop-272 usrlocalhadooprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquomkdir -p datahdfstmprdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root

ldquochown -R hduserhadoop datahdfsrdquo

El uacuteltimo paso en la instalacioacuten de Hadoop es formatear el nodo como un HDFS

$ usrlocalhadoopbinhdfs namenode -format

Instalar Apache SparkVamos a utilizar un meacutetodo similar al anterior para instalar

Apache Spark En primer lugar vamos a utilizar Python 3 para acceder a Spark y a algunas librerias clave de Python por lo que tendraacutes que iniciar sesioacuten en cada nodo y ejecutar

$ sudo apt-get install python3 python3-pip

$ sudo pip3 install numpy

$ sudo pip3 install urlparse

Despueacutes en el nodo maestro instala Apache Spark

$ cd opt

$ sudo wget httpapacheclazorgspark

spark-162spark-162-bin-hadoop26tgz

$ sudo tar xvzf spark-162-bin-hadoop26tgz

$ sudo chown -R hduserhadoop

spark-162-bin-hadoop26

$ sudo ln -s optspark-162-bin-hadoop26

usrlocalspark

Al igual que en nuestra instalacioacuten de Hadoop necesitas antildeadir algunos archivos de configuracioacuten al directorio usrlo-calchispasconf Puedes localizar los archivos de configuracioacuten necesarios en mi repositorio GitHub (httpbitly2b4GnDU)

Una vez que Spark haya sido configurado en el nodo ma-

critas en C para que se ejecutaran maacutes raacutepido Si una instalacioacuten Hadoop no tiene estas libreriacuteas compiladas en la plataforma en la que estaacute se utilizaraacuten automaacuteticamente las equivalentes en Java por lo que seguiraacute funcionando pero de un modo maacutes lento Para este proyecto he desarrollado una distribucioacuten de la uacuteltima versioacuten de Hadoop para el procesador ARM v71 va-mos a descargar e instalar mi distribucioacuten En el nodo maestro inicia sesioacuten con la cuenta ldquohduserrdquo recieacuten creada y ejecuta los siguientes comandos para instalar Hadoop y configurar los no-dos del cluacutester para utilizar SSH sin contrasentildea Ten en cuenta que tendraacutes que iniciar sesioacuten en cada nodo esclavo desde el nodo maestro para configurar completamente el inicio de se-sioacuten sin contrasentildea

$ cd

$ ssh-keygen -t rsa -P ldquordquo

$ cat $HOMEsshid_rsapub gtgt $HOMEsshauthorized_

keys

$ ssh hduserlocalhost

$ exit

$ ssh hdusermaster

$ exit

$ ssh-copy-id hduserslave1

$ ssh hduserslave1

$ exit

$ ssh-copy-id hduserslave2

$ ssh hduserslave2

$ exit

$ ssh-copy-id hduserslave3

$ ssh hduserslave3

$ exit

$ cd opt

$ sudo wget httpdiybigdatanetdownloads

hadoophadoop-272armhftargz

$ sudo tar xzf hadoop-272armhftargz

$ sudo chown -R hduserhadoop hadoop-272

$ cd usrlocal

$ sudo ln -s opthadoop-272 hadoop

$ cd usrlocalhadoop

Ahora tenemos que crear los archivos de configuracioacuten para Hadoop Por comodidad ya he creado estos archivos que se de-ben instalar en el directorio usrlocalhadoopetchadoop y los he colocado a mi repositorio GitHub en httpbitly2bBehj4

Estos archivos de configuracioacuten tienen una configuracioacuten de cluacutester similar a la descrita en mi anterior artiacuteculo Es po-sible que tengas que modificarlos si has desarrollado un cluacutester diferente Ahora que el software Hadoop estaacute configurado en el nodo maestro lo vamos a copiar en los nodos esclavos

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

HADOOP FILE SYSTEM

ODROID MAGAZINE 19

estro coacutepialo a los esclavos de tu cluacutester

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo -l root

ldquomkdir -p optspark-162-bin-hadoop26rdquo

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave1opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave2opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquochown -R hduserhadoop

optspark-162-bin-hadoop26rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquoln -s optspark-162-bin-hadoop26

usrlocalsparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquomkdir -p datasparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquochown hduserhadoop datasparkrdquo

Instalar Jupyter NotebookLa instalacioacuten Jupyter Notebook es relativamente simple en

comparacioacuten con lo que hemos hecho hasta ahora Ugravenicamente en el nodo maestro ejecuta los siguientes comandos

$ sudo mkdir datajupyter

$ sudo chown -R hduserhadoop datajupyter

$ mkdir ~notebooks

$ sudo pip3 install jupyter

Para hacer visualizaciones en un notebook necesitamos compilar e instalar matplotlib Tambieacuten es uacutetil tener instalado numpy para facilitar la informaacutetica cientiacutefica a traveacutes de Py-thon Ten en cuenta que esto va a llevar un tiempo

$ sudo apt-get build-dep matplotlib

$ sudo pip3 install matplotlib

$ sudo pip3 install numpy

Ejecutar Hadoop Spark y Jupyter

Para logar que todo se ejecute usa los siguientes comandos

$ usrlocalhadoopsbinstart-dfssh

$ usrlocalsparksbinstart-allsh

$ XDG_RUNTIME_DIR=rdquodatajupyterrdquo PYSPARK_DRIVER_

PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=rdquonotebook

--no-browser --port=7777 --notebook-dir=homehduser

notebooksrdquo usrlocalsparkbinpyspark --packages

comdatabricksspark-csv_210110 --master spark

master7077

Puedes optar por convertir esta secuencia de comandos en un script bash independiente o simplemente puede crear un alias para este uacuteltimo comando Te dejo elegir cualquiera de

estas opciones como ejercicio Una vez en funcionamiento in-troduce en el navegador del ordenador httpltdireccioacuten IP del cluacutestergt7777 deberiacutea ver la interfaz Jupyter

Vamos a ejecutar una tarea de recuento de palabras en

nuestro sistema big data de XU4 Crea un nuevo notebook Python 3 haciendo clic en el botoacuten New en la parte superior derecha de la paacutegina web Ahora veraacute un espacio vaciacuteo como el que se muestra en la Figura anterior

Abre una nueva sesioacuten SSH en el nodo principal y antildeade lo siguiente

$ wget httpnorvigcombigtxt

$ hdfs dfs -mkdir usermichael

HADOOP FILE SYSTEM

Paacutegina web principal de Jupyter

Bloc de notas de Jupyter

ODROID MAGAZINE 20

$ hdfs dfs -put bigtxt usermichaelbigtxt

$ hdfs dfs -ls usermichael

Vuelve al notebook recieacuten creado antildeade el siguiente coacutedigo Python en la primera celda

from operator import add

blog_data = sctextFile(lsquohdfsmaster9000user

michaelbigtxtrsquo)cache()

counts = blog_dataflatMap(lambda x xsplit(lsquo lsquo))

map(lambda x (x 1))reduceByKey(add)

A continuacioacuten pulsa Shift + Enter para iniciar el trata-miento de las celdas Una nueva celda apareceraacute en el notebook de Jupyter Teacutecnicamente todaviacutea no ha sucedido nada dentro de Spark excepto crear un plan de consulta para ejecutar el recuento de palabras frente al conjunto de datos del blog que ya hemos colocado en HDFS Spark no hace ninguacuten caacutelculo hasta que no haga falta materializar los resultados La forma maacutes comuacuten de hacerlo es mostrar una parte de los resultados En la siguiente celda del notebook introduzca el coacutedigo y pulse Shift-Enter

countstake(100)

Veraacutes un asterisco junto a la celda en la que hemos intro-ducido el coacutedigo anterior Este asterisco seguiraacute activo mien-tras Spark esteacute haciendo sus caacutelculos Si vuelves a la sesioacuten de terminal en la que lanzaste el software Jupyter veraacutes el regis-tro log de Spark realizando sus caacutelculos Por otra parte si es-

cribes en tu navegador web la direccioacuten httpltdireccioacuten IP del cluacutestergt4040 puedes analizar el estado interno de Spark uti-lizando su interfaz de aplicacioacuten Es probable que escuches a-rrancar el ventilador de la CPU del XU4 durante los caacutelculos

Cuando los caacutelculos finalicen los primeros 100 valores de

los resultados se mostraraacuten en el notebook de JupyterCambia el nombre del notebook haciendo clic en la cadena

ldquo Untitledrdquo junto al logo de Jupyter en la parte superior izqui-erda del notebook Puede seguir trabajando con los datos antildea-diendo maacutes celdas que contengan maacutes coacutedigo python Spark Hay muchos y excelentes recursos en la web para aprender maacutes sobre Apache Spark incluyendo httpsparkapacheorg

Para guardar y cerrar el notebook haz clic en el menuacute ldquoFilerdquo en la paacutegina y selecciona ldquoClose and Haltrdquo Para finalizar Jupy-ter pulsa Control-C dos veces en la ventana de terminal desde el cual se lanzoacute Una vez que el software Juypter se detenga puedes apagar Spark y HDFS con

$ usrlocalsparksbinstop-allsh

$ usrlocalhadoopsbinstop-dfssh

Lecturas recomendadasSi deseas aprender maacutes sobre los temas tratados en este artiacute-

culo puedes utilizar los siguientes recursos para obtener maacutes informacioacuten sobre el software asiacute como mis conocimientos so-bre Big Data

Mi blog httpdiybigdatanetApache Hadoop httphadoopapacheorgApache Spark httpsparkapacheorgJupyter Notebook httpjupyterorg

HADOOP FILE SYSTEM

Los caacutelculos del recuento de palabras se han completado

ODROID MAGAZINE 21

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 20: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

estro coacutepialo a los esclavos de tu cluacutester

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo -l root

ldquomkdir -p optspark-162-bin-hadoop26rdquo

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave1opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave2opt

$ sudo rsync -avxP optspark-162-bin-hadoop26

rootslave3opt

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquochown -R hduserhadoop

optspark-162-bin-hadoop26rdquo

$ parallel-ssh -i -H ldquoslave1 slave2 slave3rdquo

-l root ldquoln -s optspark-162-bin-hadoop26

usrlocalsparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquomkdir -p datasparkrdquo

$ parallel-ssh -i -H ldquomaster slave1 slave2 slave3rdquo

-l root ldquochown hduserhadoop datasparkrdquo

Instalar Jupyter NotebookLa instalacioacuten Jupyter Notebook es relativamente simple en

comparacioacuten con lo que hemos hecho hasta ahora Ugravenicamente en el nodo maestro ejecuta los siguientes comandos

$ sudo mkdir datajupyter

$ sudo chown -R hduserhadoop datajupyter

$ mkdir ~notebooks

$ sudo pip3 install jupyter

Para hacer visualizaciones en un notebook necesitamos compilar e instalar matplotlib Tambieacuten es uacutetil tener instalado numpy para facilitar la informaacutetica cientiacutefica a traveacutes de Py-thon Ten en cuenta que esto va a llevar un tiempo

$ sudo apt-get build-dep matplotlib

$ sudo pip3 install matplotlib

$ sudo pip3 install numpy

Ejecutar Hadoop Spark y Jupyter

Para logar que todo se ejecute usa los siguientes comandos

$ usrlocalhadoopsbinstart-dfssh

$ usrlocalsparksbinstart-allsh

$ XDG_RUNTIME_DIR=rdquodatajupyterrdquo PYSPARK_DRIVER_

PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=rdquonotebook

--no-browser --port=7777 --notebook-dir=homehduser

notebooksrdquo usrlocalsparkbinpyspark --packages

comdatabricksspark-csv_210110 --master spark

master7077

Puedes optar por convertir esta secuencia de comandos en un script bash independiente o simplemente puede crear un alias para este uacuteltimo comando Te dejo elegir cualquiera de

estas opciones como ejercicio Una vez en funcionamiento in-troduce en el navegador del ordenador httpltdireccioacuten IP del cluacutestergt7777 deberiacutea ver la interfaz Jupyter

Vamos a ejecutar una tarea de recuento de palabras en

nuestro sistema big data de XU4 Crea un nuevo notebook Python 3 haciendo clic en el botoacuten New en la parte superior derecha de la paacutegina web Ahora veraacute un espacio vaciacuteo como el que se muestra en la Figura anterior

Abre una nueva sesioacuten SSH en el nodo principal y antildeade lo siguiente

$ wget httpnorvigcombigtxt

$ hdfs dfs -mkdir usermichael

HADOOP FILE SYSTEM

Paacutegina web principal de Jupyter

Bloc de notas de Jupyter

ODROID MAGAZINE 20

$ hdfs dfs -put bigtxt usermichaelbigtxt

$ hdfs dfs -ls usermichael

Vuelve al notebook recieacuten creado antildeade el siguiente coacutedigo Python en la primera celda

from operator import add

blog_data = sctextFile(lsquohdfsmaster9000user

michaelbigtxtrsquo)cache()

counts = blog_dataflatMap(lambda x xsplit(lsquo lsquo))

map(lambda x (x 1))reduceByKey(add)

A continuacioacuten pulsa Shift + Enter para iniciar el trata-miento de las celdas Una nueva celda apareceraacute en el notebook de Jupyter Teacutecnicamente todaviacutea no ha sucedido nada dentro de Spark excepto crear un plan de consulta para ejecutar el recuento de palabras frente al conjunto de datos del blog que ya hemos colocado en HDFS Spark no hace ninguacuten caacutelculo hasta que no haga falta materializar los resultados La forma maacutes comuacuten de hacerlo es mostrar una parte de los resultados En la siguiente celda del notebook introduzca el coacutedigo y pulse Shift-Enter

countstake(100)

Veraacutes un asterisco junto a la celda en la que hemos intro-ducido el coacutedigo anterior Este asterisco seguiraacute activo mien-tras Spark esteacute haciendo sus caacutelculos Si vuelves a la sesioacuten de terminal en la que lanzaste el software Jupyter veraacutes el regis-tro log de Spark realizando sus caacutelculos Por otra parte si es-

cribes en tu navegador web la direccioacuten httpltdireccioacuten IP del cluacutestergt4040 puedes analizar el estado interno de Spark uti-lizando su interfaz de aplicacioacuten Es probable que escuches a-rrancar el ventilador de la CPU del XU4 durante los caacutelculos

Cuando los caacutelculos finalicen los primeros 100 valores de

los resultados se mostraraacuten en el notebook de JupyterCambia el nombre del notebook haciendo clic en la cadena

ldquo Untitledrdquo junto al logo de Jupyter en la parte superior izqui-erda del notebook Puede seguir trabajando con los datos antildea-diendo maacutes celdas que contengan maacutes coacutedigo python Spark Hay muchos y excelentes recursos en la web para aprender maacutes sobre Apache Spark incluyendo httpsparkapacheorg

Para guardar y cerrar el notebook haz clic en el menuacute ldquoFilerdquo en la paacutegina y selecciona ldquoClose and Haltrdquo Para finalizar Jupy-ter pulsa Control-C dos veces en la ventana de terminal desde el cual se lanzoacute Una vez que el software Juypter se detenga puedes apagar Spark y HDFS con

$ usrlocalsparksbinstop-allsh

$ usrlocalhadoopsbinstop-dfssh

Lecturas recomendadasSi deseas aprender maacutes sobre los temas tratados en este artiacute-

culo puedes utilizar los siguientes recursos para obtener maacutes informacioacuten sobre el software asiacute como mis conocimientos so-bre Big Data

Mi blog httpdiybigdatanetApache Hadoop httphadoopapacheorgApache Spark httpsparkapacheorgJupyter Notebook httpjupyterorg

HADOOP FILE SYSTEM

Los caacutelculos del recuento de palabras se han completado

ODROID MAGAZINE 21

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 21: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

$ hdfs dfs -put bigtxt usermichaelbigtxt

$ hdfs dfs -ls usermichael

Vuelve al notebook recieacuten creado antildeade el siguiente coacutedigo Python en la primera celda

from operator import add

blog_data = sctextFile(lsquohdfsmaster9000user

michaelbigtxtrsquo)cache()

counts = blog_dataflatMap(lambda x xsplit(lsquo lsquo))

map(lambda x (x 1))reduceByKey(add)

A continuacioacuten pulsa Shift + Enter para iniciar el trata-miento de las celdas Una nueva celda apareceraacute en el notebook de Jupyter Teacutecnicamente todaviacutea no ha sucedido nada dentro de Spark excepto crear un plan de consulta para ejecutar el recuento de palabras frente al conjunto de datos del blog que ya hemos colocado en HDFS Spark no hace ninguacuten caacutelculo hasta que no haga falta materializar los resultados La forma maacutes comuacuten de hacerlo es mostrar una parte de los resultados En la siguiente celda del notebook introduzca el coacutedigo y pulse Shift-Enter

countstake(100)

Veraacutes un asterisco junto a la celda en la que hemos intro-ducido el coacutedigo anterior Este asterisco seguiraacute activo mien-tras Spark esteacute haciendo sus caacutelculos Si vuelves a la sesioacuten de terminal en la que lanzaste el software Jupyter veraacutes el regis-tro log de Spark realizando sus caacutelculos Por otra parte si es-

cribes en tu navegador web la direccioacuten httpltdireccioacuten IP del cluacutestergt4040 puedes analizar el estado interno de Spark uti-lizando su interfaz de aplicacioacuten Es probable que escuches a-rrancar el ventilador de la CPU del XU4 durante los caacutelculos

Cuando los caacutelculos finalicen los primeros 100 valores de

los resultados se mostraraacuten en el notebook de JupyterCambia el nombre del notebook haciendo clic en la cadena

ldquo Untitledrdquo junto al logo de Jupyter en la parte superior izqui-erda del notebook Puede seguir trabajando con los datos antildea-diendo maacutes celdas que contengan maacutes coacutedigo python Spark Hay muchos y excelentes recursos en la web para aprender maacutes sobre Apache Spark incluyendo httpsparkapacheorg

Para guardar y cerrar el notebook haz clic en el menuacute ldquoFilerdquo en la paacutegina y selecciona ldquoClose and Haltrdquo Para finalizar Jupy-ter pulsa Control-C dos veces en la ventana de terminal desde el cual se lanzoacute Una vez que el software Juypter se detenga puedes apagar Spark y HDFS con

$ usrlocalsparksbinstop-allsh

$ usrlocalhadoopsbinstop-dfssh

Lecturas recomendadasSi deseas aprender maacutes sobre los temas tratados en este artiacute-

culo puedes utilizar los siguientes recursos para obtener maacutes informacioacuten sobre el software asiacute como mis conocimientos so-bre Big Data

Mi blog httpdiybigdatanetApache Hadoop httphadoopapacheorgApache Spark httpsparkapacheorgJupyter Notebook httpjupyterorg

HADOOP FILE SYSTEM

Los caacutelculos del recuento de palabras se han completado

ODROID MAGAZINE 21

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 22: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

SCRIPTS PARAbACKuPCOMO MAnTEnER SuS DATOS A SALvO PARA Tu TRAnquILIDADpor Adrian Popa

SCRIPTS DE BACKUP

Has trabajado duro para darle forma a tu sistema y re-solver todos los errores pero sabes que las cosas no du-ran para siempre y puede que tengas que actualizar un

navegador dantildeado o es posible que desee experimentar con un nuevo kernel o paquete beta Para ahorrarte problemas en el futuro iexclsiempre es bueno hacer una copia de seguridad o back-up Sin embargo las copias de seguridad suelen ser una fuente de confusioacuten en los foros y los nuevos usuarios suelen tener dificultades para realizarlas En este artiacuteculo vamos a aprender lo que hay que hacer para mantener seguro tu sistema

Discos particiones y sistemas de archivos

Los expertos en ordenadores no tienen ninguacuten problema para distinguir entre discos particiones y sistemas de ficheros pero vamos a analizarlos para tener un punto de partida comuacuten Un disco generalmente es un dispositivo fiacutesico que almacena los datos en bloques de acceso aleatoriamente En instalaciones maacutes complejas se pueden combinar muacuteltiples discos fiacutesicos en forma de RAID utilizando hardware o software y mostrarlos al sistema operativo como discos virtuales Las particiones son secciones en los discos que normalmente almacena un sistema de archivos Los sistemas de ficheros gestionan coacutemo se alma-cenan los archivos y datos para localizarlos maacutes tarde Para ha-cer una backup de tu sistema ODROID necesitas conservar la informacioacuten de la particioacuten y el contenido de las particiones

Todos los discos empiezan con un bloque de datos de 512 bytes que generalmente contiene el gestor de arranque (para sistemas x86 446 bytes) y el Registro de Arranque Principal de 64B (MBR) que se explica en httpbitly2bMCTUh El

MBR es una tabla con los datos de inicio la extensioacuten y el tipo de particioacuten de tus 4 particiones primarias Estas son las particiones asignadas del 1 al 4 en el kernel de Linux (por ejem-plo sda1-hda4 para un disco llamado sda) El MBR es una es-tructura de datos muy antigua introducida en 1983 de modo que tiene algunas limitaciones La necesidad de utilizar discos cada vez maacutes grandes (gt2 TB) dio lugar a la introduccioacuten de la tabla de particiones GUID (GPT) que reemplaza a MBR en los sistemas maacutes recientes Tienes maacutes informacioacuten en httpbitly2bvb4oL Los ODROIDs pueden utilizar tanto MBR y GPT pero el soporte de arranque estaacute disentildeado como un volu-men MBR por su tamantildeo tan pequentildeo y su simplicidad

Pero tal y como muestra en la figura anterior un disco pue-de tener maacutes de 4 particiones Esto se consigue con un truco - una particioacuten primaria estaacute marcada como ldquoextendidardquo y puede contener tantas particiones loacutegicas como se quiera Linux las representa con nuacutemeros desde 5 hacia adelante (es decir sda5 sda6 y asiacute sucesivamente) La informacioacuten de las particiones loacutegicas se almacena en estructuras similares a MBR denomina-das Extended Boot Record (EBR) httpbitly2bw47Re se parece a una lista enlazada como muestra la siguiente Figura pero que precede a la particioacuten real del disco

Las particiones que se suele ver en los ODROIDs son FAT16FAT32 (vistas como VFAT con el comando mount) y Ext234 Hay otros tipos de particiones que soporta Linux como NTFS XFS y ZFS pero por lo general no son importantes para el proceso de ar-ranque por lo que estan fuera de nuestro aacutembito de actuacioacuten Existen herramientas de co-

Disentildeo de particiones de una imagen con triple de arranque en un C1 Particiones EBR en disco

ODROID MAGAZINE 22

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 23: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

SCRIPTS DE BACKUP

pia de seguridad como BackupPC (httpbitly2bx3J6R) o Clonezilla (httpbitly1Iq2mN7) que soportan maacutes tipos de particiones o hacer copia de seguridad a nivel de archivo Estas mismas herramientas deberiacuteas utilizarlas para respaldar tus da-tos personales tales como archivos imaacutegenes o muacutesica Tam-bieacuten es bueno antes de realizar una copia de seguridad hacer un poco de ldquolimpiezardquo y eliminar las cosas que ya no necesitas como los archivos temporales o procedentes de descargas con el objeto de reducir el tiempo que se tarda en hacer la copia de seguridad y el tamantildeo del archivo de la backup Por ejemplo puedes borrar el cacheacute de paquetes apt descargados$ sudo apt-get clean

Meacutetodos para hacer backupHay unas cuentas formas de hacer una copia de seguridad

de tu tarjeta eMMCSD La maacutes simple de poner en praacutectica es hacer una copia binaria 1 1 de tus datos a un archivo de imagen Para esta tarea puede utilizar herramientas como dd o Win32DiskImager Ten en cuenta que todos los comandos que siguen deben tener la variable $backupDir reemplazada por la ruta del directorio de copia de seguridad deseada que no puede estar en la misma particioacuten de la que estaacutes tratando de hacer copia de seguridad por razones obvias$ sudo dd if=devmmcblk0

of=$backupDirbackupimg bs=1M

En el comando anterior ldquoif rdquo representa ldquoel archivo de entra-dardquo y debe apuntar al dispositivo que representa el disco algo como devmmcblk0 y ldquoofrdquo representa ldquoel archivo de salidardquo donde se escriben los datos El paraacutemetro ldquobsrdquo representa ldquo el tamantildeo del bloquerdquo que significa la cantidad de datos que se leen y se escriben al mismo tiempo Una variante del comando dd es que muestre el progreso utilizando el parametro ldquopvrdquo apt-get install pv

dd if=devmmcblk0 bs=1M |

pv | dd of=$backupDirbackupimg

Restaurar los datos es igual de faacutecil - basta con sustituir los valores ldquoif rdquo y ldquoofrdquo$ sudo dd if=$backupDirbackupimg

of=devmmcblk0 bs=1M

Ten en cuenta que dd hace una copia binaria de tu disco Esto significa que tambieacuten copia el espacio libre de tu disco El archivo de salida por defecto seraacute tan grande como el disco lo que significa que copiar una tarjeta SD de 64 GB de espa-cio lleva mucho tiempo y ocupa mucho espacio La ventaja es que se puede ejecutar maacutes tarde herramientas como PhotoRec (httpbitly1jwXElB) sobre el espacio libre y posiblemente recuperar archivos borrados lo cual es uacutetil cuando analizamos los datos o recuperamos un soporte dantildeado La desventaja es

que la imagen seraacute muy grande y lenta de copiar Puedes uti-lizar dd junto con gzip para reducir un poco el tamantildeo de la imagen antes de escribirla pero no ahorra tiempo dd if=devmmcblk0 bs=1M | gzip -c gt $backupDir

backupimggz

gunzip -c $backupDirbackupimggz | dd of=dev

mmcblk0 bs=1M

Ademaacutes hay que tener en cuenta que en teoriacutea se puede hacer una copia de seguridad con dd en un sistema activo copiaacutendolo mientras que las particiones estaacuten montadas pero hay riesgo de inconsistencia si los archivos cambian mientras se hace la copia de seguridad Lo mejor es hacer una copia de se-guridad offline extrayendo la tarjeta de eMMCSD conectarla a un sistema diferente y hacer la backup sin tener particiones montadas Tambieacuten estaacute el inconveniente de cuando se copia soporte con tamantildeos ligeramente diferentes No todas las tar-jetas de 16GB tiene exactamente el mismo tamantildeo podriacuteas acabar con una particioacuten truncada en el soporte de destino

La utilidad ldquoddrdquo tiene la ventaja de que es muy faacutecil de usar pero para obtener una cierta velocidad en la copia de seguri-dadrestauracioacuten y minimizar el espacio es necesario descom-poner la operacioacuten en varios pasos y evitar backup de espacio vaciacuteo Para ello necesitaraacutes una copia de seguridad del MBR + EBR del gestor de arranque y de las particiones individuales

Puedes hacer trampas y utilizar dd si usas GParted para re-ducir la particioacuten mayor soacutelo al tamantildeo utilizado dd hasta ese tamantildeo luego cambiar el tamantildeo de la particioacuten a su tamantildeo original tras restaurar aunque se trata de un trabajo manual

Restaurar y backup de MBREl MBR y EBR son pequentildeas estructuras de datos y se pu-

eden respaldar faacutecilmente con dd Pero debido a que la posicioacuten de EBR puede variar en el disco deberiacuteas usar una herramienta de particiones para extraer y restaurar los datos MBREBR Di-cha herramienta es sfdisk $ sudo apt-get install sfdisk

$ sudo sfdisk -d devmmcblk0 gt

$backupDirpartition_tabletxt

Para restaurarla maacutes tarde es necesario proporcionar un ar-chivo guardado a fdisk como este$ sudo sfdisk devmmcblk0 lt

$backupDirpartition_tabletxt

Ten en cuenta que sobrescribir el MBR en un disco con las particiones existentes es el equivalente a borrar las particiones ya que el sistema operativo ya no seraacute capaz de encontrar las antiguas particiones iexclasiacute que utiliza las opciones de restaurar con extremo cuidado Esta copia de seguridad se puede realizar en un sistema activo sin riesgos ya que las tablas de particiones

ODROID MAGAZINE 23

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 24: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

SCRIPTS DE BACKUP

no se suelen cambiar durante la ejecucioacuten

Restaurar y backup del gestor de arranque

Los ODROIDs utilizan U-Boot como gestor de arranque tal y como se detalla en la edicioacuten de noviembre 2015 de ODROID Magazine (httpbitly2bA3P9g) U-Boot almacena su coacutedigo y los datos en el espacio no asignado despueacutes del MBR y al prin-cipio de la primera particioacuten Tambieacuten hay algo de coacutedigo del arranque en los primeros 446 bytes del primer sector antes de la tabla de particiones Puesto que el tamantildeo y la estructura de U-Boot pueden diferir entre modelos ODROID lo maacutes seguro es hacer una copia de seguridad binaria de este espacio no asig-nado con dd En primer lugar es necesario averiguar el sector de inicio de la primera particioacuten con sfdisk

$ sudo sfdisk -l devmmcblk0

Tal y como se indica en la figura anterior la primera par-ticioacuten (loop0p1) empieza en el offset 49152 asiacute que necesita-mos copiar todo hasta e incluyendo el sector 49151 El paraacute-metro bs (tamantildeo de bloque) debe coincidir con lo que sfdisk informoacute en la liacutenea ldquoUnitsrdquo$ sudo dd if=devmmcblk0

of=$backupDirbootloaderbin bs=512 count=49151

Ten en cuenta que el comando dd tambieacuten copia el MBR que es el sector 0 Para restaurar el gestor de arranque y pasar por alto la restauracioacuten de la tabla de particiones puedes utilizar el siguiente comando$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=512 skip=1 seek=1

Tambieacuten debes restablecer el coacutedigo de arranque desde el primer sector$ sudo dd if=$backupDirbootloaderbin

of=devmmcblk0 bs=446 count=1

Para restaurar la tabla de particiones no incluyas los paraacute-metros skip y seek Esto tambieacuten se puede hacer en un sistema

activo ya que los datos en su mayoriacutea son de soacutelo lectura

Restaurar y backup departiciones FAT

Por defecto las imaacutegenes de Hardkernel vienen con una particioacuten FAT1632 montada en mediaboot que contiene el kernel el initrd el aacuterbol de dispositivos y los archivos bootini Todos son cruciales para el inicio del sistema Los sistemas An-droid presentan esta particioacuten como almacenamiento ldquosdcardrdquo

Hay varias herramientas para Linux para realizar copias de seguridad de particiones FAT Yo soliacutea usar partimage pero no verifica la suma de comprobacioacuten de las particiones en C2 por lo que me pase a partclone Partclone puede hacer una backup de particiones FAT en bloque preservando los datos en laos mismos offsets aunque puede saltarse espacios vacios$ sudo apt-get install partclone

$ sudo partclonevfat -c -s

devmmcblk0p1

-O $backupDirpartition_1img

La ldquo-crdquo especifica ldquoclonarrdquo ldquo-srdquo es la particioacuten de origen que es la primera particioacuten en nuestro caso y ldquo-Ordquo es el archivo de salida que se sobrescribiraacute si existe Ten en cuenta que part-clone no puede trabajar con sistemas de archivos montados y termina dando un error Para realizar copias de seguridad de un ODROID en funcionamiento necesitas desmontar me-diaboot realizar la copia de seguridad y montarla de nuevo

Para restaurar una particioacuten FAT puede ejecutar el siguien-te comando

$ sudo partclonerestore -s

$backupDirpartition_1img -o devmmcblk0p1

Por desgracia PartClone no permite restaurar una particioacuten a una particioacuten de destino maacutes pequentildea o maacutes grande por lo que cualquier ajuste de tamantildeo que necesites hacer tendraacutes que llevarlo a cabo despueacutes de la restauracioacuten En realidad se puede restaurar a una particioacuten maacutes grande pero necesitas au-mentarla manualmente para utilizar todo el espacio adicional

Sector de inicio de la primera particioacuten con sfdisk y tamantildeo de sector

Backup de Partclone con el desmontaje previo de mediaboot

ODROID MAGAZINE 24

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 25: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

SCRIPTS DE BACKUP

Restaurar y backup de particiones Ext234

Para hacer copias de seguridad y restaurar sistemas de archi-vos Ext234 tendremos que utilizar una herramienta diferente llamada FSArchiver A diferencia de PartClone FSArchiver crea una copia de seguridad a nivel de archivo y reconstruye el sistema de ficheros a restaurar Desafortunadamente debido a ciertas particularidades de los sistemas FAT donde los archivos de arranque de Windows necesitan estar en offsets especiacuteficos el autor de FSArchiver no admite copias de seguridad de siste-mas de archivos FAT por lo que continuamos usando dos her-ramientas para el trabajo Aunque con la ayuda de paquetes externos FSArchiver tambieacuten pueden soportar otros sistemas de archivos como XFS ReiserFS JFS BTRFS y NTFS Por lo general permite hacer copias de seguridad de sistemas de archivos sin montar pero se puede utilizar en sistemas de fiche-ros activos con el delimitador ldquo-Ardquo que no siempre funciona FSArchiver tiene la ventaja de que puede restaurar un siste-ma de archivos en una particioacuten de destino maacutes grande o maacutes pequentildea preservando los UUID Para hacer una copia de se-guridad de la segunda particioacuten puedes ejecutar los siguientes comandos$ sudo apt-get install fsarchiver

$ sudo fsarchiver -o -v -A -j 4

savefs $backupDirpartition_2fsa

devmmcblk0p2

El delimitador ldquo-ordquo significa que sobrescribiraacute el archivo de destino si existe ldquo-vrdquo ofrece un resultado detallado ldquo-Ardquo te per-mite hacer copias de seguridad de una particioacuten montada y ldquo-j 4rdquo te permite utilizar los 4 nuacutecleos para la compresioacuten

Para restaurar una copia de seguridad FSA puede ejecutar el siguiente comando$ sudo fsarchiver restfs

$backupDirpartition_2fsa

id=0dest=devmmcblk0p2

Ten en cuenta que dado que FSArchiver soporta muacuteltiples

particiones dentro de un archivo necesitas especificar la ID de la particioacuten a restaurar En nuestro ejemplo almacenamos soacutelo una particioacuten en un archivo por lo que siempre especificare-mos id=0 cuando restauremos

Herramienta de backup ODROIDAhora que ya sabes coacutemo hacer las cosas de forma manual

es posible que te esteacutes preguntando por queacute las operaciones de backup y restauracioacuten no son maacutes simples usando unos cuan-tos clic Estoy de acuerdo en que nadie tiene tiempo para recor-dar todos los paraacutemetros de los diferentes comandos asiacute que he hackeado una interfaz graacutefica de usuario rudimentaria que te puede guiar en el proceso de copia de seguridad y restauracioacuten

La herramienta descriptivamente se llama ldquoodroid-backuprdquo Estaacute escrita en Perl y utiliza zenity y djialog para montar una interfaz graacutefica de usuario baacutesica puesto que soy demasiado viejo para aprender Python Para instalar la herramienta pu-edes descargarla desde mi repositorio GitHub$ sudo wget -O usrlocalbinodroid-backuppl

httpsrawgithubusercontentcom

mad-adyodroid-backupmasterodroid-backuppl

$ sudo chmod a+x

usrlocalbinodroid-backuppl

El script depende de unos cuantos moacutedulos de Perl no es-taacutendar asiacute como de algunas utilidades de Linux apareceraacute una lista de las dependencias que faltan y formas de solucionarlo la primera vez que lo ejecutes Para instalar todas las dependen-cias a la vez ejecuta lo siguiente$ sudo apt-get install

libui-dialog-perl zenity

dialog libnumber-bytes-human-perl

libjson-perl sfdisk fsarchiver

udev util-linux coreutils

partclone parted

El script estaacute disentildeado para ejecutarse en sistemas Linux como por ejemplo un PC al que le hayas conectado una tarjeta SD o moacutedulo eMMC a traveacutes de un adaptador USB o directa-mente en el ODROID (lo siento pero los fans de Windows) Ademaacutes el script crearaacute ventanas graacuteficas si detecta que se estaacute ejecutando una sesioacuten X11 o vuelve a ncurses (pantalla) si estaacutes conectado a traveacutes de SSH o terminal Puedes forzar manual-mente esto con el parametro --text

Para realizar una backup inicia la herramienta en un termi-nal y selecciona ldquoBackup partitions ldquo luego selecciona OK (1)$ sudo odroid-backuppl

Apareceraacute una lista de unidades extraiacutebles en tu sistema Pu-edes iniciar el programa con el delimitador -a para mostrar to-das las unidades que es el caso cuando se ejecuta directamente en el ODROID puesto que eMMC y SD aparecen como no extraiacutebles Selecciona el que desees y haz clic en OK (2) A con-tinuacioacuten se te mostraraacute una lista de particiones en esa unidad Selecciona las que deseas hacerle copia de seguridad (3) A con-

Representacioacuten Zenity vs pantalla graacutefica

ODROID MAGAZINE 25

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 26: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

tinuacioacuten tendraacute que seleccionar un directorio para guardar las copias de seguridad Es mejor tener un directorio limpio (4) Pulsa OK y la copia de seguridad se iniciaraacute con una barra de progreso rudimentaria que te haraacute compantildeiacutea (5) Cuando la backup esteacute creada apareceraacute una ventana con los resultados y los posibles errores (6) Los archivos de copia de seguridad tienen la misma denominacioacuten que la utilizada en este artiacuteculo

Para realizar una restauracioacuten inicia la herramienta en un terminal selecciona ldquo Restore partitionsrdquo y pulsa OK (1)$ sudo odroid-backuppl

Tendraacutes que seleccionar el directorio que contiene tus valio-

sas copias de seguridad y seleccionar OK (2) En la ventana que aparezca selecciona las particiones que quieres restaurar desde la copia de seguridad y selecciona OK (3) Ten en cuenta que las particiones se restauran en el mismo orden en el que estaban

en el disco original lo que significa que la particioacuten 1 seraacute la primera particioacuten y asiacute sucesivamente En la uacuteltima ventana se te preguntaraacute por la unidad en la que restaurar los datos (4) Disfruta viendo como la barra de progreso avanza (5) y al final obtendraacutes una ventana de estado con los resultados (6) El registro log tambieacuten se guarda en varlogodroid-backuplog

Como debes sospechar no hay software que esteacute libre de e-rrores pero espero que este script tenga su utilidad Tiene algu-nas carencias tales como que las ventanas de Zenity no siempre muestran el texto porque antildeadiacute la barra de tiacutetulo Tampoco hay ninguna validacioacuten de las operaciones Tendraacutes que revisar el registro log para comprobar que la operacioacuten de backup o restauracioacuten se haya completado con eacutexito Otra limitacioacuten es que las particiones FAT tienen que ser desmontadas manual-mente antes de la copia de seguridad aunque Ext234 se pue-den respaldar sin desmontar Por uacuteltimo la utilidad sfdisk en Ubuntu 1404 no es compatible con la salida JSON aunque puedo antildeadir soporte si fuera necesario El programa ha sido probado con varias imaacutegenes oficiales Hardkernel Linux y Android asiacute como de imaacutegenes triple arranque y hasta ahora todo parece funcionar Las ideas de mejora y los parches son bienvenidos en el hilo de soporte en httpbitly2bEyFzl

fases de la Backup

fases de la Restauracioacuten

SCRIPTS DE BACKUP

ODROID MAGAZINE 26

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 27: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

positivocontrolador de IoT para todas estas cosas y mucho otras

Este artiacuteculo estaacute dividido en 3 par-tes La primera parte trata la utilizacioacuten del SDK Twython basado en Python [httpbitly2aOjCnT] explicando la funcioacuten y el alcance de sus usos en la creacioacuten de una aplicacioacuten importante

La segunda parte se centra en la codi-ficacioacuten de Python y en coacutemo buscar una cadena especifica en nuestro flujo de informacioacuten de la cuenta de Twitter con una clase concreta de Twython Por uacutelti-mo en la tercera parte conectaremos un LED al ODROID-C2 y en respuesta a una buacutesqueda satisfactoria manejaremos el estado de ese LED Tambieacuten explicare-mos el uso de los GPIOs y coacutemo contro-larlos a traveacutes de la libreriacutea WiringPi Su-ponemos que tienes un ODROID-C2 con la uacuteltima versioacuten 20 de Ubuntu de Hardkernel [httpbitly2b58GEe] con Python instalado Todo el coacutedigo estaacute es-crito en Python versioacuten 2712

Funcioacuten de TwythonPara acceder a los servicios de Twit-

ter (a traveacutes de su API) puedes utilizar diferentes SDK Hay diferentes libreriacuteas disponibles pero nosotros vamos a utili-zar Twython Twython proporciona bue-na documentacioacuten online para su uso Usando Twython con un C2 podemos enviar tweets pero tambieacuten podemos analizar los tweets y responder con el parpadeo de un LED si aparece un tweet con una etiqueta texto o frase especiacutefica

Primero vamos a instalar Twython sobre ODROID-C2 Desde el escritorio Mate abre una ventana de terminal e in-

En este artiacuteculo vamos a ver coacutemo utilizar un ODROID-C2 como un dispositivo IoT (Internet de

las cosas) desde la perspectiva de un de-sarrollador en lugar de un usuario de escritorio En concreto utilizaremos un ODROIDC2 para conectarnos online con un avanzado servicio web como Twitter establecer una conexioacuten buscar algunos datos y finalmente responder a esos datos Tambieacuten tendremos la opor-tunidad de explicar el uso de las co-nexiones GPIO de ODROID-C2 para controlarlo y manipularlo mediante pro-gramacioacuten a traveacutes del lenguaje Python

Para alcanzar nuestros objetivos usaremos el ODROID-C2 para co-nectarnos a nuestra cuenta de Twitter buscaremos el flujo de informacioacuten de una cadena en particular - digamos por ejemplo ldquoODROIDrdquo o ldquoHardkernelrdquo y luego responderemos a esa cadena con un parpadeo de un LED Es un escena-rio que se puede ampliar con el uso de un servomotor o alguacuten otro acciona-dor creando un sinfiacuten de posibilidades Podemos buscar una cadena especiacutefica y contar el nuacutemero de veces que apa-rece en nuestro flujo y luego responder (anaacutelisis cuantitativo) o podemos utili-zar alguna herramienta de anaacutelisis de las emociones para hacer juicios de calidad y responder en consecuencia (anaacutelisis de la calidad) Por uacuteltimo podemos utilizar otros servicios basados en la web como el correo electroacutenico para controlar de forma remota un brazo roboacutetico (tele-medicina) o llevar a cabo tareas maacutes sim-ples como controlar las luces de casa iexclEl ODROID-C2 es un excelente dis-

ODROID-C2 COMO un DISPOSITIvO IOTCOMunICAnDOSE COn EL MunDO REALpor melissas miltiadis

DISPOSITIVO IOT

troduce los siguientes comandos$ sudo apt-get update

$ sudo apt-get install python-pip

$ sudo pip install twython

Luego tenemos que registrar Twython en los servidores de Twitter como una aplicacioacuten antes de poder utilizarlo a nivel de programacioacuten Para este paso suponemos que ya tiene una cuenta de Twitter y sino crea una Simplemente necesitas una cuenta de correo electroacuteni-co vaacutelida para la verificacioacuten y tienen que rellenar algunos campos con tu nombre de usuario y contrasentildea Ahora tendremos que utilizar las 4 claves del registro para la autenticacioacuten La libreriacutea Twython usaraacute esas claves para establecer conexioacuten con los servidores de Twitter

Con el navegador abierto ve a httpappstwittercom e inicia el proceso de registro Puesto que se trata de un pro-ceso muy sencillo yo lo termine muy raacutepido todo lo que necesitamos son esas 4 claves para la autentificacioacuten de nues-tra aplicacioacuten Python Lo primero que hay que hacer es ir a la direccioacuten web anterior y hacer clic en el botoacuten Create An Application como se muestra en la siguiente figura

figura 1 - Creando una aplicacioacuten

ODROID MAGAZINE 27

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 28: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

Despueacutes introduce tu informacioacuten de la aplicacioacuten Completa todos los campos especialmente aquellos que tiene un asterisco ()

En este ejemplo usamos ldquoTwythonOdroidC2rdquo como nombre y ldquoTwython para ODROID-C2rdquo como descripcioacuten Tambieacuten completamos la direccioacuten web de ODROID Magazine de Hardker-nel Cualquier sitio web con contenido

uacutetil estaacute muy bien Luego haz clic en el botoacuten ldquoCreate your Twitter applicationrdquo en la parte inferior de la paacutegina En la siguiente pantalla todo lo que tiene que hacer es seleccionar la pestantildea Keys y Ac-cess Tokens (Figura 2)

Aquiacute ya puedes ver la Consumer Key generada (API Key) y el Consumer Se-cret (API Secreto) Vamos a necesitar 2 claves maacutes En la parte inferior de la paacute-gina hay un botoacuten para crear Token keys de acceso Haz clic para obtenerlas y el resultado final seraacute una pantalla como la que se muestra en la Figura 3

Ahora tenemos las 4 claves necesarias Consumer Key Consumer Secret Ac-cess Token y Access Token Secret Como

Aquiacute es donde importaremos las claves Twython que recibimos cuando nos registramos nuestra app en los ser-vidores de Twitter en el paso 1 Para no revelar nuestras claves a cualquiera es bueno crear un simple script Python con estas 4 claves Es muy faacutecil crear este tipo de script con cualquier editor de texto por ejemplo nano vi o gedit Normal-mente los dos primeros ya estaacuten insta-lados con cualquier versioacuten de Ubuntu Abre un nuevo archivo e inserta las 4 claves del siguiente modoTwython Keys

Consumer_Key=rsquocopy here the Con-

sumer Keyrsquo

Consumer_Secret=rsquocopy here the

Consumer_Secretrsquo

Access_Token=rsquocopy here the Ac-

cess Tokenrsquo

Access_Token Secret=rsquocopy here

the Access_Token_Secretrsquo

Por uacuteltimo guarda y cierra el archi-vo Hemos creado nuestro propio script con el nombre TwythonKeyspy guar-dalo en el directorio home por defecto ODROID (es decir homeODROID ) Asiacute que con la expresioacuten execfile (lsquohomeODROIDTwythonKeyspyrsquo) lo uacutenico que hacemos es ejecutar ese script Nuestro siguiente paso es definir una nueva clase streamer que ampliacutea la clase TwythonStreamer La razoacuten de esto es que queremos redefinir los meacutetodos y funciones que ya estaacuten en esa clasefigura 4 ndash Disentildeo del pin GPIO del C2

las necesitaremos para nuestro coacutedigo de programacioacuten Python coacutepialas en un ar-chivo aparte en tu ordenador local

Programar en PythonEn esta seccioacuten trataremos la pro-

gramacioacuten en Python para buscar una cadena y utilizar una funcioacuten de retrol-lamada Explicaremos cada liacutenea de coacute-digo para aclarar tantas preguntas como nos sea posible Una vez maacutes se supone que ya tienes una cuenta de Twitter has registrado la app de Twitter (aplicacioacuten) (es decir Twython - paso 1) y tienes las 4 claves necesarias Tambieacuten necesitaraacutes una instalacioacuten del paquete Twython usando pip para tener acceso a Twython SDK (Software Development Key) Abre el editor de Python y escribe lo siguientefrom twython import

TwythonStreamer

Con esta liacutenea de coacutedigo importa-mos la clase TwythonStreamer desde la libreriacutea Twython que ya hemos insta-lado Esta clase (TwrythonStreamer) se conectaraacute al flujo en el que estamos reci-biendoenviando tweets y nos permiten filtrar la informacioacuten buscando un texto en el interior Detectaremos tweets con estos criterios Aquiacute tienes la siguiente liacutenea de coacutedigoexecfile(lsquohomeodroidTwython

Keyspyrsquo)

DISPOSITIVO IOT

figura 2 - Configuracioacuten de la aplicacioacuten

Figure 3 - Access tokens (en blanco)

ODROID MAGAZINE 28

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 29: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

dedicados a implementar diferentes pro-tocolos de comunicacioacuten como I2CA_SDA I2CA_SCL TXD_B RXD_B y los pines General Purpose InputOutput (GPIO) que nos permiten comunicarnos con otros dispositivos actuadores como LEDs servomotores motores e incluso algunos componentes roboacuteticos

Normalmente utilizaremos un tablero para cablear nuestros circui-tos Luego escribimos el coacutedigo que los ajusta a niveles HIGH o LOW que podemos controlar mediante programa-cioacuten A efectos de este tutorial usare-mos GPIOXBIT21 un pin de entradasalida de propoacutesito general para ajustar la condicioacuten del LED a HIGH o LOW (33-0 voltios) y el pin 20 como puesta a tierra Si nos fijamos en la disposicioacuten de los pines de la Figura 5 se puede ver que el pin 20 puede estar conectado a tierra Por supuesto hay muchos otros pines para conectar a tierra (9142530 etc) y puedes utilizar el que maacutes te guste Co-nectaremos el LED en serie con la resis-tencia adecuada (1 kW) para asegurarnos de que no recibiraacute demasiada corriente Tambien nos referiremos a pin7 como ldquoWiringPI GPIO 7rdquo aunque no siem-pre es el caso Por ejemplo GPIOX Bit 11 (pin13) seraacute tratado como ldquoWiringPi GPIO 0rdquo seguacuten disentildeo de pines GPIO Consulta el esquema de la Figura 5

Ahora que tenemos la parte de hard-ware lista vamos a continuar con la parte final de nuestro programa Vamos a uti-lizar la libreriacutea Wiring Pi para controlar nuestra LED WiringPi es una libreriacutea en C con enlaces Python Estaacute disentildeada para ayudar a los desarrolladores que han utilizado el sistema de cableado de Ardu-ino Gordon Henderson es el autor de la libreriacutea C y Philip Howard es el autor del desarrollo en Python Hay dos versiones principales de esta libreriiacutea (v1 y v2) Va-mos a utilizar la v2 en nuestro proyecto pero antes tenemos que instalarla Uti-lizaremos la excelente guiacutea de Hardker-nel en httpbitly2ba6h8o De hecho se trata de un proceso muy sencillo y al final seremos capaz de utilizar esta li-

figura 5 - simple esquema del circuito LED

tag que queremos filtrar Lo hicimos En la uacuteltima fase veremos coacutemo contro-lar los GPIOs del ODROID-C2 con la funcioacuten blinkLED () Ten en cuenta que el sangriacutea es importante en el software escrito en lenguaje Pythonfrom twython import Twython-

Streamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Utilizar GPIO para la conectividad IoT

La figura 4 muestra la disposicioacuten de los 40 pines del OROID-C2 a la que podemos acceder desde la paacutegina de de-talles teacutecnicos de Hardkernel en (httpbitly2aXAlmt)

Ten en cuenta que hay 40 pines 2 filas de 20 pines en cada hilera Gene-ralmente los podemos agrupar en pines

class TwitterStreamer(TwythonStr

eamer)

Con la liacutenea de coacutedigo Python ante-rior nuestra nueva clase TwtiterStreamer lo hereda todo de TwythonStreamer Es-pecialmente utilizaremos el meacutetodo de la clase TwythonStreamer on_success () redefiniendo su aacutembito de actuacioacuten Lo que queremos decir con la redefinicioacuten de esta funcioacuten es que si los datos que estamos analizando no estaacuten vaciacuteo (eti-queta texto frase) se invoca otra fun-cioacuten (funcioacuten callback) con la finalidad de iniciar el parpadeo de un LED La siguiente liacutenea define esta funcioacutendef on_success(self data)

Como uacuteltimo paso lo verificamos con la declaracioacuten ldquoif rdquo

if lsquotextrsquo in data

print(lsquoODROID-C2 successrsquo)

blinkLED()

Lo que hemos logrado con esto es que si el diccionario ldquotextrdquo tiene alguacuten dato que coincide con los criterios da-dos entonces llama a la funcioacuten blink-LED () De hecho podemos imprimir un mensaje antes de hacer esto y noti-ficar al usuario que la buacutesqueda ha fina-lizado con eacutexito tal y como lo hicimos con el coacutedigo anterior

A continuacioacuten ejemplificaremos nuestra nueva clase (TwitterStreamer)myStream=TwtitterStreamer(Consum

er_Key Consumer_Secret

Access_Token Access_Token_Se-

cret)

Lo que en realidad hacemos es llamar a la clase constructor para crear nuestro objeto myStream y pasamos las 4 claves como argumentos Ahora estamos listos para el filtradomyStreamstatuses

filter(track=rsquoOdroid IoTrsquo)

Como puedes ver pasamos el argu-mento tack al filtrado para la frasetexto

DISPOSITIVO IOT

ODROID MAGAZINE 29

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 30: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

cleanup

wpipinMode(LED_PIN 0)

class TwitterStreamer(TwythonStr

eamer)

def on_success(selfdata)

if lsquotextrsquo in data

print(lsquoOdroid successrsquo)

blinkLED()

myStream=TwitterStreamer(Consum

er_KeyConsumer_SecretAccess_

TokenAccess_Token_Secret)

myStreamstatuses

filter(track=rsquoOdroidrsquo)

Con el navegador abierto inicia sesioacuten en tu cuenta de Twitter y pu-blica algun tweet que contenga la pa-labra ldquoODROIDrdquo Tu LED en el cir-cuito deberiacutea comenzar a parpadear El ODROID-C2 haraacute un seguimiento del flujo de mensajes relevantes que conten-gan la palabra ldquoODROIDrdquo Las posibles mejoras en este ejercicio las dejos a tu imaginacioacuten

Notas AdicionalesLa imagen de Ubuntu del ODROID-

C2 viene pre-instalada con Python Si desea instalar IDLE (un entorno de de-sarrollo integrado para Python) puedes simplemente escribir

$ sudo apt-get install idle

Debes tener en cuenta que cualquier coacutedigo Python en IDLE debe ejecutarse con privilegios de root para que fun-cione corretamente

Por uacuteltimo dentro de un bucle while fijamos el pin 7 primero en HIGH (33 voltios) esperamos 1 segundo y luego lo ajustamos a LOW (0 voltios) y espera-mos otro segundowhile True

wpidigitalWrite(LED_PIN 1)

timesleep(1)

wpidigitalWrite(LED_PIN 0)

timesleep(1)

Como puedes ver se trata de un bucle interminable dejando el LED parpade-ando hasta que detengamos el coacutedigo interrumpieacutendolo o cerremos el entorno IDLE del ODROID-C2 desde nuestro escritorio de Ubuntu La siguiente liacutenea de coacutedigo simplemente deja vaciacutea la con-exioacuten con el pin7 wpipinMode(LED_PIN 0)

A continuacioacuten se muestra la funcioacuten completa que se puede copiar y pegar en el archivodef blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

LED_PIN = 7

wpiwiringPiSetup()

setup pin as an output

wpipinMode(LED_PIN 1)

while True

enable LED

wpidigitalWrite(LED_PIN 1)

timesleep(1)

disable LED

wpidigitalWrite(LED_PIN 0)

timesleep(1)

wpipinMode(LED_PIN 0)

Guarda esto en un archivo con exten-sioacuten py y ejecuta la aplicacioacutenfrom twython import

TwythonStreamer

execfile(lsquohomeodroidTwython

Keyspyrsquo)

def blinkLED()

import wiringpi2 as wpi

import time

use ODROID-C2 pin numbers

breriacutea para lograr nuestro objetivo Tal y como aparece en la guiacutea debes

tener instalados python-dev y python-setuptools si vuelves a generar manual-mente los enlaces con swig-python$ sudo apt-get install python-dev

python-setuptools

Instalar WiringPi 2Para Descargar WiringPi2 usa estos

comandos

$ git clone httpsgithubcom

hardkernelWiringPi2-Pythongit

$ cd WiringPi2-Python

$ git submodule init

$ git submodule update

Compilar e instalarPara instalar el programa usa el

siguiente comando$ sudo python setuppy install

En nuestro coacutedigo del paso anterior hicimos una llamada a una funcioacuten blin-kLED () cuando sucede un evento con eacutexito En esta seccioacuten vamos a definir la funcioacuten blinkLED () En primer lugar tenemos que importar la libreriacutea Wiring Pi v20def blinkLED()

import wiringpi2 as wpi

Puesto que necesitamos controlar la frecuencia de parpadeo del LED (fre-cuencia) tenemos que importar la fun-cioacuten time igualmenteimport time

En la siguiente liacutenea de coacutedigo hemos configurado el cableado del pin 7 de los GPIOs del ODROID-C2 puesto que eacuteste es el pin conectado a nuestro LEDLED_PIN = 7

wpiwiringPiSetup()

A continuacioacuten lo definimos como un pin OUTPUT Ten en cuenta que algunos de los pines GPIO se puede uti-lizar en modo INPUT o OUTPUTwpipinMode(LED_PIN 1)

DISPOSITIVO IOT

ODROID MAGAZINE 30

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 31: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

LibreELEC es un gran proyecto para personas que quieran un livi-ano centro multimedia Kodi Sin

embargo para las personas que desean ejecutar software adicional como por ejemplo un servidor web como Apache o una base de datos MongoDB o Post-greSQL le es muy uacutetil tener una distri-bucioacuten completa de Ubuntu Ademaacutes es muy buena para mantener activos los miacutenimos recursos y cargar uacutenicamente Kodi en lugar del escritorio Mate Estoy seguro que este proceso se puede hacer partiendo de una instalacioacuten de servidor de Ubuntu pero queriacutea utilizar la ima-gen de escritorio de Ubuntu de Hardker-nel Esta guiacutea estaacute inspirada en su mayor

parte en la wiki de Kodi - httpbitly2bR6Zeb

Este tutorial ha sido probada en un ODROID-C2 con una instalacioacuten es-taacutendar de Ubuntu v20 de Hardkernel que contiene las actualizaciones maacutes re-cientes Antes de empezar es posible que necesites cambiar la resolucioacuten en bootini para que tu monitor sea reconocido Una vez que hayas copiado la imagen y actualizada la instalacioacuten de Ubuntu

KODIbunTuAuTO-InICIAR KODI COn unA COMPLETADISTRIbuCIOn DE ubunTupor olingerc

KODIBUNTU

figura 1 - Pantalla de inicio de Kodi

sigue estos pasos1 Desactiva el inicio del gestor de

pantalla en el arranque

$ sudo systemctl disable display-

managerservice

2 Crear un usuario para Kodi Este usuario tendraacute su propia carpeta de ini-cio para los archivos de configuracioacuten kodi y perteneceraacute a determinados gru-pos para obtener los permisos necesarios

$ sudo adduser

--disabled-password

--disabled-login

--gecos ldquordquo kodi

$ sudo usermod -a -G cdrom

audiovideoplugdevusers

dialoutdipinputnetdev kodi

3 Instala legacy xserver que permite que Kodi se ejecute desde el terminal sin un gestor de pantalla

$ sudo apt-get install

xserver-xorg-legacy

4 Configura xserver para dar per-misos a un usuario normal no root eli-giendo ldquoAnybodyrdquo cuando se te solicite

$ sudo dpkg-reconfigure

xserver-xorg-legacy

Ademaacutes en el archivo etcX11Xwrapperconfig antildeade la siguiente

liacutenea al final

needs_root_rights=yes

Ahora puedes probar que funciona iniciando manualmente Kodi

$ sudo usrbinxinit

usrbindbus-launch

--exit-with-session

usrbinkodi-standalone

-- 0 -nolisten tcp vt7

5 Para ejecutar Kodi en el arranque crear un archivo de servicio systemd etcsystemdsystemkodiservice con el siguiente contenido

[Unit]

Description = Kodi Media Center

if you donrsquot need the MySQL DB

backend this should be sufficient

After = systemd-user-sessions

service networktarget sound

target

if you need the MySQL DB back-

end use this block instead of

the previous

After = systemd-user-sessions

service networktarget soundtar-

get mysqlservice

Wants = mysqlservice

ODROID MAGAZINE 31

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 32: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

KODIBUNTU

[Service]

User = kodi

Group = kodi

Type = simple

PAMName = login you might want

to try this one did not work on

all systems

ExecStart = usrbinxinit usr

bindbus-launch --exit-with-ses-

sion usrbinkodi-standalone --

0 -nolisten tcp vt7

Restart = on-abort

RestartSec = 5

[Install]

WantedBy = multi-usertarget

6 Inicia Kodi como un servicio tras el arranque

$ sudo systemctl enable

kodiservice

7 Reinicio y disfruta

8 Tambieacuten puedes antildeadir una op-cioacuten de apagadoreinicio al menuacute de inicio tal como se describe en httpbitly2bpaALp creando el archivo etcpol-kit-1localauthority50-localdCustom- actionspkla con el siguiente contenido

[Actions for Kodi user]

Identity=unix-userkodi

Action=orgfreedesktop

upowerorgfreedesktopconsole-

kitsystemorgfreedesktop

udisksorgfreedesktoplogin1

ResultAny=yes

ResultInactive=yes

ResultActive=yes

Estaba contento porque mi mando a distancia funcionara directamente junto con NFS asiacute que para miacute esta es la configuracioacuten perfecta Ten en cuenta que el proceso puede ser invertido des-habilitando el servicio Kodi y activando de nuevo el gestor de pantalla Para pre-guntas comentarios y sugerencias visita el hilo del foro en httpbitly2beXfsF

del equipo esteacutereo para escuchar muacutesica que te motiva para dominar el mundo No sucede nada Pasas los siguientes 15 minutos solucionando problemas del sistema y determinas que el posi-ble problema estaacute en la unidad central del vehiacuteculo ldquoiexclNo hay problema La dominacioacuten del mundo puede esperar unas horasrdquo piensas

Extraes el marco y la unidad central del vehiacuteculo y desconectas todos los ca-bles y la antena A continuacioacuten abres la caja de componentes que solicitantes a ameriDroidcom hace unos diacuteas para reponer los suministros agotados Em-piezas a sacar las piezas que necesitas

bull ODROID-C2 bull Caja de la serie C con ventiladorbull eMMC de 64 GB con Androidbull Adaptador de audio USBbull Transformacioacuten de tensioacuten DC-

DC 12A bull Clavija CC y cable de montaje de

25 mm (para ODROID-C2)bull Moacutedulo GPS USBbull ODROID-VU7+ bull Hub USB de 4 puertosbull Wi-Fi Module 3

Ademaacutes coges los siguientes compo-nentes generales de electroacutenica

bull Regulador de volumen bull Interruptor de palanca (para

control de potencia incluso si el coche no estaacute encendido)

De vez en cuando incluso un cientiacutefico loco necesita salir de su laboratorio secreto De vuelta

a tu juventud recuerdas que tu primer laboratorio era un armario dentro de la oficina Aun cuando insistes en que se llame ldquolaboratoriordquo - o incluso soacutelo ldquolabrdquo - Tus socios encontraban divertido lla-marlo ldquoel armariordquo Esto dio lugar a frases desafortunadas que son comentadas en todas partes como por ejemplo ldquoiquestLo has buscado en el armario ldquordquo ldquoespe-ramos que salga del armario pronto ldquo y ldquoestaacute en el armario con el becariordquo

Ahora que tiene un laboratorio real estos tristes dichos son ahora afortuna-damente un recuerdo lejano (molesto)

Hoy en diacutea necesitas salir del labo-ratorio para conseguir suministros de la tienda de excedentes de tecnologiacutea para tu uacuteltimo proyecto que te permitiraacute dominar del mundo Te sientas en tu vehiacuteculo y pulsas el botoacuten de encendido

un ORDEnADOR PARA EL COCHE POR EL AMOR A LA PERSOnALIzACIOnCROnICAS DE un CIEnTIfICO LOCOpor Bo Lechnowsky

ORDENADOR DE COCHE

figura 1 ndash El ordenador ODROID para el coche listo para recibir ordenes

KODIBUNTU

ODROID MAGAZINE 32

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 33: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

bull Filtro de Audio (para minimizar el ruido eleacutectrico en el sistema de altavoces)

Pruebas a ajustar la pantalla VU7 + y tomar medidas para que pueda disentildear e imprimir en 3D un marco para ajustar la pantalla en la abertura mientras que montas todos los componentes Pasas alrededor de una hora con el software 3D para disentildear el marco e iniciar la im-presioacuten en tu impresora 3D El software muestra una estimacioacuten de unas 3 horas hasta que finalice la impresioacuten ldquoEse es el plazo marcado para completar este proyectordquo Exclamas quizaacutes incluso con una carcajada demoniaca

A continuacioacuten coges el C2 y lo co-locas dentro de la carcasa junto con el ventilador de refrigeracioacuten (despueacutes de todo a veces puede hacer calor dentro del vehiacuteculo) Tambieacuten recuerdas que la funcionalidad taacutectil de la pantalla deja de funcionar a temperaturas superio-res a 65 degC por lo que tambieacuten es una buena idea encender el aire acondicio-nado si el coche ha estado al sol durante mucho tiempo antes de cogerlo Mien-tras todaviacutea te encuentras en tu labora-torio conectas el eMMC al adaptador eMMC-microSD y lo introduces en tu lector microSD de alta calidad y este a su vez en uno de los equipos de laboratorio Recuerdas la frustracioacuten que te causaba utilizar un barato lector de microSD que al no poder gestionar la velocidad del moacutedulo eMMC apareciacutean todo tipo de problemas extrantildeos ndash es por lo que debes usar un lector de microSD de alta calidad para escribir una imagen de An-droid en el moacutedulo eMMC

Ahora que el moacutedulo eMMC estaacute montado localiza el fichero bootini en la particioacuten FAT y cambia la resolucioacuten a ldquo1280x600rdquo y cambiar la liacutenea ldquoVoutrdquo de ldquoHDMIrdquo a ldquoDVIrdquo ya que tu ODROID es compatible con la VU7+ A continua-cioacuten conecta el eMMC al C2 y el C2 a la VU7+ con los cables HDMI y USB incluidos Arranca muy bien y la panta-lla taacutectil funciona automaacuteticamente ldquoDe

multiacutemetro en la mano buscas dos pines en el conjunto de cables de la unidad principal que tiene conectada la cone-xioacuten de 12V al interruptor ldquoACCrdquo Sin embargo cuando pruebas la capacidad de tu sedaacuten no tienes suficiente ampera-je para tu proyecto Vas a tener que tirar de la energiacutea que viene directamente de la bateriacutea conectando un cable a traveacutes de la caja de fusibles

En este vehiacuteculo la bateriacutea y la caja de fusibles principal se encuentran deba-jo del asiento trasero Levantas el asiento y conectas el polo positivo del cable de repuesto a un fusible abierto dentro de caja de fusibles y el polo negativo a un punto del chasis del vehiacuteculo donde estaacute conectada la puesta a tierra del sistema principal Coges los anclajes de las aber-turas de puertas y pasa los cables por de-bajo y a su vez por debajo del salpicadero hasta llegar al lugar donde soliacutea estar la unidad principal Vuelve a instalar los anclajes Te encuentras satisfecho con el trabajo realizado hasta el momento

Conecta los cables de alimentacioacuten a la entrada del transformador DC-DC y comprueba la tensioacuten de salida de tu cableado Este tiene una medicioacuten de 10 VDC de modo que gira el pequentildeo tor-

la siguiente tareardquo no se la comentes a nadie en particular

A continuacioacuten conecta el adaptador de audio USB a uno de los puertos USB para que puedas conectar al amplifica-dor de audio de tu vehiacuteculo Conectas el adaptador de audio a un conjunto de altavoces de escritorio y ejecutas una prueba de audio funcionaraacuten de inme-diato sin ninguacuten problema

Ahora coges tu caja de componentes y te diriges al ascensor que te lleva desde tu laboratorio subterraacuteneo a la superficie donde tienes tu vehiacuteculo A la caja has ti-rado un par de herramientas y elementos que quizaacutes necesites tales como cables de repuesto y un soldador portaacutetil

Uno de los primeros pasos para ins-talar tu nuevo equipo en tu coche es lo-calizar una conexioacuten de 12V adecuada al amperaje suficiente para alimentar el sistema Sabes que en un vehiacuteculo hay dos circuitos principales de aliment-acioacuten Uno es el circuito ldquosecundariordquo que soacutelo se activa cuando la llave estaacute en la posicioacuten ldquoACCrdquo o cuando el ve-hiacuteculo estaacute en marcha El otro circuito estaacute activo todo el tiempo ya que estaacute conectado directamente a la bateriacutea sin pasar por el interruptor ldquoACCrdquo Con tu

figura 2 El ordenador del coche te puede ayudar con tus planes para dominar el mundo a traveacutes de un escritorio de Android PowerAmp Car Dashdroid y Google maps

CAR COMPUTER

ODROID MAGAZINE 33

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 34: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

nillo del potencioacutemetro de salida hasta situarlo entre los 5 y 525VDC A con-tinuacioacuten conecta la clavija DC a los puestos de salida y conecta tu C2 Se en-ciende inmediatamente ldquoMaravillosordquo piensas pero no quieres que el sistema esteacute encendido todo el tiempo ya que me dejariacutea sin bateriacutea asiacute que voy a co-nectar un interruptor entre la entrada positiva del convertidor y el cable que va a la caja de fusibles Asiacute puedo encender o apagar el sistema a mi voluntad tanto si el motor estaacute o no en marcha

Despueacutes te haces con un potencioacute-metro de volumen y lo conectas al adap-tador de audio USB Conectas el otro lado del potencioacutemetro al amplificador Colocas el sistema de encendido en la posicioacuten ldquoACCrdquo (con el fin de encender el amplificador) y activas el interruptor El C2 se enciende raacutepidamente y prue-bas a reproducir muacutesica a traveacutes de los altavoces Una sonrisa astuta aparece en tu rostro y empiezas a montar tu lista de reproduccioacuten de denominacioacuten del mundo en tu mente

ldquoAhorardquo piensas ldquoEs el momento de conectar la unidad GPSrdquo Abres la puerta colocas el receptor GPS en el salpicadero y tiras el cable por debajo el asiento y detraacutes del salpicadero hasta la

puerta ldquoLa Unidad tiene un cable USB muy largordquo eres consciente de que tienes que llevarlo detraacutes del salpicadero hasta el C2 Lo conectas a uno de los puertos USB libres sabiendo que no vas a conse-guir una buena sentildeal hasta que el recep-tor GPS tenga una visioacuten clara del cielo

Echas un vistazo a tu reloj y ver que

Figura 3 ndash El cientiacutefico loco trabajando en el ordenador del coche antes de la instalacioacuten

han pasado 3 horas desde que empezaste tu proyecto Te das prisa en volver al labo-ratorio y buscas tu reluciente marco im-preso en 3D en la plancha de impresioacuten Con expectacioacuten lo sacas de la platafor-ma de desarrollo y le das la vuelta para poder ver su calidad ldquoParece increiacuteblerdquo concluyes Vuelves a tu vehiacuteculo y em-piezas con el montaje de la pantalla en el marco Ademaacutes montas el interruptor de encendido y el control de volumen en una zona convenientemente abierta en el marco e insertas el hub USB de 4 puertos en una abertura que disentildeaste precisamente para ese propoacutesito Conec-tas el hub USB a uno de los puertos USB libres del C2 ldquoiexclEsto me facilitaraacute acceso para conectar dispositivos USB a mi C2 sin extraer la unidadrdquo Exclamas

Conecta un Moacutedulo 3 Wifi ODROID a uno de los puertos libres y tu unidad flash USB que contiene tu lista de reproduccioacuten de dominacioacuten del mundo en otra Insertarlo todo en el sal-picadero y empieza a ejecutar tu lista de reproduccioacuten ldquoiexclLa mayoriacutea excelenterdquo ldquoiexclAhora a probar el GPSrdquo

Giras la llave para arrancar el vehiacuteculo y de repente empiezas a notar un sonido agudo que procede el altavoz Estaacute sin-cronizado con las RPM del motor y se asemeja a un turbo amplificador mu-tante ldquoPor supuestordquo Supones ldquoOlvideacute de instalar el filtro de audiordquo Recuerdas que un filtro de audio es esencial para eliminar las interferencias introducidas en el sistema de audio por el sistema eleacutectrico del vehiacuteculo Instalas el filtro de audio entre el control de volumen y el amplificador iexclLa muacutesica se reproduce ahora con total claridad

Ahora que el hardware estaacute en su lugar todo lo que necesitas es el soft-ware En lo maacutes profundo de tu mente te acuerdas de una aplicacioacuten para An-droid que podriacutea funcionar muy bien en esta situacioacuten Descarga e instala ldquoCar Dashdroidrdquo utilizando la conexioacuten Wi-Fi segura del laboratorio y luego instalas ldquoPowerAmprdquo para el control del volu-men y las listas de reproduccioacuten de muacutesi-

ORDENADOR DE COCHE

ca ldquoGoogle Maps y Navigationrdquo son des-cargadas tambieacuten para trazar la ruta maacutes raacutepida a tus diferentes lugares secretos

A medida que conduces hacia la tien-da de excedentes de tecnologiacutea te siente especialmente orgulloso de ti mismo conforme vas escuchando tu seleccioacuten especial de de opera electroacutenica indus-trial a traveacutes de tus subwoofer las ven-tanillas abiertas las gafas sobre tu frente moviendo la cabeza con el ritmo ldquoA 300 metros gire a la izquierdardquo escuchas con voz femenina desde el software de navegacioacuten silencias temporalmente la reproduccioacuten de muacutesica

De vuelta al laboratorio empiezas a escribir una lista de necesidades con fun-ciones adicionales para tu nuevo sistema para el coche en la parte trasera de tu fac-tura de componentes tecnoloacutegicos

bull Receptor Bluetooth (para coger las llamadas de tu ingenioso teleacutefono y que permita controles de voz)

bull Moacutedem moacutevil o Punto de acceso moacutevil (para dotar al sistema de conexioacuten a Internet mientras estaacute en movimiento)

Ademaacutes aunque no pueden ayud-arte antildeade tambieacuten estos elementos

bull Sistema de control de asientos expulsables (para deshacerte de los enemigos)

bull Sistema de control de cortina de humo (para ayudarte con la evasioacuten de los rivales)

bull Sistema de control de clavos en carretera (para deshacerte de los vehiacuteculos oponentes))

bull Sistema de control de impulso con cohete (la forma maacutes diver-tida de correr maacutes raacutepido que tus adversarios)

bull Control de gancho (mejor estar preparados por si acaso)

ldquoLa dominacioacuten del mundo puede esperar un diacutea maacutesrdquo te convences a ti mismo mientras analizas la lista y todas las ideas que se te pasan por la cabeza

ODROID MAGAZINE 34

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 35: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

dora esto no ayudoacute demasiado debido a las propias limitaciones del hardware Sin embargo en el ODROID-XU3 y XU4 estos cambios siacute que ayudan a eje-cutar el emulador a una velocidad muy aceptable Combinado con GLshim el OpenGL para el empaquetador OpenGL ES tambieacuten de ptitSeb es posible usar las funciones de escalado OpenGL para ejecutar los juegos en 1080p a pantalla completa sobre un TV sin perder veloci-dad en la emulacioacuten

Por desgracia existiacutea otro problema Aunque el modo de pantalla completa funcionaba como resultados de las me-joras la imagen siempre se estiraba para ocupar toda la pantalla al 100 dando como resultado una resolucioacuten 16 9 en 1080p para un juego disentildeado original-mente para resoluciones de 4 3 No me gustaba y tras un par de diacuteas realizando pruebas y modificando el coacutedigo fui ca-

Este mes quisiera hablar de la Sega Saturn una consola de juegos con CD de Sega diferente del sistema

CD de Sega Fue una consola de 32-bit lanzada entre 1994 y 1995 dependiendo de donde vivieras La Sega Saturn estaba hecha para competir con la Sony Play-station pero no pudo hacer frente a las altas expectativas y se convirtioacute en un fracaso comercial Aun asiacute existen algu-nos juegos muy buenos que merecen la pena emular en un ordenador de placa reducida como el ODROID

Sega Saturn en los ODROIDs

La Sega Saturn tiene un disentildeo muy particular para ser una consola con dos CPUs y un total de 8 procesadores diferentes hacen que sea muy difiacutecil de emular En el pasado hemos usando ya-bause_ libretro en retroarch para conse-guir que la Sega Saturn funcionase Sin embargo este meacutetodo tiene como resul-tado una emulacioacuten muy lenta haciendo que los juegos sean poco divertidos

Para resolver este problema car-tridge de los foros ODROID ha compi-lado el emulador independiente Yabause para Sega Saturn y hemos descubierto que el ODROID-XU3 y XU4 pueden ejecutar decentemente los juegos de Sa-turn a una resolucioacuten de 320x240 Esta resolucioacuten estaacute bastante bien pero soacutelo si te sientas muy cerca del televisor

El usuario de los foros ptitSeb ex-porto hace alguacuten tiempo Yabause al dis-positivo OpenPandora antildeadiendo varias optimizaciones para ARM aumentando asiacute la velocidad global del emulador y su rendimiento En la plataforma OpenPan-

paz de controlar la relacioacuten de aspecto en el emulador lo cual nos permite ejecutar los juegos con una apariencia y compor-tamiento similar al original

Al final lograr emular la Sega Saturn en un ODROID me llevoacute mucho tiem-po y muchas optimizaciones pero los resultados hicieron que valiese la pena el esfuerzo Aquiacute tienes como hacerlo

El emulador indepen-diente Yabause

Para empezar puede instalar yabause-odroid desde mi repositorio Los emula-dores vienen con dos interfaces diferen-tes Una basado en Qt4 y el otra basado en GTK O bien se puede iniciar selec-cionaacutendola desde el menuacute o desde la liacutenea de comandos a traveacutes yabause-qt o yabause-GTK Aunque estos emuladores comparten el mismo nuacutecleo tienen al-gunas diferencias significativas en el ren-dimiento Bajo mi experiencia GTK es ligeramente maacutes raacutepido que Qt pero Qt por lo general es compatible con maacutes juegos a excepcioacuten de algunos como Megaman X4 donde los controles no funcionan en Qt pero si en GTK

Para ejecutar juegos de Saturn necesitas un archivo de BIOS Seacute que ex-isten al menos cuatro versiones de BIOS la UE y US 100 y JP 100 o 101 No he encontrado ninguna diferencia entre ellas en materia de compatibilidad asiacute que cualquier BIOS te serviraacute al menos

juEGOS LInuX SEGA SATuRn y CDEMupor Tobias Schaaf

JUEGOS LINUX

figura 1 - El logo de Sega Saturn en Europa una imagen poco conocida en el mundo de las consolas

ODROID MAGAZINE 35

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 36: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

LINUX GAMING

iso Esto lamentablemente hace que algunos juegos se inicien sin ninguacuten tipo de audio o muacutesica Una solucioacuten es usar el soporte original o grabar la iso pero esto es poco apropiado y requiere un so-porte fiacutesico incluso si tienes una copia digital del juego Tras algunas indagacio-nes pude encontrar una solucioacuten a este problema el proyecto CDEMU

El proyecto CDEMUCDEMU es una solucioacuten virtual de

unidad de CD muy similar a Daemon Tools que te permite crear una unidad de CD virtual y montar una imagen iso en lugar de cargarlo como un archivo de datos en el emulador Si utilizas la uni-dad de CD virtual a traveacutes de CDEMU y lanzas tus juegos de Saturn con la uni-dad de CD virtual el emulador lo veraacute como un CD virtualizado con todos los datos y pistas de audio intactas

Para utilizar CDEMU necesitas compilar un moacutedulo DKMS para el ker-nel el cual te permite que el sistema cree una unidad de CD virtual Por lo tanto necesitaraacutes ejecutar las cabeceras del ker-nel que coincidan con tu imagen de ken-nel o de lo contrario el moacutedulo no se puede compilar El kernel de mi reposi-torio proporciona este tipo de cabeceras pero no estoy seguro si otras imaacutegenes como las compiladas por HardKernel lo soportan Tendraacutes que probar esto para ver si tu kernel es compatible

Puedes instalar cdemu-client o gcde-mu desde mi repositorio para lograr que cdemu funcione El primero es un clien-te de liacutenea de comandos que te permite montar los CDs desde la consola mien-tras que el segundo es un software similar pero con una interfaz graacutefica si prefieres montar tus archivos con unos cuantos clics en lugar de escribir comandos Una vez este todo listo puedes montar toda clase de CDs de Sega Saturn y disfrutar de los juegos claacutesicos con todo el sonido en alta calidad tambieacuten

Montar CDs desde el terminal

asiacute fue en mis pruebas Podriacutea ser que algunos juegos funcionasen mejor con una BIOS en particular de modo que no dudes en trasladarme tus propios re-sultados Puedes utilizar la configuracioacuten de la interfaz de usuario para seleccionar el archivo de BIOS o hacer referencia a eacutel con el paraacutemetro ldquo-brdquo cuando lances Yabause traveacutes de la liacutenea de comandos

$ yabause-qt -b ldquohomeodroid

ROMSsaturn_biosbinrdquo

Ten en cuenta que en la mayoriacutea de los paiacuteses necesitas poseer legalmente una Sega Saturn fiacutesica para poder utilizar los archivos BIOS para la emulacioacuten

El emulador tiene dos opciones para los graacuteficos el modo software usan-do SDL y la emulacioacuten por hardware OpenGL Como ya he comentado no-sotros utilizamos GLshim un empa-quetador OpenGL para OpenGL ES para mejorar la imagen y la velocidad de los graacuteficos pero eso no quiere decir que podamos utilizar la opcioacuten OpenGL del emulador Simplemente ayuda al modo software SDL y utiliza GLShim para mejorar el rendimiento aunque no hay soporte de hardware para OpenGL de momento para los ODROIDs Esto tambieacuten significa que los juegos 3D se ejecutan con un renderizado SDL maacutes lento y en realidad no se ven tan bien como los originales de Saturn pero al menos se pueden ejecutar Despueacutes po-draacutes optar por ejecutar tu juego Saturn ya sea directamente desde la tarjeta SD a traveacutes de una unidad de CD conectada o por medio de un archivo iso alma-cenada en su ODROID Una vez maacutes en la mayoriacutea de los paiacuteses necesitaraacutes copias originales de los juegos para poder jugar a traveacutes de la emulacioacuten

Sin embargo si utilizas un archivo iso te daraacutes cuenta del problema con el audio La Sega Saturn soporta muacutesica y audio de alta calidad pero estos archivos estaacuten almacenados en forma de pistas de audio en el CD y no como datos como los que puedes encontrar en el archivo

Montar un CD es bastante faacutecil a traveacutes de la liacutenea de comandos

$ cdemu load 0 ltmy-image-filegt

Por ejemplo si deseas cargar King of Fighters 95

$ cdemu load 0 King_of_Fight-

ers_95nrg

Antes de montar una nueva imagen primero tienes desmontar la anterior

$ cdemu unload 0

Despueacutes de esto podraacutes montar una nueva imagen con el mismo comando que antes El ldquo0rdquo en el comando que identifica la ID de la unidad de CD vir-tual Puedes tener varias aunque es maacutes faacutecil continuar con una sola unidad de CD virtual para tu emulador simple-mente sustituir los archivos de imagen que desees para cambiar de juego

ProblemasDurante el tiempo que use CDEMU

me encontreacute con algunos problemas especialmente cuando intentaba mon-tar imaacutegenes con caracteres especiales como los espacios Estas imaacutegenes fa-llan al cargarse de modo que es posible que quieras cambiar el nombre de los archivos de imagen antes de subirlos para que sean maacutes faacuteciles de teclear y no tener problemas al intentar montarlos Si tienes archivos bin y cue como una imagen combinada aseguacuterese de editar los archivos cue con un editor de texto y modificar el nombre del archivo bin dentro del archivo cue

Algunas imaacutegenes tienen pistas de audio como archivos cue iso y mp3 que tampoco se montan correctamente En ese caso debes intentar montar la imagen con tu ordenador de escritorio y guardarlo con un nuevo formato Yo use Nero Burning ROM para convertir ima-genes cuemp3iso a imaacutegenes nrg que funcionan muy bien en CDEMU

JUEGOS LINUX

ODROID MAGAZINE 36

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 37: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

bastante larga (al menos 15 minutos) e incluye una gran cantidad de interpre-taciones de voz asiacute como pequentildeas es-cenas de anime que aparecen a lo largo de la historia El juego estaacute basado en una serie de manga y anime japonesa del

imagen para que funcionen con fluidez No obstante no importa que los juegos puedan funcionar ldquocorrectamenterdquo nor-malmente se ejecutan a una velocidad aceptable ya sea con o sin salto de ima-gen A continuacioacuten voy a describir algu-nos de mis juegos favoritos espero que te gustes tanto como a mi

Elevator Action Returns

Este juego es muy divertido Tienes que subir y bajar diferentes ascensores para disparar a los enemigos o usar bom-bas y granadas para matar a los enemigos a medida que aparecen Hay algunas armas especiales que puedes recoger y puedes abrir puertas para encontrar e-lementos y ldquosecretosrdquo en el interior El juego permite uno o dos jugadores

Magic Knight Rayearth

Magic Knight Rayearth es un RPG de accioacuten muy gracioso al estilo anime Me gusta mucho el estilo graacutefico del juego Me recuerda un poco al Final Fantasy IX con sus personajes al estino ldquochibirdquo La introduccioacuten interactiva del juego es

Compatibilidad de juegos

He probado maacutes de 100 juegos dife-rentes de la Sega Saturn y por desgracia soacutelo la mitad he conseguido que fun-cionen No es que los juegos vayan len-tos sino que ni siquiera se cargar se cuel-gas o se bloquean llegados a un punto

Auacuten asiacute un porcentaje de eacutexito del 50 nos deja un buen nuacutemero de juegos con lo que disfrutar Con una coleccioacuten de alrededor de 600 juegos para la Sega Saturn hay un montoacuten de juegos que realmente funcionan Algunos juegos que he probado solo funcionan con Qt como Nights into Dreams mientras que otros soacutelo funcionan en GTK como Megaman X4 como ya he mencionado

Para hacer las cosas auacuten maacutes com-plicadas algunos juegos ademaacutes requi-

eren una tarjeta extra de RAM Algu-nos juegos como King of Fighters lsquo96 necesitan una tarjeta adicional de 8Mbit (1 MB) mientras que otros requieren una de 32Mbit (4 MB) La mayoriacutea de los juegos tambieacuten tendraacuten problemas si se intentan ejecutar con una tarjeta adi-cional maacutes grande que la de un 1 MB dificultado el proceso de compatibilidad

JuegosTal vez te esteacutes preguntando iquestY queacute

juegos son los que funcionan Como he mencionado he probado muchos y son bastantes lo que funcionan en ODROID de hecho hay muchas ver-siones de arcades de consolas ademaacutes de algunos de PC como Command and Conquer y ldquoZrdquo He descubierto que los juegos 2D funcionan muy bien mien-tras que los juegos 3D requieren salto de

figura 2 - Kodi mostrando juegos de la Sega Saturn con ODROID GameStation Turbo

figura 3 y 4 - Elevator Action Returnsfigure 5 and 6 - magic Knight Rayearth is a very cute anime-style RPG with great graphics and voice acting

figura 5 y 6 - magic Knight Rayearth es un RPG muy gracioso al estilo anime con grandes graacuteficos e interpretacio-nes de voz

JUEGOS LINUX

ODROID MAGAZINE 37

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 38: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

Reflexiones finalesMe gusta mucho el emulador de Sega

Saturn y lo voy a integrar en mis imaacute-genes de sistema operativo Algunos de los juegos que he encontrado son muy buenos y me he divertido mucho jugan-do con ellos Sin embargo son muchos los juegos que todaviacutea no funcionan lo cual puede ser un poco frustrante espe-cialmente si estaacutes buscando ejecutar de-terminados juegos y soacutelo cuatro o cinco funcionan de los 10 que deseas ejecutar

El emulador tambieacuten es muy exi-gente Si lo ejecutan en un XU3 o XU4 probablemente no tendraacutes ninguacuten pro-blema pero con un ODROID de la serie Exynos 4 supondraacute un reto para el hardware y no todos los juegos fun-cionaran a una velocidad aceptable Ni siquiera intente que funcionara en un C1 y como es normal el ODROID C2 de 64 bits pasa por alto el recompilador dinaacutemico para la CPU de la Saturn lo cual hace que la emulacioacuten sea auacuten maacutes lenta

A veces el sonido puede ser un poco problemaacutetico Tambieacuten necesitas confi-gurar un montoacuten de cosas antes de poder utilizar el emulador Es necesario con-figurar algunas cuestiones como la ruta para guardar las partidas o no podraacutes guardarlas Si compruebas los archivos de configuracioacuten en configyabause encontraraacutes maacutes opciones de las que se pueden ajustar en el menuacute a veces es necesario ajustar los paraacutemetros directa-mente en los archivos de configuracioacuten

Con el tiempo las cosas mejoraran ya hay disponibles nuevas versiones del emulador pero auacuten no se han exporta-das a ARM Esto esn normal a la hora de emular consolas en dispositivos ARM y a pesar de todo esto auacuten me sigue gustando mucho el emulador y la Sega Saturn viene con algunos juegos muy buenos ptitSeb estaacute trabajando en el soporte OpenGL ES 20 lo cual seriacutea impresionante ya que tendriacuteamos acele-racioacuten 3D completa para este emulador y habriacutea maacutes juegos 3D que serian com-patibles Mientras tanto disfruta de tus juegos de Sega Saturn en tu ODROID

Radiant SilvergunRadiant Silvergun es uno de los diver-

tidos juegos shmup (Shoot lsquoem up) para la Sega Saturn Elegiacute eacuteste porque utiliza algunos elementos 3D en el trazado de las naves y los jefes de nivel Sin soporte OpenGL parece chapucero auacuten asiacute fun-ciona y lo hace a una velocidad decente

Otros juegosLa Sega Saturn tiene muchos maacutes

juegos a los que he jugado como Clock Knight 2 Crusader No Remorse Robo Pit Bug Too y Castlevania Symphony of the NightAlgunos fans de Sega po-driacutea preguntarse por queacute no he hablado de Night into Dreams para la Saturn Realmente no me gusta mucho este juego probablemente porque yo no soy muy bueno con ese tipo de juegos Sin embargo existe otra razoacuten y es que tiene algunos problemas con el emulador Soacutelo se ejecuta con el emulador Qt no con el GTK y parece tener algunos errores graacuteficos y algunas ralentizaciones Fun-ciona y las personas que quieren jugar lo puede hacer pero recuerda soacutelo hay un inteacuterprete de software SDL para esta versioacuten del emulador y este es un juego en 3D por lo que los graacuteficos no se veraacuten tan bien como cabriacutea esperar

mismo nombre Juegas con tres joacutevenes colegialas con poderes maacutegicos que usan para luchar contra los monstruos

King of Fighters lsquo96No creo que King of Fighters necesite

presentacioacuten Simplemente decir que parece ser un arcade muy bueno ex-portado a la Sega Saturn El combate es justamente el que debe ser y la muacutesica de calidad de CD simplemente se suma a la experiencia global del juego Dudo que cualquier versioacuten de MAME de este juego de accioacuten llegue a funcionar mejor que en el ODROID

Mega Man 8 ndash Anniversary Collectorrsquos Edition

Normalmente no soy demasiado fan

de Mega Man pero reconozco que este juego es realmente divertido Me encanta el estilo graacutefico da la impresioacuten de que todos los graacuteficos son ilustraciones de comic dibujadas a mano El juego fun-ciona muy bien en mi XU3 es uno de los juegos que realmente hay que probar para la Sega Saturn Gracias al formato CD viene con algo de muacutesica y algunas escenas interesantes de la serie de anime

figura 9 y 10 - mega man 8 con sus magniacuteficos graacuteficos e imaacutegenes de fondo al estilo comic

figura 11 y 12 - Radiant Silvergun es un shoot rsquoem up especial que muestra ele-mentos en 3D y presenta buen aspecto incluso sin la aceleracioacuten de graacuteficos

LINUX GAMINGJUEGOS LINUX

ODROID MAGAZINE 38

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 39: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

de Hardkernel y el otra estaacute disponible en http wwwtinkercadcom de Ron-ald Westmoreland que creoacute un modelo 3D para el XU4 El sitio TinkerCAD era lo bastante simple como para encontrar las mediciones del modelo 3D que he incorporado en mi disentildeo especialmente en el caso del ventilador y los puertos Este proyecto utiliza una gran cantidad de ldquocaacutelculos aproximadosrdquo asiacute como el meacutetodo de ensayo y error

Proceso fabricacioacutenCon las mediciones de PCB y el di-

sentildeo de la carcasa para Raspberry Pi cree mi primer borrador baacutesico y lo imprimiacute para comprobar si las dimensiones eran las correctas

Realiceacute algunos ajustes menores en las dimensiones y antildeadiacute pliegues donde aplicar pegamento

Los proyectos de bricolaje son estupendos especialmente cu-ando tienes todo lo que necesitas

en casa y te cuesta muy poco hacerlos Utilice todo mi presupuesto para con-seguir un XU4 asiacute que no me quedaba nada maacutes para una carcasa Teniacutea cierta preocupacioacuten por el hecho de usar el ODROID sin carcasa Sentiacutea que sus el-ementos estaban demasiado expuestos a la intemperie asiacute que investigue un poco sobre coacutemo hacer una simple carcasa que pudiera fabricar en casa

La idea de fabricar mi propia carcasa representaba un reto implicaba mu-chas cosas que me faltaban yo de las que sabiacutea muy poco No dispongo de las tiacutepicas herramientas eleacutectricas que se utilizan para hacer una carcasa de metal madera o plaacutestico que son difiacuteciles de conseguir ademaacutes de caras Tambieacuten ten-go cero conocimientos sobre el software de disentildeo de modo que los programas de CAD y similares estaban descartados Tambieacuten queriacutea que este proyecto fuese lo maacutes barato posible de modo que los materiales deberiacutean estar en casa o ser muy econoacutemicos y faacuteciles de conseguir

Mientras buscaba ideas descubriacute la ldquoPunnet Caserdquo para la Raspberry Pi y me di cuenta que era exactamente lo que estaba buscando Empeceacute preguntando en los foros ODROID si se habiacutea hecho alguna vez este tipo de carcasa para el XU4 pero no habiacutea ninguna asiacute que de-cidiacute hacer una yo mismo

Puesto que no tengo ninguna expe-riencia con el uso de programas CAD opteacute por hacer este proyecto en Micro-soft Office que es la uacutenica aplicacioacuten que sabiacutea utilizar Las medidas usadas en este proyecto proceden de dos fuen-tes una los detalles PCB del XU4 que se encuentran en la paacutegina de productos

Cambieacute la orientacioacuten del disentildeo a vertical para evitar tapar los puertos ES con los pliegues para pegamento y antildeadiacute liacuteneas de corte para los puertos

Tras varios ajustes en el tamantildeo y la posicioacuten de los agujeros para los puertos hice una apertura en forma cuadrado para el ventilador

Con los agujeros de los puertos y la entrada del ventilador en la posicioacuten cor-recta Cambieacute el papel de escritura nor-mal por papel de cartulina GSM 180

Tras de varias reimpresiones y reajus-tes para la entrada del ventilador antildeadiacute varios agujeros de ventilacioacuten en los la-dos y luego en la parte inferior

CARCASA PunnET PARA Xu4unA CARCASA DE CARTuLInA IMPRIMIbLE PARA EL ODROID-Xu4por Randolph Gimena

CARCASA XU4

ODROID MAGAZINE 39

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 40: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

El producto final visto desde arriba abajo y por el lateral

EnsamblajeEstas son las cosas que se necesitas

para hacer tu propia carcasa1 Impresora2 Papel de cartulina (recomiendo 180GSM)3 Tijeras4 Cuchillo de corte con precisioacuten5 Pegamento

El archivo docx estaacute disponible en httpbitly2bp82RB para los inte-resados en imprimir su propia carcasa Punnet para XU4 Desollar tu carcasa es muy faacutecil Antildeade un disentildeo insertando tu propia imagen envuelve la imagen ldquoDetraacutes del textordquo luego ajusta el tama-ntildeo y la posicioacuten de tu disentildeo y de los cor-tes para ahorrar en tinta de impresora

Aspecto de la carcasa Punnet vista desde la parte superior lateral e inferior

He antildeadido un agujero para el inter-ruptor eMMCSD revisar el disentildeo de entrada del ventilador en algo maacutes sen-cillo ya que en el anterior habiacutea de-masiadas capas una encima de la otra

CARCASA XU4

Mi disentildeo elegido ayuda a esconder los defectos realizados durante el corte

Tambieacuten me gustariacutea animar a los usuarios interesados a que modifiquen el archivo ya que yo lo hariacutea si pudiera pero mis conocimientos y habilidades no me dan para maacutes Sin duda me gustariacutea ver este disentildeo convertido en otros for-matos e incluso verlo mejorado como por ejemplo una versioacuten maacutes pequentildea No olvides de compartir tu trabajo en los foros ODROID y dejar cualquier comentario pregunta o sugerencia en el hilo original en httpbitly2bTGLUA

Enlaces uacutetiles

Proyecto de carcasa Punnet para XU4httpbitly2bp82RB

Carcasa Punnet para Raspberry Pi httpbitly2bEricG

Mediciones de la PCB del XU4httpbitly2bTGReN

ODROID MAGAZINE 40

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 41: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

con un obturador ondulado enviacutea la imagen liacutenea por liacutenea de arriba a abajo de una manera secuencial En otras palabras obtenemos una imagen ldquomaacutes antiguardquo en la parte superior de una caacutemara con obturador ondulado mientras que la parte in-ferior se muestra una imagen ldquomaacutes recienterdquo Asiacute obtenemos la posicioacuten anterior del punto azul a la izquierda y luego obte-nemos la posicioacuten actual del punto rojo Esto le da una ventaja injustificada al punto rojo que ganaraacute el juego si utilizamos la caacutemara con un obturador ondulado para descubrir al ganador

Por lo tanto iquestUna caacutemara con un obturador global ofrece realmente un resultado diferente Podemos comprobarlo si

vemos las imaacutegenes tomadas con una caacutemara de este tipo la OCAM-1MGN-T en este caso

Como era de esperar la caacutemara con obturador global mues-tra el resultado correcto Ahora el punto azul gana el juego iexclloacutegicamente

Vamos a continuar con nuestro uacuteltimo artiacuteculo dis-ponible en httpbitly2bu0Owj donde analizamos los obturadores de las caacutemaras digitales En este artiacute-

culo retomaremos este tema y haremos algunos experimentos interesantes

Experimento 1La figura 1 muestra una pista de carreras que tiene dos pun-

tos uno azul y otro rojo Estos puntos compiten en una carrera hacia la liacutenea de meta de color negro situada en el lado derecho Aunque ambos puntos estaacuten muy cerca intencionadamente haremos que el punto azul vaya un poco maacutes raacutepido que el punto rojo Si te fijas bien en la uacuteltima escena podemos ver que el punto azul toca en primer lugar la liacutenea de meta No obstante el punto azul llega soacutelo un poco antes que el punto rojo Al ser la diferencia tan pequentildea tenemos que utilizar una caacutemara para verificar el resultado

Ahora vamos a ver el resultado de la carrera usando imaacute-genes de caacutemaras reales tomadas con diferentes mecanismos de obturacioacuten La Figura 2 muestra el resultado de la carrera cap-turada por una tiacutepica caacutemara web con un obturador ondulado

En la Figura 2 iexclel punto rojo parece estar ganando ahora Claramente este es un resultado totalmente opuesto a la situa-cioacuten real Si has leiacutedo el artiacuteculo anterior y lo entendiste no te resultaraacute tan sorprendente porque como ya sabes una caacutemara

iquestPOR quE EL PERDEDOR PARECE quE TOCA LA LInEA DE META PRIMEROInTERESAnTES EXPERIMEnTOS PARA EnTEnDER LA DIfEREnCIA DE LOS MECAnISMOS DE ObTuRACIOnpor withrobotwithrobotcom

OBTURADOR DE LA CAMARA

figura 1 - Carrera de dos puntos

figura 2 - Imagen de una caacutemara con obturador ondulado

Figura 3 - Imagen de caacutemara con obturador global (ICAM-1 MGN-T)

Figura 4 - Los nuacutemeros iguales que aparecen en una liacutenea vertical

ODROID MAGAZINE 41

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 42: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

Experiment 2Haremos otro experimento para

mostrar la diferencia entre los dos tipos de caacutemaras de una forma maacutes cuantita-tiva Nuacutemeros iguales que aparecen en una liacutenea vertical a la vez

Ahora vamos a incrementar todos los nuacutemeros muy raacutepidamente de 0 a 9 Al igual que antes vamos a examinar primero la imagen tomada desde una caacute-

mara con obturador onduladoComo era de esperar la parte inferior

de la imagen muestra nuacutemeros distintos a la parte superior Por lo tanto se ob-tiene un nuacutemero maacutes alto en la parte in-ferior que en la parte superior En con-creto 0 en la parte superior 1 en la parte intermedia y casi 2 en la liacutenea inferior

Ahora vamos tomar algunas imaacutegenes con una OCAM-1MGN-U que cuenta

con un obturador global iquestObtendremos los mismos nuacutemeros arriba que abajo iexclSe aceptan apuestas

La conclusioacuten que podemos sacar de estos experimentos es que si necesi-tas sincronizacioacuten temporal en todos los puntos de un fotograma de viacutedeo en-tonces una caacutemara con obturador global es tu mejor opcioacuten

OBSTURADOR DE LA CAMARA

figura 5 - Nuacutemeros captados por una caacutemara con obturador ondulado

figura 6 - Nuacutemeros capturados por una caacutemara con obturador global

VU7 PLUS

El ODROID-VU7 ha recibido recientemente una actualizacioacuten muy buena junto con una mayor compatibilidad con Android y Linux La versioacuten origi-nal soportaba una resolucioacuten de hasta 800x480 el modelo Plus la aumenta

hasta1024x600 y sigue permitiendo los 10 puntos de contacto a la vez y puede ser adquirida en la tienda de Hardkernel en httpbitly2cmKyuN

Esta pantalla multi-taacutectil de 7 pulgadas para los ODROIDs ofrece a los usuarios la capacidad de crear sistemas todo en uno proyectos integrados tales como tablets consolas de videojuegos sistemas de informacioacuten y entretenimiento y sistemas em-bebidos La pantalla de 1024 x 600 se conecta a ODROID-C2C1+ a traveacutes de una placa de conexioacuten HDMI y una placa de enlace micro-USB que controlar la potencia y la sentildeal Soacutelo tiene que conectar la fuente de alimentacioacuten a la clavija del C2C1+ y ya estaacute lista para funcionar una vez que instales la actualizacioacuten del sistema operativo maacutes reciente Esta pantalla taacutectil de alta calidad estaacute disentildeada especiacuteficamente para trabajar con Android y Linux en el ODROID-C1+ C2 y XU4

Especificaciones- LCD-TFT de 7 pulgada- Resolucioacuten de la pantalla 1024 x 600 piacutexeles- Entrada taacutectil capacitiva de 5 dedos - Consumo de energiacutea 700 mA5 voltios- Interruptor de encendidoapagado para la luz de fondo- Amplio aacutengulo de visioacuten (en grados) 75 Izq 75 Der 75 Arriba 75 Abajo- Dimensiones de pantalla 1729 x 243 x 15 mm con interruptores y conectores)- Tamantildeo visible la pantalla 1536 x 8664 mm (aacuterea activa)

ODROID-vu7 PLuSTu PAnTALLA TACTIL fAvORITA AHORA CuEnTA COn unA RESOLuCIOn SuPERIORpor Justin Lee

El ODROID-VU7 Plus soporta una resolucioacuten de hasta 1024x600 es compatible con los modelos ODROID-C0C1C1+ XU4 y C2 y soporta 10 puntos de contacto a la vez

ODROID MAGAZINE 42

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 43: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

mucho De hecho me gustoacute tanto que me cambieacute por com-pleto a GNU Linux y nunca me arrepentiacute GNU Linux me ha abierto muchas puertas Empeceacute a frecuentar foros de Ubuntu donde encontreacute algunos amigos y mentores

Aprendiacute programacioacuten y participe en diferentes tipos de proyectos con otra gente Me convertiacute en un miembro del equipo de Debian Science y realice el empaquetado de soft-ware de cristalograacutefica Actualmente trabajo con el equipo LibreELEC y me ocupo de las cuestiones de CEC Amlogic junto con Gerald Dachs Tambieacuten soy un moderador del foro junto con wrxtasy en los foros ODROID para la comunidad LibreELEC

iquestQueacute te atrajo de la plataforma ODROID

Mi primer dispositivo ARM fue una PandaBoard ES He estado usando Kodi por un tiempo en mi PC y queriacutea reducir el consumo de energiacutea pero siempre habiacutea pro-blemas con Kodi y el desentrelazado Continuamente bus-caba alternativas y de vez en cuando buscaba en Internet un dispositivo ARM para ejecutar mi centro multimedia Existiacutea una gran comunidad y Kodi soportaba la Raspberry Pi asiacute que me hice con una pero de nuevo quedeacute decep-cionado porque teniacutea limitaciones con los coacutedecs En 2015 me encontreacute con una lista de dispositivos ARM Android en la Wiki de Kodi y es cuando conociacute el ODROID-C1+

Haacuteblanos un poco sobre tiTengo 31 antildeos y vivo con mi esposa Ana y mi hijo recieacuten

nacido Nemuel en una ciudad suburbana cerca de Marburg en Alemania Desarrolle mi aprendizaje como ayudante de laboratorio quiacutemico en el departamento de quiacutemica y pro-ductos farmaceacuteuticos de la Universidad de Marburg Actual-mente trabajo en el departamento de cristalografiacutea de rayos X como administrador teacutecnico y de sistemas Principal-mente intentamos determinar estructuras quiacutemicas en 3D a partir de experimentos de difraccioacuten de rayos-X Mi trabajo me obliga a hacer un montoacuten de caacutelculos por ordenador Tambieacuten me encargo de nuestros servidores Linux y de la reparacioacuten y mantenimiento de nuestras maacutequinas

iquestCoacutemo fueron tus inicios con los ordenadoresMi primer ordenador fue un Amiga A500+ y por supues-

to soacutelo lo utilizaba para los juegos Teniacutea que compartirlo con mis hermanos y mis padres Teniacuteamos muchos juegos en disquetes pero al no tener un disco duro para guardar las partidas siempre teniacuteamos que empezar la partida de nuevo

Cuando teniacutea 12 antildeos conseguiacute mi propio PC con Win-dows 98 con el que empeceacute a experimentar El PC era de-masiado lento para actualizar a Windows XP de modo que intenteacute instalarle SuSE Linux pero fracase Unos antildeos maacutes tarde me dieron un nuevo PC probeacute Ubuntu y me gustoacute

COnOCIEnDO un ODROIDIAnRADOSTAn RIEDEL (RAybunTu)DESARROLLADOR LIbREELEC COn GRAn TALEnTOeditador por Rob Roy

CONOCIENDO UN ODROIDIAN

Radostan con su hermosa esposa Anna en Amsterdam Tablet LibreELEC de Radostan C2 VU7 Plus y wifi Hifi Shield+

ODROID MAGAZINE 43

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44

Page 44: Cómo hakear el famoso juego suplantando el sistema GPS · 2016. 10. 8. · Pokémon Cómo hakear el famoso juego suplantando el sistema GPS ... okemon Go, el juego para móviles

incorporado El WiFi integrado tambieacuten estariacutea muy bien El mayor problema de los dispositivos Amlogic es el so-porte de software verdaderamente me gustariacutea ver soporte de kernel estaacutendar para los productos ODROID actuales y futuros Puesto que muchas personas se sienten atraiacutedas por los productos ODROID debido a Kodi seriacutea maravil-loso que Hardkernel ofreciera moacutedulos eMMC y tarjetas microSD con LibreELEC pre-instalado para los principi-antes En el futuro me gustariacutea tener una placa ODROID ARM64 modular con soporte SATA

iquestQueacute aficiones e intereses tienes aparte de los ordenadores

Toco la armoacutenica al estilo blues pero no de manera pro-fesional Tengo cierto intereacutes por los tradicionales som-breros de fieltro para hombres desde su historia limpieza moldeado y fabricacioacuten Supongo que mi intereacutes procede de las viejas peliacuteculas americanas con Humphrey Bogart

iquestQueacute consejo le dariacutea a alguien que desea aprender maacutes acerca de la programacioacuten

En mi opinioacuten la mejor manera de aprender es leer el coacute-digo fuente Empezar a utilizar un lenguaje de script como bash e intentar mejorarlo con pequentildeas funciones o pro-gramas dentro del terminal Copiar reutilizar y mejorar el coacutedigo fuente de las demaacutes personas Veras que despueacutes de alguacuten tiempo todo se hace maacutes faacutecil No tengas miedo de cometer errores Lee las advertencias y los errores de compi-lacioacuten Python es un buen lenguaje para empezar tambieacuten porque aprendes a sangrar el coacutedigo fuente de una forma limpia y sin pareacutentesis Es importante no darse por vencido Hay cosas que no lograba hacer hace 3 meses y ahora si que puedo

Compre uno lo probeacute y finalmente encontreacute lo que estaba buscando La comunidad ODROID es muy uacutetil y estaacute en constante crecimiento y con Hardkernel tenemos una gran compantildeiacutea que apoya a la comunidad y escucha lo que los usuarios necesitan

iquestCoacutemo utilizas tus ODROIDsLos uso para el desarrollo del kernel y para mis centros

multimedia Actualmente tengo la intencioacuten de crear un servidor multimedia Emby de bajo consumo o un Plex Me-dia Server con uno de mis C2 Tambieacuten quiero montar unos sensores ambientales con la Weatherboard 2 en nuestro la-boratorio

iquestCuaacutel es tu ODROID favorito y por queacute

El ODROID-C2 es mi favorito ya que puede decodi-ficar todos mis formatos multimedia en Kodi y cuenta con un consumo de energiacutea muy bajo que estaacute en aproximada-mente 18 W - 21W mientras ves viacutedeos a 1080p de 10 bits HEVC No he tenido la oportunidad de probar un XU4 pero supongo que para poner en marcha un centro mul-timedia en un dispositivo Amlogic es la mejor opcioacuten El chip S905 es justamente la clave muchas empresas estaacuten lanzando dispositivos Android TV con ese chip este antildeo

iquestQueacute innovaciones le gustariacutea ver en futuros productos de Hardkernel

Me gustariacutea ver nuevos dispositivos Amlogic en el futuro El chip S912 contaraacute con una interfaz de entrada TS que sirve para conectar sintonizadores digitales DVB y ATSC Ademaacutes con el DAC integrado ya tenemos un HiFi shield

MEET AN ODROIDIAN

Radostan utiliza un ODROID-C2 para el desarrollo del kernel que siempre estaacute conectado al televisor para identificar los errores CEC Uno de los pasatiempos de Radostan son los claacutesicos sombreros de

fieltro Este es un sombrero hecho a medida por Art fawcett que fue creado para parecerse a un sombrero de Humphrey Bogart de ldquoEl halcoacuten malteacutesrdquo (1941)

CONOCIENDO UN ODROIDIAN

ODROID MAGAZINE 44