Compilando Reicast: Un emulador de Dreamcast para tu ODROID

Esta guía te enseñará a compilar Reicast desde cero, aunque si el tema de la emulación es algo nuevo para ti, tienes una pequeña descripción sobre Reicast en el sitio web oficial http://reicast.com/. Reicast es un emulador de Sega Dreamcast. Es una aplicación que te permite ejecutar juegos de Dreamcast en tu ordeandor o teléfono Android. Incluso hemos recurrido un poco a la “magia” para hacer que las cosas se vean mejor que en la propia Dreamcast. Por supuesto, no todos los juegos funcionan, y los que lo hacen a menudo tienen algunos fallos.

Reicast apuesta por la velocidad y la ejecución sobre Android. Deriva de la base de código nullDC. Hemos estado Trabajando en él en nuestro tiempo libre, porque nos encanta trabajar en proyectos complicados que nos den quebraderos de cabeza. El desarrollo se remonta a finales de 2003 y en su mayor parte no ha sido constante. Naturalmente, existen muchos otros proyectos de emulación de Dreamcast, cada uno con sus propios objetivos y prioridades, como son Makaron, Demul, Redream y nullDC. Si Reicast no te funciona, siempre puedes probar cualquier otro.

Figura 1 - Juegos de Dreamcast

 

Figura 2 - Emulador Reicast en el ODROID-XU4 https://www.youtube.com/watch?v=j0jEUcQx-vM

Compilar desde el código fuente

Para compilar Reicast desde la fuente, escribe los siguientes comandos:

$ cd ~
$ git clone https://github.com/libretro/reicast-emulator.git
$ wget -O xu4.patch https://pastebin.com/raw/pfVjnVs3
$ patch -p1 < xu4.patch
$ platform=odroid ARCH=arm make -j7
$ strip reicast_libretro.so
$ cp reicast_libretro.so ~/.config/retroarch/cores/.
En primer lugar, necesitarás algunos archivos de BIOS para NAOMI y Dreamcast, que puedes localizar en https://www.libretro.com/index.php/reicast-libretro-now-supports-naomi-other-additions/ y https://docs.libretro.com/library/reicast/. Si deseas conocer la suma de comprobación md5 del archivo BIOS NAOMI, puedes consultar el correspondiente archivo de información /home/odroid/.config/retroarch/cores/reicast_libretro.info

Para jugar a los juegos a una velocidad decente, tras haber cargado algún juego, abre el menú de RetroArch, dirígete a “Core Optiones”, localiza los siguientes parámetros y cámbialos:

reicast_framerate = "normal"
reicast_enable_rttb = "enabled"
reicast_threaded_rendering = "enabled"
Para más información y futuras publicaciones, consulta el hilo del foro: https://forum.odroid.com/viewtopic.php?f=98&t=32173#p234251.

Control Remoto GPIO: Versión Python de Atlas Toolkit

Estaba interesado en controlar el GPIO de mi ODROID-C2 con un teléfono inteligente, así que desarrollé una aplicación web a modo de interfaz web para la librería WiringPi. En esta primera versión, puedes configurar el modo pin entre IN, OUT y PWM (software), y, para los modos PWM y OUT, configurar el valor del pin. Para usarlo con la versión de Python de la librería WiringPi instalada, simplemente escribe los siguientes comandos:

$ git clone http://github.com/epeios-q37/atlas-python
$ sudo python GPIO
Tras el segundo comando, abre la URL que se muestra en un navegador web. Desde esa página web, ahora puedes editar el estado GPIO de tu ODROID-C2. Las aplicaciones RGB y GPIO están diseñadas para ser utilizadas en un ODROID-C2. La versión Python de WiringPi debe instalarse usando el siguiente comando:
$ pip install wiringpi
La aplicación tiene que ser iniciada con sudo:
$ sudo python GPIO
or
$ sudo python RGB
Las siguientes aplicaciones son solo ejemplos. Puedes escribir fácilmente tus propias aplicaciones.

Figura 1: demostración de la aplicación RGB https://www.youtube.com/watch?v=4m5CyhT7yiA

Figura 2: demostración de la aplicación GPIO https://www.youtube.com/watch?v=I-cVCivRb9o

La aplicación RGB está diseñada para controlar un led RGB. Hay un video en https://www.youtube.com/watch?v=4m5CyhT7yiA que muestra cómo funciona. El GPIO permite controlar los pines básicos. Hay un video en https://www.youtube.com/watch?v=I-cVCivRb9o que muestra cómo funciona. Para obtener más información, consulta la página README de git del proyecto en https://github.com/epeios-q37/atlas-python/blob/master/README.md.

Retrospectiva de ODROID Magazine: Un Análisis de la Evolución de la Revista durante los Primeros 5 Años

Te encuentras leyendo algo que la mayoría de los grupos de fabricantes de placas desean: una revista que puedas enseñar a tus amigos y que despierte interés en esas curiosas placas de circuitos con las que jugueteas. Inevitablemente, cuando les dices que vayan al foro, por muy bueno que sea un foro, no sabes muy bien por dónde empezar a explorarlo. Pero, la suerte quiso que, un día el siguiente post apareciera en el foro:

Con este post en el foro ODROID en noviembre de 2013, las cosas empezaron a rodar:

Unos días más tarde, tuvimos una portada que despertó un gran interés y empezamos a trabajar juntos:

¡Así fue como empezó todo! ¿Dónde hemos estado todo este tiempo? ¿Te apetece recordar con nosotros?

2014 - Año Uno

Nuestro primer año comenzó con el lanzamiento del ODROID-U3, que vino a reemplazar al ODROID-U2 y que convivió con el ODROID-X2. El primer número llego a ser una gran proeza, donde el equipo de la revista se reunió online y se conoció. Para el número 2, en pleno auge de Minecraft, Hardkernel nos enseñó a convertir el U3 en una gigante tablet, y sorprendió a muchos usuarios con lo que fue el inicio de la tendencia de nuestra revista por mostrar increíbles proyectos. En el siguiente número, presentamos algo que ha motivado a la gran mayoría de los usuarios de ordenadores desde los albores de la informática: los JUEGOS. Fue nuestra primera edición en la que los juegos fueron el centro de atención, y nunca nos hemos cansado de hablar de ellos, como podrás comprobar. (De hecho, si no lo controlamos, haríamos de la revista una revista exclusiva de juegos, pero fue entonces...)

Imagen 1 – Números de Enero, Febrero y Marzo de 2014

Cuando en el siguiente número, sufrimos un completo cambio de ritmo y aprendimos a integrar un ODROID en una camioneta, y sí, en ese momento no lográbamos conseguir suficientes Minecraft. En mayo de 2014, presentamos el primer robot impulsado por ODROID, y con el lanzamiento de ODROID-UPS y ODROID-SHOW, nunca fue tan fácil desarrollar proyectos novedosos y portátiles. (También somos conscientes de que, desde ese momento, ¡Estábamos siendo monitorizados sobre cómo tratamos a nuestros queridos robots!) Llegados a este punto, los lectores nos pedían más, así que empezamos a tratar los sistemas operativos, y dedicamos nuestra edición de junio a comparar un buen número de imágenes de Ubuntu preinstaladas para que los usuarios las vieran y decidieran cuál era la que mejor se adaptaba a sus placas. En ese momento, lo que estremecía los núcleos de nuestros dispositivos era el venerable Ubuntu 13.04, siendo el 13.10 el que llego a acaparar toda la atención, mientras que, en un primer plano, había algunos usuarios que ejecutaban Ubuntu 14.04.

Imagen 2 – Números de Abril, Mayo y Junio de 2014.

Al mes siguiente, nos encontrábamos a mitad de año, y para el verano en el hemisferio norte, Hardkernel nos sorprendió a todos los usuarios del U3 con un dispositivo en forma de placa meteorológica, y aunque en la portada no aparecía un gran titular, empezábamos a echarle el ojo a los clústeres informáticos, el tema favorito de los fanáticos. Luego, tuvimos el ODROID-W con una desafortunada corta duración, un increíble ordenador portátil que llegó a todos los usuarios y se quedó con todos aquellos que lo que lo desearon. Aunque estuvo poco tiempo con nosotros, nuestros corazones siempre estarán contigo W. ¡Eras increíble! En septiembre, mostramos como nuestros usuarios iban profundizando en el desarrollo de proyectos, y presentamos un robot con ODROID-U3 dentro de un juguete WALL-E. Los usuarios empezaban a convertir sus ODROIDS en auténticos ordenadores portátiles, mostrando lo estable que era usar Linux en los ODROIDS. Todo esto con tan solo nueve meses de revista.

Imagen 3 - Ediciones de Julio, Agosto y Septiembre de 2014

Con el número de otoño, llegamos a octubre de 2014 y Hardkernel nos sorprende con un nuevo producto: el honorable ODROID-XU3. Un completo fenómeno, con 8 núcleos y un montón de puertos. Y mientras nuestras cabezas seguían pensando en él, junto con él, recibimos el ODROID SMART POWER para evaluado. En noviembre de 2014, analizamos a fondo la virtualización con los ODROIDS, mostrando proyectos que utilizan el bajo consumo de energía de nuestros dispositivos. No siendo más modesto de lo que necesitábamos, ¡Probamos un clúster ODROID con 96 núcleos! En diciembre, terminamos nuestro primer año con el ODROID-C1, que trajo consigoº la conexión gigabit nativa para el deleite de los usuarios, ¡Y aparecieron ODROID refrigerados con líquido por todas partes!

Imagen 4 – Números de Octubre, Noviembre y Diciembre 2014.

2015 - Año Dos

Al inicio de nuestro segundo año, teníamos la cabeza en las nubes, literalmente. Comenzamos el año enseñando a nuestros usuarios cómo integrar mejor sus dispositivos con los silbidos y timbres que la computación en la nube de 2015 nos podía ofrecer. ¿Y adivina lo que estuvimos también analizando? Si imaginabas que eran juegos, no podrías haber dado mejor en la diana. En febrero, estuvimos jugueteando más con la placa meteorológica, aunque procediendo de la computación en la nube, todos estábamos deseando ejecutar Docker en nuestros queridos ODROIDs, demostrando que nuestros dispositivos podrían ser un complejo entorno en sí mismos. Luego, después de pasar por todo los frikis tecnológicos, volvimos a nuestros proyectos de origen y nos fuimos volando a desplegar un Quadcopter impulsado por ODROIDs, usando Navio+.

Imagen 5 – Números de Enero, Febrero y Marzo de 2015

Abril fue un gran mes, ya que mostramos una distribución Linux centrada en la seguridad llamada Kali, y montamos un espectáculo de luces al estilo bricolaje para tu centro multimedia ODROID con Ambilight. Si te pidiera que adivinarás cual es el tema del que nunca nos cansamos de hablar, ¿Sabrías decirme cuál es? Si estás pensando en los JUEGOS, darías en el clavo, ya que, en mayo de 2015, hablamos de nuestro deseo de continuar jugando a más y más juegos, esta vez con un tutorial de emulación de Nintendo 64. Nuestra edición de mediados de año de 2015 incluía una increíble carcasa de escritorio (no pretendía que fuera una broma) que los usuarios estudiarían para crear increíbles factores de forma para sus desarrollos de escritorio ODROID, e hicimos un guiño al ODROID original que lo inició todo.

Imagen 6 - Números de abril, Mayo y Junio de 2015

En julio, siempre nos gusta recordar con cariño que solíamos tener tiempo en la escuela, ¿para qué? Si has pensado en los juegos, nuevamente has acertado (con los juegos nunca te equivocas). Hicimos un artículo sobre juegos raros, pero centramos toda nuestra atención en ver películas y programas de televisión utilizando Popcorn Time. En agosto, el ODROID-XU3 tuvo que dejar paso al ODROID-XU4 que llegó a convertirse en la placa informática ARM más rápida de Hardkernel, título que mantiene hasta el día en el que escribo este artículo. En septiembre, echamos en falta nuevos proyectos robóticos y luego sorprendimos a todo el mundo con consejos prácticos para nuestro compañero Robot Lamp. Hardkernel lanzó el ODROID Cloudshell, una genial solución NAS con la que nuestros usuarios pasaron un buen rato.

Imagen 7 - Ediciones de Julio, Agosto y Septiembre de 2015

En octubre, regresamos a nuestras raíces web y enseñamos cómo ejecutar Apache Tomcat para proporcionarles a nuestros queridos lectores, los medios necesarios para alojar sus propias páginas web. A continuación y después de haberlo probado todo, Hardkernel nos presenta otro genial dispositivo: el HiFI Shield, que ofrece a los aficionados a la música un increíble sistema de sonido con el ODROID. Y otro año que pasa, y cuando crees que la comunidad ya no nos sorprende, ¿Qué no presenta? ¡UN PORTERO ROBOTS! Si no has adivinado que nos volveríamos completos humanoides con los robots ODROID, ¡te equivocaste!

Imagen 8 – Números de Octubre, Noviembre y Diciembre 2015

2016 - Año Tres

¿Con qué empezó nuestro tercer año? Alguien que haya leído el artículo hasta aquí, se estaría preguntado si serían juegos. Pero nuestra edición de enero de 2016 no sólo hablaba de jugadores, sino que hablaba de JUGADORES FORMALES, ¡ya que Hardkernel presentó su Universal Motion Joypad! En febrero de 2016, volvimos a ser portátiles, con el lanzamiento del ODROID-C0. Presentamos un nuevo kit de robots y nos metimos de lleno en el ya desaparecido Cyanogenmod para la línea de placas X/XU. En marzo de 2016, el nuevo y potente ODROID-C2 llegó al mercado, el cual proporcionó a los usuarios que realmente necesitaban un impulso para proyectos de 64 bits una nueva plataforma para trabajar.

Imagen 9 – Numero de Enero, Febrero y Marzo de 2016

Abril de 2016 vio el lanzamiento de la oCAM, una cámara diseñada para trabajar con tus dispositivos ODROID, e iniciamos la era de la realidad aumentada en los ODROIDS. Por lo general, somos divertidos pero serios, en mayo de 2016 abordamos un problema bastante serio, puntualizando todo lo que necesitabas saber para analizar a fondo la Web profunda con tu dispositivo ODROID, así como entender cómo funciona la Inyección de Código Inalámbrico. Seguimos con la edición de junio presentando una completa guía que enseñaba a nuestros lectores cómo ensamblar una pantalla táctil para que funcionase con el ODROID-XU4, junto con un excelente tutorial sobre cómo configurar un servidor Samba.

Imagen 10 – Números de Abril, Mayo y Junio

En julio de 2016, la comunidad publicó una excelente versión optimizada de Minecraft, y no pudimos resistirnos, lo pusimos en la portada. Después de todo, es un juego, y si no lo he enfatizado lo suficiente, ¡Nosotros realmente disfrutamos de los juegos y hablamos de ellos! En agosto, hicimos una autentica proeza con el obturador global de la OCAM y cómo puedes sacar lo mejor de este increíble dispositivo, iniciando una tendencia que seguimos durante un trimestre: hablando sobre la oCAM y la seguridad, que era tan importante como lo es hoy en día. Sin embargo, de repente todo cambió, y en septiembre de 2016, todos los usuarios de ODROID que ejecutaban un sistema compatible con el sistema operativo Android querían ejecutar solo un software: Pokémon GO. Aunque todavía no teníamos una carcasa portátil para llevar nuestros avanzados ODROID a las calles, nuestros intelectos colectivos no nos detuvieron, y trabajamos para engañar al GPS de Android con el fin de poder ir a cazar Pokémon desde la comodidad de nuestras casas.

Imagen 11 – Números de Julio, Agosto y Septiembre

Luego vino la edición de otoño, e hicimos un tutorial sobre cómo ejecutar estupendos juegos de última generación usando ODROID-C2 y Gamestream, para que puedas disfrutar incluso de los mejores juegos de PC en tu sala de estar si así lo deseas. En noviembre de 2016, volvimos a visitar nuestro tutorial de Ambilight, pero ahora sobre una gloriosa pantalla 4K, ¡porque podemos hacerlo! Realmente amamos a nuestros ODROIDS y pensamos que son los más geniales, y por lo general lo son, a menos que se sobrecalientes, ¿Entonces adivina? Descubrimos cómo enfriar nuestros ODROIDS y, en diciembre de 2016, mostramos cómo hacerlo con refrigeración por agua.

Imagen 12 – Números de Octubre, Noviembre y Diciembre de 2016

2017 - Año Cuatro

En enero de 2017, hicimos una edición especial con todos nuestros productos ODROID como una celebración de nuestros productos, y también porque era un año nuevo, hicimos un tutorial sobre cómo usar ODROID para controlar una bodega. Febrero siguió con el VU8-C, una carcasa móvil para tus ODROIDS de clase C que es donde está el verdadero negocio, con una batería de larga duración, una pantalla táctil, una pantalla increíble y, además, el lanzamiento del ODROID SmartPower 2. Luego, después de un periodo de cuatro números sin hablar de juegos, recordamos que nos encanta hablar de ellos, le presentamos a nuestro querido lector, un tutorial sobre cómo hacer su propia estación de arcade ODROID.

Imagen 13 – Números de Enero, Febrero y Marzo

En abril de 2017, para nuestro número 40, presentamos a Walter: un robot de aspecto clásico con tecnología ODROID. Llegó mayo de 2017, y con ello, presentamos una guía muy completa que te permite volver a usar la carcasa Nintendo 64 que encontraste en el mercadillo para jugar con estilo. Generalmente, la mejor época del año para ODROIDians es junio, y en 2017 no fue diferente. Junio de 2017 fue cuando se lanzó el XU4Q, coincidiendo con un excelente artículo sobre cómo imprimir en 3D tu propia carcasa XU4.

Imagen 14 – Número de Abril, Mayo y Junio de 2017

En julio de 2017, presentamos un artículo que no llegó a sacudir al mundo, pero te aseguró que, si el mundo se estremeciera, lo sabrías con total seguridad. Fue el número del sismógrafo ODROID, donde presentamos cómo medir la aceleración sísmica con el ODROID-C2. En agosto de 2017, mostramos cómo empezar con el mundo de la programación en inteligencia artificial, y este número supuso un hito importante, ya que fue la última edición que se presentó en formato PDF puro. A partir de ese momento, hicimos que el sitio web jugase un papel fundamental en la propia revista, cambiando la forma en que trabajamos y compartimos los artículos. El PDF todavía está disponible, pero el nuevo sitio web permitía a los usuarios buscar, comentar e imprimir su propia copia en casa. En septiembre de 2017 se presentó el ODROID-HC1, que te permitió crear mejores pilas de dispositivos para montar tus clústeres y servidores NAS.

Imagen 15 – Número de Julio, Agosto y Septiembre de 2017

Octubre de 2017 se centró en cómo crear tu propio servidor multimedia doméstico, que es el tema favorito del lector y uno de los proyectos domésticos más populares. LineageOS acudió al rescate tras la desaparición de Cyanogenmod para los usuarios de Android en ODROIDS, y noviembre de 2017 estuvo dedicado a guiarte cómo compilarlo sobre la serie XU. Para finalizar 2017, creamos un tutorial sobre el funcionamiento de tus manos libres ODROID con el AD2P y la unidad HFP en tu ODROID-XU4.

Imagen 16 – Números de Octubre, Noviembre y Diciembre de 2017

2018 - Año Cinco

Los proyectos de los cinco años son siempre una gran estrategia de por vida, y si estuviste con nosotros desde el principio, ¡fue el momento de vivir como un rey! Presentamos el cuadro de mandos ODROID en enero de 2018, y en febrero, el éxito de ODROID-HC1 vió como su sucesor, el ODROID-HC2, hacía que los clústeres fueran aún más potentes que antes. Marzo de 2018 contó con un increíble artículo de matemáticas como nunca antes lo hemos visto, y un impresionante artículo sobre el descubrimiento de los números primos utilizando el ODROID-C2 honró las páginas de nuestra humilde revista.

Imagen 17 – Números de Enero, Febrero y Marzo

Siempre podemos contar con innovadores e interesantes proyectos con nuestros dispositivos. ¡Abril de 2018 tenía un artículo que mostraba como un ODROID-XU4Q se podía usar como un estudio de sonido portátil! Mayo de 2018 fue el momento de volver a ver lo que tu ODROID podía aportar a tu automóvil y, con el nuevo software para Android Auto, podías ir más lejos que nunca. Junio fue el mes para los jugadores. Después de todo, si alguna vez has creído que nos cansaríamos de los juegos, por supuesto te equivocaste. ¡Hardkernel lanzó la GameStation TURBO, una carcasa para tu XU4 que se parece a la consola Nintendo 64!

Imagen 18 – Números de Abril, Mayo y Junio de 2018

Y mientras aún te regocijabas con la GameStation, Hardkernel duplico su potencial y lanzó el sorprendente ODROID-GO para celebrar los 10 años de Hardkernel, ¡un dispositivo que puede hacer maravillas (que imaginaste) con tus juegos! ¡Qué buen julio fue! Después de este gran dispositivo de juego, en agosto de 2018 se nos presentó un problema de seguridad que nos enseñó a administrar todas las contraseñas en línea con KeePass. Septiembre fue bastante nostálgico ya que publicamos un tutorial para emular juegos de Commodore, conmemorando el ordenador que tanto amamos durante nuestra adolescencia.

Imagen 19 – Números de Julio, Agosto y Septiembre de 2018

En octubre de 2018, publicamos otro artículo sobre cómo utilizar tu ODROID en tu coche y dar vida a un sistema de información y entretenimiento para los viajes, con una versión de Android Auto aún más experimentada para el ODROID-C2. Luego vino el número de noviembre de 2018, que nos dio la noticia sobre la aparición del primer ODROID X86, el ODROID-H2, marcando el inicio de una nueva era que sin duda disfrutaremos. Y, finalmente, en diciembre de 2018, ¡Finalizamos la primera misión de nuestro quinto año con el ODROID-GO convertido en un tricorder Star Trek!

Imagen 20 – Números de Octubre, Noviembre y Diciembre de 2018

¡Ahora te encuentras leyendo nuestro importante número del quinto aniversario y te agradecemos que te hayas unido a nosotros en este viaje informático hacia el futuro!

*¡Damos las gracias a Starline por la insignia de quinto aniversario que hemos usamos en nuestra portada!

Introducción a NEMS Linux - Parte 4: NEMS 1.5

Si has estado siguiendo la serie "Introducción a NEMS Linux" de los últimos meses, ya estarás bastante familiarizado con lo que NEMS Linux significa para tu red. El gran artículo de diciembre casi me rompe la aguja de mi medidor friki, así que con el reciente lanzamiento de NEMS Linux 1.5 me gustaría suavizar un poco las cosas y presentarte lo más avanzado que trae de serie el servidor de monitorización profesional Nagios, disponible ahora para la plataforma ODROID-XU4. Elegí el XU4Q como mi placa de desarrollo principal para NEMS 1.5, que resultó ser una gran placa para trabajar.

Figura 1 - El cuadro de mandos de NEMS Linux 1.5

Aunque esta es una pequeña introducción a algunas de las características más notables de NEMS Linux 1.5, tienes total libertad para navegar por el registro de cambios y así poder hacerte una idea de todo lo que se ha incluido en esta magnífica versión. NEMS Linux siempre ha tratado de ofrecer un servidor de monitorización excepcional muy rico en funciones para redes de cualquier tamaño. La versión 1.5 no solo aumenta la experiencia con una serie de mejoras, sino que también empieza a llevar NEMS Linux a los entornos de las grandes empresas. Ya sea formando parte de un centro de datos, una junta directiva escolar, una compañía Fortune 500 o simplemente una red doméstica, NEMS está diseñado para ti. Veamos algunas de las mejoras que encontrarás en NEMS Linux 1.5.

Mi interés centrado en la empresa no significa que estas nuevas características no puedan aplicarse también a una pequeña tienda de ordenadores. Todo lo contrario: significa que el usuario de una red más pequeña también se beneficiará de las características del nivel empresarial. Una de estas características, diseñada específicamente para ayudarte con el proceso de auditoría del software, es la herramienta de configuración del sistema NEMS, que ahora incluye la opción de cambiar el calendario de actualizaciones automáticas del software o deshabilitarlas por completo. El objetivo es permitir que el administrador de la empresa tenga la oportunidad de auditar el software. La desactivación de la función de actualización automática de NEMS que evita la puesta en marcha de revisiones de software no autorizadas te brinda la oportunidad de probar y auditar las actualizaciones antes de implementarlas en los servidores de producción de NEMS.

Figura 2 - Ahora puede controlar las actualizaciones automáticas de NEMS

Tu ID de hardware NEMS se ha eliminado de la Herramienta de configuración del sistema NEMS y se ha añadido una nueva función al menú de Configuración: Información general del servidor NEMS. Esta página tan útil te proporciona todo lo que necesitas saber sobre tu servidor NEMS Linux en una única pantalla. Por ejemplo, en esta información general del servidor NEMS encontrarás la dirección IP LAN de tu servidor NEMS Linux, útil si \nems.local no te funciona. También encontrará la versión de NEMS que estás utilizando y, por supuesto, tu ID de hardware NEMS, entre otros elementos específicos del servidor.

Figura 3: Monitorizar la temperatura de tu CPU ODROID-XU4

Uno de los objetivos de NEMS Linux 1.5 ha sido introducir varias de las características solicitadas por los usuarios en los foros de la comunidad. Esto ha supuesto la integración de una serie de nuevos comandos de verificación. Por el camino, he configurado algunos servicios demos nuevos listos para usar, que incluyen la monitorización de la temperatura de la CPU y pruebas de velocidad de Internet. También he incluido la monitorización SNMP de Cisco, el seguimiento del sensor IPMI, el control del hardware ESXI de VMWare, la monitorización de dispositivos QNAP, la supervisión de MS SQL y mucho más.

Figura 4 – Ejemplos de nuevos servicios en NEMS Linux 1.5

Tenía muchas ganas de llevar las notificaciones NEMS al siguiente nivel. Las notificaciones de Nagios son, por defecto, muy de la década de 1990, aunque Heini Holm Andersen ya ha hecho un magnífico trabajo con las plantillas de correo electrónico HTML adaptables para Nagios. Contacté con él para hablar sobre la licencia de su software y poder usarlo a partir de NEMS Linux 1.5. Sus productos, por defecto, no tienen licencia para su distribución o modificación. Me agrado bastante escuchar y saber que adora NEMS Linux, y que le ha había hecho mucha ilusión mi petición. Me dio permiso para que modificara, distribuyera, usara e incluyera su complemento en NEMS Linux 1.5+. Su código fuente ahora forma parte de NEMS Linux y puede verse como nems_sendmail_host y nems_sendmail_service en NEMS Migrator. Adapté los scripts para NEMS Linux con la finalidad de que ahora pudieran tirar de la configuración SMTP de la herramienta de configuración del sistema NEMS. También personalicé un poco la apariencia general de los correos electrónicos y agregué el Alias del Servidor NEMS a cada notificación, lo cual ayudará a todos aquellos que usan varios servidores NEMS, otra mejora centrada en la empresa.

Figura 5: Nuevas y magníficas notificaciones de correo electrónico HTML en NEMS Linux 1.5

Otras opciones de notificación en NEMS Linux 1.5 incluyen la aplicación Pushover, así como un sistema de notificación de Telegram recientemente reacondicionado que hace que la configuración de un bot en Telegram sea increíblemente simple.

Figura 6: NEMS SST ahora permite servidores SMTP inseguros

El firewall CSF/LFD ahora viene pre-configurado para protegerte de los ataques basados en web, y ahora puedes deshabilitar TLS para SMTP (una opción muy solicitada para los administradores de sistemas que usan un relé interno). También hay que señalar que el software subyacente ha sido actualizado a la nueva versión. Por ejemplo, Nagios Core se ha actualizado a la versión 4.4.2, y PHP ahora es la versión 7.2, que introduce la librería criptográfica Sodium utilizada por NEMS Cloud Services para encriptar los datos confidenciales.

NEMS Linux es totalmente gratuito para descargar y usar. Sin embargo, yo ofrezco algunos servicios opcionales por suscripción que me gustaría mencionar. Con una lista cada vez mayor de características opcionales basadas en la nube en NEMS Linux 1.5, la copia de seguridad externa de NEMS Migrator se ha trasladado a una nueva plataforma llamada NEMS Cloud Services. Todas las cuentas de copia de seguridad externas se han actualizado automáticamente, y no existe coste adicional; simplemente hay más funciones. Los servicios en la nube de NEMS también añaden una funcionalidad preliminar en la nube para dar cabida algunas funciones interesantes que se lanzarán a lo largo del ciclo de producción de NEMS 1.5, como un cuadro de mandos de TV NEMS unificado en la nube que te permitirá ver información general de múltiples servidores NEMS Linux en tiempo real.

NEMS Cloud Services también incluye NEMS Checkin. Agunos usuarios de NEMS, especialmente aquellos que se toman muy en serio la fiabilidad, tienden a desconfiar de las tarjetas SD, de modo que no es raro que configuren un segundo o incluso un tercer servidor NEMS para monitorizar su servidor NEMS principal. Suelo llama a esto "NEMSception". Esto está un poco obsoleto, aunque hasta NEMS 1.5 había sido una gran idea para aquellos que quieren saber si su servidor NEMS se ha desconectado. Ahora, NEMS Checkin (en NEMS SST) permite a tu servidor NEMS registrarse con NEMS Cloud Services. Si tu servidor NEMS deja de registrarse, NEMS Cloud Services te enviará una notificación indicando que tu servidor NEMS parece estar desconectado. Al igual que con todos los servicios en la nube de NEMS, esta característica tan util es totalmente opcional y está desactivada por defecto.

Cómo actualizar a NEMS Linux 1.5

  1. La herramienta NEMS Migrator te permite exportar/hacer una copia de seguridad de tu configuración completa de NEMS, así como importar una copia de seguridad anterior a través de su herramienta de restauración nems. Esto es especialmente útil cuando se actualiza desde versiones anteriores de NEMS, o cuando se pasa de una plataforma a otra. Te ahorra tener que reconfigurar tu implementación de NEMS solo para obtener las últimas funciones o actualizaciones de hardware. Puedes seguir los siguientes pasos para actualizar desde cualquier versión anterior de NEMS a la última versión de NEMS Linux 1.5. Por lo tanto, si ya tienes implementado tu sistema NEMS Linux 1.4.1, puede migrar fácilmente tu configuración a NEMS 1.5.
  2. Dirígete al cuadro de mandos de NEMS Linux existente dentro de tu navegador y presione Migrator y descarga tu archivo local backup.nems. Opcionalmente, puedes acceder al recurso compartido de samba en \nems.localackup (Windows) /smb://nems.local/backup (Linux/macOS) y copia tu archivo backup.nems en tu máquina local. Deja esto a un lado para su posterior importación.
  3. Descarga y graba NEMS Linux 1.5 en una nueva tarjeta. Utiliza una nueva tarjeta para que siempre pueda volver a tu NEMS Linux 1.4.1 existente si tienes algún problema. Arranca tu dispositivo con NEMS Linux 1.5 y dale unos minutos para que ejecute sus primeras operaciones de arranque, recopilar algunas actualizaciones, etc.
  4. Inicia NEMS 1.5 como si fuera una nueva implementación por SSH en el servidor NEMS y escribe: sudo nems-init Consulta la Parte 1 de esta serie para obtener instrucciones completas
  5. Copia el archivo backup.nems que dejaste a un lado en el Paso 1 en la carpeta de inicio de tu implementación NEMS 1.5 en \nems.localhome (Windows) / smb://nems.local/home (Linux/macOS). Conéctate por SSH a su servidor NEMS y restaura el archivo backup.nems de la siguiente forma:

$ sudo nems-restore ~/backup.nems
Si estás suscrito a NEMS Cloud Services (anteriormente, NEMS Migrator Off-Site Backup), reemplace los pasos 5 y 6 por:
$ sudo nems-restore osb
Si, por otro lado, nunca ha usado NEMS Linux con anterioridad y no necesitas actualizar desde una versión anterior, puedes pasar a ejecutar los pasos 2-4.

Esto ha sido todo. Ya tienes funcionando NEMS Linux 1.5. ¡A Disfrutar!

Aprender más

NEMS tiene un foro comunitario muy activo. Entro con bastante frecuencia para proporcionar soporte gratuito a los usuarios. También ofrezco soporte comercial prioritario y personalizado para aquellos que necesitan un mayor nivel de soporte. NEMS Linux es gratis para descargar y usar. Su código fuente está disponible en GitHub. Puedes descargar NEMS Linux para ODROID en https://nemslinux.com/

También puede seguir a @NEMSLinux en Twitter o unirete a nosotros en Discord. También he lanzado un canal de YouTube específicamente para NEMS en el que publicaré screencasts y tutoriales sobre NEMS Linux. Aunque el contenido aún está por llegar, ¡realmente apreciaría que te suscribieras! Encontrarás el canal aquí.

Sobre el Autor

Robbie Ferguson es el dueño de Category5 Technology TV y autor de NEMS Linux. Su programa de televisión se encuentra en https://category5.tv/ y su blog es https://baldnerd.com/.

Compilando Kodi: Activando el Control Automático de la Velocidad de Fotogramas

Esta guía da por hecho que has instalado los paquetes de este post, https://forum.odroid.com/viewtopic.php?f=98&t=32173#p233475, y que estás usando exactamente la misma imagen del sistema operativo, ya que esto no ha sido probado en cualquier otra imagen. De nuevo vamos a modificar el kernel, y no me hago responsable de los posibles daños que sufra tu hardware. Esta guía está dirigida a los entusiastas del HIFI/Video y del mecaniqueo que saben perfectamente lo que están haciendo.

Figura 1 - Ajuste automático de la velocidad de fotogramas de Kodi https://www.youtube.com/watch?v=mJ0z7qAw2Jo

Modificando el Kernel

En la primavera de 2018, el gran @memeka y yo estuvimos a punto de descubrir a un gran desconocido. Estaba analizando el código fuente del mezclador DRM en el kernel y observe que un plano con capacidades de color NV21 y NV12 estaba desactivado, conocido como el plano OVERLAY. La imagen que ves en tu televisor está formada por diferentes capas DRM que se sitúan una encima de la otra, la posición Z superior es la capa más alta. Normalmente, este plano OVERLAY es el que se utiliza para mostrar los videos procedentes del decodificador de hardware de la placa que envía la señal exactamente en ese formato NV21/NV12, ¡pero está deshabilitó! ¿Es necesario para ejecutar DRMPRIME con una copia cero?

Entonces, para resumirlo todo, las imágenes que proceden del decodificador de hardware tienen que reducirse gradualmente y/o convertirse en color, y el componente de hardware escalador en la placa no se había implementado en esta versión del kernel, de modo que no se podía usar. Sin embargo, puesto que Kodi utiliza diferentes capas en DRM y necesita al menos dos capas, se ha diseñado el concepto de back-end GBM. Estuvimos pensando en lo que se podría hacer, y memeka tuvo la genial idea de usar el plano cursor como plano OVERLAY y esto es lo que hicimos en primer lugar: parchear el kernel para cambiar el plano OVERLAY deshabilitado por el Plano CURSOR. ¡Kodi podrá entonces cambiar la resolución de video y la resolución de la GUI de forma independiente!

Así pues, no estamos haciendo DRMPRIME con esto, sino ejecutar Kodi con el sistema de ventanas GBM, con un gran rendimiento de video sin desgarros y, hasta donde sé, con control automático de la velocidad de fotogramas

Modificando kodi

El equipo Kodi ha cerrado sus puertas a todo lo que no sea drivers GPU GBM Mesa. Espero que pronto se publique Mali para Mesa, de modo que tenemos que cambiar esto y usar DRM dentro de Kodi, lo cual nos lleva a la segunda parte de esta guía: parchear Kodi.

Parcheando el kernel

Consigue el código fuente si aún no lo tienes:

$ git clone https://github.com/hardkernel/linux.git
$ cd linux
$ wget -O drm_plane_fix.patch https://pastebin.com/raw/MiTbZsPs
$ patch -p1 < drm_plane_fix.patch

$ make odroidxu4_defconfig
$ make -j7
$ sudo cp arch/arm/boot/zImage /media/boot/.
$ sudo cp arch/arm/boot/dts/exynos5422-odroidxu4.dtb /media/boot/.
$ sudo make modules_install

Parchear Kodi

Usa los siguientes comandos para parchear Kodi:

$ git clone https://github.com/xbmc/xbmc.git
$ cd xbmc
$ wget -O kodi.patch https://pastebin.com/raw/mzAiCU2Q
$ patch -p1 < kodi.patch
Parchea FFmpeg interno para evitar la pérdida de memoria (quizás no sea necesario en el futuro)
$ wget -O FFmpeg_fix.patch https://pastebin.com/raw/rRbXTfra
$ patch -p1 < FFmpeg_fix.patch Next, you’ll need to get a ton of pre-requirements: $ sudo apt-get install antlr autoconf automake autopoint autotools-dev ca-certificates-java curl debhelper default-jre default-jre-headless default-libmysqlclient-dev dh-autoreconf dh-python dh-strip-nondeterminism doxygen fontforge-common fontforge-nox fonts-droid-fallback gawk gettext gettext-base gir1.2-harfbuzz-0.0 gir1.2-ibus-1.0 gperf groovy icu-devtools intltool-debian ivy java-common junit4 libantlr-java libao-common libao-dev libao4 libapache-pom-java libarchive-zip-perl libasan3 libasm-java libass-dev libass9 libasyncns0 libavahi-client-dev libavahi-common-dev libbluetooth-dev libbluray-dev libbluray2 libboost-atomic1.65-dev libboost-atomic1.65.1 libboost-chrono1.65-dev libboost-chrono1.65.1 libboost-date-time1.65-dev libboost-date-time1.65.1 libboost-dev libboost-filesystem1.65.1 libboost-serialization1.65-dev libboost-serialization1.65.1 libboost-system1.65-dev libboost-system1.65.1 libboost-thread-dev libboost-thread1.65-dev libboost-thread1.65.1 libboost1.65-dev libbs2b0 libbsf-java libbz2-dev libcap-dev libcapnp-0.6.1 libcdio-dev libcdio17 libcec-dev libcec4 libchromaprint1 libclang1-6.0 libcommons-cli-java libcommons-lang-java libcommons-logging-java libcommons-parent-java libcrossguid-dev libcrossguid0 libcurl4-gnutls-dev libcwiid-dev libcwiid1 libdbus-1-dev libevent-2.1-6 libexpat1-dev libfftw3-double3 libfile-stripnondeterminism-perl libflac8 libflite1 libfluidsynth1 libfontconfig1-dev libfontforge2 libfribidi-dev libfstrcmp-dev libfstrcmp0 libgcrypt20-dev libgdraw5 libgif-dev libgif7 libglib2.0-bin libglib2.0-dev libglib2.0-dev-bin libglvnd-core-dev libglvnd-dev libgme0 libgmp-dev libgmpxx4ldbl libgnutls-dane0 libgnutls-openssl27 libgnutls28-dev libgnutlsxx28 libgpg-error-dev libgraphite2-dev libgsm1 libgtest-dev libhamcrest-java libharfbuzz-dev libharfbuzz-gobject0 libharfbuzz-icu0 libhawtjni-runtime-java libibus-1.0-5 libibus-1.0-dev libicu-dev libicu-le-hb-dev libicu-le-hb0 libiculx60 libidn2-0-dev libidn2-dev libiso9660-10 libiso9660-dev libjack-jackd2-0 libjansi-java libjansi-native-java libjline2-java libjpeg-dev libjpeg-turbo8-dev libjpeg8-dev liblcms2-dev libldb1 libllvm6.0 libltdl-dev liblzo2-dev libmad0 libmicrohttpd-dev libmicrohttpd12 libmirclient-dev libmirclient9 libmircommon-dev libmircommon7 libmircookie-dev libmircookie2 libmircore-dev libmircore1 libmirprotobuf3 libmodplug-dev libmodplug1 libmp3lame0 libmpg123-0 libmysofa0 libmysqlclient-dev libmysqlclient20 libnfs-dev libnfs11 libnorm1 libnspr4 libnss3 libogg0 libomxil-bellagio-dev libomxil-bellagio0 libopengl0 libopenjp2-7 libopenmpt0 libopus0 libp11-kit-dev libp8-platform-dev libp8-platform2 libpangoxft-1.0-0 libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 libpgm-5.2-0 libplist-dev libplist3 libpostproc-dev libpostproc54 libprotobuf-dev libprotobuf-lite10 libprotobuf10 libpython-dev libpython2.7 libpython2.7-dev libqdox-java librsvg2-bin librubberband2 libsensors4 libservlet3.1-java libshairport-dev libshairport2 libshine3 libsmbclient libsmbclient-dev libsnappy1v5 libsndfile1 libsndio-dev libsndio6.1 libsodium23 libsoxr0 libspeex1 libspiro0 libsqlite3-dev libssh-gcrypt-4 libssh-gcrypt-dev libtag1-dev libtag1v5 libtag1v5-vanilla libtalloc2 libtasn1-6-dev libtdb1 libtevent0 libtheora0 libtimedate-perl libtinyxml-dev libtinyxml2.6.2v5 libtool libtwolame0 libunbound2 libuninameslist1 libvdpau1 libvorbis0a libvorbisenc2 libvorbisfile3 libvpx5 libwavpack1 libwbclient0 libwebpdemux2 libwebpmux3 libx264-152 libx265-146 libxapian30 libxml2-dev libxmu-dev libxmu-headers libxmu6 libxpp3-java libxvidcore4 libyajl-dev libyajl2 libzmq5 libzvbi-common libzvbi0 mysql-common nettle-dev openjdk-11-jre openjdk-11-jre-headless po-debconf python-dev python-pil python-talloc python2.7-dev python3-distutils python3-lib2to3 samba-libs swig swig3.0 unzip uuid-dev yasm zip ccache libinput-dev libpulse-dev pulseaudio
Genera el Makefile y exporta algunos parámetros extra del compilador:
$ export CPPFLAGS="-mfloat-abi=hard -marm -mtune=cortex-a15.cortex-a7 -mcpu=cortex-a15 -mfpu=neon-vfpv4 -ftree-vectorize -mvectorize-with-neon-quad -ffast-math" $ export CXXFLAGS=$CPPFLAGS $ export CXX_FLAGS=$CXXFLAGS $ mkdir kodi $ cd kodi $ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DCORE_PLATFORM_NAME=gbm -DGBM_RENDER_SYSTEM=gles  -DENABLE_ALSA=ON -DENABLE_AIRTUNES=ON -DENABLE_UPNP=ON  -DENABLE_INTERNAL_FMT=ON -DENABLE_INTERNAL_RapidJSON=ON  -DENABLE_OPENGLES=ON -DENABLE_OPENGL=OFF -DENABLE_X=OFF  -DVERBOSE=OFF -DENABLE_SMBCLIENT=OFF -DENABLE_CEC=ON -DENABLE_NEON=ON  -DWITH_CPU=armv7-a -DENABLE_AVAHI=ON  -DENABLE_PULSEAUDIO=ON -DENABLE_CCACHE=ON  -DENABLE_APP_AUTONAME=OFF -DENABLE_DVDCSS=OFF -DENABLE_INTERNAL_CROSSGUID=OFF -DENABLE_OPTICAL=OFF  -DENABLE_EVENTCLIENTS=ON  -DENABLE_VAAPI=OFF -DENABLE_VDPAU=OFF -DENABLE_INTERNAL_FLATBUFFERS=ON ../. $ make -j7 $ sudo make install
Ejecuta Kodi, luego dirígete a Settings -> Player y ajusta el nivel de configuración en el lado inferior izquierdo, las posibles opciones on Basic, Standard, Advanced y Expert, selecciona Advanced o Expert. Ve a Settings -> Player -> Videos y habilita ajustar la frecuencia de actualización de la pantalla On start/stop. Dirígete a Settings -> System -> Display -> Whitelist y agrega todas las resoluciones que quieres que se cambien automáticamente.

Reparar CEC

Con el Kernel 4.10+, se introdujo un nuevo entorno de trabajo Linux CEC, de modo que necesitas una librería especial libcec. Aquí tienes como compilarla desde la fuente:

Biblioteca de soporte de la plataforma Pulse eight:

$ sudo apt-get install cmake build-essential
$ git clone https://github.com/Pulse-Eight/platform.git
$ mkdir platform/build
$ cd platform/build
$ cmake ..
$ make -j7
$ sudo make install
Librería Pulse eight libcec con el nuevo parche de soporte de entorno Linux. Ten en cuenta que debes desinstalar cualquier archivo libcec anterior antes de realizar cualquier prueba:
$ sudo apt-get install cmake libudev-dev python-dev swig
$ git clone https://github.com/Pulse-Eight/libcec.git
$ cd libcec
$ wget -O libcec.patch $ https://github.com/Kwiboo/libcec/commit/48255b7d4e1cba1050b8abfbd03be37c0737e832.patch
$ git apply libcec.patch
$ mkdir build
$ cd build
$ cmake -DHAVE_LINUX_API=1 ..
$ make -j7
$ sudo make install
$ sudo ldconfig
Para obtener más información, consulta el hilo del foro ODROID en https://forum.odroid.com/viewtopic.php?f=98&t=32173#p235249.

Juegos Linux: PC-Engine / TurboGrafx - Parte 1

Hace poco tiempo, hablé de PC-Engine/TurboGrafx, creo que es un sistema que ha sido menospreciado. Tengo demasiadas cosas en las que estoy trabajando actualmente, de modo que el tiempo siempre me viene corto no podido jugar a PC-Engine tanto como quisiera. Por ello, he decidido hacer una serie sobre esta interesante consola de juegos y escribir mi experiencia.

Como el sistema cuenta con MUCHOS juegos. He decidido centrarme primero en los juegos con base CD, ya que representan un número menor y he querido verlos todos los que tengo, aunque sea por poco tiempo y decidir si me gustan o no. Para esto los he dividido en tres secciones: juegos que me han gustaron, juegos aceptables y juegos que no me han gustado.

Cómo he probado estos juegos

He ejecutado los juegos con mi imagen ODROID GameStation Turbo en un XU3, aunque debería funcionar perfectamente en cualquier SBC ODROID. He ejecutado todos estos juegos en formato .chd, ya que con éste se ahorra bastante espacio y permite mantener la calidad del audio. Las últimas versiones de mednafen_pce_fast libretro son compatibles con este formato. Me gusta bastante y he decidido convertir la mayoría de mis juegos a este formato que es compatible.

Voy a probar un par de juegos para cada parte de la serie tratando de hacerlo por orden alfabético. Intentaré jugar a cada juego durante un tiempo y no solo mirando el primer minuto del juego, ya que algunos juegos mejoran bastante conforme vas pasando de niveles. Puede que pase por alto algunos juegos si estos existen tanto en japonés como en inglés, o incluso nombrarlos por duplicado si olvido que ya los he jugado en otro idioma.

Intentaré dar una breve descripción de estos juegos y por qué me han gustado o no. A los juegos que me parezcan más impactantes, les agregaré imágenes, otros simplemente incluirán una descripción en texto. Obviamente, se trata de una elección personal y mis gustos por determinados juegos puede no coincidir con los tuyos.

Ten en cuenta que la mayoría de los juegos de esta consola son juegos de disparos, así que, si te gustan los juegos de disparos, esta es tu consola con total seguridad. Si no, espero que haya suficientes juegos de otro tipo que despierte tu interés de todos modos. Una vez más, solo me centraré en los juegos basados en CD de momento. Muchos de estos juegos también salieron para HuCards / TurboChips y algunos llegaron a ser incluso mejores que sus homólogos en CD. Si te gusta lo que ves aquí, te animo a que pruebes también los juegos HuCard / TurboChip, ya que salieron grandes títulos para este sistema.

Juegos que me han gustado

4 in 1 Super CD

Esta colección de juegos viene con Bonk como mascota. En la pantalla de inicio encontrarás 3 juegos:

Gate of Thunder, Bonk’s Adventure y Bonk’s Revenge, con un cuarto juego "oculto" que es Bomberman, para este juego en el menú de selección de juegos tienes que presionar arriba, derecha, abajo, izquierda y botón 2, y aparecerá Bomberman. Esta recopilación es simplemente perfecta, y ni un solo juego de esta lista se puede decir que sea malo.

Bomberman es el original, y puedes jugarlo solo o con hasta 5 jugadores en total, sin lugar a duda, este juego es increíble. Gate of Thunder es el primero, pero definitivamente no es el último, shooter de esta lista. Viene con una intro animada muy agradable, que es bastante larga, aunque se puede omitir. Los juegos en CD de PCE a menudo vienen con largas intro o escenas de corte, lo que en realidad es bastante bueno, ya que muy pocas consolas de la época ofrecían esto como característica.

Al igual que ocurre con muchos juegos de PC Engine, los colores son brillantes en comparación con la paleta de colores más oscuros que se utilizan en la Sega Mega Drive. El juego cuenta con un desplazamiento paralaje muy agradable y en general es muy divertido. Bonk’s Adventure y Bonk’s Revenge no necesitarían ser explicados. Ambos son juegos de plataformas, y Bonk's es algo así como la mascota del sistema. Saltas, golpeas a los enemigos con la cabeza o saltas sobre ellos, puedes comer elementos para recuperar salud, o para conseguir poderes especiales como es la carne, donde entrarás en un modo desenfrenado y causarás un pequeño terremoto que aturde a tus enemigos, o simplemente corres pasando de todos ellos. Estos juegos son tremendos y realmente deberías probarlos.

El 4 in 1 Super CD es una verdadera joya para los increíbles sistemas de 4 juegos en un único CD. Esto, en realidad, muestra lo buena que puede llegar a ser la consola y definitivamente valía el dinero que costaba. Si quieres conocer que tal anda esta consola, te recomiendo que pruebes esta compilación.

Sin embargo, un aviso: si usas la opción de guardar estados, ten en cuenta que los estados son siempre para el CD, y no para el propio juego que ejecutas. Si juegas a Gate of Thunder y lo guardas, luego cambias a Bomberman y cargas el estado de guardado, volverás a Gate of Thunder. Lo mismo ocurre si cambias a Bomberman y guardas el juego (usando un estado guardado): sobrescribirás tu estado guardado de Game of Thunder. Ten en cuenta esto y asegúrate de seleccionar diferentes estados para guardar cada juego o solo jugarás un juego a la vez con los estados de guardado.

Akumajou Dracula X - Chi no Rondo / Castlevania: Dracula X (Rondo of Blood)

Figure 1 - Running away from a beast grabbing the key to free Maria
Figura 1 - Escapando de una bestia cogiendo la llave que libera a María

Figure 2- Freeing Maria the second playable character if you got the key
Figura 2- Liberas a Maria como segundo personaje jugable si tienes la llave

Este es uno de los mejores (si no el mejor) juego del sistema. Este juego es sorprendente. Los gráficos, los sonidos y la música son los idóneos, al igual que los controles. Todo es perfecto y reacciona como debería ser. Además, esta versión es exclusiva de PC Engine y solo se puede jugar como parte de un remake en la PSP.

Si quieres ver un buen análisis de este juego, echa un vistazo al video de YouTube https://www.youtube.com/watch?v=qsVHqoS1Y58. describe muy bien el juego y puedes ver cómo se ve el juego en plena acción.

Avenger

Este shooter empieza con una intro que está hecha con imágenes fijas y sprites animados, de modo que no es un video, y tiene muy pocas escenas de corte. Los gráficos del juego tampoco son demasiado impactantes. No existe ningún desplazamiento paralaje y los enemigos no están sumamente detallados. Aun así, el juego es bastante adictivo. También es bastante difícil, especialmente en el primer nivel. Antes de cada misión, puedes seleccionar tu arma, sub-arma y arma especial, empiezas con un pobre cañón vulcan aunque es bastante rápido o un lanzador de cohetes que causa mucho más daño, pero con el que es más difícil golpear cosas y es mucho más lento.

Durante el juego, puedes recopilar mejoras para aumentar tu arma principal y secundaria, y con el tiempo contarás con más armas donde elegir. Si actualizas un arma, el nivel del arma pasará a la siguiente misión. El arma principal se puede actualizar cuatro veces, el arma secundaria dos veces (si no recuerdo mal). El arma especial son la típicas "bombas" que tienes limitadas en número por nivel y que varía en utilidad. Aunque es muy difícil, es muy adictivo, como he dicho, debes entrenar tu estado de guardado y cargar combinaciones de teclas de estado para conseguir algo de ayuda adicional. La música está bien, aunque el sonido puede ser un poco molesto, especialmente cuando usas el láser en los niveles posteriores. Imagínate un sonido agudo con cada disparo que realizas y la láser lanza 10 disparos por segundo (y sí, cada disparo produce el sonido). De todos modos, disfruté jugando al juego y estoy deseando pasarmelo en un futuro cercano.

Bakushou Yoshimoto Shinkigeki

¡Caray!, ni siquiera sé a qué juego. Este juego es un tanto alocado. No tengo ni idea de lo que estoy haciendo: salto sobre las cabezas de las personas, tomo algunas decisiones sobre la ruta a seguir, subo en montañas rusas, bailo con chicas, juego a puño-papel-tijeras y sigo saltando sobre las cabezas de las personas. El juego es un poco locura, pero es bastante divertido. Los gráficos son agradables con enormes personajes con cabeza que se balancea ligeramente. Es muy divertido y me encanta.

Bonk III - Bonk's Big Adventure

Figure 3 - Huge Bonk, cause being a tiny caveman sometimes isn’t enough
Figura 3: Enorme Bonk, porque ser un pequeño hombre de las cavernas a veces no es suficiente

Figure 4 - Nice and beautiful drawn levels in Bonks III
Figura 4 - Bonitos y agrdables niveles dibujados en Bonks III.

Este juego es otro más de la gentiliza de Bonk. Esta versión es prácticamente igual a la versión HuCard pero con mejor música. En algunas de las versiones anteriores, los gráficos y la jugabilidad se modificaron para la versión de CD, lo cual hizo que los juegos fueran inferiores a sus homólogos de HuCard (excepto la música). Así que no está de más tenerlo en CD. En está ocasión puedes jugar con dos jugadores si lo deseas, y junto a la habitual carne que te aporta diferentes habilidades, ahora tienes caramelos azules y rojos que te hacen enorme o muy pequeño dependiendo de cuál te comas. Esto te permite llegar a áreas que antes eran inalcanzables para ti. Es un juego muy divertido y adictivo, llegarás a entender por qué es una especie de mascota para el sistema.

Camp California

Figure 5 - The later levels have more details then when you start on the strand
Figura 5 - Los niveles posteriores tienen más detalles que al principio

Figure 6 - Freeing one of your captured buddies
Figura 6 - Liberando a uno de tus amigos capturados

Realmente me quedé sorprendido cuando jugué al juego. A primera vista, es muy infantil y los gráficos no son demasiado espectaculares, especialmente la intro cursi, que parecía que estuviera hecha para niños de 5 años, pero resultó que el juego no era tan malo como parecía. Juegas con un montón de osos y pájaros y quieres proteger tu playa para que no se convierta en una planta de energía nuclear, y para ello tienes que tocar música (obviamente, ¿no? ¿Porque es así como ahuyentas a esas compañías de miles de millones de dólares?). De todos modos, tus amigos son secuestrados, a tu autobús Volkswagen flower power de los 70 le han robado los neumáticos, de modo que estás bastante jodido. Solo hay una cosa que hacer: ¡recuperar tus ruedas, encontrar tus instrumentos musicales y liberar a tus amigos! Se trata de un juego de plataformas de acción, donde puedes saltar, patear, boxear o simplemente arrollar a los enemigos con tu monopatín

El concepto es bastante simple: los gráficos varían desde un plano poco interesante a planos muy detallado y caricaturesco. No existe el desplazamiento paralaje. Tienes un mapa general donde puedes moverte de un lugar a otro (una vez que recuperes tus ruedas) y puedes visitar diferentes lugares. Algunos de los niveles son bastante grandes y tienes que encontrar artículos recogiendo basura (reciclando por completo tu autobús) y encontrar y liberar a tus amigos.

Una vez que hayas liberado a uno de tus amigos, puedes jugar con él como un nuevo personaje, y cada uno tiene habilidades especiales, como, por ejemplo, montar en monopatín para ir más rápido y realizar saltos más altos. Es un juego de plataformas bastante decente con suficientes lugares para explorar y mantenerte ocupado. Para realizar saltos necesitas algo de tiempo para acostumbrarse, ya que a menudo solo puedes moverte muy leventemente de una plataforma a la siguiente, aunque presionando el controlador sólo un poquito, tu personaje se mueve cuanto menos una pulgada.

Lo que más me fascino fue la música del juego que es realmente buena. De hecho, encontrarás canciones de los Beach Boys formando parte de la música de juego con voces y todo, lo cual realmente me sorprendió.

Chiki Chiki Boys

Figure 7 - There are a lot of boss fights in Chiki Chiki Boys
Figura 7 - Hay muchas peleas con jefes en Chiki Chiki Boys

Figure 8 - Graphics are colorful and very diverse
Figura 8 - Los gráficos son coloridos y muy diversos.

Este juego de plataformas de acción es muy divertido. También es compatible con el modo cooperativo con dos jugadores en caso de que quieras aventurarte con un amigo. Los gráficos son buenos y tanto caricaturescos, los efectos de sonido también son bastante buenos. Tiene buena música, aunque la mayoría se reproduce en segundo plano y realmente no la llegaras a percibir demasiado. Los controles de los personajes son bastante buenos, los saltos son fáciles y los ataques funcionan bien. Puedes llegar a tener hasta 3 ataques especiales que se activan presionando "seleccionar". Normalmente cubren casi toda la pantalla y hacen mucho daño. También te hacen invencible por un corto periodo de tiempo, de modo que a menudo son útiles cuando te enfrentas a uno de los muchos jefes. Puedes recoger un par de artículos diferentes, por ejemplo, las tabletas azules y rojas, que restauran tu salud en parte o en su totalidad. Como el juego está completamente en japonés, no tengo ni idea de qué va la historia, aunque creo que no lo necesitas para jugar al juego. El juego es bastante divertido y me gusta bastante.

Choujikuu Yousai Macross 2036

Este es el primer shoorter real que analicé para este artículo (lo cual es bastante sorprendente considerando la cantidad de juegos a los que he jugado simplemente para llegar hasta aquí). Es un shooter de acción de desplazamiento lateral dentro del universo de Macross. Desafortunadamente, no puedes transformar tu avión a tu antojo, sino que éste se va transformado en función de la escena en la que te encuentres. Es un juego de acción muy rápido, pero no se hacho así con mal intención. Puedes mejorar tu arma principal con la recolección de potenciadores, de este modo podrás ver que tu ataque se hace más grande y más fuerte.

Matar enemigos y destruir objetos te hará ganar puntos o experiencia, que puedes usar al empezar un nivel para comprar armas especiales que te ayudarán. Hay muchas armas donde elegir que cuestan más y menos puntos. Por lo menos en el modo fácil, mantienes todos tus poderes cuando mueres y también consigues una nueva vida cada 100,000 puntos. También hay objetos ocultos que destellan cuando les disparas. Cuando les disparas con bastante frecuencia, se vuelven visibles y pueden proporcionarte vidas adicionales cuando los recoges. Hay muchas escenas de corte, no solo entre las misiones sino también durante la propia misión, así que esto está bastante bien. Una vez más todo está en japonés, aun así, disfruté bastante de este juego.

Choujikuu Yousai Macross - Eien no Love Song

En este juego me costó bastante decidir si la falta de comprensión me impedía disfrutar o no del juego, ya que todas las escenas están en japonés, lo cual lo hacía bastante difícil de entender. Aun así, rápidamente descubrí los comandos más importantes y pude jugar al juego sin perder demasiado tiempo, supongo. Éste es un juego de estrategia táctica similar a la línea histórica 1914-1918 o a los juegos de Battle Island, o como ejemplo más reciente, Advanced Wars en la GBA.

Fiel al universo de Macross, tienes que guiar a tus pilotos a través de los niveles, puedes transformarlos en un avión para que sean más rápidos, aunque cuasarán menos daño y su armadura será más debil, o en un mecha que tiene mejor armadura y causa más daño. Si te gustan los juegos de estrategia táctica, este juego es muy bueno. Tiene bonitas escenas de corte entre las misiones, una agradable banda sonora y buenas animaciones en los combates.

Cosmic Fantasy II

¿Conoces esa situación en la que solo quieres probar algo durante un rato y de repente te das cuenta que han pasado un par de horas? Esto es lo que me sucedió cuando jugué a este juego por primera vez. Cosmic Fantasy II es un juego de rol al estilo de Fantasy Star o Dragon Quest. Los gráficos en general no son muy ostentosos, pero lo compensa con escenas de corte realmente buenas que están (como el resto del juego) completamente en inglés, así que realmente entiendo lo que sucede, y me gusta. Te desplazas en un mapa del mundo donde los encuentros con los enemigos son aleatorios y puede visitar ciudades y mazmorras. Subir de nivel puede hacerte mucho más fuerte, especialmente al principio. Tambien mejora tu fuerza y salud, y los puntos de magia más adelante. Puesto que los juegos de rol no son muy comunes en PC Engine / TurboGrafx, esta puede ser una buena contribución a tu biblioteca. Si eres capaz de ver más allá de los simples gráficos, realmente se puede decir que se trata de un juego muy bueno y disfrute bastante jugando.

Cotton - Fantastic Night Dreams

Figure 9 - Nice graphics with parallax scrolling
Figura 9 - Buenos gráficos con desplazamiento paralaje

Figure 10 - Keep your most powerful attacks for the boss fights
Figura 10 - Conserva tus ataques más poderosos para luchar contra los jefes.

Cotton debería ser una serie de juegos shooter bastante conocida en la que juegas como una pequeña bruja con un hada familiar. Solo espero no tener que explicar este juego a nadie. Ésta es una versión muy similar a la versión arcade. Los gráficos son excelentes y la música, gracias al remix del CD, es incluso mejor que la versión arcade. El juego es bastante difícil, pero muy divertido, las pequeñas escenas de corte entre niveles son realmente divertidas. Definitivamente vale la pena echarle un vistazo.

Juegos aceptables

Advanced Variable Geo

Este es uno de los pocos juegos de lucha. Es similar a Street Fighter pero solo con chicas. No es un mal juego, los sonidos y la música están bien. Como la consola no tiene mucha memoria RAM, los sprites a la hora de pelear están bastante limitados debido a esto, lo cual hace que los movimientos parezcan inexpertos y lentos. El juego tiene colores agradables, como la mayoría de los juegos de PCE, aunque no tiene desplazamiento paralaje ni efectos especiales que hagan que el juego destaque. Lo único en mi opinión que lo salva un poco es el soporte para más de 2 botones (como suele ser lo normar en los juegos de PCE). Este es uno de los pocos juegos donde también puedes usar los botones X e Y de tu gamepad, lo cual es lógico para poder luchar, aun así, es bastante raro para ser un juego de PCE. No me gusta demasiado el juego.

Ai Chou Aniki

Pues bien, este juego es "diferente". Parece que juegas con un culturista gay, pero para ser honesto, no puedo afirmarlo con rotundidad, ya que el juego definitivamente no se puede tomar como algo serio. Los gráficos son buenos con diferentes niveles de desplazamiento paralaje (pero no en todos los niveles). Tu personaje, un culturista malculino, "vuela" sin nada, excepto con sus calzoncillos y dispara "burbujas" a ... bueno, llamémosles "enemigos". A veces incluso disparas "destellos" o cuando tu audaz cabeza está totalmente brillante, puedes lanzar un gran rayo que arrasa todo lo que hay a su paso. Tu segundo botón te hace girar en forma de pirueta que te hace intocable, y puedes moverte sobre la pantalla. Es una manera fácil de evitar los ataques.

No puedes apuntar, siempre está seleccionando el enemigo/objeto que está más cercano a ti, si quieres o no, aunque creo que esto es parte de la mecánica del juego, ya que a menudo significa que no estás disparando al jefe que probablemente quieras disparar. Aún así, el juego es "divertido" de una manera extraña y espeluznante, pero aún así es divertido. La música es bastante buena, pero los efectos de sonido aburren muy rápido. Si te gustan los extraños culturistas gay, deberías probar este juego.

Ane-San

Este es un juego de lucha para PC Engine, y aunque está completamente en japonés, es bastante fácil de entender. Se juega de forma similar a juegos como Double Dragon o Streets of Rage, pero con un elenco femenino, lo que significa que solo tienes personajes femeninos donde elegir. Los personajes son bastante grandes, con una cantidad decente de sprites para las animaciones, posiblemente sea esta la razón por la que nunca he visto más de tres enemigos a la vez en la pantalla. El sistema de juego es muy repetitivo; golpeas a los mismos enemigos una y otra vez, solo cambian de color (también generalmente mujeres), y al final del nivel te encuentras con un jefe. En realidad, es un jefe intermedio, y luego llegas al jefe final después de golpear unas cuantas veces a sus secuaces. Entre los niveles puedes guardar, ejecutar juegos de bonificación, comprar ropa para tus personajes y ese tipo de cosas. Es de buen ver, aunque no es nada del otro mundo, esta bien para pasar el rato. En mi opinión, es uno de los mejores juegos para la consola.

Asuka 120% Maxima Burning Fest

Este es otro juego de lucha como Street Fighter, pero una vez más con chicas, de hecho, escolares y en una escuela. La música es muy buena, aunque el sonido podría ser mejor. Los gráficos son buenos para la PC Engine aunque no imponentes. Los personajes tienen suficientes sprites durante las peleas que te hacen sentir cierta fluidez, pero no lo suficiente como para que parecezcan fluidos. No está mal, y aunque el juego solo usa 2 botones, los ataques especiales son bastante fáciles de lograr. El juego también existe para la PS1 y Sega Saturn, donde se ve y se juega mucho mejor, especialmente en la Sega Saturn.

Beyond Shadowgate

Este es el tipico juego de acción y aventuras y, probablemente, bastante raro de encontrar en consola. Juegas en un ambiente medieval, donde el rey ha sido asesinado y tú, su hijo, has sido encarcelado, y tiene que descubrir/luchar para salir de la mazmorra. Este juego me recuerda mucho a "Lure of the Temptress" si alguien ha odido hablar del juego.

El extio de este juego se debe a las interpretaciones de las voces que incluye, ya que las escenas importantes se reproducen con muestras de sonido de calidad de CD. Los gráficos no son malos, pero tampoco son espectaculares. Los sprites de los personajes son grandes con buenos niveles de animación. La música y los efectos de sonido son excelentes, aunque el sistema de juego es bastante difícil. En los primeros minutos, me mataron varias veces y es difícil saber si estaba haciendo algo mal o si simplemente perdia en los combates. En general, este juego es muy interesante, probablemente lo analizaré más a fondo cuando tengo más tiempo.

Black Hole Assault

Este juego es un juego de lucha de mechas al estilo Street Fighter. Los combates no son muy buenos, solo logre descubrir unos cuantos combos, y en la mayoría de las ocasiones no tienes tiempo para esperar a que tu medidor de combo se cargue. Las peleas son bastante rápidas y algunas veces pueden durar menos de 10 segundos. De hecho, me pase el juego en menos de media hora y no creo que valga la pena repetirlo. Incluso hay un modo torneo o modo exhibición, que en mi opinión no aporta ningún valor añadido.

La mejor parte del juego es la intro y las escenas de corte, que están subtituladas en japonés, pero interpretadas en inglés. Todos son sprites animados que se ven bastante bien, pero cuando ejecuté el juego por primera vez, esperaba algo completamente diferente (algo más como un shooter). No está tan mal, aunque me lo pase rápidamente.

Blood Gear

El juego es una especie de mezcla de plataformas de ación mecha y RPG. En realidad, la combinación es bastante buena. Incluso la parte en la que caminas con tu traje de fuerza y matas enemigos esta muy bien, especialmente en los niveles posteriores. Matas enemigos y éstos sueltan kits de “salud” o armas, de las cuales puedes usar hasta cinco con tu traje de fuerza. Esto hace que el juego sea bastante interesante. Puedes comprar artículos para aumentar tus estadísticas mecha y cosas así.

Lo que me gusta de este juego es el estilo artístico de las escenas y los retratos de los personajes (que tiene muchos), la música, el sonido, el hecho de que hay muchas interpretaciones de voces, y los gráficos en general son bastante buenos. Lo que no me gusta de este juego es que a pesar de que me gustan las escenas de corte, no hay forma de saltártelas. Si inicias de nuevo el juego o has vuelto a empezar desde un punto anterior, no puedes saltarte las escenas que ya hayas visto.

Lo que odio de este juego es que está completamente en japonés, y no entiendo nada de lo que se dice o escribe. Estoy seguro que me hubiera encantado este juego si estuviese en inglés o alemán, pero no existe en ningún otro idioma.

Bomberman ‘94 Special Version

Este es un pre-lanzamiento, ya que la versión final salió en HuCard (Turbo Chip) en lugar de en CD, de modo que esta versión muestra el aspecto que probablemente tendría la versión en CD. Los gráficos y los sonidos son fantásticos y es muy divertido, sin embargo, está completamente en japonés y no ofrece la posibilidad de jugar con un solo jugador, pero puedes jugar con un total de 5 personas. Es triste que este juego no esté completo, ya que el sonido (y especialmente la música) es mucho mejor en la versión CD que en la versión HuCard.

Bomberman Panic Bomber

A pesar del nombre, no tiene mucho en común con Bomberman, y es más un juego de rompecabezas al estilo de Puyo Puyo y otros. Acumula 3 o más cabezas de Bomberman del mismo color en una fila vertical u horizontal y éstas estallaran. Además, las bombas están mezcladas, y en ocasiones cae una bomba roja que, si se coloca de forma extratégica, puede hacer explotar todas las bombas normales. Los gráficos y los sonidos son buenos, aunque no soy realmente un fanático de estos juegos.

Bonanza Bros

En este juego, juegas con hermanos gángster que irrumpen en un edificio para levar a cabo un atraco y robar algunos objetos de valor. Estás equipado con un lanzador de guisantes que puede aturdir a los enemigos y puedes saltar. Debes evitar o neutralizar a los guardias, hacerte con los objetos de valor y luego dirigirte a la salida. De vez en cuando, hay un nivel de bonificación en la que recaudas dinero sin ser "descubierto", literalmente, ya que hay focos luminosos que debe evitar. Es un pequeño y divertido juego de rompecabezas de acción que incluso puedes jugar con un amigo (o tu hermano). Los gráficos, el sonido y la música están bien, pero no son nada innovadores. Esta bien para aquellos jugadores que juegas ocasionalmente.

Buster Bros.

No hay mucho que decir sobre este juego. ¿Alguna vez has oído hablar de "Pang"? Es un juego en el que disparas burbujas/bolas que se dividen en dos burbujas/bolas más pequeñas hasta que las más pequeñas finalmente desaparecen. Así es este juego: simplemente una versión de Pang con un nombre diferente, pero con los mismos gráficos y todo. No está mal y no es excesivamente bueno, simplemente un viejo Pang con música de CD.

Cardangels

Es una especie de strip poker (bueno, no solo póker) con chicas de anime, pero no verás mucho más que chicas en ropa interior. Aparte de eso, hay algunos juegos de cartas decentes a los que puedes jugar (si los conoces). No es nada especial, pero está bien para pasar un rato entretenido.

Championship Rally

Me ha sorprendido encontrar un juego de carreras para el sistema, y aún más me sorprendió que fuera un juego al estilo de Micro Machines o Dust Racer 2. Se ve bien en el sistema y es realmente rápido, aunque parece que soy bastante malo ya que choco contra las cosas una y otra vez. Simplemente no es mi tipo de juego, pero realmente no está tan mal si tienes buenos reflejos.

Chou Aniki

Este juego es de los mismos tipos que nos trajeron Ai Chou Aniki, pero esta vez es más bien un shooter corriente, y comparten algunos de los mismos activos. Sin embargo, el juego es fundamentalmente diferente. No es tan divertido como el otro, y el aspecto del tirador es mucho más serio ahora, con armas mejoradas y ataques especiales (bombas). Incluso puedes seleccionar tu velocidad de movimiento presionando el botón "seleccionar". Hay muchos jefes a lo largo de los niveles, y algunos enemigos "más dificiles" que soportan más golpes que otros enemigos. A menudo caen tabletas de color naranja y azul, las cuales actúan como un potenciadores cuando has recolectado suficientes. También puedes llevar dos "familiares" contigo, como las esferas en otros juegos que van a tu lado y te ayudarán a disparar. No está mal, pero tampoco es nada del otro mundo.

Color Wars

Color Wars es un juego de rompecabezas muy similar a Reversi, pero más exhaustivo y hasta con 4 jugadores a la vez. Puedes colocar bolitas de tu color en un campo de juego de 4 por 4 por 4, se pueden colocar 4 bolitas una al lado de la otra y una encima de la otra. Puedes colocar una bolita en un campo vacío o sobre una bolita de un jugador enemigo, pero no sobre tus propias bolitas. Las bolitas de un color diferente que están entre tus bolitas girarán hacia tu color (además de en todas las direcciones), y el jugador que tenga la mayor cantidad de bolitas en los campos al final, será el que ganará. Es un concepto simple pero interesante, y aunque no hay mucha "acción", puede estar bien jugarlo durante un tiempo. La agradable y relajante música te ayuda a planificar tu próximo movimiento. En general, el juego es bueno, pero puede que no guste a todo el mundo.

Juegos que no me han gustado

The Addams Family

Este juego es raro, pero de una forma positiva. En la intro aparece una imagen fija y una grabación de voz en la que te dicen que debes buscar la cámara del tesoro familiar y coger lo que quieras de allí, pero intentan ponerte trabas en el camino. Este juego es un juego de plataformas de acción, significa que saltas y disparas, pero para ser sincero, estas dos cosas no son muy efectivas en el juego. Excepto para los enemigos "pequeños", la mayoría de los enemigos necesitan 10 o más golpes para ser eliminados, lo cual se vuelve molesto muy rápido, ya que también hay enemigos más pequeños como los murciélagos que te mantienen ocupado revoletenado a tu alrededor sin poder golpearlos mientras te siguen haciendo daño.

El tema de salto tampoco es muy bueno, ya que la mecánica es bastante "resbaladiza". Cuando aterrizas en el suelo, a menudo te desliza unos pasos más, lo cual hace que los saltos precisos sean bastante difíciles de llevar a cabo, y probablemente perderás una o dos vidas antes de que pases la primera pantalla. También es difícil de distingir, los que son solo gráficos de fondo y los que te hacen daño, ya que no existe una distinción obvia entre ellos. Llegas a una habitación donde tres monstruos caminan y vuelan gritándote, intentas evitarlos y dispararles, simplemente para descubrir que no puedes eliminarlos. Tampoco te hacen daño, pero luego vas a otra habitación y hay una lámpara en una mesa, y solo con caminar hacia la lámpara, te perjudica y de repente un monstruo sale de la lámpara, lo cual es un poco molesto.

Los gráficos están bien, pero no son muy buenos. El sonido y la música no son muy atractivos, y en lugar de escenas de corte, tiene escenas con voz, donde todo se detiene y escuchas una grabación de audio de algún tipo. No puedo recomendar este juego.

Baby Jo – The Superhero (Going home)

Aunque mi idea era probar todos y cada uno de los juegos durante un período de tiempo mas o menos amplio para ver si mejoran o no, realmente no pude soportar este juego. Era tan malo que ni siquiera sé cómo describirlo. Los gráficos eran buenos, supongo, agradables y coloridos, el sonido y la música estaban bien, ¡pero la jugabilidad era horrible!

Este juego de plataformas es extremadamente malo en mi opinión. Realmente no "saltas", y parece que estas como "flotando" cuando presionas la tecla de salto. Saltas muy lento, como si la gravedad no existiera, y puedes cambiar la dirección como quieras e incluso "flotar" hacia atrás después de saltar hacia adelante. Si un enemigo te golpea, continúas perdiendo salud siempre y cuando seas "golpeado" por el enemigo. Imagina que haces un salto (flotando) a la derecha y una abeja está detrás de ti. Saltas tan rápido como vuela la abeja, así que básicamente estás dentro de la abeja en todo el salto y sigues perdiendo salud, algo así como la muerte instantánea, aunque puede tardar de 5 a 10 segundos (¿te mencioné que saltas muy lento?). Déjame decirtelo de este modo ... ¡Mantente alejado de este juego!

Battle Field '94 in Tokyo Dome

Este es un juego de lucha libre japonés al estilo WWF. No me gustan mucho estos juegos, asi que no puedo decir mucho sobre este juego. Los gráficos están bien, pero nada fuera de lo normal. Los personajes y las animaciones son aceptables, pero como he comentado, no me interesan mucho estos juegos.

Bazaru Degozaru no Game Degozaru

Este es un juego de rompecabezas en el que guías a un mono a través de un nivel intentando atrapar el plátano mientras evitas los obstáculos, enemigos o peligros. Para esto, tienes diferentes comandos que puedes usar, saltar, caminar o rodar, y puede colocarlos en una caja para su uso posterior. Realmente no me gusta este juego, los gráficos son muy simples y poco agradables a la vista. El juego esta solo en japonés, lo cual dificulta su comprensión en ocasiones.

Browning

Deseaba que me gustase este juego, pero después de un tiempo con mucha frustración con este título opte por no recomendarlo, aunque lo jugué durante más tiempo que la mayoría de resto de juegos que no me gustaron. De hecho, jugué a 3 de los 5 niveles del juego.

Juegas con un Mecha y caminas por los niveles, eliminado objetos y a enemigos menores, y una vez eliminados los suficientes de un determinado tipo, el jefe de nivel vendrá y te atacará. Los gráficos, animaciones y sonidos están bien. Hay un poco de desplazamiento paralaje de fondo, la introducción y las escenas de corte tienen grandes sprites animados, así que, en todas estas categorías, el juego es bueno.

Donde falta el juego es en la jugabilidad. Tu personaje solo puede disparar directamente a la derecha en los dos primeros niveles. A partir del tercer nivel, puedes darte la vuelta y también disparar a la izquierda, pero eso es todo. No hay disparos en diagonal ni tampoco mientras saltas. Puede saltar y agacharse, y si salta dos veces, activas los propulsores de cohetes que te permiten volar un poco hacia arriba y hacia abajo, pero no mantienes la altura, asi que constantemente subirá y bajará, al mismo tiempo que vas sobrecalentando tus cohetes hasta que se detienen por el sobrecalentamiento (o aterrizas y dejas que se enfríen).

La mayor parte del tiempo hay enemigos volando a tu alrededor, y como no puedes disparar, debes saltar o intentar moverte para golpearlos, lo que normalmente significa que los golpeas una o dos veces y luego vuelves a subir o bajar sin poder golpearlos. Los enemigos requieren de 10 a 20 golpes para eliminarlos y reaparecen con bastante rapidez. Supongo que estos enemigos están ahí para quitarte tu salud (equilibrio del escudo) y para molestarte y evitar que mates al "autentico enemigo". También pueden chocar contra ti sin ningún motivo, excepto para quitarte salud, incluso si los matas, y caen sobre ti, te golpean de todos modos. Tócalos y perderás salud. El enemigo, por otro lado, puede volar, saltar más alto y más lejos de lo que tu puedes, pueden disparar en diagonal y los jefes pueden recibir hasta 200 impactos, mientras que un golpe puede reducir tu salud hasta 4 puntos (de un máximo de 10). Así que se vuelve frustrante muy rápido, y estoy hablando demasiado de él.

Builder Land

En este juego de rompecabezas, tienes que ayudar a un chico a salvar a su novia, que fue secuestrada. Para eso, tienes que "construir el suelo" frente a él, lo que significa que necesitas construir puentes, y mover o usar objetos para que él pueda seguir adelante. El personaje camina constantemente y la pantalla se desplaza constantemente a menos que se detenga, y lo único que puede hacer es recoger un elemento y soltarlo en otro lugar. Los gráficos son bastante simples, la música es muy repetitiva y, si no lo pausas, el juego se vuelve demasiado rápido para entenderlo en el momento. No me ha gustado este juego.

Cyber City OEDO 808

No hay mucho que pueda decir sobre este juego, excepto que parece ser un tipo de juego de novela visual, pero como está completamente en japonés, no puedo saber qué hacer y no he llegando a ninguna parte dentro del juego.

Análisis de ODROID-XU4: Mejor Rendimiento que la Raspberry Pi, más USB3 y Ethernet Gigabit por 60$

Hardkernel nos envió recientemente el ODROID-XU4 para realizar pruebas de rendimiento. Este SBC ARM que mide aproximadamente 82x58x22mm (3.23" x 2.24" x 0.87") ofrece un rendimiento mucho mejor que muchos otros SBC ARM de menos de 100$, mientras que cuenta con dos puertos USB 3.0, Ethernet Gigabit, almacenamiento eMMC y Compatibilidad con los anteriores SBCs XU3 de ARM. Aquí tienes un análisis del rendimiento del ODROID-XU4 comparándolo con varios ordenadores de placa reducida.

Figura 1 - El ordenador de placa reducida ODROID-XU4

El ODROID-XU4 se basa en un SoC Samsung Exynos5422 que cuenta con cuatro núcleos Cortex-A15 a 2.0GHz y cuatro núcleos Cortex-A7 a 1.3GHz, mientras que la Mali-T628 se encarga de los gráficos. Lidiar con este SoC Exynos 5 significa tener 2GB de LPDDR3 RAM, HDMI 1.4 con soporte 1080p, un puerto USB 2.0, dos puertos USB 3.0, Ethernet Gigabit y un cabezal GPIO de 30 pines, todo contenido en una PCB de solo 83 x 58 mm (3,23 "x 2,24").

Figura 2: la placa de control XU4 mide 83 x 58 mm

Para refrigerar el SoC Exynos 5 se envía un disipador de calor activo con este SBC ARM. Tienes resultados térmicos más adelante en este artículo, pero el ventilador es absolutamente necesario en el caso de este SoC/placa.

Figura 3 - El XU4 viene con un SoC Exynos 5 SoC para el enfriamiento

El ODROID-XU4 soporta oficialmente Ubuntu 18.04 con los kernels ARM 4.9 y 4.14 de Linux. Hay imágenes de Android disponibles, así como diferentes imágenes de terceros. La Wiki de ODROID sigue siendo bastante útil para aquellos que buscan detalles técnicos y otra información sobre los SBC de Hardkernel.

En mis pruebas utilice la imagen de Ubuntu 18.04 con el kernel 4.14.37 de linux. Utiliza el compilador 7.3 GCC por defecto. Para tener una idea del potencial de rendimiento de este SBC ARM lo comparé con ASUS Tinker Board, Raspberry Pi 3 Modelo A +, Raspberry Pi 3 Modelo B+, Jetson TX1, Jetson TX2, ODROID-C1+, ALL-H3-CC H5 2GB, y AML-S905X-CC 2GB. Todas las pruebas de rendimiento ARM Linux se llevaron a cabo utilizando Phoronix Test Suite.

El rendimiento de la memoria XU4 fue superior al de otros SBC ARM de bajo coste, pero estaba por debajo de las placas NVIDIA Jetson Tegra que cuentan con memoria LPDDR4. Con el renderizador TTSIOD 3D multi-proceso, el ODROID-XU4 fue sorprendentemente capaz de adelantar a la Jetson TX2. Simplemente recordar que el TX2 tiene un doble núcleo NVIDIA Denver más cuatro núcleos ARM Cortex-A57.

Con el programa GraphicsMagick con subprocesos OpenMP, los SoC de Tegra estaban por delante, aunque el XU4 superó al resto de SBC ARM de menos de 100$. El ODROID-XU4 tuvo un rendimiento muy bueno en la prueba de compresión 7-Zip y casi igualó el rendimiento de la CPU Jetson TX1.

Los mejores tiempos de compilación para PHP se encontraba entre las placas TX1 y TX2. El trazado de rayos C-Ray también llevó a que el rendimiento del XU4 apareciese entre las placas de desarrollo ARM TX1 y TX2.

Al no estar demasiado familiarizado con el XU4 hasta que lo recibí, el potencial de rendimiento de este SBC ARM fue bastante sorprendente. En las pruebas de rendimiento Redis, el ASUS Tinker Board mostró una ligera ventaja. En las pruebas de rendimiento Python, el ODROID-XU4 estaba por delante de los SoC NVIDIA Tegra. El ODROID-XU4 también tuvo un rendimiento muy bueno en comparación con los rendimientos de resto de hardware ARM.

A continuación, veremos el rendimiento por dólar basado en los precios actuales de los EE. UU. para las diferentes placas. Ten en cuenta que, aunque las placas Jetson son mucho más caras, son especialmente útiles para realizar cálculos por GPU en los que no se centra estas pruebas, debido a que en este artículo en su gran mayoría se testean SBC ARM de bajo coste.

El ODROID-XU4 de 62$ tiene un precio muy bueno y en líneas generales presenta el mejor rendimiento por dólar, excepto en algunos casos en los que la Raspberry Pi 3 Model A+ de 25$ se impuso. Sin embargo, también cuenta con mucha menos memoria RAM, sin USB 3.0 y sin Ethernet Gigabit. Así que 60$ es un precio bastante competitivo para este ordenador de placa reducida de Hardkernel.

A modo de aviso, incluso con un sistema de refrigeración activo el ODROID-XU4 con una elevada carga de trabajo puede calentarse bastante. A continuación, tienes un análisis de la temperatura del SoC con el sistema de enfriamiento de fábrica sin carcasa, y luego funcionado dentro de una carcasa con el XU4 dentro.

La temperatura promedio de SoC con carga de trabajo fue de 70C (158F) o 75C (167F) cuando funciona dentro de una carcasa XU4, alcanzando un máximo de 84~90C (182-194F). Entre la configuración básica y la configuración con carcasa, no observé que la carcasa causara un estrangulamiento térmico ya que los resultados de la prueba de rendimiento resultaron ser prácticamente idénticos. Los SoC calientes no son nada nuevo, aunque los datos muestran claramente que se hace necesario un sistema de enfriamiento activo con este chip Exynos 5. Si tienes pensado tener continuamente el ODROID-XU4 con una elevada carga de trabajo, puede que valga la pena cambiar a un disipador de calor/ventilador más grande.

Por lo general, este es un buen SBC ARM que se presenta con un precio de 60$ y un rendimiento muy competitivo. Si deseas comparar tu propio sistema Linux con los SBC ARM que se han probado en este artículo, simplemente instala Phoronix Test Suite y ejecuta el banco de pruebas phoronix-test-suite 1812082-SK-ODROIDXU403. Gracias a Hardkernel por enviarnos este ODROID-XU4 para realizar pruebas.

Para comentarios, preguntas y sugerencias, visita el artículo original en https://www.phoronix.com/scan.php?page=article&item=ODROID-xu4-arm&num=6.

Conceptos Básicos de BASH: Introducción a BASH - Parte 7

Después de tantas cuestiones teóricas en las últimas partes de esta serie, vamos a darnos un respiro e intentar de forma inteligente aumentar la productividad de BASH cuando trabajamos con ODROID. El sistema Ubuntu MATE por defecto está repleto de utilidades muy útiles sin recurrir a la instalación de programas adicionales. Ahora, tomemos todo este potencial no utilizado para darnos una vuelta.

Opciones de acceso remoto

Si estás leyendo este artículo, es probable que quieras acceder a tu ODROID no solo con el teclado y el ratón, sino también con una consola remota desde un sistema diferente. SSH es el tradicional estándar establecido para hacer esto: no te lo puede perder, ya que lo encuentras en cada documento de instalación y configuración para nuestros ordenadores de placa reducida. ¿Pero sabías que una completa instalación de un entorno gráfico se puede utilizar incluso a través de una conexión SSH?

Intenta empezar con:

ssh -X
cuando accedas al sistema desde otro ordenador Linux. Es posible hacer que funcione con Windows usando MobaXterm, pero explicar cómo hacerlo está fuera del alcance de este artículo en concreto.

Si tienes un liviano visor de imágenes como fbi, fim o feh instalado, ahora puedes introducir

fim /usr/share/backgrounds/ubuntu-mate-photos/
para navegar por el trasfondo de MATE a través de la conexión remota. También puede usar el visor de imágenes MATE eom si te gusta, aunque las alternativas livianas son más rápidas con una conexión remota. Avanza con ESPACIO, salte con q.

Desde la línea de comandos, puede iniciar cualquier aplicación gráfica en tu sistema ODROID. Dado que los programas se inician en ODROID, los cuadros de diálogo que abren archivos también abren el sistema de archivos ODROID y trabaja con los archivos remotos.

Lograr que los archivos de audio remotos se reproduzcan en local es sorprendentemente difícil. En lugar de usar configuraciones complicadas, haremos un poco de trampa usando SSHfs (instale con apt install sshfs). Crea o usa una carpeta vacía:

  • mkdir ~/remoteODROID en tu ordenador Linux local que utilizas para acceder a ODROID.
  • Con sshfs ODROID@myODROID.lan:/home/ODROID ~/remoteODROID, puedes montar el directorio de inicio de ODROID directamente en la carpeta local ~/remoteODROID, sin necesidad de configurar primero la red con NFS.

Ahora todo está montado y se puede usar como un archivo local para que puedas escuchar archivos de audio y visualizar archivos de video en el ODROID sin dificultad. No te olvides de desmontar con

fusermount -u ~/remoteODROID
una vez que hayas terminado.

Ejecutando procesos en segundo plano

Una peculiaridad de la conexión SSH es que, si cierra la conexión, los procesos que estén ejecutándose se interrumpen. Digamos que quieres sacarles partido a tus nuevas habilidades de programación BASH y creas un pequeño script para registrar la temperatura del ODROID. Quieres ver si el sistema se calienta demasiado en un nuevo entorno, con pruebas de rendimiento o en una carcasa cerrada, así que lo dejas que funcione durante una hora:

templogger.sh

#!/bin/bash
# This script logs system temperature for one hour
# A file 'temp.log' in the home directory is used and overwritten

if [ -f ~/temp.log ]; then
  rm ~/temp.log        #if file exists, remove it
  touch ~/temp.log     #create file
fi
  for run in {1..720}  #run 720 times (5s interval)
do
  cat /sys/devices/virtual/thermal/thermal_zone0/temp >> ~/temp.log
  #for XU4/HC1/HC2; adjust for own system
  echo $run
  sleep 5
done
Si cierras la conexión apagando el PC para poder tomar una taza de café, la prueba se detiene. Para evitar esto, puede poner una tarea de segundo plano con bg y llevártela al primer plano con fg, pero hacer esto es un poco engorroso. Más fácil y flexible es usar el programa tmux o su pantalla predecesora. Nosotros solo tocamos lo básico, pero puedes dividir la pantalla con tmux y hacer una vista con dos o tres paneles, entre otras cosas. Echa un vistazo al manual con man tmux, pero no te agobies

Instálalo como de costumbre con apt install tmux. Antes de empezar a registrar la temperatura, inicia en primer lugar tmux, simplemente introduciendo tmux. Observarás una línea de estado en la parte inferior que contiene, de izquierda a derecha, el nombre de la sesión actual entre corchetes; la lista de ventanas; el título del panel activo entre comillas dobles; y la hora y fecha.

Figura 1 - Una captura de pantalla de tmux

Si inicia el script templogger.sh ahora, puedes separar la sesión tmux con CTRL + B y d para desconectar. Solo a modo de recordatorio: si colocas todos tus scripts y programas en el directorio ~/bin, aparecerán automáticamente en tu ruta. Ahora cierre la conexión SSH con CTRL + D y el terminal local, igualmente con CTRL + D. Incluso puede apagar tu PC e irte a tomar la taza de café que mencioné anteriormente.

Cuando vuelvas a ingresar al ODROID con SSH, aparecerá la pantalla de bienvenida normal con el mensaje del día. ¿Dónde está el script que tenías ejecutándose? Un simple enlace a tmux volverá a abrir la ventana de sesión tmux, y podrás ver los datos que se han ido registrando mientras tanto.

Repite el procedimiento anterior para volver a desconectar la sesión. Cuando haya terminado, un simple quit o CTRL + D sale de tmux hasta que lo necesite de nuevo. Cuando necesites realizar operaciones que duren horas, o incluso de forma indefinida, tmux será tu aliado. Antes de explorar aún más la productividad, divirtámonos un poco con los efectos visuales.

Embellecimiento

La línea de estado de tmux es un recordatorio de que la información de estado bien colocada es útil para no perderse en nuestro sistema. Al principio aprendimos a personalizar el prompt BASH, pero admitámoslo, todas las opciones mencionadas han existido durante décadas y las hemos observado en consecuencia. Ahora el mundo ha evolucionado más allá del puro ASCII.

¿Qué podemos hacer para tener una consola con un buen formato con opciones que se vean recientes y novedosas? No es tan fácil como cambiar un prompt PS3 en .bashrc. Sin embargo, muchas personas ya han dedicado mucho tiempo a esto y han creado un gran paquete .deb para que lo usemos. Instálalo con apt install powerline en primer lugar. Te darás cuenta que nada parece haber cambiado. Tenemos que realizar también algunas modificaciones en el sistema.

Abre tu archivo .bashrc con tu editor de texto favorito y dirígete al final. Antes de añadir funciones personalizadas, el .bashrc estándar termina con un bloque que empieza con la siguiente línea:

#enable programmable completion features
y termina con la siguiente línea:
fi

Después de este bloque, inserta el siguiente texto:

# Powerline features for bash, based on Ubuntu packages
if [ -f `which powerline-daemon` ]; then
  powerline-daemon -q
  POWERLINE_BASH_CONTINUATION=1
  POWERLINE_BASH_SELECT=1
  .  /usr/share/powerline/bindings/bash/powerline.sh
fi
Guarda el archivo, salte del intérprete de comandos con CTRL + D y ábrelo nuevamente. ¡Voila! Dispones de un nuevo look que hará que trabajar con la consola y BASH sea aún más fácil.

Figura 2 - Powerline BASH

Referencias

Script Powerline BASH: https://github.com/brujoand/sbp Añade más potencia a tu terminal con Powerline: https://fedoramagazine.org/add-power-terminal-powerline/

Clúster Swarm ODROID-HC1

Deploying Stack Swarm in Docker Swarm

El equipo de Docker ha desarrollado una herramienta de agrupación y programación para contenedores de Docker, llamada swarm. Este artículo describe cómo se puede crear un clúster swarm basado en ODROID-HC1. Este clúster se puede instalar en un rack de 19″.

Figura 1 - El conjunto de dispositivos HC1 para este artículo

Desde hace varios meses, he estado ejecutando mis aplicaciones en un clúster casero de 4 unidades ODROID-HC1, ejecutando contenedores Docker organizados con swarm. El clúster está alimentado por una fuente de alimentación casera. Elegí ODROID-HC1 y no el ODROID-MC1 porque el primer modelo ofrece soporte SSD. Un sistema basado en SSD es mucho más rápido que otro que use tarjetas microSD.

Rack de 19" impreso en 3D

Figura 2 - Rack de 19" impreso en 3D

Figura 3 - Montaje inicial

Figura 4: Soldé los cables dupont para alimentar directamente el ventilador desde la entrada de 5V de cada ODROID-HC1, tal y como muestra la imagen.

Figura 5 – Este es el aspecto que tiene con todos los ventiladores instalados:

Figura 6 - La configuración final del rack sería similar a la que se muestra en esta imagen

Instalación de software

Opté por instalar Archlinux, que se puede obtener en https://archlinuxarm.org/platforms/armv7/samsung/odroid-xu4. Para la parte de administración de infraestructura, decidí usar Saltstack. Utilicé Saltstack para "templar" todos mis servidores. Instalé Saltstack Master y Minion (el NAS será el maestro para el resto de servidores), siguiendo los pasos que ya documenté en https://www.bluemind.org/deploying-saltstack-master-minion-archlinux-arm/

Desde el nodo maestro salt, una simple comprobación te muestra como todos los nodos están bajo control:

$ salt -E "node[1-4].local.lan" cmd.run 'cat /etc/hostname'
  node4.local.lan:
      node4
  node3.local.lan:
      node3
  node2.local.lan:
      node2
  node1.local.lan:
      node1

Rootfs en el SSD

Primero, particiona el ssd:

$ salt -E "node[1-4].local.lan" cmd.run 'echo 
-e "o
n
p
1



w
q
" | fdisk /dev/sda'
Formatea la futura partición raíz:
$ salt -E "node[1-4].local.lan" cmd.run 'mkfs.ext4 -L ROOT /dev/sda1'
Monta la partición root del ssd:
$ salt -E "node[1-4].local.lan" cmd.run 'mount /dev/sda1 /mnt/'
Clona sdcard a la partición root del ssd:
$ salt -E "node[1-4].local.lan" cmd.run 'cd /;tar 
-c --one-file-system -f - . | (cd /mnt/; tar -xvf -)'
Cambia los parámetros de arranque para que la partición root sea /dev/sda1:
$ salt -E "node[1-4].local.lan" cmd.run 'sed -i -e 
"s/root\=PARTUUID=${uuid}/root=/dev/sda1/" /boot/boot.txt'
Recompila la configuración de arranque:
$ salt -E "node[1-4].local.lan" cmd.run 'pacman -S --noconfirm 
uboot-tools'
$ salt -E "node[1-4].local.lan" cmd.run 'cd /boot; ./mkscr'
Reiniciar:
$ salt -E "node[1-4].local.lan" cmd.run 'reboot'
Elimina todo lo que hay en la tarjeta SD y pon los archivos /boot en la raíz
$ salt -E "node[1-4].local.lan" cmd.run 'mount /dev/mmcblk0p1 /mnt'
$ salt -E "node[1-4].local.lan" cmd.run 'cp -R /mnt/boot/* /boot/'
$ salt -E "node[1-4].local.lan" cmd.run 'rm -Rf /mnt/*'
$ salt -E "node[1-4].local.lan" cmd.run 'mv /boot/* /mnt/'
Adapta boot.txt puesto que los archivos de arranque están en la partición de arranque de root y no en el directorio /boot:
$ salt -E "node[1-4].local.lan" cmd.run 'sed -i -e "s//boot////" 
/mnt/boot.txt'
$ salt -E "node[1-4].local.lan" cmd.run 'pacman -S --noconfirm 
uboot-tools'
$ salt -E "node[1-4].local.lan" cmd.run 'cd /mnt/; ./mkscr'
$ salt -E "node[1-4].local.lan" cmd.run 'cd /; umount /mnt'
$ salt -E "node[1-4].local.lan" cmd.run 'reboot'
Comprueba que /dev/sda es root:
$ salt -E "node[1-4].local.lan" cmd.run 'df -h | grep sda'
Node4.local.lan: /dev/sda1 118G 1.2G 117G 0% /
Node3.local.lan: /dev/sda1 118G 1.2G 117G 0% /
Node1.local.lan: /dev/sda1 118G 1.2G 117G 0% /
Node2.local.lan: /dev/sda1 118G 1.2G 117G 0% /

Pruebas de rendimiento SSD

Llevar a cabo pruebas de rendimiento es algo complejo y no voy a decir que las que realicé eran perfectas, pero al menos nos da una idea de cómo de rápido puede ser un SSD. El SSD que usé en cada uno de los ODROID-HC1 es un Sandisk X400 de 128GB. Ejecute la siguiente prueba 3 veces:

hdparm -tT /dev/sda => 362.6 Mb/s

dd write 4k => 122 Mb/s

$ sync; dd if=/dev/zero of=/benchfile bs=4k count=1048476; sync
dd write 1m => 119 Mb/s
$ sync; dd if=/dev/zero of=/benchfile bs=1M count=4096; sync
dd read 4k => 307 Mb/s
$ echo 3 > /proc/sys/vm/drop_caches
$ dd if=/benchfile of=/dev/null bs=4k count=1048476
dd read 1m => 357 Mb/s
$ echo 3 > /proc/sys/vm/drop_caches
$ dd if=/benchfile of=/dev/null bs=1M count=4096
Realicé la misma prueba con afinidad IRQ para los núcleos grandes, pero no observé ningún impacto significativo en el rendimiento.

Finalizar la instalación

No voy a copiar y pegar todos mis estados y plantillas saltstack en este artículo, ya que obviamente depende de las necesidades y gustos de cada persona. Básicamente, mi plantilla de "Nodo HC1" hace lo siguiente en cada nodo:

  • Cambiar el listado de copias
  • Instalar scripts personalizados de administrador de sistema
  • Eliminar alarmuser
  • Añadir algunas herramientas de administrador del sistema (lsof, wget, etc.)
  • Modificar el planificador mmc y ssd a fecha límite
  • Añadir mi usuario
  • Instalar cron
  • Configurar la rotación de los registros log
  • Ajustar journald config (RuntimeMaxUse=50M and Storage=volatile para reducir la escritura en el almacenamiento flash)
  • Añadir funciones de correo (ssmtp)

Luego cambié la contraseña de mi usuario usando saltstack:

$ salt "node1.local.lan" shadow.gen_password 'xxxxxx' # gives password hash in return
$ salt "node2.local.lan" shadow.set_password myuser 'the_hash_here'
Finalmente, para garantizar que la corrupción del disco no detenga el arranque de un nodo, forcé fsck en el momento del arranque en todos los nodos:

  • añadiendo “fsck.mode=force” in la linea del kernel dentro de /boot/boot.txt
  • compilándolo con mkscr
  • reiniciando

Implementar Docker Swarm

El módulo swarm dentro de mi saltstack no es reconocido, a pesar de usar los módulos de la versión 2018.3.1. Así que terminé ejecutando los comandos directamente, lo cual no es realmente un problema ya que no iba a añadir un nodo todos los días.

Compilar el nodo maestro:

$ salt "node1.local.lan" cmd.run 'docker swarm init'
Añadir un nodo trabajador:
$ salt "node4.local.lan" cmd.run 'docker swarm join --token xxxxx 
node1.local.lan:2377'
Añadir un segundo y tercer nodo maestro para tener capacidad de respuesta ante posibles fallos:
$ salt "node1.local.lan" cmd.run 'docker swarm join-token manager'
$ salt "node3.local.lan" cmd.run 'docker swarm join --token xxxxx 
192.168.1.1:2377'
$ salt "node2.local.lan" cmd.run 'docker swarm join --token xxxxx 
192.168.1.1:2377'
Al verificar el estado de todos los nodos con "docker node ls", ahora podemos ver un nodo jefe y 2 nodos que son "accesibles". Luego, implementé una configuración personalizada con un demonio docker (daemon.json) para cambiar el controlador del almacenamiento a overlay2 (uno por defecto para reducir la velocidad en xu4) y permite usar mi registro de docker personalizado:
{
  "insecure-registries":["myregistry.local.lan:5000"],
  "storage-driver": "overlay2"
}

Imágenes docker para el cluster Swarm.

A partir de ahora, usar un organizador de contenedores implica utilizar contenedores sin estado o usar una solución de almacenamiento global. Primero intenté usar glusterfs en todos los nodos. Funcionaba perfectamente, pero era demasiado lento (entre 25 y 36 Mb / s, incluso con configuraciones optimizadas y afinidad IRQ a los grandes núcleos). Terminé con una solución simple pero muy eficiente que cubría mis necesidades: Una copia de seguridad diaria automatizada de todos los volúmenes de todos los nodos (en una unidad de red) Una copia de seguridad de la base de datos mysql diaria automatizada en todos los nodos (ejecutar solo cuando se detecta mysql) Contenedores que pueden restaurar sus volúmenes desde la copia de seguridad durante el primer inicio Una limpieza diaria automatizada de contenedores y volúmenes en todos los nodos

Por lo tanto, cada vez que se cierra un nodo o se reinicia una pila, cada contenedor puede iniciarse en cualquier nodo, recuperando sus datos automáticamente (si no es sin estado).

El script de copia de seguridad diaria se muestra a continuación:

# monthly saved backup
firstdayofthemonth=`date '+%d'`
if [ $firstdayofthemonth == 01 ] ; then
  BACKUP_DIR="$BACKUP_DIR/monthly"
else
  firstdayoftheweek=$(date +"%u")
  if [ day == 1 ]; then
  BACKUP_DIR="$BACKUP_DIR/weekly"
  fi
fi
 
volumeList=$(ls /var/lib/docker/volumes | grep $DOCKER_VOLUME_LIST_PATTERN)
 
for volume in $volumeList
do
  archiveName=$(echo $volume | cut -d_ -f2-)
  mv "$BACKUP_DIR/$archiveName.tar.gz" 
"$BACKUP_DIR/$archiveName.tar.gz.old"
  cd /var/lib/docker/volumes/$volume/_data/
  tar -czf $BACKUP_DIR/$archiveName.tar.gz * 2>&1
  rm "$BACKUP_DIR/$archiveName.tar.gz.old"
done
Este es el script de limpieza diaria:
# remove unused containers and images
docker system prune -a -f
 
# remove unused volumes
volumeToRemove=$(docker volume ls -qf dangling=true)
 
if [ ! -z "$volumeToRemove" ]; then
  docker volume rm $volumeToRemove
fi

Compilar una simple imagen distribuida

Para crear un simple sistema de compilación distribuida, hice algunos scripts para distribuir mis contenedores docker acoplados en los 4 dispositivos. Todos los contenedores se colocan en un registro local, etiquetados con la fecha actual. El compilador local de imágenes crea, etiqueta y coloca en el registro (nombre del script: docker_build_image):

if [ $# -lt 3 ];  then
  echo "Usage: $0   "
  echo "Example : $0 myImage armv7h myregistry.local.lan:5000"
  echo ""
  exit 0
fi
 
arch="$2"
imageName="$arch/$1"
registry="$3"
tag=`date +%Y%m%d`
 
docker build --rm -t $registry/$imageName:$tag -t 
$registry/$imageName:latest .
docker push $registry/$imageName
docker rmi -f $registry/$imageName:$tag
docker rmi -f $registry/$imageName:latest
Compilar varias imágenes en el argumento (nombre del script: docker_build_batch):
# usage : default build all
if [[ "$1" == "-h" ]]; then
  echo "Usage: $0 [image folder 1] [image folder 2] ..."
  echo "Example :"
  echo "  build two images : $0 mariadb mosquitto"
  echo ""
  exit 0
fi
 
# if any parameter, use it/them as docker image to build
if [[ $# -gt 0 ]]; then
  DOCKER_IMAGES_DIR="${@:1}"
else
  echo "Nothing to build. try -h for help"
fi
 
echo -e "e[1m--- going to build the following images :"
echo -e "e[1m$DOCKER_IMAGES_DIR
"
 
# build and send to repository
for image in $DOCKER_IMAGES_DIR
do
  echo -e "e[1m--- start build of $image:"
  cd /home/docker/$image
  docker_build_image $image armv7h myregistry.local.lan:5000
done
Distribuye las compilaciones utilizando saltstack en el maestro salt, utilizando el script anterior. La imagen especial "archlinux" se compila primero si se encuentra, ya que el resto de imágenes dependen de ésta.
DOCKER_IMAGES_DIR=""
SPECIAL_NAME="archlinux_image_builder"
NODES[0]=""
 
# usage : default build all
if [[ "$1" == "-h" ]]; then
  echo "Usage: $0 [image folder 1] [image folder 2] ..."
  echo "Examples :"
  echo "  build all found images : $0"
  echo "  build two images : $0 mariadb archlinux_image_builder"
  echo ""
  exit 0
fi

echo -e "e[1m--- Update repository (git pull)
"
# update git repository
cd /home/docker
git pull

# if any parameter, use it/them as docker image to build
if [[ $# -gt 0 ]]; then
  DOCKER_IMAGES_DIR="${@:1}"
else
  DOCKER_IMAGES_DIR=$(ls -d */ | cut -f1 -d'/')
fi

echo -e "e[1m--- going to build the following images :"
echo -e "e[1m$DOCKER_IMAGES_DIR
"
 
 
# if archlinux images in array, build it first
if [[ $DOCKER_IMAGES_DIR = *"$SPECIAL_NAME"* ]]; then
  echo -e "e[1m--- found special image: $SPECIAL_NAME, start to build   
           it first"
  echo -e "e[1m--- update repository on node1
"
  salt "hulk1.local.lan" cmd.run "cd /home/docker; git pull"
 
  echo -e "e[1m--- build $SPECIAL_NAME image on hulk1
"
  salt "hulk1.local.lan" cmd.run "cd /home/docker/$SPECIAL_NAME; 
./mkimage-arch.sh armv7 registry.local.lan:5000"
 
  DOCKER_IMAGES_DIR=${DOCKER_IMAGES_DIR//$SPECIAL_NAME/}
fi

# update repository on all nodes
echo -e "e[1m--- update repository on node[1-4]
"
salt -E "node[1-4].local.lan" cmd.run "cd /home/docker; git pull"

# Prepare build processes on known swarm nodes
i=0
for image in $DOCKER_IMAGES_DIR
do
  NODES[$i]="${NODES[$i]} $image"
  i=$((i + 1))
 
  if [[ $i -gt 3 ]]; then
      i=0
  fi
done
 
echo -e "e[1m--- build plan :"
echo -e "e[1m--- node1 : ${NODES[0]}"
echo -e "e[1m--- node2 : ${NODES[1]}"
echo -e "e[1m--- node3 : ${NODES[2]}"
echo -e "e[1m--- node4 : ${NODES[3]}
"

# distribute and launch build plan
salt "node1.local.lan" cmd.run "docker_build_batch ${NODES[0]}"
salt "node2.local.lan" cmd.run "docker_build_batch ${NODES[1]}"
salt "node3.local.lan" cmd.run "docker_build_batch ${NODES[2]}"
salt "node4.local.lan" cmd.run "docker_build_batch ${NODES[3]}"
echo -e "e[1m--- build plan finished"
Las fuentes están disponibles en GitHub (https://github.com/jit06/docker-images) y Thingiverse (https://www.thingiverse.com/thing:3218912). Para comentarios, preguntas y sugerencias, visita el artículo original en https://www.bluemind.org/odroid-hc1-based-swarm-cluster-19-rack.

Referencias:

https://docs.docker.com/get-started/part4/#introduction https://archlinuxarm.org/platforms/armv7/samsung/odroid-xu4 https://wiki.archlinux.org/index.php/Saltstack https://www.bluemind.org/deploying-saltstack-master-minion-archlinux-arm/ https://www.bluemind.org/odroid-hc1-based-swarm-cluster-19-rack

Punto de Acceso Inalámbrico

Hardkernel ofrece varios módulos WiFi basados en la conexión USB para hacer uso de la conectividad WiFi en sus ordenadores de placa reducida (SBC). Algunos de ellos también se pueden utilizar para implementar estos SBC como puntos de acceso. Los módulos que ofrece se pueden encontrar en https://www.hardkernel.com/product-category/connectivity/.

Información del controlador inalámbrico

La lista de funciones de estos módulos se puede obtener usando el siguiente comando:

$ sudo iw list 
...
Supported interface modes:
               * IBSS
               * managed
               * AP
               * AP/VLAN
               * WDS
               * monitor
               * mesh point
...
Si está incluida la función "AP" dentro de los "Supported interface modes", entonces es que ese dispositivo admite el modo de Punto de acceso. A continuación, se muestran los detalles de todos los módulos que ofrece Hardkernel:
Wifi Module 0
Manufacturer: Mediatek Ralink
Part name: RT5370N
Type: chip
Number of busses: 1
Bus(es): USB 2.0
Number of bands: 1
Band(s): 2.4GHz
Data rate: 150Mbps
MIMO configuration: 1x1:1 (1T1R)
IEEE 802.11 PHY Modes: b,g,n
 
Bus 005 Device 002: ID 148F:5370 Ralink Technology, RT5370 Wireless Adapter

Wifi Module 3
Manufacturer: Realtek
Part name: RTL8188CUS
Type: chip
Number of busses: 1
Bus(es): USB 2.0
Number of bands: 1
Band(s): 2.4GHz
Data rate: 150Mbps
MIMO configuration: 1x1:1 (1T1R)
IEEE 802.11 PHY Modes: b,g,n
 
Bus 001 Device 003: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter

Wifi Module 4
Manufacturer: Ralink
Part name: RT5572N
Type: chip
Number of busses: 1
Bus(es): USB 2.0
Number of bands: 2
Band(s): 2.4GHz, 5GHz
Data rate: 300Mbps
MIMO configuration: 2x2:2 (2T2R)
IEEE 802.11 PHY Modes: a,b,g,n
 
Bus 001 Device 006: ID 148f:5572 Ralink Technology, Corp. RT5572 Wireless Adapter

Wifi Module 5
Manufacturer: Realtek
Type: chip
Number of busses: 2
Bus(es): USB 2.0 / USB 3.0
Number of bands: 2
Band(s): 2.4GHz, 5GHz
Data rate: 300Mbps
MIMO configuration: 2x2:2 (2T2R)
IEEE 802.11 PHY Modes: a,b,g,n,ac
 
Bus 003: ID 0bda:8812 Realtek Semiconductor Corp. RTL8812AU 802.11a/b/g/n/ac WLAN Adapter

Wifi Module 5A
Manufacturer: Realtek
Type: chip
Number of busses: 1
Bus(es): USB 2.0
Number of bands: 2
Band(s): 2.4GHz, 5GHz
Data rate: AC600
MIMO configuration: 433 Mbps @ 5 GHz @ 1T1R / 150 Mbps @ 2.4 GHz @ 1T1R
IEEE 802.11 PHY Modes: a,b,g,n,ac
 
Bus 003 Device 003: ID 0bda:a811 Realtek Semiconductor Corp.

Configurar el Punto de Acceso

  • Un miembro del foro (@ tam1111574) ha revelado que existe un problema con el puerto USB 3.0 del XU4 en http://forum.odroid.com/viewtopic.php?f=97&t=19285
  • Todos los comandos deben ejecutarse en modo superusuario.
  • Debes ejecutar apt update && apt full-upgrade antes de proceder
  • Además, es posible que tengas que ejecutar apt install libnl-3-dev libnl-genl-3-dev libssl-dev hostapd iptables git pkg-config vim build-essential

Necesitamos configurar la interfaz de red inalámbrica y el demonio dnsmasq. Podemos dividir la configuración del punto de acceso en las siguientes tareas:

  • Ajustar la configuración de la interfaz de red
  • Ajustar la configuración del servidor DHCP
  • Configurar las iptables para reenviar el tráfico de Internet desde Ethernet a la LAN inalámbrica.
  • Ajustar el servidor hostapd o la configuración wpa_supplicant.
  • Comprobar el servicio y la configuración WIFI.

Ajustar la configuración de la interfaz de red

Para configurar el punto de acceso inalámbrico, debes designar una dirección IP estática para la tarjeta de red inalámbrica. Revisa la parte de wlan0 de los siguientes contenidos:

# vi /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d
 
auto lo
iface lo inet loopback
 
auto eth0
iface eth0 inet dhcp
 
auto wlan0
iface wlan0 inet static
      address 192.168.1.1
      netmask 255.255.255.0
Ten en cuenta que los nombres de interfaz previsibles que aparecen empiezan con wlan si tiene un nombre de interfaz.

Si el nombre de tu interfaz inalámbrica es como se muestra a continuación, añade net.ifnames=0 como parámetro del kernel a la línea de comando del kernel editando boot.ini:

# ifconfig
enx7cdd9052131e Link encap:Ethernet  HWaddr 7c:dd:90:52:13:1e
       UP BROADCAST MULTICAST  MTU:1500  Metric:1
       RX packets:0 errors:0 dropped:321 overruns:0 frame:0
       TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
       collisions:0 txqueuelen:1000
       RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
El nombre de la interfaz local se resuelve para tener un nombre previsible para la interfaz inalámbrica.
# ifconfig
wlan0   Link encap:Ethernet  HWaddr 7c:dd:90:52:13:1e
       UP BROADCAST MULTICAST  MTU:1500  Metric:1
       RX packets:0 errors:0 dropped:10 overruns:0 frame:0
       TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
       collisions:0 txqueuelen:1000
       RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
Nota: la dirección IP wlan0 puede ser diferente a la tuya. El nombre de la interfaz inalámbrica se puede cambiar ya que depende de las tarjetas inalámbricas que hayas instalado

Ajustar la configuración del servidor DHCP para el Punto de Acceso

Configura dnsmasq, que es un servidor DNS y DHCP muy liviano.

# apt install dnsmasq
Reading package lists... Done
Building dependency tree     
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
Need to get 16.2 kB of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 http://ports.ubuntu.com/ubuntu-ports bionic/universe armhf dnsmasq all 2.79-1 [16.2 kB]
Fetched 16.2 kB in 1s (16.6 kB/s)
(Reading database ... 155718 files and directories currently installed.)
Preparing to unpack .../dnsmasq_2.79-1_all.deb ...
Unpacking dnsmasq (2.79-1) over (2.79-1) ...
Setting up dnsmasq (2.79-1) ...
Processing triggers for systemd (237-3ubuntu10.9) ...
Si haces frente a un mensaje "FAILED" al iniciar el servicio dnsmasq.s como el siguiente "port 53: Address already in use", haz lo siguiente:
... invoke-rc.d: initscript dnsmasq, action "start" failed...
  dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
  Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; 
 vendor preset: enabled)
 Active: failed (Result: exit-code) since Mon 2018-12-10 01:59:06 UTC; 
 22ms ago
 Process: 2073 ExecStart=/etc/init.d/dnsmasq systemd-exec 
 (code=exited, status=2)
  Process: 2072 ExecStartPre=/usr/sbin/dnsmasq --test (code=exited, 
 status=0/SUCCESS)
  Dec 10 01:59:06 odroid systemd[1]: Starting dnsmasq - A lightweight 
 DHCP and caching DNS server...
  Dec 10 01:59:06 odroid dnsmasq[2072]: dnsmasq: syntax check OK.
  Dec 10 01:59:06 odroid dnsmasq[2073]: dnsmasq: failed to create 
 listening socket for port 53: Address already in use
  Dec 10 01:59:06 odroid dnsmasq[2073]: failed to create listening 
 socket for port 53: Address already in use
  Dec 10 01:59:06 odroid dnsmasq[2073]: FAILED to start up
  Dec 10 01:59:06 odroid systemd[1]: dnsmasq.service: Control process 
 exited, code=exited status=2
  Dec 10 01:59:06 odroid systemd[1]: dnsmasq.service: Failed with 
 result 'exit-code'.
  Dec 10 01:59:06 odroid systemd[1]: Failed to start dnsmasq - A 
 lightweight DHCP and caching DNS server.
 Processing triggers for systemd (237-3ubuntu10.9) ...
Detén el servicio que estaba escuchando en el puerto 53:
# Check that systemd-resolve service is listening port 53 
  now(127.0.0.53:53)
# netstat -alnp | grep -w LISTEN
tcp    0   0 127.0.0.53:53   0.0.0.0:*   LISTEN    755/systemd-resolve
tcp    0   0 0.0.0.0:22      0.0.0.0:*   LISTEN    916/sshd          
tcp    0   0 127.0.0.1:631   0.0.0.0:*   LISTEN    2616/cupsd        
tcp6   0   0 :::22           :::*        LISTEN    916/sshd          
tcp6   0   0 ::1:631         :::*        LISTEN    2616/cupsd       

# To use the 53 port, disable & stop the systemd-resolved service
# systemctl disable systemd-resolved.service
Removed /etc/systemd/system/multi-user.target.wants/systemd-resolved.service.
Removed /etc/systemd/system/dbus-org.freedesktop.resolve1.service.
# systemctl stop systemd-resolved

# dnsmasq service enable & start
# systemctl enable dnsmasq
Synchronizing state of dnsmasq.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable dnsmasq

# systemctl start dnsmasq
# confirm dnsmasq service running
# netstat -alnp | grep -w LISTEN

tcp6   0   0 ::1:631         :::*        LISTEN    2616/cupsd  

tcp    0   0 0.0.0.0:53      0.0.0.0:*   LISTEN    6100/dnsmasq      
tcp    0   0 0.0.0.0:22      0.0.0.0:*   LISTEN    677/sshd            
tcp    0   0 127.0.0.1:631   0.0.0.0:*   LISTEN    2734/cupsd        
tcp6   0   0 :::53           :::*        LISTEN    6100/dnsmasq      
tcp6   0   0 :::22           :::*        LISTEN    677/sshd          
tcp6   0   0 ::1:631         :::*        LISTEN    2734/cupsd
Copia el archivo de configuración dnsmasq para hacer una copia de seguridad y luego crea uno nuevo.
# mv /etc/dnsmasq.conf /etc/dnsmasq.conf.org
# vi /etc/dnsmasq.conf
Los contenidos de dnsmasq.conf son así:
domain-needed
bogus-priv
no-resolv
no-poll
server=/example.com/192.168.1.5
server=8.8.8.8
server=8.8.4.4
local=/example.com/
address=/doubleclick.net/127.0.0.1
no-hosts
#addn-hosts=/etc/dnsmasq.d/hosts.conf
expand-hosts
domain=example.com
dhcp-range=192.168.1.20,192.168.1.50,72h
dhcp-range=tftp,192.168.1.250,192.168.1.254
dhcp-option=option:router,192.168.1.1
dhcp-option=option:ntp-server,192.168.1.5
dhcp-option=19,0 # ip-forwarding off
dhcp-option=44,192.168.1.5 # set netbios-over-TCP/IP aka WINS
dhcp-option=45,192.168.1.5 # netbios datagram distribution server
dhcp-option=46,8         # netbios node type
Ten en cuenta que puedes ampliar el rango de dhcp o cambiar la dirección IP en la configuración.

Configurar iptables para reenviar el tráfico de Internet desde Ethernet a la LAN inalámbrica

A continuación, habilita el reenvío automático de puertos en el arranque:

# vi /etc/sysctl.conf
Localiza las siguientes opciones y cámbialas:
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
Añade el siguiente contenido al archivo /etc/rc.local para redirigir el tráfico de Internet a una LAN inalámbrica:
# vi /etc/rc.local
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
Necesitarás actualizar las reglas de iptables en función de la interfaz de tu red inalámbrica. Reinicia el sistema para que funcione:
# reboot

Instalación del Punto de Acceso - hostapd

hostapd es un demonio del espacio de usuario para puntos de acceso y servidores de autentificación. Éste pone en marcha la gestión de puntos de acceso IEEE 802.11, los autentificadores IEEE 802.1X / WPA / WPA2 / EAP, el cliente RADIUS, el servidor EAP y el servidor de autentificación RADIUS. Puede encontrar más información en https://wireless.wiki.kernel.org/en/users/documentation/hostapd.

A continuación, se muestran los pasos a seguir para llevar a cabo la compilación de hostapd. Descarga el código fuente de hostapd y compila con los parámetros correctos:

Wifi Module 0, 4, 5, 5A
# wget https://w1.fi/releases/hostapd-2.6.tar.gz
# tar xvfz hostapd-2.6.tar.gz
# cd hostapd-2.6/hostapd
/hostapd-2.6/hostapd# cp defconfig .config
/hostapd-2.6/hostapd# echo CONFIG_LIBNL32=y >> .config
/hostapd-2.6/hostapd# echo CONFIG_IEEE80211N=y >> .config
/hostapd-2.6/hostapd# echo CONFIG_IEEE80211AC=y >> .config
/hostapd-2.6/hostapd# make
Deberías descargar un parche si vas utilizar el Módulo 3 Wifi para que funcione hostapd con este Módulo, ya que no es compatible con el controlador estándar nl80211 de hostapd en el kernel 3.10, 3.14, 3.16.
Wifi Module 3
# git clone https://github.com/pritambaral/hostapd-rtl871xdrv.git
# wget https://w1.fi/releases/hostapd-2.6.tar.gz
# tar xvfz hostapd-2.6.tar.gz
# cd hostapd-2.6
/hostapd-2.6# patch -p1 < ../hostapd-rtl871xdrv/rtlxdrv.patch /hostapd-2.6# cd hostapd /hostapd-2.6/hostapd# cp defconfig .config /hostapd-2.6/hostapd# echo CONFIG_LIBNL32=y >> .config
/hostapd-2.6/hostapd# echo CONFIG_DRIVER_RTW=y >> .config
/hostapd-2.6/hostapd# make
Realiza una copia de seguridad del hostapd actual y reemplaza el archivo por otro configurado:
/hostapd-2.6/hostapd# mv /usr/sbin/hostapd /usr/sbin/hostapd.org
/hostapd-2.6/hostapd# cp hostapd /usr/sbin/
Verifica que tienes instalada la última versión:
/hostapd-2.6/hostpad# cd ~
# hostapd
 
hostapd v2.6
User space daemon for IEEE 802.11 AP management,
IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
Copyright (c) 2002-2016, Jouni Malinen <j@w1.fi> and contributors
Configura hostapd para usar el punto de acceso:
# vi /etc/default/hostapd
Localiza las siguientes opciones y edita:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
DAEMON_OPTS="-B"
Puedes actualizar este DAEMON_OPTS para obtener los registros log del demonio hostapd editando el archivo /etc/hostapd/hostapd.conf:
# vi /etc/hostapd/hostapd.conf

El contenido de los archivos hostapd.conf para la configuración de 2.4 GHz es el siguiente:
# HostAPD <2.4 Ghz configuration hostapd.conf file>
# Interface
interface=wlan0
# driver
driver=nl80211
# Logging
logger_syslog=-1
logger_syslog_level=3
logger_stdout=-1
logger_stdout_level=2
# CTRL-Interface
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
# WLAN
country_code=KR
ssid=OdroidAPn
hw_mode=g
channel=6
beacon_int=100
dtim_period=2
max_num_sta=255
rts_threshold=2347
fragm_threshold=2346
preamble=1
# WPA2
wpa=2                          # WPA2 only
wpa_passphrase=hardkernel
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
auth_algs=3                    # 1=wpa, 2=wep, 3=both
macaddr_acl=0
wmm_enabled=1
eap_reauth_period=360000
fragm_threshold=2346
rsn_preauth=1
rsn_preauth_interfaces=wlan0
wpa_group_rekey=600
wpa_ptk_rekey=600
wpa_gmk_rekey=86400
# N-WLAN
ieee80211n=1
ht_capab=[HT20+][SHORT-GI-20][DSSS_CCK-20]
require_ht=0
obss_interval=0
El contenido de los archivos hostapd.conf para la configuración de 2.4GHz para el Módulo WiFi 3 es el siguiente:
# interface
interface=wlan0
# driver
driver=rtl871xdrv
# CTRL-Interface
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
# SSID
ssid=OdroidAP
# WLAN
country_code=KR
hw_mode=g
channel=1
beacon_int=100
dtim_period=2
max_num_sta=255
rts_threshold=2347
fragm_threshold=2346
preamble=1
# Logging
logger_syslog=-1
logger_syslog_level=3
logger_stdout=-1
logger_stdout_level=2
# passphrase
wpa_passphrase=hardkernel
# WPA2
wpa=3
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
beacon_int=100
auth_algs=3                   # 1=wpa, 2=wep, 3=both
macaddr_acl=0
wmm_enabled=1
eap_reauth_period=360000000
rsn_preauth=1
rsn_preauth_interfaces=wlan0
wpa_group_rekey=600
wpa_ptk_rekey=600
wpa_gmk_rekey=86400
El contenido de los archivos hostapd.conf para el conjunto de chips Realtek RTL8812AU de 5 GHz es el siguiente:
# HostAPD <5.0 Ghz configuration hostapd.conf file>
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
interface=wlan0
driver=nl80211
### IEEE 802.11
ssid=Odroid5Ghz
hw_mode=a
channel=36
max_num_sta=128
auth_algs=1
### DFS
country_code=KR
ieee80211d=1
ieee80211h=1
#ieee80211ac=1
### IEEE 802.11n
ieee80211n=1
ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-20]
### IEEE 802.11ac
#ieee80211ac=1
#vht_oper_chwidth=1
#vht_capab=[SHORT-GI-40][RXLDPC][TX-STBC-2BY1]
#vht_oper_centr_freq_seg0_idx=0
### IEEE 802.11i
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_passphrase=hardkernel
rsn_pairwise=CCMP
### hostapd event logger
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
### WMM
wmm_enabled=1
uapsd_advertisement_enabled=1
wmm_ac_bk_cwmin=4
wmm_ac_bk_cwmax=10
wmm_ac_bk_aifs=7
wmm_ac_bk_txop_limit=0
wmm_ac_bk_acm=0
wmm_ac_be_aifs=3
wmm_ac_be_cwmin=4
wmm_ac_be_cwmax=10
wmm_ac_be_txop_limit=0
wmm_ac_be_acm=0
wmm_ac_vi_aifs=2
wmm_ac_vi_cwmin=3
wmm_ac_vi_cwmax=4
wmm_ac_vi_txop_limit=94
wmm_ac_vi_acm=0
wmm_ac_vo_aifs=2
wmm_ac_vo_cwmin=2
wmm_ac_vo_cwmax=3
wmm_ac_vo_txop_limit=47
wmm_ac_vo_acm=0
### TX queue parameters
tx_queue_data3_aifs=7
tx_queue_data3_cwmin=15
tx_queue_data3_cwmax=1023
tx_queue_data3_burst=0
tx_queue_data2_aifs=3
tx_queue_data2_cwmin=15
tx_queue_data2_cwmax=63
tx_queue_data2_burst=0
tx_queue_data1_aifs=1
tx_queue_data1_cwmin=7
tx_queue_data1_cwmax=15
tx_queue_data1_burst=3.0
tx_queue_data0_aifs=1
tx_queue_data0_cwmin=3
tx_queue_data0_cwmax=7
tx_queue_data0_burst=1.5
En los módulos Wifi 4, Wifi 5 y Wifi 5A, debemos ajustar esta configuración en función de ht_capab. Reemplaza el country_code, ssid y wpa_passphrase según tus requisitos. N-WLAN es opcional y se puede omitir.

Comprobar hostpad y el estado del servicio dnsmasq

La dirección IP WiFi debe ser la misma del conjunto para /etc/network/interfaces. Debes asignar la dirección IP específica que configuraste en el archivo /etc/network/interfaces como método estático para la interfaz wlan0.

# Force allocation of IP address
# ifconfig wlan0 192.168.1.1
 
# Check IP address
# ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
      inet 192.168.1.1  netmask 255.255.255.0  broadcast 192.168.1.255
      ether 40:a5:ef:f3:98:6a  txqueuelen 1000  (Ethernet)
      RX packets 122  bytes 13344 (13.3 KB)
      RX errors 0  dropped 1  overruns 0  frame 0
      TX packets 49  bytes 18722 (18.7 KB)
      TX errors 0  dropped 473 overruns 0  carrier 0  collisions 0
Después de finalizar todos los pasos de configuración, reinicia los servicios y verifica sus estados. Introduce el siguiente código para activar por defecto:
# update-rc.d hostapd enable
Reinicia los servicios:
# service hostapd restart
# service dnsmasq restart

Si recibes este mensaje al iniciar el servicio de hostapd, "Failed to start hostapd.service: Unit hostapd.service is masked", desenmascara el servicio e inténtalo de nuevo:

systemctl unmask hostapd.service
Comprueba los servicios:
# service hostapd status
# service dnsmasq status
Comprueba el estado activo (en ejecución):
# hostapd
hostapd.service - LSB: Advanced IEEE 802.11 management daemon
   Loaded: loaded (/etc/init.d/hostapd; bad; vendor preset: enabled)
   Active: active (running) since Sun 2017-07-09 19:48:41 UTC; 31s ago
   Docs: man:systemd-sysv-generator(8)
  Process: 789 ExecStart=/etc/init.d/hostapd start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/hostapd.service
         └─798 /usr/sbin/hostapd -B -P /run/hostapd.pid -B /etc/hostapd/hostapd-2.6.conf
 
Jul 09 19:48:41 odroid systemd[1]: Starting LSB: Advanced IEEE 802.11 management daemon...
Jul 09 19:48:41 odroid hostapd[789]:  * Starting advanced IEEE 802.11 management hostapd
Jul 09 19:48:41 odroid hostapd[789]:    ...done.
Jul 09 19:48:41 odroid systemd[1]: Started LSB: Advanced IEEE 802.11 management daemon.
 
# dnsmasq
dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
   Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
  Drop-In: /run/systemd/generator/dnsmasq.service.d
         └─50-dnsmasq-$named.conf, 50-insserv.conf-$named.conf
   Active: active (running) since Sun 2017-07-09 19:48:31 UTC; 4min 36s ago
  Process: 592 ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf (code=exited, status=0/SUCCESS)
  Process: 575 ExecStart=/etc/init.d/dnsmasq systemd-exec (code=exited, status=0/SUCCESS)
  Process: 554 ExecStartPre=/usr/sbin/dnsmasq --test (code=exited, status=0/SUCCESS)
 Main PID: 591 (dnsmasq)
   CGroup: /system.slice/dnsmasq.service
         └─591 /usr/sbin/dnsmasq -x /var/run/dnsmasq/dnsmasq.pid -u dnsmasq -r /var/run/dnsmasq/resolv.conf -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,
 
Jul 09 19:48:30 odroid dnsmasq[591]: DNS service limited to local subnets
Jul 09 19:48:30 odroid dnsmasq[591]: warning: ignoring resolv-file flag because no-resolv is set
Jul 09 19:48:30 odroid dnsmasq-dhcp[591]: DHCP, IP range 192.168.1.250 -- 192.168.1.254, lease time 1h
Jul 09 19:48:30 odroid dnsmasq-dhcp[591]: DHCP, IP range 192.168.1.20 -- 192.168.1.50, lease time 3d
Jul 09 19:48:30 odroid dnsmasq[591]: using local addresses only for domain example.com
Jul 09 19:48:30 odroid dnsmasq[591]: using nameserver 4.4.4.4#53
Jul 09 19:48:30 odroid dnsmasq[591]: using nameserver 8.8.8.8#53
Jul 09 19:48:30 odroid dnsmasq[591]: using nameserver 192.168.1.5#53 for domain example.com
Jul 09 19:48:30 odroid dnsmasq[591]: cleared cache
Jul 09 19:48:31 odroid systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.
lines 1-22/22 (END)

Instalación del Punto de Acceso - wpa_supplicant

La aplicación wpa_supplicant es una aplicación de espacio de usuario que funciona como solicitante WPA y SME (para manejar los comandos de inicio MLME). Consulta el siguiente enlace para obtener más información: https://wireless.wiki.kernel.org/en/users/documentation/wpa_supplicant.

A continuación, se muestran los pasos para llevar a cabo la compilación de wpa_supplicant. Primero, descarga el código fuente de wpa_supplicant y compílalo:

# wget https://w1.fi/releases/wpa_supplicant-2.6.tar.gz
# tar xvfz wpa_supplicant-2.6.tar.gz
# cd wpa_supplicant-2.6/wpa_supplicant/
/wpa_supplicant-2.6/wpa_supplicant# cp defconfig .config
 
# Enable AP, P2P and WPS needed to configure wpa_supplicant in AP mode.
/wpa_supplicant-2.6/wpa_supplicant# echo CONFIG_P2P=y >> .config
/wpa_supplicant-2.6/wpa_supplicant# echo CONFIG_AP=y >> .config
/wpa_supplicant-2.6/wpa_supplicant# echo CONFIG_WPS=y >> .config
/wpa_supplicant-2.6/wpa_supplicant# echo CFLAGS +=-I/usr/include/libnl3/ >> .config
/wpa_supplicant-2.6/wpa_supplicant# echo CONFIG_LIBNL32=y >> .config
/wpa_supplicant-2.6/wpa_supplicant# make
Realiza una copia de seguridad del wpa_supplicant actual y reemplaza el archivo por otro configurado:
/wpa_supplicant-2.6/wpa_supplicant# mv /sbin/wpa_supplicant /sbin/wpa_supplicant.org
/wpa_supplicant-2.6/wpa_supplicant# cp ./wpa_supplicant /sbin/
Verifica que tienes instalada la última versión:
/wpa_supplicant-2.6/wpa_supplicant# cd ~
# wpa_supplicant -v
 
wpa_supplicant v2.6
Copyright (c) 2003-2016, Jouni Malinen <j@w1.fi> and contributors
Crea un archivo de configuración para que wpa_supplicant se ejecute en modo AP llamado wpa.conf:
# vi wpa.conf

El contenido del archivo wpa.conf es el siguiente:

network={
   ssid="odroid-WPA"
   mode=2
   key_mgmt=WPA-PSK
   psk="hardkernel"
   frequency=2437
 }
Reinicia del sistema
# reboot
Ten en cuenta que puedes cambiar el rango de frecuencia entre 2.4 GHz y 5 GHz.
# ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
      inet 192.168.1.1  netmask 255.255.255.0  broadcast 192.168.1.255
      ether 40:a5:ef:f3:98:6a  txqueuelen 1000  (Ethernet)
      RX packets 122  bytes 13344 (13.3 KB)
      RX errors 0  dropped 1  overruns 0  frame 0
      TX packets 49  bytes 18722 (18.7 KB)
      TX errors 0  dropped 16 overruns 0  carrier 0  collisions 0
Este es un ejemplo de cómo iniciar wpa_supplicant como punto de acceso:
# wpa_supplicant -Dnl80211 -iwlan0 -c ~/wpa.conf
Successfully initialized wpa_supplicant
Using interface wlan0 with hwaddr 7c:dd:90:52:13:1e and ssid "odroid-WPA"
wlan0: interface state UNINITIALIZED->ENABLED
wlan0: AP-ENABLED
wlan0: CTRL-EVENT-CONNECTED - Connection to 7c:dd:90:52:13:1e completed [id=0 id_str=]
Inicia Wpa_supplicant como servidor

Añade lo siguiente en el archivo /etc/rc.local:

sudo service network-manager stop
wpa_supplicant -B -Dnl80211 -iwlan0 -c /root/wap.conf
Para comentarios, preguntas y sugerencias, visita el artículo original en https://wiki.odroid.com/accessory/connectivity/wifi/wireless_ap_mode.

Conociendo un ODROIDian: Justin Lee, CEO de Hardkernel

¿Cómo ha crecido Hardkernel en los últimos 5 años? Es realmente difícil recordar todo lo que ha sucedido en estos últimos 5 años debido a mi pésima capacidad para recordar las cosas, aunque cambios sí que ha habido bastantes. Hace 5 años, Hardkernel contaba con 11 personas, incluido yo, hoy somos 26 miembros. Acudimos a talleres de trabajo dos o tres veces al año para relajarnos un poco y recargar las pilas.

Figura 1 - Hardkernel en un taller hace 5 años

Figura 2 - Hardkernel en un taller reciente

En 2014 enviábamos en torno a los 3,000 productos SBC ODROID al mes. Hemos estado enviando más de 15,000 placas al mes en 2018. Nuestro foro comunitario internacional tenía poco más de 4,000 miembros registrados en 2014 y actualmente cuenta con más de 26,000 miembros.

Empezamos a publicar ODROID Magazine en enero de 2014. Este mes de la revista es, sorprendente, el primer número del sexto año. ¡Desconocía cuanto habíamos crecimos en los últimos 5 años!

Figura 3 - Portada del primer número de ODROID Magazine

¿En qué nuevas direcciones se estará moviendo Hardkernel en los próximos 5 años? No hay nada nuevo. Simplemente queremos seguir creando productos que aporten a los desarrolladores la máxima diversión posible, de modo que seguiremos estando muy cerca de los miembros de nuestra comunidad para escuchar los que nos tienen que decir, tal y como lo hemos hecho hasta ahora.

Figura 4: Hardkernel escucha a sus usuarios para mejorar constantemente sus productos

¿Cómo ha contribuido la comunidad ODROID al éxito de Hardkernel? La comunidad siempre nos aporta muchas y grandes ideas para crear nuevos e increíbles productos. Los miembros del foro amablemente nos ayudan a resolver muchos problemas de software y de hardware también. Nuestros recursos humanos internos continúan siendo muy limitados. Pero esta cuestión la vamos solventando en menor a mayor medida gracias a nuestra gran comunidad.

¿Qué pasos suele seguir el equipo de Hardkernel para desarrollar nuevos productos? No hay nada que sea especial. Si encontramos una idea brillante que puede llegar a ser viable, simplemente desarrollamos un prototipo rápidamente para probar la funcionalidad, el rendimiento y la facilidad de uso. Si los resultados de las pruebas son aceptables, continuamos puliendo el prototipo con el fin de hacerlo más atractivo para los desarrolladores. Tras un par de ciclos de trabajo con los prototipos, construimos muestras de ingeniería para validar nuestro proceso de fabricación. También regalamos en muchos casos algunas muestras de ingeniería a miembros importantes de la comunidad para conocer sus opiniones. Si no nos topamos con problemas críticos, simplemente lanzamos el nuevo producto finalmente. Pero hay un montón de procesos internos y errores ocultos que consumen tiempo ya que todos somos seres humanos.

Figura 5 - Ciclo de desarrollo de productos de Hardkernel

Los ODROID se han convertido en sinónimo de innovación de juegos retro; ¿Era algo que estaba previsto? OGST, ORA, Batocera, Recalbox, Lakka y otras imágenes de SO impulsadas por la comunidad orientadas a juego para ODROID-XU4 han mejorado significativamente y cada vez son más populares. Recientemente, el precio del SBC ODROID-XU4 ha bajado nuevamente a 49$ y éste debería ser el más asequible y potente SBC para montar una consola de juegos retro. Hablando francamente, siempre nos ha gustado jugar a los juegos y es una de las razones principales por las que creamos el kit de consola de juegos tipo N64, así como el dispositivo de juegos portátil ODROID-GO.

Figura 6: la emulación de Nintendo 64 es muy popular entre los ODROIDians

¿Para qué proyectos personales usas los ODROIDs? He estado utilizando varias placas ODROID en mi escritorio para muchas y diferentes finalidades. Aquí tienes un buen ejemplo: he estado usando un PC de escritorio Intel Xeon E3-1230 desde finales de 2013 y el hardware tienen algunos problemas de estabilidad actualmente. Afortunadamente, el rendimiento de nuestro flamante ODROID-H2 es bastante aceptable para mis tareas y decidí cambiar mi ordenador. Comparemos los sistemas antiguo y nuevo en la Tabla 1.

Tabla 1 – Antiguo PC y nuevo componente ODROID-H2 de Justin y la comparación de precios

Probablemente, la comparación de precios no es justa ya que el precio del SSD ha caído bastante, pero deberíamos estar de acuerdo en que el nuevo PC ODROID-H2 PC sigue siendo muy asequible, no hay ruido del ventilador y el ahorro de energía en considerable en comparación con mi antiguo PC Xeon. La potencia de cálculo del procesador Xeon E3 es obviamente un 40 ~ 50% más rápido que el SoC J4105. Sin embargo, el almacenamiento flash NVMe y la memoria RAM DDR4 más rápidos de mi sistema ODROID-H2 mejora bastante el rendimiento general.

Utilizo dos monitores 2560x1440 27” 4K para mis tareas. Ejecuté Firefox en el izquierdo y Chrome en el otro. Incluso abrí 25 pestañas en cada navegador, continuaba siendo muy suave y cómodo.

Figura 7: El escritorio de Justin antes de contar con el ODROID-H2

Figura 8: El escritorio de Justin después de añadir el ODROID-H2

Mi antiguo y voluminoso ordenador ocupa mucho espacio en mi escritorio. Resulta más difícil localizar mi nuevo mini PC. Puede que pronto coloque más productos ODROID en mi escritorio. ¿Lográs localizar mi carcasa H2 ligeramente personalizada?

Figura 9 - Un primer plano de la carcasa ODROID-H2 personalizada de Justin