YouTube Vanced: Reproduce Videos de YouTube como un Profesional

YouTube Vanced es una versión modificada de YouTube para Android. Bloquea los anuncios y también te permite configurar tu resolución de reproducción por defecto y las funciones de reproducción automática y repetición automática. Visita https://vanced.app/. Merece la pena, especialmente si te gusta reproducir videos de YouTube con Google Assistant.

No podemos instalar YouTube Vanced usando TWRP o Magisk. Además, YouTube debe instalarse como una aplicación del sistema, es decir, no desde la Play Store. Contacté con el desarrollador de Youtube Vanced y me habló de una forma mucho más fácil de hacer esto. De ahí este tutorial. No dejes que la duración de este tutorial te eche para atrás. Todo es bastante fácil.

Cosas que necesitarás

  • Una instalación limpia de Android para ODROID-C2. Yo use una para realizar este tutorial: viewtopic.php?f=137&t=19203#p266354
  • OpenGAPPS ARM 6.0 STOCK. No es PICO ni NANO, no lo descomprimas: https://opengapps.org/
  • Un gapps-config.txt que ha sido reducido https://tinyurl.com/y2vrnb8v. Lee las notas al pie
  • Un administrador de archivos con acceso root. Suelo usar MiXplorer v6.39.2, lo he utilizado a largo de todo este tutorial https://tinyurl.com/jmggvey.
  • Versión de YouTube Vanced Root armeabi-v7a. No necesita el instalador. https://vanced.app/APKs?type=ROOT
  • Opcional pero MUY recomendado: un módulo eMMC para tu sistema operativo y no una tarjeta microSD.

Proceso

Son muchos los pasos que hay que realizar. No obstante, son rápidos, fáciles y a prueba de errores. Como ya has trabado con un ODROID, cuentas con las habilidades necesarias para todo esto.

Paso 1: Instala Android en tu tarjeta eMMC o microSD. Puede funcionar en una instalación existente. Simplemente desinstala todas y cada una de las aplicaciones de Google que haya instalado a través de Play Store, especialmente YouTube, y la aplicación de búsqueda de Google. Logre actualizar una instalación de PICO a NANO para el Google Assistant, pero como mi instalación base elimina las cosas que pico/nano tiene por defecto, puede o no funcionar. Pruébalo bajo tu propio riesgo

Paso 2: Descarga OpenGAPPS ARM 6.0 STOCK. No lo descomprimas. https://opengapps.org/. No ARM64 o x86/x86_64. No lo instales todavía, simplemente pasa al siguiente paso por ahora.

Paso 3: Descárgate gapps-config.txt. https://tinyurl.com/y2vrnb8v. Este gapps-config.txt ha sido reducido para que encaje. Debes tener YouTube instalado como una aplicación del sistema.

Paso 4: Descargate MiXplorer: https://tinyurl.com/yxh6rr3l.

Paso 5: Elige Versión root de YouTube Vanced armeabi-v7a. White/Dark o White Black. Si aún no lo tienes https://vanced.app/APKs?type=ROOT. Cambia el nombre del archivo descargado por Youtube.apk y haz una copia de éste, llamado Youtube2.zip. Extrae la versión ZIP.

Youtube_version_ (armeabi-v7a) (nodpi) (vTheme-v2.0.9) -vanced.apk a Youtube.apk

Paso 6: Copia open_gapps-arm-6.0-stock - **********. Zip, gapps-config.txt, MiXplorer APK y Youtube.apk y /lib/ del youtube2.zip extraído en una memoria USB o tarjeta microSD por separado si está utilizando una eMMC.

Paso 7: Copia el zip de open_gapps, gapps-config.txt y MiXplorer apk, pero no YouTube.apk o la carpeta /lib/, a tu carpeta de descargas interna. open_gapps-arm-6.0-stock - ***********. zip y gapps-config.txt deben estar en la misma carpeta.

Paso 8: Retira la unidad de memoria USB/tarjeta MicroSD, o lo que sea que utilizaste para transferir los archivos.

¡Asegúrate de que tu unidad de memoria USB/tarjeta MicroSD esté retirada!

Paso 9: Instala open_gapps: abre la Utilidad ODROID, haz clic en el pequeño ícono en la esquina superior derecha, haz clic en Package Install from Storage, navega a la carpeta Download y selecciona open_gapps-arm-6.0-stock-numbers.zip. Te preguntará si deseas continuar. Luego selecciona Proceed. Deja que haga su trabajo. Simplemente instalará lo que necesitas desde gapps-config.txt.

Después de instalar open_gapps, probablemente se bloqueará al intentar iniciar sesión, verás que YouTube ahora está instalado en tu ODROID en el cajón de aplicaciones. Además de Google (la aplicación de Google, esto es bueno, significa que Google Assistant funcionará correctamente).

Paso 10: abre Google Play Store. Después de iniciar sesión, haz clic en las 3 barras de la esquina superior izquierda, desplázate hacia abajo hasta Settings y haz clic en Auto-Update apps. A continuación, selecciona "Do not auto-update apps". Simplemente busca las actualizaciones cada cierto tiempo de forma manual y no actualices YouTube.

Paso 11: Dirígete a tu carpeta downloads e instala MiXplorer usando su APK.

Paso 12: Entra en Settings -> Apps -> desplázate hacia abajo hasta YouTube y haz clic en Force Stop. Luego haz clic en Disable.

Paso 13: Comprueba que la aplicación de youtube haya desaparecido del cajón de aplicaciones.

Paso 14: Abre MiXplorer, haz clic en las 3 líneas de la esquina superior izquierda y haga clic en Root. Supersu te preguntará si desea permitir el acceso Root. Proporciónale acceso para siempre, sigue adelante y concédele acceso.

Paso 15: Dirígete a /System/app/Youtube/ y deberías ver un único Youtube.apk dentro. Presiona/mantén el dedo/ratón sobre el archivo hasta que esté seleccionado, luego presiona la Papelera/Cubo de basura en la parte superior derecha para eliminarlo. Sí, elimina el Youtube.apk

Paso 16: Vuelve a colocar la unidad de disco USB/mSD, dentro de MiXplorer, haz clic en las 3 líneas, selecciona tu dispositivo, ábrelo, dirígete a la carpeta de YouTube. Mantén presionado Youtube.apk, toca la carpeta lib para que ambos estén resaltados. Luego, pincha en el icono que se parece a 2 páginas al lado del contenedor de basura en la parte superior derecha para copiar los archivos.

Paso 17: Vuelve a /System/app/Youtube / y haz clic en el primer icono en la esquina superior derecha, el Portapapeles, y haga clic en Copy. Y se copiará el Youtube.apk y la carpeta lib en /system/app/Youtube/. Debería verse como /system/app/Youtube/Youtube.apk /System/app/Youtube/lib/armeabi-v7a/ . Un montón de archivos .so.

Paso 18: Una vez que hayan terminado de copiar, mantén el puntero en Youtube.apk, haz clic en el quinto ícono de la esquina superior derecha, el círculo con una (i) y haz clic donde aparecen los permisos. Top 3, primero, medio, ninguno inferior. Después guarda.

Paso 19: reinicia tu ODROID-C2.

Paso 20: ve a la configuración de Android -> Apps -> Youtube y habilítalo. Dirígete al cajón de su aplicación y debería ver Youtube Vanced, con un ícono nuevo.

Bloquea las notificaciones de Google Play Store en la configuración de Sonido y notificaciones para bloquear las notificaciones sobre la actualización de YouTube. ¡A Disfrutar! Dirígete a la parte de configuración de YouTube en la aplicación y baja hasta la configuración de Vanced. Desde aquí puedes modificar tus cosas, como la resolución, los anuncios y las reproducciones automáticas.

Preguntas y respuestas

¿Por qué necesitamos hacerlo de esta manera? Necesitamos YouTube instalado como una aplicación del sistema para reemplazarlo correctamente con YouTube Vanced. Sin embargo, como no tenemos un menú de recuperación, no podemos usar TWRP. De esta forma sigue siendo bastante fácil.

¿Por qué no solo usar la versión no root? La versión no root se trata como una aplicación independiente. Ni siquiera se llama YouTube Vanced. Por lo tanto, no funciona con Google Assistant.

Gapps config

Gapps-config.txt es un archivo personalizado. El gapps de serie no encajaría, así que tuve que elegir. Instalarlo todo con gapps se instala como una aplicación del sistema. Si necesita instalar otras cosas, por ejemplo, la aplicación Google Dialer normalmente en PICO, puede volver a colocarla. https://tinyurl.com/of6q2eq. Sin embargo, si obtienes un error de falta de espacio al intentar instalar opengapps, es posible que tengas que eliminar otra cosa, como Gmail. Luego instálalo por separado, después. Simplemente no elimines "Search" la aplicación de Google que aparece en nano. o YouTube. Si mantienes la aplicación Google y la tiene instalada como una aplicación del sistema, puedes usar el Google Assistant con Activate en Voice Match. Debido a esto, nunca te recomiendo que instales los gapps de PICO. Debes instalar nano, pero use gapps config para incluir solo las cosas de Pico y Search, desde la sección Nano.

Usar Google Assistant con YouTube Vanced es muy bueno. " Ok Google, Play Disturbed The sound of silence, on youtube". Sin anuncios

¿Puede hacer esto en una instalación anterior en lugar de una nueva instalación, tal vez una instalación que tenga Pico o Nano gapps? Tal vez, sólo tal vez. Desinstale YouTube, si lo instalaste a través de Play Store, y luego descarga gapps stock y gapps-config.

No tuve ningún problema para actualizar de pico a stock durante las pruebas. Sin embargo, si te dice que no tienes suficiente espacio. Eliminar Gmail de la configuración gapps e intenta de nuevo.

Referencia

https://forum.odroid.com/viewtopic.php?f=137&t=36356

Lakka: Desarrollando la Mejor Consola de Juegos ODROID-XU4/XU4Q

Introducción y Objetivos del Tutorial

Hola y bienvenidos a nuestro tutorial sobre cómo montar una consola de juegos ODROID-XU4 Lakka. Este artículo te mostrará en detalle cómo fabricar desde cero una potente consola de videojuegos retro basada en Lakka. Necesitarás algunos componentes. Detallare los que yo he usado y pondré un enlace al lado de cada uno de ellos. Son componentes reales que he utilizado en el pasado y creo que son bastante fiables. Las tarjetas SD fallan y, a veces, sin previo aviso, aunque por lo general no he tenido problemas con los elementos usados

Este tutorial cubre la configuración y el montaje de la consola de juegos desde el punto de vista del hardware y del software. Ahora, a diferencia de la Monku Retro 1, 2, no añadiremos ningún botón de hardware especial. El ODROID-XU4 viene con un botón de reinicio integrado, así que esto ya lo tenemos. En cuanto al botón de control personalizado, no he logrado encontrar una buena ubicación para la actual carcasa. Sin embargo, este dispositivo es mucho más potente que el C1+ o incluso el C2 y también es bastante más fiable, así que de momento no agregaremos ninguno al dispositivo. También no detendremos en la configuración del software, incluida la instalación y configuración de Lakka, retroarch y algunos emuladores. La mayor parte de los pasos de configuración del software se tratarán en la segunda parte de este tutorial. Echemos un vistazo a algunas de las características del dispositivo con el que vamos a trabajar. ¡Fíjate la cantidad de emuladores que soporta!

Características de XU4

  • ¡Calidad ODROID!
  • Botón de reinicio de hardware
  • Soporte para Atari 2600, Atari 5200, Atari 7800, Atari Jaguar, Atari Lynx, ColecoVision, Commodore64, MSX-1, MSX-2, NES, GameBoy, GameBoy Color, Virtual Boy, SNES, N64, GameBoy Advance, WonderSwan Pocket/Color , NEO GEO Pocket/Color, Sega SG-1000, Sega Mark 3, Sega Master System, Sega Genesis, Sega GameGear, Sega Dreamcast, NEC Turbo Graphics 16, NEC Super Graphics, PSP y emuladores PS1 configurados y listos para usar.
  • Lakka y Retroarch con XBM.

Echa un vistazo a las especificaciones de rendimiento de este dispositivo en comparación con otros dispositivos comunes.

Fgure 1 - ODROID performance comparison
Figura 1 - Comparativa del rendimiento de ODROID

Herramientas necesarias

  • Un reducido juego de destornilladores con pequeños destornilladores Phillips.
  • Una superficie de trabajo limpia, libre de energía estática.
  • Monitor o TV con soporte HDMI para probar el dispositivo.
  • Teclado USB

Componentes necesarios

  • Un ODROID-XU4/ODROID-XU4Q: 49.00$ (normalmente a la venta por 59$)
  • Una Carcasa: 5.40$
  • Dos Tarjeta Micro SD de 64GB: 16.99$
  • Un Cable HDMI: 1.00$
  • Una Fuente de alimentación 5V/4A: 5.50$
  • Un mando GameSir conectado por cable: 17.0$

Hardware

Lo primero es lo primero, revisamos las herramientas y los componentes, las colocamos en su sitio y nos preparemos para el montaje. Nosotros disponemos de un juego de destornilladores electrónicos. Si has montado un ODROID-GO, te puede servir el mismo juego de destornilladores. Ten en cuenta que tenemos nuestro dispositivo, un ODROID-XU4 que se muestra a continuación, este tutorial se puede aplicar tanto a la versión ODROID-XU4 como a la versión ODROID-XU4Q de este dispositivo. Este dispositivo puede ejecutar casi todos los emuladores que se te ocurran y lo hace de maravilla. Tenemos nuestra placa, carcasa, tarjetas SD y herramientas listas para ponernos manos a la obra.

Figure 2 - Parts needed for the build
Figura 2 - Componentes necesarios para el montaje

Despeja tu espacio de trabajo y coge la carcasa, sácala de su bolsa de plástico si fuera necesario, colócala en el centro de tu espacio de trabajo. La carcasa tiene dos clips principales, por lo general, es más fácil trabajar con ellos que con los de la carcasa del C1+/C2. El primer clip está en el lado izquierdo de la parte inferior de la carcasa, cerca de la parte superior. El segundo clip está en la parte superior del pieza inferior de la carcasa, cerca de la derecha. Puedes ver pequeños rectángulos cerca de estas áreas en la siguiente imagen.

Figure 3 - ODROID-C2 case side and top view
Figura 3 - Vista lateral y superior de la carcasa del ODROID-C2

Para retirar el primer clip, desplaza ligeramente la carcasa tal y como se muestra a continuación. Empuja ligeramente la parte inferior hacia la izquierda mientras empujas la parte superior hacia la derecha.

Figure 4 - Case clip close up
Figura 4 – Primer plano del clip de la carcasa

Una vez que se desprenda, gira la carcasa para que el otro clip se situé en la posición que se muestra a continuación. Aplica un poco de fuerza hasta que el clip se suelte. Debería soltarse fácilmente una vez que apliques la fuerza correcta sobre él. Usaremos la misma técnica para el segundo clip.

Figure 5 - Case close up of clips along the side
Figura 5 – Primer plano de los clips en el lateral de la carcasa

Una vez que separe la carcasa, encontrarás una sorpresa dentro. Una bolsita con pequeños tornillos. Si dispones de un ODROID-GO y tienes varios tornillos que te sobran, te recomiendo usarlos en lugar de los tornillos proporcionados. Ahora esto podría haber cambiado, pero en su momento los tornillos que incluía la carcasa eran algo más pequeños que los tornillos del ODROID-GO, descubrí que se trabaja mejor con los tornillos incluidos en el kit ODROID-GO. Vamos a presentar las herramientas y los componentes que necesitamos para ensamblar la carcasa con la placa XU4 que debemos montar en su interior. No tienes que preocuparte por el acceso a la tarjeta SD, si has trabajado con la carcasa del C1+ o C2, se accede con la misma facilidad a la tarjeta.

Figure 6 - tools and part for case assembly
Figura 6: Herramientas y componentes para el ensamblaje de la carcasa

Abre con cuidado la bolsa antiestática en la que viene el XU4. Asegúrate de no tener una carga estática descargándose so re algo grande y metálico. Teniendo en cuenta el diseño de la carcasa y de la placa, apoya la placa sobre la bolsa antiestática. Vamos a situar la placa sobre la mitad inferior de la carcasa y colocar y apretar los 2 tornillos internos. La carcasa XU4 es similar a la carcasa del C1+/C2 en el hecho de que hay dos tornillos internos y 2 tornillos externos. Consejo: Asegúrate de apretar los tornillos, aunque no demasiado, es suficiente con que queden ajustados.

Figure 7 - ODROID-XU4 resting in the bottom of the case
Figura 7 - ODROID-XU4 descansando sobre la parte interior de la carcasa

Darle la vuelta a la carcasa, coloca y aprieta los dos tornillos externos. Si colocas la parte posterior de la carcasa mirando hacia ti, observarás un pequeño interruptor blanco. Mueve el interruptor para que esté más cerca del borde de la carcasa con la finalidad de usar la tarjeta SD, mueve el interruptor hacia el otro lado, más cerca del centro de la carcasa, para usar el moódulo eMMC. ¡Listo! Ya has terminado con el hardware. A continuación, vamos a trabajar con la tarjeta SD y la imagen del sistema operativo.

Figure 8 - Screw together the case
Figura 8 - Atornillando la carcasa

El Software

Para el siguiente paso, vamos a buscar una imagen específica del sistema operativo Lakka. Navega con tu navegador hasta lakka.tv. Este es el lugar para localizar versiones de Lakka configuradas para diferentes sistemas integrados. Haga clic en el botón Get Lakka en la página de inicio. Serás redireccionado a una página de descargo de responsabilidad, simplemente te indica que el software está en desarrollo, nada más que eso. Haz clic en el botón Get Lakka y luego sobre la imagen de Linux en las opciones de sistema operativo de la siguiente página.

Serás redireccionado a una pantalla que tiene una lista de imágenes de Lakka preparadas específicamente para diferentes sistemas integrados. Localiza la sección ODROID que se muestra a continuación.

Figure 9 - ODROID selection on Lakka download website)
Figura 9: Seleccionado ODROID en el sitio web de descarga de Lakka

Haz clic en la entrada ODROID XU3/4 y luego haz clic en el botón Download Lakka que se muestra en la página siguiente. El archivo de imagen ocupa unos 300 MB, de modo que la descarga tardará un poco, pero no demasiado. Mientras tanto, prepara tus tarjetas SD y pruébalas en tu lector de tarjetas SD o adaptador USB de tarjeta SD. Una vez que la imagen se haya descargado, te mostraré cómo grabar la imagen en tu tarjeta SD. El nombre de archivo en el momento de escribir de escribir este tutorial para la imagen de la tarjeta SD es Lakka-OdroidXU3.arm-2.2.2.img. No te preocupes si indica XU3 y no XU4, la imagen funcionará igualmente en tu dispositivo.

A continuación, preparémonos para escribir la imagen en una tarjeta SD. Etcher es una herramienta para grabar con facilidad la tarjeta SD en macOS, Windows y Linux. Selecciona la imagen sin comprimir del sistema operativo que acabamos de descargar. Inserta tu tarjeta micro SD en tu Mac, ya sea utilizando un convertidor de algún tipo, el mencionado anteriormente, o una unidad de tarjeta SD nativa. Asegúrate de seleccionar la unidad de destino adecuada. No querrás sobrescribir datos importantes, así que verifica bien la unidad de destino. Una vez que estés seguro de haberlo configurado todo correctamente, graba la imagen del sistema operativo en la tarjeta SD, esto solo tomará unos minutos. La tarjeta SD se desmontará y estará lista para extraerse al final del proceso.

Figure 10 - Screenshot of etcher setup to flash an SD card
Figura 10: Captura de pantalla de la configuración de etcher para grabar una tarjeta SD

Preparémonos para configurar Lakka, conseguir nuestras ROM y poner a punto el mando. Antes de hacerlo, tenemos que configurar algunas cosas, podemos controlar el dispositivo de forma remota. Me gusta usar SSH para conectarme a mis dispositivos Lakka, así que ese es el método que usare. Ten en cuenta que el inicio de sesión por defecto para Lakka es el siguiente.

Usuario: root Contraseña: root

No me voy a detener en el tema de la seguridad en Lakka, ten en cuenta que no lo vamos a configurar necesariamente teniendo en cuenta la seguridad. Es bueno desactivar SSH una vez que hayas terminado de configurar las cosas y cargadas las ROM. Necesitas conecdtar SSH navegando a Settings -> Services y activar SSH. En primer lugar, veamos en qué dirección IP se está ejecutando el dispositivo XU4 Lakka. Yo utilizo una conexión por cable en lugar de un dispositivo WiFi USB por simplicidad. En el menú principal hay una entrada llamada "Information" que se muestra a continuación.

Figure 11 - Lakka Information entry
Figura 11 - Entrada de información de Lakka

Selecciona la entrada "Network Information" y podrá ver la dirección IP actual del dispositivo si la conexión de red está activa.

Figure 12 - Lakka network information
Figura 12 - Información de la red de Lakka

Puedes conectarte al dispositivo XU4 Lakka a través de SSH en macOS y Linux, incluso desde otro dispositivo ODROID que ejecute Ubuntu. Tendrás que sustituir la dirección IP de tu dispositivo XU4 Lakka por la que se muestra en las siguientes capturas de pantalla.

En Windows tendrás que instalar Putty, un cliente SSH gratuito. Puede encontrar putty en esta URL, https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html. Selecciona la versión que necesitas para tu sistema, 32 bits o 64 bits, e instálala.

Figure 13 - SSH command from macOS or Linux
Figura 13: Comando SSH desde macOS o Linux

Figure 14 - Putty on Windows
Figura 14 – Putty en Windows

Con esto finalizamos esta primera parte del tutorial. Estate al tanto a la segunda parte para ver los pasos sobre cómo configurar retroarch, copiar tus ROM y configurar un mando.

Este artículo fue cogido de middlemind.com, para obtener más información, visita el sitio web original o Lakka en los siguientes enlaces:

http://middlemind.com/tutorials/odroid_go/ra_lakka_cfg.html

www.lakka.tv

Conexión de Red a una Velocidad Ridícula con un Límite de Velocidad en Red de 10000Mbps con el ODROID-H2

Recuerdo haber sido uno de los primeros en adoptar redes de 1 GbE en los años 90 y muchos de mis amigos se preguntaban: ¿quién necesita 1 GbE? Veinte años después, soy uno de los primeros en adoptar (pero realmente no el primero) los más de 10 GbE en casa y espero que este artículo logre convencerte para que tú también des el paso.

A día de hoy, las soluciones económicas para implementar una red de 10 GbE en el hogar o en la micro-empresa siguen siendo poco comunes y muy costosas. El mercado del consumo de 10 GbE tiene un precio excesivamente injustificado (los 10 GbE han estado usandose en centros de datos y grandes organizaciones durante aproximadamente unos 15 años. Todos los problemas y errores técnicos se han ido solucionando a lo largo de bastante tiempo. Los 10 GbE NO es algo nuevo en el mundo empresarial, es más como "algo pasado de moda". Esto no impedirá que las empresas del mercado de consumo lo presenten como lo mejor que deberías tener). Las NIC de 10 GbE basadas en RJ-45 pueden costar más de 400$. Solo las tarjetas basadas en los chipsets Tehuti o Aquantia brindan soluciones por debajo de 100$. En el tema de los switch, los switch de 10 GbE cuestan entre 300$ y 500$ con un número limitado (digamos 4 o 5) de puertos (si necesita al menos 8 puertos, los precios suben rápidamente; por ejemplo, https://www.newegg.com/p/N82E16833156580https://www.newegg.com/p/N82E16833122848). Si necesitas 18 puertos o más, por un switch de 10 GbE puede llegar a pagar los 1,500$ ganados con tanto esfuerzo. Microtik, una empresa letona, vende switch de 10 GbE a precios más asequibles (sub-$200), pero usan SFP+ no RJ45. También necesitaras actualizar su cableado, CAT-5e no soporta los 10 GbE, tendrás que invertir en CAT-6a. Los principales fabricantes de placas base para PC OEM o vendedores de NAS finalmente están ofreciendo placas y dispositivos con NIC de 10 GbE integrados.

Claramente, el mercado RJ-45 de 10 GbE todavía está en desarrollo y los precios aún deberían bajar para asentarse en el mercado masivo, como lo está hoy día el de 1 GbE. Estaba cansado de esperar soluciones asequibles de 10 GbE, así que empecé a buscar alternativas o hardware de segunda mano en eBay.

Aunque a primera vista se puede pensar que es un poco absurdo si no ridículo poder comunicarse a más de 10,000 Mbps con un pequeño ordenador de placa reducida (SBC), es exactamente lo que este artículo quiere poner de relieve. También te explicará cómo lo puedes hacer tu mismo. Así que no, no me explotaron algunos MOSFETs de las capas superiores de materia gris que conforman mi cerebro.

Intel fue el que inició la revolución de las redes de 1 GbE en los años 90. La mayoría de las tarjetas de la época llevaban chipsets Intel. No ha sido así con los 10GbE o más. Durante los últimos 20 años, nuevas empresas exitosas como Mellanox, QLogic, y otras se han centrado en el mercado de los centros de datos ofreciendo soluciones de 20 Gb/s, 40Gb/s, 100Gb/s, 200 Gb/s (1 GbE significa un gigabit en Ethernet por segundo. 1 Gb/s significa un gigabit sobre una red, siendo este último Ethernet u otra cosa). No se para a los 200 Gb/s. Si se duplica o triplica el cableado, se pueden alcanzar "fácilmente" velocidades de 400 Gb/s o 600 Gb/s. En el momento de escribir este artículo, hay una empresa de inteligencia artificial cuyos dispositivos de capacitación e inferencia tienen suficientes NIC integrado basadas en RDMA que proporcionan un enorme ancho de banda de 2.4 Tb/s. Puedes ver el interesante reportaje en https://www.servethehome.com/favored-at-facebook-habana-labs-eyes-ai-training-and-inferencing/. Nvidia ha adquirido desde entonces Mellanox. Intel se hizo con QLogic. Aunque las adquisiciones y la consolidación han tenido un ritmo bastante rápido en los últimos 10 años, Mellanox ha sido y es definitivamente el gorila de las 800 libras de la industria de las interconexiones rápidas.

Mellanox ideó una alternativa a Ethernet: InfiniBand (también conocido como IB) y RDMA. Esto último significa acceso directo a memoria remota. No voy a dedicar tiempo a detallar las ventajas de InfiniBand, simplemente búscalo en Google para obtener más información. RDMA sí que merece una explicación. Cuando te comunicas a través de Ethernet utilizando la pila IP (Protocolo de Internet) (es decir, TCP/IP), suceden muchas cosas en los ordeandores locales y de destino. Los datos que se envían se copian varias veces a través de los buffers de la pila IP en tu ordenador local, luego los paquetes viajan como frames a través de la red, estos paquetes se vuelven a ensamblar en el ordenador de destino donde nuevamente los datos se copian varias veces a través del buffer de la pila IP para finalmente terminar en la aplicación de destino. Ten en cuenta que todos estos procesamientos y copias de datos son realizados por la CPU en cada ordeandor. ¡Son muchos ciclos de CPU!

RDMA funciona de una forma totalmente diferente: el ordenador "cliente" ejecuta la aplicación que inicia una solicitud con el ordenador "servidor" que ejecuta la aplicación de destino/objetivo. Los datos que se enviarán ya están presentes en el espacio de memoria de la aplicación del cliente, de modo que RDMA los copia directamente a través de la red (InfiniBand) en el espacio de memoria de la aplicación del servidor. ¡Hecho! Sin involucrar a la CPU, la comunicación es gestionada completamente por el NIC InfiniBand. Obviamente, lo estoy simplificando un poco, pero esta es la esencia de RDMA en pocas palabras, por lo que puedes imaginar cómo será el rendimiento de RDMA en una red de 40 Gb/s en comparación con el protocolo IP en una red Ethernet de 1 GbE.

Mellanox ganó mucho dinero y se hizo un nombre vendiendo hardware InfiniBand/RDMA en grandes cantidades. Los centros de datos y las grandes organizaciones lo adoraban. Tanto que le plantearon a Mellanox si podía implementar IP encima para que las aplicaciones basadas en IP pudieran ejecutarse sobre InfiniBand/RDMA sin tener que cambiar el código. Mellanox los complació y desarrollo IP sobre IB (Protocolo de Internet sobre InfiniBand, también conocido como ipoib). Bajo la presión de los competidores y la demanda de mas servicios, Mellanox presentó RoCE (RDMA a través de Ethernet convergente). Eso es básicamente lo contrario: ejecutar RDMA sobre cables Ethernet de buena calidad (ahorrando a los centros de datos y a las grandes organizaciones tener que invertir en un nuevo cableado dentro de sus instalaciones).

Después de 20 años de actividad y múltiples actualizaciones y reaprovisionamiento del hardware InfiniBand en centros de datos y grandes organizaciones, no es sorprendente encontrar una gran cantidad de hardware IB usado en eBay a precios increíbles. Puede obtener NIC de 40 Gb/s a precios que parten de los 20$. También puedes conseguir switches no administrados de 18 puertos y 40 Gb/s por unos $100~$125.

Entonces, ¿por qué pagar varios cientos de dólares por un hardware nuevo de 10 GbE cuando puede obtener hardware de 40 Gb/s a un precio bastante menor? Empiezas a pensar "Pero no sé nada sobre InfiniBand y RDMA". No te preocupes, yo tampoco hace menos de un año 🙂 Sólo tiene que convertirte en un lector insaciable de documentación tecnológica.

Consejos sobre eBay

  • Analiza al vendedor antes de hacer clic en el botón Comprar.
  • Los buenos vendedores de hardware informático a nivel de empresa incluyen varias imágenes del producto, especialmente algunas que muestran la etiqueta del producto.
  • Si no está seguro, ponte en contacto con el vendedor para obtener más detalles. Los mejores siempre responden.
  • No compre por impulso, busca con tranquilidad en casa y elabora una lista de lo que quiere comprar exactamente
  • Si no encuentras una buena oferta, inténtalo nuevamente día tras día durante varias semanas, las buenas ofertas van y vienen constantemente.
  • Una vez que haya recibido los artículos, pruébalos de inmediato. Si estás seguro de que no funcionan, contacta con el vendedor, los buenos aceptarán devoluciones o te lo reemplazarán por otros.

Vocabulario InfiniBand mínimo y conciso

VPI Virtual Protocol Interconnect
Tarjeta VPI Una tarjeta de red Mellanox que se puede configurar como tarjeta InfiniBand o como Ethernet. Con tarjetas duales, un puerto puede ser InfiniBand y el otro puerto Ethernet.
Tarejta EN Una tarjeta de red Mellanox que es exclusivamente Ethernet.
RDMA Acceso directo a memoria remota
IPoIB Protocolo de Internet sobre InfiniBand. Te permite ejecutar aplicaciones basadas en IP sobre RDMA.
RoCE RDMA sobre Ethernet convergente. Si te estas preguntando qué significa "convergente", simplemente es un termino usado en marketing. Desde un punto de vista tecnológico, no existe el Ethernet convergente. Solo hay Ethernet. El calificativo convergente se creó para vender el hecho de que la mayoría de los protocolos de red ahora convergían para ejecutarse sobre Ethernet. Formaba parte de la guerra de marketing entre Mellanox y Chelsio (iWarp) durante la cual este último intentaba menospreciar a InfiniBand. De todos modos, es como decir que las famosos son personas convergentes.
SFP Transceptor de factor de forma pequeño conectable. Un pequeño transceptor que se conecta al puerto SFP de un switch de red y se conecta a los cables de fibra óptica Gigabit Ethernet (GbE) y Fibre Channel en el otro extremo. Hay múltiples tipos. Por lo general, 1 Gbe.
SFP+ Transceptor de factor de forma pequeño conectable mejorado. Por lo general, 10 Gbe o 10 Gb/s.
QSFP, QSFP+ Transceptor de factor de forma pequeño conectable cuadruple (QSFP). Cable de 4 carriles, hasta 40 Gb/s.
QSFP14 Cables hasta los 56 Gb/s
QSFP28 Cables hasta los 100 Gb/s
DAC Cable de conexión directa (casi sinónimo de cable de cobre pasivo)
AOC Cable óptico activo

Ancho de banda de la red

Nombre Codificación de linea Velocidad para cables de 4 lineas
SDR Single Data Rate 8b10b 10 Gb/s
DDR Double Data Rate 8b10b 20 Gb/s
QDR Quad Data Rate 8b10b 40 Gb/s
FDR10 Fourteen Data Rate 8b10b 56 Gb/s
FDR Fourteen Data Rate 64b66b 56 Gb/s
EDR Enhanced Data Rate 64b66b 100 Gb/s
HDR High Data Rate 64b66b 200 Gb/s

Todas estas velocidades están disponibles actualmente. La gran mayoría de los cables InfiniBand (o Ethernet SFP) son cables de 4 carriles. Sin embargo, hay cables de 8 y 12 carriles. Con estos cables, la velocidad teórica máxima se duplica o triplica.

Por lo tanto, cuando observes productos IB en eBay, verá principalmente tarjetas QDR o FDR, switches y cables a precios razonables. El hardware EDR usado es más caro. Ten cuidado con FDR y FDR10, muchos vendedores no lo distinguen, sin embargo, existe una diferencia real entre los ambos.

Esto me lleva a la columna "Codificación de línea" incluida en la tabla anterior. La transmisión de bits a través de una línea consiste en una especie de cable de cobre con señales cuadradas de alto y bajo voltaje usando una frecuencia basada en el reloj. Si queremos enviar 1,000 bits igual a 1, la señal eléctrica se convertiría en una señal muy larga de alto voltaje. Esto conlleva múltiples problemas: primero, una señal tan larga no funciona bien, luego a los transceptores les resultará muy difícil mantener la sincronización de sus relojes: la señal cuadrada se convierte básicamente en MIA. Entonces, por razones físicas, desearás limitar el número de bits consecutivos del mismo valor a, por ejemplo, 3. Para hacerlo, los transceptores codifican los datos. El transmisor codifica los datos y agrega algunos bits que permitirán al receptor descifrarlos. Estoy simplificándolo, pero básicamente esta es la historia.

La codificación de la línea 8b10b significa que cada vez que envía 8 bits, el nivel más bajo de la NIC los codificará y agregará 2 bits para permitir que el receptor los descifre. Esto tiene un efecto obvio en el ancho de banda dedicado exclusivamente a tus datos, también conocido como carga útil. Si sientes un repentino impulso por iniciar un movimiento online "¡Ahorrar el ancho de banda!", No lo hagas. La codificación de línea es global y la has estado utilizando desde que nacistes. Ejemplos: PCI Express 3, SATA 3, DisplayPort 2.0 usan 128b / 130-132b, USB 3.1 Gen 1 usa 8b / 10b mientras que USB 3.1 Gen 2 128b / 132b.

La diferencia entre FDR10 y FDR ahora se explica fácilmente. FDR10 proporciona 56 x 8/10 = 44.8 Gb/s de ancho de banda máximo. FDR proporciona 56 x 64/66 = 54.3 Gb/s. Así que, antes de comprar un switch, cable o tarjeta FDR, consulta el número de modelo y su documentación para asegurarte. Mellanox tiene switches que llevan el mismo número de modelo donde solo el subnúmero te dice si es FDR10 o FDR. En caso de duda, solicita al vendedor que te confirme cuál es el modelo en cuestión.

Para QDR, el ancho de banda máximo es 40 x 8/10 = 32 Gb/s.

Después de esta introducción, veamos ahora cómo puedes llegar a los 10,000 Mbps con el ODROID-H2.

ODROID-H2

El ODROID-H2 es un SBC de HardKernel, un fabricante coreano de pequeñas placas. Probablemente hayas oído hablar de la Raspberry Pi, la primera serie de productos que popularizó el uso de los SBC. Muchos están de acuerdo en que HardKernel es el número dos del mercado SBC. Hard Kernel produce SBC más potentes que Raspberry, se asegura de que las soluciones de Linux y Android sean de buena calidad y soporten bien el hardware, vende muchos accesorios que te permiten ampliar el campo de aplicación de las placas, publica una revista, mantiene una wiki y cuenta con una comunidad de foro muy activa con miembros dedicados que les encanta responder preguntas y ayudar a la gente.

Si combinas todo esto, piensa en HardKernel como el Ikea del mundo de los SBCs.

Para información detallada sobre el H2, visita:

PCIe con el H2

Las NIC Mellanox son tarjetas PCIe. El H2 no tiene ranura PCIe. ¿Entonces, que vamos a hacer? La placa H2 tiene en la parte posterior una ranura NVMe PCIe 2 con 4 carriles (PCIe 2 x4). Puede usar un SSD NVMe PCIe x4 para E/S de disco mas rápida ... o puede usar un adaptador NVMe a PCIe x4 para tener la ranura PCIe que necesitamos. Un buen adaptador es el modelo ADT Link o una alternativa similar, como se muestra en las Figuras 1 y 2.

Figura 1 - R42SF disponible en ADT http://www.adt.link/product/R42-Shop.html

Figura 2 - R42SR disponible en AliExpress https://www.aliexpress.com/item/32833359557.html

En ambos casos, puedes personalizar el adaptador: su longitud, la orientación de la ranura PCIe (adelante, arriba, abajo). Elije la opción más apropiada para tu proyecto. En un extremo tiene un conector llave M.2 M, en el otro extremo una ranura PCIe x4 abierta.

Figura 3 - El adaptador instalado en el ODROID-H2

Paquetes de Software

Ahora instalaremos el conjunto mínimo de paquetes que necesitamos para continuar con este artículo.

# Linux utilities

~$ sudo apt install vim htop iperf3 net-tools parted inxi smartmontools ssh
# InfiniBand packages
~$ sudo apt install rdma-core opensm ibutils ibverbs-utils infiniband-diags perftest mstflint

Descripción de los Paquetes de Utilidades de Linux

vim

Vim es una versión casi compatible del editor UNIX Vi. Se le han agregado muchas características nuevas: deshacer multi niveles, resaltado de sintaxis, historial de línea de comando, ayuda online, finalización de nombre de archivo, operaciones de bloqueo, plegado, soporte Unicode, etc.

Nota: muchos de vosotros usais nano de todos modos.

htop htop es un visor de procesos basado en ncurse similar a top, pero te permite desplazarte por la lista vertical y horizontalmetne para ver todos los procesos y sus líneas de comando completas.
iperf3 iperf3 es una herramienta para realizar mediciones del rendimiento de la red. Puedes testear el rendimiento TCP o UDP. Esta es una nueva implementación que no comparte código con el iperf original de NLANR/DAST y tampoco es compatible con versiones anteriores. Este paquete contiene la utilidad de línea de comandos.
net-tools Este paquete incluye las herramientas importantes para controlar el subsistema de red del kernel de Linux. Esto incluye arp, ifconfig, netstat, rarp, nameif y route. Además, contiene utilidades relacionadas con determinados tipos de hardware de red (plipconfig, slattach, mii-tool) y con aspectos avanzados de la configuración IP (iptunnel, ipmaddr). En el paquete upstream se incluyen 'hostname' y relacionados. Estos no se instalan con este paquete, ya que hay un "hostname*.deb" especial.
parted GNU Parted es un programa que te permite crear, destruir, redimensionar, mover y copiar particiones de disco. Es muy útil para crear espacio para nuevos sistemas operativos, reorganizar el uso del disco y copiar datos a nuevos discos duros. Parted actualmente admite los formatos de partición DOS, Mac, Sun, BSD, GPT, MIPS y PC98, así como un tipo de "bucle" (disco sin formato) que permite su uso en RAID/LVM. Puede detectar y eliminar los sistemas de archivos ASFS/AFFS/APFS, Btrfs, ext2/3/4, FAT16/32, HFS, JFS, linux-swap, UFS, XFS y ZFS. Parted también tiene la capacidad de crear y modificar sistemas de archivos de algunos de estos tipos, aunque actualmente es muy criticado para realizar operaciones del sistema de archivos.

Nota: parted es el sustituto de fdisk cuando tienes que crear particiones de más de 2TB. Una vez que te acostumbras a parted, lo usas sin importar el tamaño de las particiones que deseas crear y dejas de usar fdisk.

inxi inxi es un script de información del sistema que puede mostrar varias cosas sobre tu hardware y software a los usuarios en una sala de chat IRC o foro de soporte. Se ejecuta con el comando /exec en la mayoría de los clientes IRC.
smartmontools El paquete smartmontools contiene dos programas de gran utilidad (smartctl y smartd) para controlar y monitorizar los sistemas de almacenamiento utilizando el Sistema de Tecnología de Auto Monitoreo, Análisis e Informes (S.M.A.R.T.) integrado en los discos duros ATA y SCSI más modernos. Deriva del paquete smartsuite e incluye soporte para discos ATA/ATAPI-5. Debería poder ejecutarse en cualquier sistema Linux moderno.
ssh Este metapaquete es una forma muy buena de instalar tanto el cliente OpenSSH como el servidor OpenSSH.

ssh (Secure Shell) es un programa para iniciar sesión y ejecutar comandos en una máquina remota. Proporciona comunicaciones cifradas seguras entre dos hosts poco fiables a través de una red insegura. Las conexiones X11 y los puertos arbitrarios TCP/IP también se pueden reenviar a través del canal seguro. Se puede utilizar para ofrecer aplicaciones a través de un canal de comunicación seguro.

OpenSSH Client Este paquete proporciona los clientes ssh, scp y sftp, los programas ssh-agent y ssh-add para que la autentificación de clave pública sea más apropiada, y las utilidades ssh-keygen, ssh-keyscan, ssh-copy-id y ssh-argv0.

OpenSSH Server Este paquete proporciona el servidor sshd.

Descripción de los Paquetes InfiniBand

rdma-core

Infraestructura y documentación del espacio de usuario principal de RDMA

Este paquete proporciona el soporte básico de tiempo de arranque para sistemas que utilizan el subsistema de acceso directo a memoria remoto (RDMA) del kernel de Linux que incluye InfiniBand, iWARP y RDMA a través del Ethernet convergente (RoCE).

Se incluyen varios demonios de soporte RDMA de kernel: - El demonio rdma-ndd que vigila los cambios del dispositivo RDMA y/o los cambios de nombre de host y actualiza la Descripción del nodo de los dispositivos RDMA en función de esos cambios. - El iWARP Port Mapper Daemon (iwpmd) que proporciona un servicio de soporte de kernel en el espacio de usuario para que los controladores iWARP reclamen puertos TCP a través de la interfaz de socket estándar.

opensm Gestión de Subred InfiniBand

OpenSM proporciona una implementación de InfiniBand Subnet Manager (SM) y Administrator (SA). Es necesario ejecutar un Administrador de subred en cada subred InfiniBand para inicializar el hardware InfiniBand.

ibutils Utilidades de red InfiniBand

Este paquete contiene un conjunto de utilidades útiles para diagnosticar y probar redes basadas en InfiniBand.

ibverbs-utils Ejemplos para la librería libibverbs

libibverbs es una librería que permite que los procesos del espacio de usuario usen "verbos" RDMA como se describe en la Especificación de Arquitectura InfiniBand y la Especificación de Verbos del Protocolo RDMA. Las NIC ethernet iWARP admiten RDMA sobre TCP/IP sin hardware, mientras que InfiniBand es una tecnología de red de alto rendimiento y baja latencia. Los adaptadores de canal de host InfiniBand (HCA) y las NIC iWARP comúnmente admiten acceso directo de hardware desde el espacio de usuario (omiten el kernel), y libibverbs lo admite cuando está disponible.

Este paquete contiene útiles programas de ejemplo libibverbs1 como ibv_devinfo, que muestra información sobre los dispositivos InfiniBand.

infiniband-diags Programas de diagnóstico InfiniBand

InfiniBand es un enlace de comunicaciones de estructura conmutada utilizado en informática de alto rendimiento y centros de datos empresariales. Sus características incluyen alto rendimiento, baja latencia, calidad de servicio y tolerancia frente a fallos, está diseñado para ser escalable.

Este paquete proporciona programas de diagnóstico y scripts necesarios para diagnosticar una subred InfiniBand.

perftest Pruebas de rendimiento de verbos InfiniBand

Esta es una colección de pruebas escritas usando verbos InfiniBand destinados a ser utilizados como un indicador de rendimiento. Las pruebas pueden medir la latencia y el ancho de banda de la estructura InfiniBand.

mstflint Herramientas de diagnóstico y aplicación de grabación de firmware Mellanox

Este paquete contiene una herramienta de grabación y herramientas de diagnóstico para adaptadores de canal host (HCA) y tarjetas de interfaz de red (NIC) fabricados por Mellanox.

Esta herramienta de grabación solo debe usarse con tarjetas HCA/NIC fabricadas por Mellanox. Usarlo con tarjetas fabricadas por otros proveedores puede ser dañino para las tarjetas (debido a diferentes configuraciones). El uso de las herramientas de diagnóstico es normalmente seguro para todas las HCA/NIC.

Tarjetas de red Mellanox InfiniBand

Llegados a este punto, suponemos que el enlace ADT está conectado de forma segura a la placa, la tarjeta insertada en la ranura PCIe, el H2 tiene un sistema operativo Ubuntu 18.04 funcionando. Vamos a iniciar el H2 y abrir un terminal.

Identificando la Tarjeta Mellanox en el bus PCIe

Buscamos la tarjeta con el comando de utilidad lspci. Escribe:

~$ lspci | grep Mellanox
debería devolver algo similar a esto:
01:00.0 InfiniBand: Mellanox Technologies MT25408A0-FCC-QI ConnectX, Dual Port 40Gb/s InfiniBand / 10GigE Adapter IC with PCIe 2.0 x8 5.0GT/s In... (rev b0)
Para obtener los servicios y el estado del enlace, escribe:
~$ sudo lspci -vv -s 01:00.0 | grep Width
Esto debería devolver dos líneas similares a estas:
LnkCap: Port #8, Speed 5GT/s, Width x8, ASPM L0s, Exit Latency L0s unlimited, L1 unlimited
LnkSta: Speed 5GT/s, Width x4, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
LnkCap significa capacidades del enlace. Véase datos anteriores (Speed 5GT/s, Width x8 y Speed 5GT/s, Width x4. Esta tarjeta es capaz de manejar 5 GT/s (GigaTransfers por segundo - ver https://en.wikipedia.org/wiki/Transfer_(computing) y https://paolozaino.wordpress.com/2013/05/21/converting-gts-to-gbps/) en 8 carriles PCIe. LnkSta significa estado del enlace. La tarjeta manejará 5GT/s pero solo están disponibles 4 carriles PCIe

Debido a esta reducción en los carriles PCIe disponibles, perderemos más ancho de banda

¿Qué hacer si la tarjeta no aparece?

1. 1. ¿Escribiste lspci | grep Mellanox o lspci | grep mellanox? La "M" debe estar en mayúscula

2. Si la tarjeta realmente no aparece

  • reinicia el H2,
  • presiona la tecla Suprimir varias veces en el momento del arranque (cuando aparezca el logotipo de Hard Kernel) para entrar en la BIOS,
  • dentro del BIOS, dirígete a Chipset y luego a PCI Express Configuration
  • dentro de PCI Express Configuration, desactiva PCI Express Clock Gating:

Figura 4 - Drígete a Chipset y luego a PCI Express Configuration

Figura 5 - Dentro de PCI Express Configuration, desactiva PCI Express Clock Gating

Guarda los cambios en la BIOS, espere a que se reinicie el H2 e intentalo nuevamente.

A partir de este punto, vamos asumir que la tarjeta se muestra correctamente en lspci, inxi y cualquier otra herramienta de Linux que muestre el hardware conectado a la placa. Para mostrar más información sobre la tarjeta Mellanox, usemos el comando mstflint:

~$ sudo mstflint -d 01:00.0 query
Deberias ver algo similar a esto:
Image type:            FS2
FW Version:            2.9.1000
Device ID:             26428
Description:           Node             Port1            Port2            Sys image
GUIDs:                 0002c9030010ea44 0002c9030010ea45 0002c9030010ea46 0002c9030010ea47 
MACs:                                       0002c910ea44     0002c910ea45
VSD:                   
PSID:                  MT_0FC0110009
Los tres campos que nos interesan en este momento son FW Version, Device ID y PSID.

FW Version: Es la versión del firmware que se ejecuta actualmente en la tarjeta. Para esta tarjeta en particular, 2.9.1000 es el firmware actual (y final). No necesitamos ninguna actualización.

PSID (Parameter-Set Identification): Es una cadena de caracteres de 16 caracteres ASCII integrada en la imagen del firmware que proporciona una identificación única del dispositivo. Un modelo intrínsecamente idéntico (en términos de hardware) tendrá un PSID diferente según quién distribuya el producto y bajo qué marca.

Device ID: No estoy seguro, nunca entendí lo que realmente significa. Parece un ID de dispositivo que puede ser compartido por varias revisiones del modelo

¿Qué tarjetas funcionan en el ODROID-H2?

Aquí tienes 3 ejemplos confirmados:

Mellanox SeriesConnectX-2 VPI up max 20Gb/s

Etiqueta en la tarjeta
lspci | grep Mellanox InfiniBand: Mellanox Technologies MT25408A0-FCC-GI ConnectX, Dual Port 20Gb/s InfiniBand / 10GigE Adapter IC with PCIe 2.0 x8 5.0GT/s In... (rev b0)
sudo lspci -vv -s 01:00.0 | grep Width LnkCap: Port #8, Speed 5GT/s, Width x8, ASPM L0s, Exit Latency L0s unlimited, L1 unlimited LnkSta: Speed 5GT/s, Width x4, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
sudo mstflint -d 01:00.0 query Image type: FS2 FW Version: 2.9.1000 Device ID: 26418 Description: Node Port1 Port2 Sys image GUIDs: 0002c903005a0aa0 5849560e65cf0d01 5849560e65cf0d02 0002c903005a0aa3 MACs: 0002c95a0aa0 0002c95a0aa1 VSD: PSID: MT_0F90120008
Sudo iblinkinfo 3 7[ ] ==( 4X 5.0 Gbps Active/ LinkUp)==> 1 1[ ] "h2a mlx4_0" ( )

Mellanox SeriesConnectX-2 VPI up max 40Gb/s

Entiqueta en la tarjeta
lspci | grep Mellanox InfiniBand: Mellanox Technologies MT25408A0-FCC-QI ConnectX, Dual Port 40Gb/s InfiniBand / 10GigE Adapter IC with PCIe 2.0 x8 5.0GT/s In... (rev b0)
sudo lspci -vv -s 01:00.0 | grep Width LnkCap: Port #8, Speed 5GT/s, Width x8, ASPM L0s, Exit Latency L0s unlimited, L1 unlimited LnkSta: Speed 5GT/s, Width x4, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgm
sudo mstflint -d 01:00.0 query Image type: FS2 FW Version: 2.9.1000 Device ID: 26428 Description: Node Port1 Port2 Sys image GUIDs: 0002c9030010ea44 0002c9030010ea45 0002c9030010ea46 0002c9030010ea47 MACs: 0002c910ea44 0002c910ea45 VSD: PSID: MT_0FC0110009
Sudo iblinkinfo 3 7[ ] ==( 4X 10.0 Gbps Active/ LinkUp)==> 1 1[ ] "h2a mlx4_0" ( )

Puede encontrar información de producto de las tarjetas ConnectX-2 VPI en https://www.mellanox.com/related-docs/prod_adapter_cards/ConnectX-2_VPI_Card.pdf. Las tarjetas que aparecen al final de este PDF deberían funcionar perfectamente en el ODROID-H2:

MHRH19B-XTR Single 4X QSFP 20GbE/s InfiniBand 6.7W
MHQH19B-XTR Single 4X QSFP 40GbE/s InfiniBand 7.0W
MHRH29B-XTR Dual 4X QSFP 20GbE/s InfiniBand 8.1W (both ports)
MHQH29C-XTR Dual 4X QSFP 40GbE/s InfiniBand 8.8W (both ports)
MHZH29B-XTR 4X QSFP 40GbE/s InfiniBand, SFP+ 10 GbE 8.0W (both ports)

Puedes encontrar estas tarjetas en eBay en https://www.ebay.com/sch/i.html?_from=R40&_nkw=Mhqh29c&_sacat=0&_sop=15, espera unos 20$ ~ 25$ para las ofertas más baratas. Cambia las palabras claves de la búsqueda para encontrar otro modelo de tarjeta como alternativa. Ten en cuenta que algunas de estas tarjetas alcanzan los 20 Gb/s, mientras que otras alcanzan los 40 Gb/s. Dada la casi nula diferencia en los precios, opta por los modelos de 40 Gb/s. Puedes encontrar el firmware más reciente de estas tarjetas en https://www.mellanox.com/page/firmware_table_ConnectX2IB.

Usa la etiqueta de la tarjeta, la descripción de lspci y el mstflint DeviceID y PSID para seleccionar el firmware correcto, descargarlo e instalarlo. Las tarjetas ConnectX2 ya no son compatibles oficialmente con Mellanox. El último firmware es 2.9.1000 (del 2011). Si tu tarjeta ya está ejecutando este firmware, no tiene que hacer nada.

Mellanox SeriesConnectX IB max 40Gb/s

Etiqueta en la tarjeta
lspci | grep Mellanox InfiniBand: Mellanox Technologies MT25408A0-FCC-QI ConnectX, Dual Port 40Gb/s InfiniBand / 10GigE Adapter IC with PCIe 2.0 x8 5.0GT/s In... (rev a0)
sudo lspci -vv -s 01:00.0 | grep Width LnkCap: Port #8, Speed 5GT/s, Width x8, ASPM L0s, Exit Latency L0s unlimited, L1 unlimited LnkSta: Speed 5GT/s, Width x4, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt
sudo mstflint -d 01:00.0 query FATAL - Can't find device id. -E- Cannot open Device: 01:00.0. File exists. MFE_UNSUPPORTED_DEVICE
Sudo iblinkinfo 3 7[ ] ==( 4X 10.0 Gbps Active/ LinkUp)==> 6 1[ ] "h2a mlx4_0" ( )

Puedes encontrar información de producto de ConnectX-IB en https://www.mellanox.com/pdf/products/silicon/ConnectX_IB_Silicon.pdf. Las tarjetas que aparecen al final de este PDF deberían funcionar en el ODROID-H2..

MT25408A0-FCC-SI Dual 4X (10Gb/s) PCIe 2.0 2.5GT/s 8.1W
MT25408A0-FCC-DI Dual 4X (10, 20Gb/s) PCIe 2.0 2.5GT/s 8.6W
MT25408A0-FCC-GI Dual 4X (10, 20Gb/s) PCIe 2.0 5.0GT/s 9.1W
MT25408A0-FCC-QI Dual 4X (10, 20, 40Gb/s) PCIe 2.0 5.0GT/s 9.7W

Estas tarjetas ConnectX-IB actualmente son difíciles de encontrar en eBay. Son muy antiguas y a menudo aparecen en la descripción que proporciona el vendedor con un nombre totalmente diferente. Estas tarjetas son anteriores a la era ConnectX-2. Mejor opta por una ConnectX-2. Pero si tienes una (yo tengo una MT25408A0-FCC-QI) funcionará. Ten en cuenta que solo el QI alcanza los 40 Gb/s de todas formas. Puedes encontrar el firmware más reciente de estas tarjetas en https://www.mellanox.com/page/firmware_table_ConnectXIB. En mi humilde opinión, la ConnectX-2 VPI 40 Gb/s es tu mejor apuesta para el ODROID-H2. ¿Necesitas actualizar el firmware de inmediato? No. Si funciona, tomate un tiempo para familiarizarse con el tema antes de actualizar su firmware.

Si la tarjeta es realmente una Mellanox, no un distribuidor, mstflint puede conseguir la actualización de firmware más reciente online y actualizar la tarjeta por ti. No es necesario que investigues en las páginas de archivos del sitio web de Mellanox. Si la tarjeta es de un distribuidor y no de Mellanox, deberás hacerlo tú.

¿Qué hacer cuando mstflint no reconoce la tarjeta?

La versión de mstflint que procede de los repositorios APT es la 4.11.0, que es relativamente reciente. Las versiones recientes ya no son compatibles con la "antigua" ConnectX IB o ConnectX-2. En los ejemplos anteriores, no llego a reconocer la MT25408A0-FCC-QI. Puesto que mstflint es la herramienta que utilizas para actualizar el firmware de las tarjetas, esto supone un problema.

Además, puedes terminar comprando una "versión" de una tarjeta que no sea Mellanox. IBM, Sun, Oracle, HP, Dell, EMC (lista no exhaustiva) distribuyeron todas las tarjetas Mellanox bajo su marca porque en ese momento era las únicas con 10, 20 o 40 Gb/s. En estos casos, el PSID de la tarjeta no será Mellanox. Mellanox lo hizo de esta manera para que los clientes de estas grandes marcas descargasen el nuevo firmware y obtuviera soporte de los distribuidores y no de Mellanox. Encontrarás toneladas de tarjetas IBM, Oracle, HP en eBay. Aunque la marca y el PSID de las tarjetas no sea Mellanox, la tecnología de la que parten estas tarjetas es Mellanox.

Debido a que las versiones "modernas" de mstflint no te permiten sobrescribir el PSID de una tarjeta, debe retroceder en el tiempo y encontrar una versión de MST que sí lo haga. Pero no demasiada antigua, de lo contrario no reconocerá las tarjetas más modernas. Una de las “mejores” versiones de MST que permite solucionar esta cuestión es la versión 4.0.0. Es lo suficientemente moderna y todavía incluye la antigua herramienta de sílex que no tiene reparos en anular el PSID de una tarjeta. Por lo tanto, puedes actualizar el firmware.

Para descargar esta versión, dirigete a: https://www.mellanox.com/page/management_tools y desplázate hasta la parte inferior de la página (después de leer obviamente lo que dice la página). La ves:

Figura 10 - La parte inferior de la página web de Mellanox

Haz clic en Archive Versions y selecciona los valores apropiados en las columnas de la derecha, tal y como se muestra en la Figura 11.

Figura 11 - Archive Versions

Aquí tienes un ejemplo de actualización de una tarjeta al nuevo firmware

# Become root
~$ sudo su -
# Start the firmware manager
~$ mft start
# Query the card to find out the current firmware
~$ flint -d 02:00.0 query
# If not the latest firmware, update it with the one you downloaded
# Note the use of –allow_psid_change to deal with non-Mellanox versions of the card:
~$ flint -d 02:00.0 -i fw-25408-2_9_1000-MHQH29-XSC_A1-A5.bin --allow_psid_change burn

Warning

Si usas la opción --allow_psid_change, la herramienta flint gustosamente intentará grabar cualquier archivo bin de firmware que haya pasado como parámetro con comprobación cero. Usar un archivo bin de firmware incorrecto obviamente y simplemente bloqueará la tarjeta. Así que verifica, confirma y comprueba nuevamente, lo que estás haciendo. De lo contrario, tendrás que visitar eBay para comprar otra tarjeta. ¿Me preocupé la primera vez que grabé el firmware con esa opción? Sí.

Mi ODROID-H2 se va a comunicar con los PCs modernos. ¿Tengo que usar un ConnectX-2 en mis PC?

La respuesta es directa y simple: No. La tarjeta ConnectX-2 ya no es compatible con Mellanox, son PCIe 2 (que es ideal para placas integradas como ODROID-H2). Lo más probable es que tus PC "modernos" probablemente incorporen PCIe 3 o incluso PCIe 4 con la serie Ryzen 3000 y el chipset X570. Para tus PC, usa las tarjetas ConnectX-3 Mellanox. Puede encontrar información del producto de estas tarjetas en https://www.mellanox.com/related-docs/prod_adapter_cards/ConnectX3_VPI_Card.pdf. Mi favorita es la MCX354A-FCBT Dual FDR 56 Gb/s o 40/56 GbE porque tiene dos puertos, soporta QDR, FDR10 y FDR.

En eBay, consulta https://www.ebay.com/sch/i.html?_from=R40&_nkw=MCX354A-FCBT&_sacat=0&_sop=15. Espera en torno a los 50$ ~ 75$ por una tarjeta dual. Mejores ofertas suelen aparecen con regularidad. También encontrarás otras que no son Mellanox (principalmente HP u Oracle) por 30$. La actualización del firmware en las tarjetas ConnectX-3 funciona como en las tarjetas ConnectX-2. De modo que, aunque compre una HP u Oracle, puedes actualizar su firmware. Es necesario actualizar el firmware del ConnectX-3 a la versión más reciente si tienes pensado utilizar los paquetes OFED de Mellanox. En este artículo usaremos los paquetes del repositorio APT de Ubuntu, así que no hay necesidad inmediata de actualizar el firmware.

Nota: ¿Funcionan las tarjetas PCIe 3 Mellanox ConnectX-3 en PCIe 4? Lo intenté hacer.

En tus PC, también puede usar las tarjetas ConnectX-3 Pro Mellanox. En eBay las encuentras por alrededor de unos 100$ ~ 120$ con un precio más asequible de vez en cuando. Nuevamente, piensa en el hecho de que quieres una VPI (que sea compatible con IB y Ethernet) y no olvide la velocidad máxima: QDR, FDR10 o FDR.

Aquí encontrarás información del producto de las tarjetas Pro: https://www.mellanox.com/related-docs/prod_adapter_cards/PB_ConnectX-3_Pro_Card_VPI.pdf. ConnectX-3 y ConnectX3 Pro todavía son compatibles con Mellanox. Esto se traduce en soporte para los paquetes OFED de Mellanox. Para Linux, puede descargar el software Mellanox OFED: https://www.mellanox.com/page/products_dyn?product_family=26 Desplácese hacia abajo por la página, haz clic en la pestaña Download y selecciona la versión para tu distribución de Linux.

Nota: ¿Las tarjetas Mellanox ConnectX-3 también funcionan en ODROID-H2? A partir de ahora, solo funciona la versión Pro. Las versiones no profesionales No. De todos modos, ten en cuetna que, en términos de velocidad máxima alcanzable en el H2, el ConnectX-3 proporcionará el mismo resultado que el ConnectX-2. ConnectX-2 proporciona 40 Gb/s en modo IB pero solo 10 GbE en modo Ethernet. El connectX-3 proporciona 40 Gb/s en modo IB y 40 GbE en modo Ethernet. Sin embargo, IP sobre IB proporciona una velocidad muy buena (si no un poco mejor) con un puerto configurado para IB como IP sobre un puerto configurado para Ethernet. Entonces, realmente, no es necesario conectar una ConnectX3 Pro en el H2 (a menos que ya tenga una red de 20 o más GbE en casa basada en Ethernet).

Advertencia

La última actualización de Ubuntu 18.04 trae el kernel 5.x. El paquete OFED actual de Mellanox para Ubuntu 18.04 a partir de ahora (MLNX_OFED_LINUX-4.6-1.0.1.1-ubuntu18.04-x86_64.tgz) no se compilará correctamente (probablemente el KDMS). Esta es la razón por la cual en este artículo usamos los paquetes del repositorio APT de Ubuntu.

¿Hay alguna diferencia entre Mellanox OFED y sus paquetes de distribución para InfiniBand? Sí, pero no verás la diferencia al principio. Los paquetes de distribución de Linux para InfiniBand están escritos principalmente por los ingenieros de Mellanox que también escriben el software OFED de Mellanox. Este último trae más herramientas, más configuraciones, más documentos, más correcciones de errores, más "utilidades". Realmente no necesitas preocuparte por ello.

Para Windows, puedes descargar el software OFED Mellanox desde: https://www.mellanox.com/page/products_dyn?product_family=32 Para soportar la serie ConnectX-3, usa las versiones Windows - WinOF. Mellanox OFED para Windows es la única forma "simple" de instalar InfiniBand en Windows. Esto es definitivamente lo que tienes que utilizar si deseas usar SMB / CIFS a toda velocidad entre un Windows Server y Windows 10. Para obtener más información, dirigiete a: https://docs.microsoft.com/en-us/windows-server/storage/file-server/smb-direct

Cuando escribí este articulo, Linux Samba aún no era compatible con RDMA. Entonces, si está ejecutando Linux en tu ODROID-H2 con Samba, la única forma de acceder a tu máquina Windows es usando SMB/CIFS con IP sobre IB. A partir de este punto, hablaremos poco de Windows.

Advertencia

Al comprar tarjetas de red Mellanox en eBay, asegúrate de comprar lo que realmente quieres. Las tarjetas VPI son compatibles con InfiniBand y Ethernet. Las tarjetas EN solo admiten Ethernet. Las tarjetas de doble puerto suelen ser la mejor solución porque los dos puertos se pueden configurar en InfiniBand y puedes tener 3 PC conectados sin necesidad de un switch (lo que significa que el PC A está conectada directamente a la PC B y PC C, cuando B y C quieren comunicarse, pasan a través del PC A). Las tarjetas de 2 puertos también permiten que una PC esté en una subred InfiniBand a través del puerto 1 y (generalmente una subred Ethernet de 10 GbE) a través del puerto 2 (siempre que lo conectes a otro PC o cambies a conectores SFP +, no RJ-45).

¿Por qué parezce que estoy insistiendo tanto en usar una red InfiniBand en lugar de Ethernet? En otras palabras, hablemos de switches

Es bastante fácil encontrar un switch InfiniBand QDR, FDR10 o FDR usado de 18, 24 o 36 puertos en eBay con un coste que va de los 125$ a los 250$. Por otro lado, un switch similar, pero Ethernet hará temblar tu cuenta bancaria (en torno a los 1,500$ ~ 2,500$).

Mellanox IS5023 18-port 40Gbps https://www.ebay.com/sch/i.html?_nkw=Mellanox+IS5023 (este es el que yo estoy usando actualmente)

Mellanox SX6015 18-port 56Gbps (FDR10) https://www.ebay.com/sch/i.html?_nkw=Mellanox+SX6015 (Probé este, pero todavía no lo he puesto en "producción")

Conclusión: el uso de IP sobre IB con un switch IB QDR, FDR10 o FDR cuesta mucho mucho menos, al mismo tiempo que no está limitado a 10 GbE

¿Necesitas un switch? No de inmediato. Con las tarjetas de 1 puerto puedes conectar el ODROID-H2 a un PC. Con una tarjeta de 2 puertos puede conectar 2 PC. Si tiene más dispositivos, aún puede conectar en cadena tarjetas de 2 puertos. El ancho de banda se verá afectado si el tráfico tiene que pasar por varias tarjetas entre los dispositivos X e Y. No probé una conexión en cadena. Directamente decidi cambiar cuando observé los precios tan bajos.

Los switch Mellanox están fabricados a prueba de golpes. La carcasa es casi irrompible con gruesas placas de metal. Aunque también son muy ruidosos. El IS5023 tiene cuatro ventiladores de 40 mm que funcionan a 15K rpm, el SX6015 tiene seis. Recuerda que estos son modelos de centros de datos y nadie se pone en cuclillas en un centro de datos, de modo que el ruido no es un problema. Para uno uso doméstico, la historia cambia por completo. Por lo tanto, a menos que tenga una casa con un garaje adjunto o un ático o sótano a prueba de ruidos, tu familia apagará el switch de la casa o del apartamento a los 5 minutos de haberlo encendido. Yo actualmente vivo en un apartamento, sin garaje adjunto, sin ático, sin sótano, sin sala de insonorización. Para resolver eta cuestión, personalicé el switch y reemplacé los ventiladores, tal y como se muestra en la Figura 12.

Figura 12: Switch Mellanox IS5023 personalizado

Retiré los cuatro ruidosos gremlins de 15K rpm, y coloqué cuatro suaves Noctua 80mm redux en su lugar. La lámina superior también la he retirado. Obviamente, los ventiladores Noctua no funcionan a la misma velocidad, así que el LED del switch que indica el estado del ventilador se ilumina con un rojo brillante. No es un problema. El switch tiene protección térmica a nivel de software de todas formas. Nunca observé bloqueos. No volver a colocar la lámina superior resuelve múltiples problemas: (a) Tendría que diseñar una para adaptarla a los ventiladores de 80 mm (b) Los ventiladores de 80 mm empujan con mucha facilidad el calor que emana del disipador de calor principal (c) El calor de la electrónica del receptor AOC puede escapar por convección. Hasta aquí todo bien. Incluso de noche, el sistema apenas se precibe, simplemente aprecias un suave zumbido porque sabes que está allí, de lo contrario no lo notarías.

Figura 13: Vista más amplia de la instalación que muestra mi interruptor QDR en el centro de datos de mi pequeña sala de estar

¿Qué cables debo usar?

Puedes usar cables de cobre pasivos (DAC) para distancias cortas (es decir, de 1 a 5 metros) o cables ópticos activos (AOC) para distancias más largas (de 1 a 100 metros). Tambien puedes usar una mezcla de ambos.

Los AOC son más "frágiles" que los de cobre. Mellanox aconseja no doblar los cables AOC en un radio de 17 cm (cuando esté en uso). Un AOC mal doblado desencadenará muchos reintentos a nivel RDMA.

Consejos sobre lso cables AOC

a) Los cables AOC pueden dañarse de varias maneras, como se muestra en las Figuras 14 y 15.

En la Figura 14, alguien dobló el cable muy mal. La mejor manera de verificar si el cable sigue siendo bueno es ejecutar iperf3 durante 10 minutos usando ese cable. Si ve demasiados reintentos, el cable está muerto y es irreparable.

Figura 14 - Cable mal doblado

Figura 15: Alguien tiró del cable para desconectarlo en lugar de usar la pestaña de extracción. Este cable está muerto y es irreparable.

b) Usa cables de cobre para conectar los ordenadores cerca de un switch donde se reduzca el espacio: los cables AOC comenzarían a doblarse demasiado y se enredarían. Los cables de cobre más voluminosos no lo hacen.

c) Guarda los cables en una caja cuando no los estes utilizado. Para evitar la fragmentación de varios cables y el riesgo de dañar uno al desenredarlos, enróllalos en forma de bobina. Una solución simple es usar carrete de plástico usado para enrollar cometasl, como el que se muestra en la Figura 16.

Figura 16: Usando carrete de plástico para almacenar cables AOC

Para más consejos y trucos, consulta: https://www.mellanox.com/products/interconnect/pdf/Mellanox_Cable_Management_Guidelines_and_FAQs_Application_Note.pdf

A continuación, debes decidir qué velocidad máxima teórica final deseas tener ahora mismo o en el futuro: 40 Gb/s (QDR), 56 Gb/s (FDR10) o 56 Gb/s (FDR). Como podrás suponer, un cable de 40 Gb/s NO irá más rápido cuando lo conectes a una tarjeta de red o switch apto para FDR10 o FDR. Por otro lado, un cable FDR funcionará con una tarjeta de red o switch QDR o FDR10.

Por último, pero no menos importante, compra estos cables usados o restaurados en eBay. Los precios de los cables nuevos son muy elevados. Los cables de cobre DAC de corta longitud en eBay son numerosos, los cables más largos son más inusuales. Para AOC es básicamente lo contrario: 3m, 5m, 10m son muy comunes en eBay, buena suerte para encontrar un metro.

Consejo: cuando recibas un cable DAC o AOC usado de un vendedor de eBay, inspecciónalo y pruebalo durante 10 minutos sobre la marcha. Si el cable está defectuoso, coctacta con el vendedor para proceder a la devolución o a un posible reemplazo.

Se bueno con tu hardware y tu hardware te lo agradecerá, especialmente con las tarjetas. Estas tarjetas usadas probablemente ya tienen más de 10 actividades a sus espaldas. Como habrás notado, vienen con un disipador de calor y puedo decirte que alcanzan fácilmente 50+ C. Un disipador de calor implica algún compuesto térmico entre el disipador de calor y el chip. Ese compuesto ya se ha “cocinado” durante más de 10 años. ¡Es hora de hacer una actualización complementaria!

El disipador de calor está unido a la tarjeta con dos pasadores con remaches. En las tarjetas más antiguas se usaba latón (fácil de atravesar), las tarjetas más modernas usan plástico (la cosa se complica un poco).

Figura 17 - Disipador térmico con remaches de latón

Empuja hacia abajo la parte frontal de los remaches si están un poco pegados en la parte posterior. Luego usa unas pinzas de dipilar (o pinzas hemostáticas) para comprimir los pasadores traseros mientras tiras suavemente del remache desde el lado frontal. Si todo va bien, el remache atravesará la placa y los agujeros del disipador de calor. La clave aquí es "suavidad" para que no rompas los pasadores (si son de plástico). Los que son aprovechables varian, en mi caso fue del 50%. Si rompes el remache, no es el fin del mundo. Utiliza tornillos y tuercas o puedes dirigete a https://www.ebay.com/sch/i.html?_nkw=Heatsink+Cooler+Cooling+Fan+Spring+Rivet

Una vez separados, usa alcohol isopropílico 70% (o similar) para eliminar por completo el compuesto muerto. Consigues un chip y un disipador de calor nuevos y muy limpios, tal y como se muestra en la Figura 18. Da tiempo a que las trazas de alcohol se evaporen por completo. Aplica un compuesto nuevo (yo estoy usando el compuesto adicional que obtuve con un disipador CPU Noctua. Tambien puedes usar un compuesto como Artic MX, consulta la Figura 19), luego vuelva a colocar el disipador de calor y vuelve a colocar los remaches.

Figura 18 - Disipador térmico e IC limpiados

Figura 19: Añadiendo una gota de compuesto térmico, suficiente pero no excesiva

Finalmente, si tienes el dinero, añade un Noctua de 40x10 mm para extraer el calor del disipador de calor como se muestra en la Figura 20. Los tornillos a usar son: cabeza Phillips 6 x 3/4, se acoplan de forma correcta entre las aletas del disipador de calor. Tu tarjeta te lo recompensará al no morir en 2 o 3 años.

Figura 20: Añadir un ventilador de 40x10 mm supone una ventaja

Alimentación del todo el sistema

El bloque de alimentación oficial ODROID-H2 proporciona 15V x 4A = max 60W. La documentación de Hard Kernel (Wiki) indica que el H2 puede ser alimentado por una fuente de alimentación DC 14V-20V (hasta 60W).

Las pruebas iniciales del sistema (H2 + 10TB WD Red + 1 TB SSD + eMMC + 32Gb memoria + La tarjeta de red Mellanox + el ventilador de la tarjeta + el ventilador del chasis) mostraron un consumo de energía de 53W, después de 35W a 45W durante las diversas fases del arranque para finalmente estabilizarse a alrededor de los 34.5W cuando está inactivo, 38.5W con el enlace de la tarjeta IB y 49.5W cuando ejecuta pruebas de red iperf3 (donde los discos no formaban parte). Estas mediciones se realizaron utilizando el bloque de alimentación H2 que lo alimenta todo excepto el bus PCIe/tarjeta IB alimentada por una fuente de alimentación SFX independiente, que es la versión de formato pequeño de la fuente de alimentación ATX normal.

Nos encontramos demasiado cerca de los 60W máximos admitidos por las líneas de la placa H2, ya que necesitamos margen para los dispositivos adicionales que se conectan a los puertos USB y para que el ventilador del chasis funcione a toda velocidad. Por lo tanto, el uso de una fuente de alimentación SFX independiente está justificada. Ahora estaría bien buscar la forma de usar simultáneametne las dos fuentes de alimentación, esto significa alimentar el H2 con la fuente de alimentación SFX y eliminar el bloque de alimentación H2 del sistema.

Pero la fuente de alimentación SFX solo puede proporcionar 12V, y no los 14V -20V que espera el H2. Un convertidor de CC de 12 V a 19 V (fácil de encontrar en Aliexpress.com) podría resolver el problema. Sin embargo, el requisito de 14V-20V no es indispensable. El H2 funcionará perfectamente con 12V siempre que no le pidas que alimente el disco duro y el SSD. Por lo tanto, la fuente de alimentación SFX alimentará todo, incluido el propio H2, y los discos SATA obtendrán la energía de la fuente de alimentación SFX, no del H2.

La eliminación de una fuente de alimentación tuvo como resultado una reducción significativa del consumo de energía: el sistema ahora está inactivo con 24W (con un pico de 38W durante el arranque), lo cual es muy razonable desde el punto de vista de la factura eléctrica mensual. El consumo de energía solo sube a 32W cuando ejecuta pruebas de red iperf3 y llega a un máximo a 35W cuando se copian archivos de un lado a otro entre el H2 y sus clientes a través de NFS.

Figura 21 - La configuración final, con la fuente de alimentación SFX visible en segundo plano

El panel ATX azul  está en primer plano a la derecha. Incluye (a la derecha) un botón de encendido para encender y apagar la fuente de alimentación ATX. Una luz LED azul (detrás del botón). El cable de alimentación ATX se enchufa en el medio de la placa. Dicha placa facilita la obtención de líneas de alimentación de 12V, 5V y 3.3V sin cortar cables, soldaduras, etc. En otras palabras, la fuente de alimentación SFX y sus cables se dejan intactos para su reutilización en el futuro si fuera necesario.

Nota: con esta configuración, alimentar el H2, por lo tanto, consta de dos pasos. Primero, enciender la fuente de alimentación SFX y luego encender el H2. Una vez que apages el H2, debes apagar manualmente la fuente de alimentación SFX para que la tarjeta de red y los discos no consuman energía. Los cables blancos (+ 12V) y negro (GND) conectados a la placa traen energía a la placa controladora PWM del pequeño ventilador (primer plano a la izquierda) y al propio H2. Para conectar la alimentación al H2 solo necesitas un adaptador macho DC de 2.1x5.5 mm. La placa controladora PWM del ventilador permite controlar el ventilador de 40x10 mm fijado en el disipador de calor de la tarjeta de red Mellanox (básicamente reduciéndolo a una velocidad lo suficiente para que permaneza en silencio).

El sistema ensamblado completo se muestra en las Figuras 22 y 23.

Figura 22 - Último día en la mesa de prueba

Figura 22 - Último día en la mesa de prueba

Llegados a este punto, hemos terminado con el tema del hardware. Pasemos ahora al software.

Configuración de las direcciones IP para InfiniBand IP sobre IB

Primero comprueba que en tu Ubuntu 18.04 o 19.04 netplan tenga delegado toda la configuración de la red al antiguo Network Manager:

~$ ls /etc/netplan
01-network-manager-all.yaml
~$ cat /etc/netplan/01-network-manager-all.yaml 
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
En el resto del artículo, utilizaremos Network Manager. Si prefieres netplan porque consideras que es mejor y eres experto en netplan, no tendrás problemas para seguir mis indicaciones y traducirlas a los comandos adecuados. En este momento, tenemos la tarjeta de red PCIe IB instalada y hemos conseguido que sea reconocida. Por tanto, deberíamos ver los dos puertos disponibles para proceder a su configuración y activación. Vamos a ello:
~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:1e:06:45:0d:47 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.70/24 brd 192.168.1.255 scope global noprefixroute enp2s0
       valid_lft forever preferred_lft forever
    inet6 fe80::bdf4:34b7:f1a3:eb1/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 00:1e:06:45:0d:48 brd ff:ff:ff:ff:ff:ff
4: ibp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 65520 qdisc fq_codel state UP group default qlen 256
    link/infiniband 80:00:02:08:fe:80:00:00:00:00:00:00:00:02:c9:03:00:10:ea:45 brd 00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff
5: ibp1s0d1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 65520 qdisc fq_codel state UP group default qlen 256
    link/infiniband 80:00:02:09:fe:80:00:00:00:00:00:00:00:02:c9:03:00:10:ea:46 brd 00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff
Las etiquetas enp2s0 y enp3s0 representan los dos puertos ODROID-H2 integrados en 1 Gbe y sí (!) Tenemos ibp1s0 e ibp1s0d1 (4: y 5:), los dos puertos de la tarjeta ConnectX-2. Ten en cuenta que en tu ODROID-H2 u en otros PC pueden aparecer como ib0 e ib1. Depende de cómo se haya configurado el esquema de nomenclatura de las NIC.

¿Qué hacer si no ves los puertos IB?

Si acabas de instalar los paquetes IB como se ha descrito con anterioridad, un reinicio del sistema te servirá de mucha ayuda. Si, después de reiniciar, aún no ves los puertos IB de la red, debe investigar para ver qué está sucediendo. ¿Está cargado el módulo del kernel ib_ipoib?

~$ sudo lsmod | grep ib_ipoib
Should show something like:
ib_ipoib              110592  0
ib_cm                  57344  2 rdma_cm,ib_ipoib
ib_core               249856  10 rdma_cm,ib_ipoib,rpcrdma,mlx4_ib,iw_cm,ib_iser,ib_umad,rdma_ucm,ib_uverbs,ib_cm
Si no aparece, significa que el módulo del kernel ib_ipoib no se ha cargado. Intenta:
~$ sudo modprobe ib_ipobib
Si aún no lo consigues y dependiendo del mensaje de error, tu mejor opción es eliminar los paquetes de IB, reinstalarlos y reiniciar. Si por casualidad ya tenías instalado Linux Mellanox OFED, procede de la siguiente manera:
# Become root
~$ sudo su -
# Go to the Mellanox OFED installation kit
~$ cd MLNX_OFED_LINUX-4.6-1.0.1.1-ubuntu18.04-x86_64/
# Uninstall it
~$ ./uninstall.sh
# Get rid of it 
~$ cd ..
~$ rm -fr MLNX_OFED_LINUX-4.6-1.0.1.1-ubuntu19.04-x86_64
~$ rm -f MLNX_OFED_LINUX-4.6-1.0.1.1-ubuntu18.04-x86_64 MLNX_OFED_LINUX-4.6-1.0.1.1-ubuntu18.04-x86_64.tgz
~$ exit
# Install the apt repositories versions
~$ sudo apt install rdma-core opensm ibutils ibverbs-utils infiniband-diags perftest mstflint
# Reboot
~$ sudo shutdown -r now
Si sigues sin ver los puertos del IB, ve al foro ODROID-H2 y pide ayuda a un buen samaritano, y/o recurre a google hasta que agotes las soluciones de otras almas perdidas que tuvieron problemas similares.

Configuración de los puertos IB para uso IPoIB

En este punto, asumimos que puedes ver los puertos IP. Vamos a configurarlos y activarlos usando el comando nmtui de Network Manager

~$ sudo nmtui
Figura 24 - Aparece el cuadro de diálogo nmtui ncurse

Selecciona Edit a connection en el cuadro de diálogo ncurse, luego seleccione Add y elije InfiniBand y selecciona Create:

Figura 25: Elije InfiniBand y selecciona Create

Aparece el cuadro de diálogo para editar la conexión, como se muestra en la figura 26.

Figura 26: cuadro de diálogo Edit connection

Selecciona o introduce las siguientes opciones:

- Transport Mode: Connected,
- MTU: 65520,
- Manual IPv4: 10.10.10.70/8
La IP puede ser cualquier subred y máscara, siempre que no sea la subred de tu red normal de 1 Gbe. No hay necesidad de Gateway, servidores DNS o Dominios de búsqueda, el H2 (y los PC) encontrarán las direcciones IP de los nombres de dominio regulares a través de la red de 1 Gbe o inalámbrica. Finalmente selecciona OK. Después de salir de esta pantalla, seleccione back y selecciona Activate a Connection en el cuadro de diálogo principal para verificar que tu nuevo puerto NIC esté activo. Si no, actívalo. Ver Figura 27.

Figura 27: Existe dos conexiones activas InfiniBand porque configuré y activé ambos puertos de la tarjeta IB

No olvides agregar las direcciones IP de tus puertos IB y nombres de host a los archivos host de tu H2 y PC, o si está ejecutando tu propio DNS local, agregalos al mismo.

Vamos a verificar que nuestra conexión funciona y que el enlace está activo:

~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
.../...
4: ibp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 65520 qdisc fq_codel state UP group default qlen 256
    link/infiniband 80:00:02:08:fe:80:00:00:00:00:00:00:00:02:c9:03:00:10:ea:45 brd 00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff
    inet 10.10.10.70/8 brd 10.255.255.255 scope global noprefixroute ibp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::76fa:9754:1f17:3ca7/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

Probando la conexión y el ancho de banda con iperf3

Nota: Si iperf3 no se conecta entre el servidor y el cliente, comprueba tu configuración nmtui y luego, si el problema persiste, verifica que el módulo del kernel ib_ipoib esté cargado. Finalmente, puedes intentar hacer ping sobre InfiniBand, para ello, consulte esta página de guía. Ten en cuenta que ibping no funciona como ping, debes iniciarlo en modo servidor en una máquina y luego solo puede dirigirlo a otra máquina conectada a IB.

Vamos a usar un PC i5 9600K para hablar con el H2 usando IP sobre OB. Primero iniciaremos iperf3 en modo servidor en el i5:

~$ iperf3 -s --bind 10.10.10.21
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Nota: presiona Ctrl-C para salir del modo servidor una vez que hayas terminado las pruebas.

Luego conéctate como cliente desde el H2:

~$ iperf3 -c 10.10.10.21 --bind 10.10.10.70 -t 10
Connecting to host 10.10.10.21, port 5201
[  5] local 10.10.10.70 port 54865 connected to 10.10.10.21 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  1.29 GBytes  11.1 Gbits/sec    0   3.18 MBytes       
[  5]   1.00-2.00   sec  1.29 GBytes  11.1 Gbits/sec    0   3.18 MBytes       
[  5]   2.00-3.00   sec  1.29 GBytes  11.1 Gbits/sec    0   3.18 MBytes       
[  5]   3.00-4.00   sec  1.29 GBytes  11.1 Gbits/sec    0   3.18 MBytes       
[  5]   4.00-5.00   sec  1.29 GBytes  11.1 Gbits/sec    0   3.18 MBytes       
[  5]   5.00-6.00   sec  1.29 GBytes  11.1 Gbits/sec    0   3.18 MBytes       
[  5]   6.00-7.00   sec  1.29 GBytes  11.1 Gbits/sec    0   3.18 MBytes       
[  5]   7.00-8.00   sec  1.29 GBytes  11.1 Gbits/sec    0   3.18 MBytes       
[  5]   8.00-9.00   sec  1.29 GBytes  11.1 Gbits/sec    0   3.18 MBytes       
[  5]   9.00-10.00  sec  1.29 GBytes  11.1 Gbits/sec    0   3.18 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  12.9 GBytes  11.1 Gbits/sec    0             sender
[  5]   0.00-10.00  sec  12.9 GBytes  11.1 Gbits/sec                  receiver
Ahora hagamos lo contrario, iniciemos iperf3 en modo servidor en el H2:
~$ iperf3 -s --bind 10.10.10.70
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Luego, conéctate como cliente desde el i5:
~$ iperf3 -c 10.10.10.70 --bind 10.10.10.21 -t 10
Connecting to host 10.10.10.70, port 5201
[  4] local 10.10.10.21 port 49411 connected to 10.10.10.70 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  1.67 GBytes  14.4 Gbits/sec    0   3.12 MBytes       
[  4]   1.00-2.00   sec  1.67 GBytes  14.4 Gbits/sec    0   3.12 MBytes       
[  4]   2.00-3.00   sec  1.68 GBytes  14.4 Gbits/sec    0   3.12 MBytes       
[  4]   3.00-4.00   sec  1.67 GBytes  14.4 Gbits/sec    0   3.12 MBytes       
[  4]   4.00-5.00   sec  1.68 GBytes  14.4 Gbits/sec    0   3.12 MBytes       
[  4]   5.00-6.00   sec  1.67 GBytes  14.4 Gbits/sec    0   3.12 MBytes       
[  4]   6.00-7.00   sec  1.68 GBytes  14.4 Gbits/sec    0   3.12 MBytes       
[  4]   7.00-8.00   sec  1.67 GBytes  14.4 Gbits/sec    0   3.12 MBytes       
[  4]   8.00-9.00   sec  1.68 GBytes  14.4 Gbits/sec    0   3.12 MBytes       
[  4]   9.00-10.00  sec  1.67 GBytes  14.4 Gbits/sec    0   3.12 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  16.7 GBytes  14.4 Gbits/sec    0             sender
[  4]   0.00-10.00  sec  16.7 GBytes  14.4 Gbits/sec                  receiver
Con 11.1 GbE en una dirección y 14.4 GbE en la otra, transmitimos la señal de 10 GbE, ¡de ahí el título de este artículo! En este punto, puede comenzar a pensar, ¡pero espere un minuto! 11.1 y 14.4 está muy por debajo de los 40 Gb/s de la red InfiniBand. Y tienes toda la razón.

No obstante, echemos un vistazo más de cerca a lo que está sucediendo:

  • Empezamos a 40 Gbe máx.
  • ¿Recuerdas la codificación de línea 8b10b? Así que ahora estamos a 32 Gbe máx.
  • Recuerda que la tarjeta es una PCIe 2 x8, pero solo tenemos una ranura PCIe x4, por lo que el tráfico en el bus PCIe se reduce en un factor de 2. Por lo tanto, ahora estamos a 16 Gb/s como máximo (PCIe 2.0 usa un esquema de codigicacion 8b/10b, por lo tanto, enviamos, por carril, una velocidad de transferencia máxima efectiva de 4 Gbit/s desde tu velocidad de datos brutos de 5 GT/s, y 4 Gbit/s x 4 carriles = 16 Gbit/s)
  • Se añade el procesamiento de la pila IP, el procesamiento de iperf3 en sí mismo sobre la velocidad del Celeron J4105 (que no es un i9 9900k o Ryzen 3900x) y sí, estamos cerca de los 11.1 GbE y 14.4GbE que hemos visto.

Otra forma de probar la conexión si no tienes (todavía) un segundo PC con una tarjeta IB, y si tiene una tarjeta de 2 puertos en el H2 es configurar y activar ambos puertos y luego conectarlos entre sí:

~$ iperf3 -s --bind 10.10.10.70
.../...
~$ iperf3 -c 10.10.10.70 --bind 10.10.10.71 -t 300
Connecting to host 10.10.10.70, port 5201
[  4] local 10.10.10.71 port 49363 connected to 10.10.10.70 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  3.18 GBytes  27.3 Gbits/sec    0   1.75 MBytes       
[  4]   1.00-2.00   sec  3.14 GBytes  27.0 Gbits/sec    0   1.75 MBytes       
.../...       
[  4] 299.00-300.00 sec  3.08 GBytes  26.5 Gbits/sec    0   3.12 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-300.00 sec   895 GBytes  25.6 Gbits/sec    0             sender
[  4]   0.00-300.00 sec   895 GBytes  25.6 Gbits/sec                  receiver
Debido a que el servidor y el cliente están en la misma máquina, iperf3 suma el tráfico de entrada y salida. No es sorprendente que 25.6 ~ = 14.4 + 11.1. Si quieres compararlo con un PC y CPU más potentes, aquí tienes resultados adicionales.
~$ iperf3 -s --bind 10.10.10.24
~$ iperf3 -c 10.10.10.24 --bind 10.10.10.25
Connecting to host 10.10.10.24, port 5201
[  4] local 10.10.10.25 port 38783 connected to 10.10.10.24 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  5.56 GBytes  47.7 Gbits/sec    0   1.37 MBytes       
[  4]   1.00-2.00   sec  5.61 GBytes  48.2 Gbits/sec    0   1.37 MBytes       
[  4]   2.00-3.00   sec  5.64 GBytes  48.5 Gbits/sec    0   1.37 MBytes       
[  4]   3.00-4.00   sec  5.60 GBytes  48.1 Gbits/sec    0   1.44 MBytes       
[  4]   4.00-5.00   sec  5.65 GBytes  48.5 Gbits/sec    0   1.44 MBytes       
[  4]   5.00-6.00   sec  5.55 GBytes  47.7 Gbits/sec    0   1.44 MBytes       
[  4]   6.00-7.00   sec  5.61 GBytes  48.2 Gbits/sec    0   1.44 MBytes       
[  4]   7.00-8.00   sec  5.58 GBytes  48.0 Gbits/sec    0   1.44 MBytes       
[  4]   8.00-9.00   sec  5.52 GBytes  47.5 Gbits/sec    0   1.44 MBytes       
[  4]   9.00-10.00  sec  5.66 GBytes  48.6 Gbits/sec    0   1.44 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  56.0 GBytes  48.1 Gbits/sec    0             sender
[  4]   0.00-10.00  sec  56.0 GBytes  48.1 Gbits/sec                  receiver
Nota: las pruebas se realizaron con una placa industrial que ejecuta un AMD v1605b.
~$ iperf3 -s --bind 10.10.10.20
~$ iperf3 -c 10.10.10.20 --bind 10.10.10.21
Connecting to host 10.10.10.20, port 5201
[  4] local 10.10.10.21 port 57059 connected to 10.10.10.20 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  11.4 GBytes  98.1 Gbits/sec    0   1.56 MBytes       
[  4]   1.00-2.00   sec  11.6 GBytes  99.4 Gbits/sec    0   1.56 MBytes       
[  4]   2.00-3.00   sec  11.4 GBytes  98.3 Gbits/sec    0   1.56 MBytes       
[  4]   3.00-4.00   sec  11.7 GBytes   100 Gbits/sec    0   1.56 MBytes       
[  4]   4.00-5.00   sec  11.5 GBytes  98.7 Gbits/sec    0   1.56 MBytes       
[  4]   5.00-6.00   sec  11.5 GBytes  98.4 Gbits/sec    0   1.56 MBytes       
[  4]   6.00-7.00   sec  11.5 GBytes  98.4 Gbits/sec    0   1.56 MBytes       
[  4]   7.00-8.00   sec  11.8 GBytes   101 Gbits/sec    0   1.56 MBytes       
[  4]   8.00-9.00   sec  11.4 GBytes  98.1 Gbits/sec    0   1.56 MBytes       
[  4]   9.00-10.00  sec  11.5 GBytes  98.7 Gbits/sec    0   1.56 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   115 GBytes  98.9 Gbits/sec    0             sender
[  4]   0.00-10.00  sec   115 GBytes  98.9 Gbits/sec                  receiver
Nota: estas pruebas se realizaron con un host que ejecuta un i5 9660K (la placa base es una ASRock Z390M-ITX/ac, la memoria está a 3200MT/s) y sobre FDR.

No es sorprendente que cuanto más dinero se invierte en algo, mejor es el resultado que e obtiene ... por lo general. Pero la cuestión aquí es que el ODROID-H2 puede llegar hasta los 14.4Gbe. No está mal para una placa integrada de 111$. Veamos ahora que tal se comporta como servidor NSF.

Usando NFS sobre InfiniBand

Para preparar los volúmenes que se van a compartir, particionaremos y formatearemos el SSD de 1 TB (/ dev/sda).

~$ sudo parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt                                                                 
(parted) unit tb                                                          
(parted) mkpart primary 0.00 1.00
(parted) align-check optimal 1
1 aligned
(parted) q
Information: You may need to update /etc/fstab.

~$ sudo mkfs -t ext4 /dev/sda1
mke2fs 1.44.6 (5-Mar-2019)
Discarding device blocks: done                            
Creating filesystem with 250050816 4k blocks and 62513152 inodes
Filesystem UUID: 48956888-5174-45bb-89d7-c287615650b8
Superblock backups stored on blocks: 
  32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
  4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
  102400000, 214990848

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done
Particionemos y formateemos el WD Red de 10 TB (/ dev/sdb).
~$ sudo parted /dev/sdb
GNU Parted 3.2
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt 
(parted) unit tb                                                                 
(parted) mkpart primary 0.00 10.00
(parted) align-check optimal 1
1 aligned
(parted) q                                                                
Information: You may need to update /etc/fstab.

~$ sudo mkfs -t ext4 /dev/sdb1
mke2fs 1.44.6 (5-Mar-2019)
Creating filesystem with 2441608704 4k blocks and 305201152 inodes
Filesystem UUID: 5f3bb840-7d13-4052-8444-42f9c55c9abf
Superblock backups stored on blocks: 
  32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
  4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
  102400000, 214990848, 512000000, 550731776, 644972544, 1934917632

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done
Comprueba si estos nuevos volúmenes se pueden montar sin problema:
# Create the mount points
~$ sudo mkdir /mnt/ssd
~$ sudo mkdir /mnt/hdb

# Mount the volumes
~$ sudo mount /dev/sda1 /mnt/ssd
~$ sudo mount /dev/sdb1 /mnt/hdb

# Are they mounted?
~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
.../...
/dev/sda1       938G   77M  891G   1% /mnt/ssd
/dev/sdb1       9.1T   80M  8.6T   1% /mnt/hdb
# Yep!
Agrega estos volúmenes a /etc/fstab usando tu UUID:
# Fetch the UUID of /dev/sda1 and /dev/sdb1
~$ sudo blkid
.../...
/dev/sda1: UUID="48956888-5174-45bb-89d7-c287615650b8" TYPE="ext4" PARTLABEL="primary" PARTUUID="b660dfe2-1a2f-4238-a460-3eabbcb39c23"
/dev/sdb1: UUID="5f3bb840-7d13-4052-8444-42f9c55c9abf" TYPE="ext4" PARTLABEL="primary" PARTUUID="3b46613a-302f-4cd0-91bc-80cdd6f81a41"

# Edit /etc/fstab
~$ sudo vi /etc/fstab
# To add these two lines:
.../...
UUID=48956888-5174-45bb-89d7-c287615650b8       /mnt/ssd        ext4    defaults  0  0
UUID=5f3bb840-7d13-4052-8444-42f9c55c9abf       /mnt/hdb        ext4    defaults  0  0
.../...

# Unmount the volumes previously manually mounted
~$ sudo umount /mnt/ssd
~$ sudo umount /mnt/hdb

# Mount all volumes according to /etc/fstab
~$ sudo mount -a

# Are our two new volumes mounted?
~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
.../...
/dev/sda1       938G   77M  891G   1% /mnt/ssd
/dev/sdb1       9.1T   80M  8.6T   1% /mnt/hdb
# Yep!

Configuración de NFS (tema servidor)

Vamos a instalar el paquete del servidor NFS en el H2:

~$ sudo apt update
~$ sudo apt upgrade
~$ sudo apt install nfs-common nfs-kernel-server
Configura las exportaciones (añadiendo las dos líneas que se muestran a continuación):
~$ sudo vi /etc/exports
.../...
/mnt/ssd/nfs    *(rw,sync,no_subtree_check)
/mnt/hdb/nfs    *(rw,sync,no_subtree_check)
.../...
Vamos a configurar los permisos sin preocuparnos por ahora de la seguridad (¡estamos haciendo pruebas!):
~$ sudo chown -R nobody:nogroup /mnt/ssd/nfs
~$ sudo chmod -R 0777 /mnt/ssd/nfs
~$ sudo chown -R nobody:nogroup /mnt/hdb/nfs
~$ sudo chmod -R 0777 /mnt/hdb/nfs
Carga el módulo de kernel RDMA para el servidor NFS sobre RDMA:
~$ sudo modprobe svcrdma
Reinicia el servicio NFS:
~$ sudo systemctl restart nfs-kernel-server
Una vez reiniciado, dígale al servicio NFS que también escuche en los puertos RDMA:
~$ echo rdma 20049 | sudo tee /proc/fs/nfsd/portlist
Nota: debes hacer esto cada vez que reinicie el servicio NFS. Al final querrás ponerlo todo en un script.

Comprueba si está configurado correctamente o no (opcional):

~$ sudo systemctl status nfs-kernel-server
  nfs-server.service - NFS server and services
   Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled)
   Active: active (exited) since Sun 2019-09-15 14:47:12 PDT; 18s ago
  Process: 2386 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
  Process: 2387 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
 Main PID: 2387 (code=exited, status=0/SUCCESS)

Sep 15 14:47:12 h2a systemd[1]: Starting NFS server and services...
Sep 15 14:47:12 h2a systemd[1]: Started NFS server and services.

~$ sudo cat /proc/fs/nfsd/portlist
rdma 20049
rdma 20049
udp 2049
tcp 2049
udp 2049
tcp 2049

Configurando NFS (tema cliente)

Usamos nuevamente un PC i5 9600K como cliente de prueba. En el siguiente texto que aparece a continuación, el nombre "h2a" es el nombre de host del ODROID-H2 en la red de 1 GbE y el nombre "h2a.ib" es el nombre de host del H2 en la red InfiniBand. Estos nombres obtienen sus direcciones IP asociadas a través de la configuración del archivo /etc/hosts en ambas máquinas (o un DNS local si estas ejecutando uno).

Instalemos el paquete del cliente NFS en el i5:

~$ sudo apt update
~$ sudo apt upgrade
~$ sudo apt install nfs-common
Carga el módulo del kernel RDMA para el cliente NFS sobre RDMA:
~$ sudo modprobe xprtrdma

Realizando Pruebas

Para las pruebas, copiaremos varios archivos del i5 al H2:

  • CentOS-7-x86_64-DVD-1804.iso, la imagen ISO del DVD de instalación de CentOS7 de 64 bits. Aquí lo que importa es el tamaño del archivo: 4,5 GB
  • Lunar_LRO_WAC_GLD100_DTM_79S79N_100m_v1.1.tif, una imagen TIFF de la Luna. Tamaño de archivo: 10.5GB
  • VMware-image-folder, un directorio que contiene una imagen de Vmware con un tamaño total de 41GB con 41 archivos.

En el i5, procedemos de la siguiente manera:

# Create the mount points:
~$ sudo mkdri h2a:/mnt/nfs/h2a/ssd
~$ sudo mkdri h2a:/mnt/nfs/h2a/hdb
# Mount the SSD remote volume from the H2 over the 1 GbE network:
~$ sudo mount h2a:/mnt/ssd/nfs /mnt/nfs/h2a/ssd
# Measure the time it takes to copy a file:
~$ time cp /home/domih/Downloads/CentOS-7-x86_64-DVD-1804.iso /mnt/nfs/h2a/ssd
# Mount the hard disk remote volume from the H2 over the 1 GbE network:
~$ sudo mount h2a:/mnt/hdb/nfs /mnt/nfs/h2a/hdb
# Measure the time it takes to copy a file:
~$ time cp /home/domih/Downloads/CentOS-7-x86_64-DVD-1804.iso /mnt/nfs/h2a/hdb
# Unmount the volumes:
sudo umount /mnt/nfs/h2a/ssd
sudo umount /mnt/nfs/h2a/hdb
# Mount again but this time over NFS RDMA
sudo mount -o rdma,port=20049 h2a.ib:/mnt/ssd/nfs /mnt/nfs/h2a/ssd
# Measure the file copy again.
sudo mount -o rdma,port=20049 h2a.ib:/mnt/hdb/nfs /mnt/nfs/h2a/hdb
# Measure the file copy again.
Las pruebas para el archivo de 4.5GB se realizaron 3 veces a través de NFS en modo de sincronización y luego en modo asíncrono. La prueba se realizó solo una vez para el archivo y el directorio más grandes a través de NFS en modo asíncrono.

Para cambiar el servidor NFS de sincronización al modo asíncrono, simplemente cambiamos los recursos compartidos en el archivo /etc/exports y reiniciamos el servidor NFS (sin olvidar echo rdma ...):

~$ sudo vi /etc/exports
.../...
/mnt/ssd/nfs    *(rw,async,no_subtree_check)
/mnt/hdb/nfs    *(rw,async,no_subtree_check)
.../...
~$ sudo systemctl restart nfs-kernel-server
~$ echo rdma 20049 | sudo tee /proc/fs/nfsd/portlist
Aquí tienes los resultados:

Figura 28 - Resultados de las pruebas

La fórmula para calcular la velocidad en Gbe es:

File Size in Bytes x 8 / Time in secs / 1000000000 = Speed in Gbe

Qué conclusiones extraemos a partir de estos números

  • Los recursos (CPU) y el tiempo consumido al escribir en el SSD o el disco duro no afectan a la velocidad del Ethernet de 1 GbE porque la velocidad de la red es lo suficientemente lenta como para cubrirla. En contraposición, si que afectan la interconexión de 10+ GbE. Puedes apreciarlo comparando los resultados de NFS RDMA en modo de sincronización entre el SSD y el disco duro. Este efecto desaparece después de cambiar NFS RDMA al modo asíncrono. ¿Existe algún tipo de "riesgo" al cambiar a asíncrono? No necesariamente, siempre que tu servidor esté detrás de un UPS y no falle, significaría un error de E/S en el disco o un bloqueo. Tanto Windows como Linux en cierta medida se escribe en el caché disco de todos modos, por lo que, en caso de fallo, la historia es la misma. Para indagar mas en el tema, consulta https://www.google.com/search?q=nfs+sync+vs+async.
  • La aceleración varía desde algo menos de x2 hasta cerca de x8. La aceleración varía según lo que copies y dónde lo copies. En cualquier caso, no está nada mal para una placa integrada que cuesta poco más de 100
  • Más allá de los números, el efecto psicológico tiene más que ver con el tiempo que esperas a que finalice una operación: ¡1m16 es definitivamente mucho más rápido que 6m32! Con el primero esperas, con el último puedes ir a tomarte un café.
  • Estos son números reales sin dedicar tiempo a la optimización. Ver Postscript más abajo

Para jugar con números poco realistas, vamos a usar un disco RAM en una de las máquinas (aquí el i5) y copiamos desde el H2 al I5:

sudo mkdir -p /mnt/ramdisk
sudo mount -t tmpfs -o size=20480M tmpfs /mnt/ramdisk

time cp /mnt/nfs/h2a/ssd/CentOS-7-x86_64-DVD-1804.iso /mnt/ramdisk
4470079488*8/3.338/1000/1000/1000 = 10.71 Gbe

time cp /mnt/nfs/h2a/ssd/Lunar_LRO_WAC_GLD100_DTM_79S79N_100m_v1.1.tif /mnt/ramdisk
10461394351*8/7.385/1000/1000/1000 = 11.33 Gbe
¡Sí, estamos por encima de la marca de 10Gbe! Entonces, si realmente desea aumentar los números, usa un disco RAM (en el servidor y / o el cliente), la cantidad de datos que puede transferir se limitará al tamaño del disco RAM (aquí 20 GB) y tienes que escribir un trabajo CRON o algo así para que al final se copie el disco RAM al disco físico en el servidor y/o el cliente con el objeto de que el almacenamiento sea persistente y real a largo plazo.

Postscript

Esperamos que hayas disfrutado leyendo este artículo. Como he mencionado anteriormente, recuerda que no soy un experto en informática integrada ni un experto en InfiniBand. En tal caso, no dude en enviar tus comentarios a Odroid Magaizne o al foro porque a mí y a otros nos gusta aprender cosas nuevas. Debido a restricciones de tiempo y recursos, así como a la longitud razonable del artículo para su publicación en la revista, no he aborddado los siguientes temas:

  • Posible afinidad de CPU, afinidad IRQ y optimizaciones TCP/IP,
  • Usar LVM2 para crear un volumen lógico en caché para optimizar la E/S de disco,
  • Usar Samba sobre este tipo de interconexión,
  • Windows Server 2012 (o posterior) y la integración de Windows 10 con SMB direct,
  • Soluciones alternativas que utilizan tarjetas y switch Ethernet SFP+ de 10 GbE (SFP+ es significativamente mas barato que sus primos RJ-45 a raíz de este artículo),
  • Otras tecnologías que aprovechen RDMA, como sistemas de archivos distribuidos (Hadoop, Luster, Ceph, GlusterFS ...), bases de datos distribuidas, etc.

Dependiendo del interés, puede haber artículos de seguimiento en el futuro. No dude en expresar tus inquietudes en ODROID MAGAZINE

Sobre el autor

Figura 29 - Dominique cuando era más joven. Usamos esta imagen para mostrar lo genial que era la moda para niños en Francia a principios de los 60

Dominique ha crecido desde que se tomase la imagen de arriba, y ha estado trabajando como CTO o SVP de Ingeniería en múltiples start-ups ubicadas alrededor del área de la bahía de San Francisco (Silicon Valley) durante los últimos 30 años. Dominique es actualmente vicepresidente sénior de ingeniería en bonafeyed.com, una empresa emergente que acaba de salir. Su producto principal, Cy4Secure, es una solución de seguridad de datos que protege los datos y la información cuando se comparte con otros, a través o en la nube o con una aplicación, manteniendo los datos siempre encriptados tanto en movimiento como en reposo. Cy4Secure representa la última línea de protección de datos después de una violación de seguridad. Dominique también está asesorando a mkrypt.com, que está trabajando en un control remoto Bluetooth de baja energía que proporciona una verdadera encriptación de voz para teléfonos móviles y teléfonos inteligentes. Puedes contactar a Dominique en el foro ODROID enviando un mensaje a @domih.

¿Es un Ordenador Linux para tu Bolsillo? ¿O Simplemente Disfrutas Viéndome Montar un Ordenador ODROID que Puedes Llevar en tu Bolsillo?

Justo después del proyecto ODROID Tablet, https://magazine.odroid.com/article/build-a-rootin-tootin-dual-bootin-odroid-tablet-using-the-odroid-c0-to-make-a-professional-grade-tablet-for-under-usd100/, presentamos una versión más portátil con el ODROID-C0. En lugar de lucir una pantalla LCD equipada con HDMI a gran escala, este "dispositivo de bolsillo" cuenta con una salida de video gestionada por framebuffer que se conecta a una pantalla táctil de transistor de película fina (TFT) de 3.2 pulgadas conocido como C1.

Figure 1 – A “pocketable” palm-sized Linux computer.
Figura 1 – Un ordenador Linux "de bolsillo" del tamaño la palma de la mano

Aunque esta pantalla táctil está diseñada como un simple periférico "plug-n-play", la configuración del software para permitir que el ODROID-C0 use esta pantalla puede llegar a ser una tarea abrumadora. Afortunadamente, Hardkernel ha creado una serie de artículos que nos permite configurar esta pantalla de forma rápida y fácil. Simplemente sigue metódicamente los pasos de la wiki de Hardkernel, junto con los siguientes pasos para su correcto ensamblaje, y tendrás en tu propio bolsillo un dispositivo informático por menos de 65$

Componentes

  • ODROID-C0 28.00$
  • Pantalla táctil TFT+ de 3.2 pulgadas C1 25.00$
  • Pack de conectores para ODROID-C0 1.80$
  • Batería de 3000 mAh 1.00$
  • Batería de respaldo RTC 2.50$ [Opcional]
  • Tarjeta microSD 32GB 5$
  • Además, necesitarás temporalmente tener acceso a un monitor HDMI y contar con un teclado y ratón USB para programar el ODROID-C0.

Paso a paso

1. Prepara el PCB ODROID-C0 con varios componentes del interior del paquete de conectores para usar la Pantalla Táctil C1. Suelda el conector USB doble apilado a la PCB. Retira 26 pines, dos filas de 13 pines, desde el cabezal de doble fila ODROID-C0. Suelda este cabezal en el conector GPIO del ODROID-C0 empezando por el pin 1.

Figure 2 - All of the soldering is now complete. Notice that the dual row header has only been soldered to 26 GPIO pins.
Figura 2: Toda la soldadura está completada. Ten en cuenta que el cabezal de doble fila simplemente se ha soldado a 26 pines GPIO.

2. Conecta la batería de 3000 mAh y la batería de respaldo RTC opcional al ODROID-C0.

3. Desliza los cabezales hembra de la Pantalla táctil C1 sobre los cabezales ODROID-C0 que soldaste en el Paso 1.

4. Conecta temporalmente el ODROID-C0 a un monitor HDMI, además de un teclado y un ratón USB.

5. 5. Asegúrate de que el ODROID-C0 esté alimentado por una fuente de alimentación de 5V 2A. El LED verde de carga de la batería de la PCB puede estar encendido o no durante la programación del ODROID-C0.

6. Sigue los pasos de la wiki de Hardkernel para programar el ODROID-C0:

http://wiki.odroid.com/accessory/display/3.2inch_tft_touchscreen_shield/start

Figure 3 - After you’ve completed the Hardkernel C1 shield wiki, look for the touchscreen calibration app inside the Ubuntu menu. Run this app for finalizing the touchscreen shield setup.
Figura 3: Una vez que haya completado todos los pasos de la wiki de Hardkernel, busca la aplicación de calibración de pantalla táctil dentro del menú de Ubuntu. Ejecuta esta aplicación para finalizar la configuración de la pantalla táctil.

7. Desconecta el monitor HDMI y reinicia el ODROID-C0. Mantén el teclado y el mouse USB conectados al ODROID-C0. Tras uno a dos minutos, el cursor del ratón aparecerá en la pantalla táctil seguido de la pantalla de Inicio de sesión.

Figure 4a - The Ubuntu Log-in screen—just click it and you’re ready to go.
Figura 4a: Pantalla de inicio de sesión de Ubuntu: simplemente haz clic en ella y estarás listo para empezar.

Figure 4b - There isn’t a lot of screen real estate on the touchscreen shield. Use the Notes (i.e., numbers 3 and 4) below for maximizing your little screen’s potential.
Figura 4b: no hay mucho espacio en la pantalla táctil. Usa las Notas (es decir, los números 3 y 4) que aparecen a continuación para maximizar el potencial de tu pequeña pantalla.

8. Usa el teclado y el ratón USB para configurar tu nuevo ODROID de bolsillo. Los posibles usos de este dispositivo de bolsillo pueden ser un temporizador/cronómetro/reloj de eventos portátil, un calendario familiar, un dispositivo de descarga móvil o un reproductor multimedia personal.

Figure 5 - Either ready for the local coffee shop WiFi hotspot or resting attentively at your local family household wifi hotspot, this petite ‘puter powerhouse can handle it.
Figura 5: Ya está listo para el punto de acceso WiFi de la cafetería local o el punto de acceso wifi de tu hogar familiar, este pequeño dispositivo puede manejarlo sin problema

Notas

1. La toma a tierra, GND y el plano sobre el PCB ODROID-C0 puede hacer que la soldadura sea extremadamente difícil de llevar a cabo. Intenta usar una estación de soldadura de temperatura regulable, ajustando la misma aproximadamente a unos 380 grados C.

2. Consejo profesional para principiantes: nunca sueldes más pines de cabezal macho en una PCB de los que necesitas usar. Por ejemplo, en este proyecto solo se utilizaron dos filas de 13 pines. Si sueldas las 40 clavijas del conector ODROID-C0 en la PCB, algunos pines de alimentación quedarán expuestas (por ejemplo, el pin 38 1.8V y el pin 39 GND), lo que podría provocar un cortocircuito y dañar su querido ODROID.

3. Agrega un botón de apagado al panel superior de la ventana del escritorio. Puede agregar este botón realizando un clic derecho con el ratón mientras el cursor esté dentro del panel superior.

4. Realiza dos modificaciones e las Preferencias de la aplicación Administración de archivos: primero, cambia el comportamiento de la interfaz de usuario para usar "un único clic" para acceder a archivos y carpetas. En segundo lugar, reduce la ampliación de la vista estándar al 50%.

5. El título de este artículo es una cita interpretada por Mae West en la película "Sextette" (1978).

El Punto G: Tu Destino para Todas las Cuestiones Relacionadas con Juegos Android

Basándome en los lanzamientos de juegos anunciados en gamescom 2019, el futuro para los juegos de Android parece muy prometedor. Como recordarás, gamescom, organizada por Koelnmesse y game, la Asociación Alemana de la Industria de los Juegos, es la autoproclamada "Feria más grande del mundo y el evento más destacado para juegos interactivos y entretenimiento". Este año se celebró en Colonia, Alemania, entre el 20 y el 24 de agosto de 2019. Hubo juegos, videos destacados, asistentes cosplay y algo grande, muy grande. Ese "algo" era Sony.

Figure 1 - gamescom 2019 finally pulled the curtain back on Google’s Stadia streaming game subscription service.
Figura 1: gamescom 2019 finalmente corrió el telón del servicio de suscripción de juegos de transmisión Stadia de Google.

Además de la gran cantidad de futuros títulos que se anunciaron, el evento absolutamente más sorprendente tenía que ser el de Sony Interactive Entertainment, que ganó el codiciado premio “Best of gamescom” por su creación del juego sandbox, Dreams. Recordarás que Sony dio mucho que hablar por su "no presencia" en la E3 Expo 2019. Este despropósito en el evento de Los Ángeles no les impidió acaparar el Hall 7 en Colonia y hacerse con un puñado de premios, incluidos los mencionados "Best of gamescom" junto con "Best VR / AR Game" (Marvel's Iron Man), "Best Family Game" (Concrete Genie), "Most Original Game" (Dreams, again!) y "Best Sony PlayStation 4 Game" (lo adivinaste, Dreams).

Figure 2 - No, you’re not dreaming, Sony Interactive Entertainment Dreams title is a worthy winner of the “Best of gamescom” award. Image courtesy of Sony Interactive Entertainment.
Figura 2: No, no estás soñando, el título Dreams de Sony Interactive Entertainment es un digno ganador del premio "Best of gamescom". Imagen cortesía de Sony Interactive Entertainment.

Sony no fue la única gran noticia en gamescom, también hubo algunas noticias sobre juegos de Android. En realidad, estas noticias no hablaban realmente de juegos Android, en sí mismas, ¡TODAS giraban en torno a Google Stadia! Stadia está tanto para Android como para iOS, PC con Windows, MacOS y, puedes creerlo, Linux. Si la plataforma que usas tiene Google Chrome o Chromium, entonces puede convertirte en un gran jugador. ¡HURRA!

Con un coste mensual de 9.99$, Stadia Pro, es decir, la versión incluida en la $ 129 Founder’s Edition de 129$ que incluye lanzamientos regulares de juegos GRATUITOS, está programado para lanzarse en noviembre de este año. Según un pequeño rumor que he escuchado, Google Stadia vendrá con una versión GRATUITA (sin tarifa mensual) en algún momento en 2020. No hay juegos GRATUITOS, sin embargo, esta versión está limitada a 1080p.

Entonces, ¿Qué juegos podemos esperar en Google Stadia? En gamescom, se presentó la lista completa de títulos. Aquí tienes un fragmento de esta lista larga, larga:

Bethesda – DOOM Eternal Bungie – Destiny 2 [este título podría ser un lanzamiento GRATUITO en noviembre para los miembros de Founder’s Edition] CD PROJEKT RED – Cyberpunk 2077 [con críticas favorables desde su lanzamiento en E3 Expo 2019] Dotemu – Windjammers 2 Larian Studios – Baldur’s Gate 3 Pandemic Studios – Destroy All Humans! Robot Entertainment – Orcs Must Die 3 SEGA – Football Manager Square Enix – Final Fantasy XV Square Enix – Marvel’s Avengers 2K – NBA 2K Warner Bros. - Mortal Kombat 11 Ubisoft – Tom Clancy’s Ghost Recon Breakpoint Ubisoft – Just Dance [un favorito de ODROID Magazine]

La cuenta de Twitter de Google Stadia puedes encontrar un video en el que varios jugadores juegan a Stadia:

https://t.co/WeBuVEUYVb

Si eres como yo, seguro que ahora mismo estás pensando: "Noviembre no va a llegar lo suficientemente rápido". Y "¿dónde está mi suscripción a la Founder’s Edition?"

Noticias de última hora

Justo cuando este número estaba en producción, llegaron dos noticias a mi escritorio. Primero, en honor al 25 aniversario de id Software del lanzamiento de DOOM (en 1993), Bethesda ha lanzado DOOM y DOOM II en Google Play por $ 4.99 cada uno. Cómo cambian los tiempos, ¿verdad? Recuerdo que, en el vigésimo aniversario, el lanzamiento de la aplicación DOOM era GRATIS.

Segundo, Nintendo acaba de anunciar que Mario Kart Tour debutará para Android el 25 de septiembre. Así es; se suponía que este título se lanzaría en marzo de 2019. Sin embargo, después de algunas modificaciones en el código, esta edición para móvil finalmente debería estar disponible para cuando leas este artículo.

Sin duda, hay quien se sorprenderá al saber que Mario Kart Tour será una app GRATUITA. Pero no contengas la respiración demasiado tiempo, el juego incluirá compras dentro de la propia app o microtransacciones. Queda por ver como coexistirá este sistema de pago con la propia mecánica de juego.

Refrigeración por Agua de Bajo Coste para tu Ordenador de Placa Reducida: Cómo Lograr que tu ODROID Alcance Máxima Velocidad

La refrigeración por agua en los SBCs no es nada nuevo, hay personas que ya han implementado diseños utilizando componentes estándar para el ODROID-XU4 y otros SBC. Algunas de estas implementaciones se han presentado en ODROID Magazine en el pasado.

Diciembre 2016 https://magazine.odroid.com/wp-content/uploads/ODROID-Magazine-201612.pdf

Julio 2018 https://magazine.odroid.com/article/liquid-cooling-part-1-cluster/ https://magazine.odroid.com/article/liquid-cooling-part-2-server/

Inicialmente el objetivo de este proyecto era conseguir que la refrigeración por agua fuera de bajo coste y económica para el ODROID-XU4. Después de trabajar en el diseño del bloque de agua, descubrí una forma de que éste pudiera soportar una amplia gama de SBC, independientemente de su capacidad para soportar o no un disipador térmico adecuado. Este desarrollo fue el presagio del SBC Model Framework que completé con anterioridad. https://forum.odroid.com/viewtopic.php?f=53&t=33823 Ahora, cualquier SBC que soporte el SBC Model Framework puede utilizar este diseño para montar un bloque de agua universal de bajo coste y así implementar un sistema de refrigeración líquida.

Las implementaciones de sistemas refrigerados por agua que he visto utilizan componentes del entorno de escritorio INTEL/AMD, más grandes y con más capacidad de la necesaria para los SBC y, por ello, generalmente van acompañados de un coste relativamente alto.

Los sistemas de refrigeración cuyo coste es mayor que el del propio SBC no son rentables ni están justificados económicamente. Están bien a nivel de investigación y para usos muy específicos, pero no para utilizarlos de forma generalizada. De modo que, la primera pregunta que me hice cuando empecé este proyecto fue ¿cuánto cuesta un sistema de refrigeración que esté económicamente justificado?

Se puede decir mucho y de hecho se ha hablado bastante sobre el tema, yo he llegado a la conclusión de que el precio no debe superar el 20% del coste total del sistema o sobre el coste de un disipador térmico y ventilador razonable. Cuando monté mi clúster ODROID-XU4, el coste por nodo que incluía la fuente de alimentación, la tarjeta SD y el cableado de red, fue de aproximadamente 73$. Me preguntaba si sería posible montar un sistema refrigerado por agua por 14$ o menos. Ya sabía que no era posible, si usaba componentes comerciales, así que tuve que tirar de creatividad y diseñar nuevos componentes al mismo tiempo que reutilizaba componentes de otras industrias.

Hay una serie de problemas que debemos solventar para logar todos los objetivos de este proyecto. En este artículo trataremos específicamente la primera fase del proyecto, que incluye el bloque de agua universal y el método de conexión y bomba de bajo coste. El intercambiador de calor y la presentación final de todo el sistema de refrigeración se abordará en una segunda fase. Este proyecto, además, representa el primer paso hacia mi objetivo final de diseñar un clúster ODROID-XU4 refrigerado por agua escalable y de bajo coste. Estoy usando un único SBC para resolver muchos de los problemas de diseño antes de meterme de lleno con la implementación de un clúster.

Después de experimentar con varias técnicas para diseñar el bloque de agua, y teniendo en cuenta que en algunos SBC no resulta fácil ni práctico conectar un disipador de calor, empecé a experimentar con una carcasa refrigerada por agua a la que se podía acoplar bloques de agua de diferentes tamaños con un método de fijación universal.

Figure 1 - ODROID-XU4 SBC Water Cooled Case Design with RTC and UART holder
Figura 1 - Diseño de carcasa refrigerada por agua para el SBC ODROID-XU4 con soporte RTC y UART

El integrar el bloque de agua directamente en la carcasa, nos brinda la posibilidad de poder acoplarlo a la mayoría de los diseños de SBC actuando como un accesorio sólido y fiable. El bloque de agua podría moldearse fácilmente a cualquier tamaño o forma, y permitiría acoplar múltiples bloques de agua a cada lado de la PCB. Con la tendencia cada vez mayor de conectar hardware adicional a los SBC para manejar la IA, redes u otros procesos especializados, pensé que sería conveniente proporcionar también el medio para refrigéralos. Además, podría ser una forma de enfriar múltiples chips de memoria. Para transferir calor desde el SOC al sistema de enfriamiento se utiliza una pieza de cobre de 1/8”(3.19 mm) de grosor insertada en el bloque de agua.

Figure 2 - ODROID-XU4 Water Block
Figura 2 - Bloque de agua ODROID-XU4

Diseño de la carcasa refrigerada por agua

Algunas de las características adicionales del diseño de la carcasa refrigerada por agua incluye:

  • Soporte universal SBC
  • Hasta 4 bloques de agua, arriba y/o abajo
  • Separadores integrados y/o proporcionados por el usuario
  • Tapa de la carcasa ciega o atornillada con o sin avellanado
  • Accesorios predefinidos (soporte UART, soporte RTC, soporte para la parte inferior de la carcasa ODROID-XU4, grabados, ventilador de múltiples formas o agujeros para cables, etc.)
  • Accesorios sustractivos o aditivos definidos por el usuario

Problemas y sugerencias

Han sido tres problemas principales en los que he tenido que trabajar para que este diseño siga adelante. El primero fue encontrar accesorios que fueran económicos, pequeños y lo suficientemente fuertes como para que funcionasen adecuadamente. Los accesorios de los sistemas de refrigeración líquida INTEL/AMD son demasiado grandes para la mayoría de los SOC SBC. Dos de ellos no se ajustarán al tamaño de muchos SOC. Al estar familiarizado con los sistemas de riego por goteo, decidí usar púas de riego por goteo que son fuertes, pequeñas, se pueden pegar fácilmente en su correspondiente lugar y disponen de versiones rectas y de 90 grados.

https://www.digcorp.com/homeowner-drip-irrigation-products/1-4-barbed-fittings

Para realizar las pruebas necesité un método sólido, aunque reversible para fijarlas con el objeto de poder reutilizarlas. Tras probar varios pegamentos, el cianoacrilato (Super Glue) parecía ser el que mejor funcionaba. Corté la púa de un extremo y la pegué en su lugar. Era lo suficientemente sólido como para absorber una carga de trabajo considerable y las púas aún podían retirarse debido a la fragilidad del pegamento. Se puede usar otro pegamento más fuerte y permanente o soldadura de acetona ABS para el prototipo final. Incluso puede ser posible tocar un extremo de la púa para conseguir una solución en rosca.

El segundo problema fue encontrar una bomba adecuada que fuera económica, que proporcionara un servicio continuo, que tuviera el caudal adecuado y funcionara con 5 voltios. Después de buscar en la industria médica y alimentaria pude adquirir por 5$ (entregados), una microbomba 23 5v 1.5w serie ET-Tech con capacidad de servicio continuo. También tenía la ventaja de ser muy silenciosas. http://www.et-pump.com/brushless_23.html

El tercer problema a solventar tuvo que ver con la creación de la carcasa. El punto débil del diseño estaba relacionado con la fabricación del bloque de agua utilizando la tecnología de impresión 3D. Cada capa del bloque de agua suponía una posible fuga de agua. Además de esto, la ubicación del SOC ODROID-XU4 supuso un auténtico desafío debido a su proximidad al cabezal GPIO de 12 pines. A causa del grosor requerido del bloque de agua, éste no contaba con el adecuado espacio para el conector. Ninguno de los otros SBC que probé tenía este problema, era específico del ODROID-XU4. Para colmo, si forzamos el ensamblaje de la carcasa, la presión arquea ligeramente la parte superior de la carcasa, creando suficiente presión como para abrir micro grietas en las capas de impresión que con el tiempo pierden agua.

Después de varios meses trabajando en este problema, no logré resolverlo y dejé el diseño a un lado. El diseño funcionaba para otros SBC, pero el ODROID-XU4 era la razón principal por la que me interesaba esta solución. Después de muchos más intentos para abordar lo que consideraba un problema de diseño importante, me di cuenta de que el cuerpo del cabezal GPIO de 12 pines se podía retirar fácilmente de los pines, proporcionando así el suficiente espacio como para que el bloque de agua hiciera el adecuado contacto con el SOC. En términos generales, el planteamiento para por nunca hacer modificaciones permanentes al SBC. Observé que esta solución era razonable ya que la base se podía reinstalar con facilidad. Ten en cuenta que, debido a la poca soldadura utilizada en la fabricación de la PCB y la ausencia de la base que alojan los pines, es muy fácil que se suelte alguno, así que ten mucho cuidado si retiras la base del cabezal GPIO.

Figure 3 - ODROID-XU4 case closeup
Figura 3 - Primer plano de la carcasa del ODROID-XU4

Para garantizar de que las micro fugas no fuesen un problema continuo, también desarrollé una técnica para reforzar todo el bloque de agua. Usando un bastoncillo de algodón y acetona, sumergí el bastoncillo en la acetona y luego lo froté con cada lateral del bloque de agua y las esquinas. Repetí este proceso 2-3 veces por cada lado para que el ABS se derritiera y formara una película continua, minimizando significativamente la posibilidad de que se formasen microgrietas en el bloque de agua. No he tenido ninguna fuga recurriendo a este método. Si la carcasa se fabricara con un molde, este problema no existiría. Al tratarse de proceso de fabricación por capas de impresión 3D tuve que lidiar con este problema.

Otro consejo que vale la pena mencionar para por sumergir el tubo de 1/4” en agua hirviendo para formar las curvas necesarias con la finalidad de que las conexiones no estén bajo tensión una vez ensambladas. Sumergido el tubo unos segundos bastará para ablandar el plástico lo suficiente como para formar cualquier forma que pueda necesitar y ésta se volverá permanente una vez que el plástico se enfríe. Gracias a este truco también nos resultará más fácil colocar el tubo sobre las púas.

Lanzamiento Beta del Diseño

Estoy en un punto en el que puedo hacer una versión beta del diseño a pesar de que el intercambiador de calor no está completo. Muchos radiadores incorporan una bomba dentro, por lo que cualquier persona que tenga alguno procedente de un sistema INTEL/AMD podría crear un económico SBC refrigerado por agua utilizando este diseño beta.

No es práctico probar todas las configuraciones posibles de SBC y carcasas; También puedes recurrir a versiones refrigeradas por aire. Ya han pasado varios meses desde que hice varias pruebas con SBC y éstas estaban limitadas por el SBC ODROID que poseía. No se han realizado pruebas operativas en este caso.

Figure 4 - ODROID Water Cooled Cases (MC1, N1, C2 and XU4)
Figura 4 - Carcasas ODROID refrigeradas por agua (MC1, N1, C2 y XU4

Desde entonces, he reescrito completamente el algoritmo de la carcasa para OpenSCAD y he agregado nuevas funciones. El ODROID-N2 fue lanzado y el ODROID-H2 volvió a estar disponible, así que tenlo en cuenta y enviame cualquier comentario o sugerencia que tengas si has probado uno de estos SBC, no es que el ODROID-N2 necesite refrigeración por agua o un nuevo sistema de refrigeración.

Archivos de Diseño de la Carcasa de Refrigeración por Agua del SBC

Es necesario tener el SBC Model Framework y su directorio debe instalarse en el mismo directorio principal que el directorio SBC Water Cooled Case. Si deseas utilizar una estructura de directorio diferente, las declaraciones de inclusión y uso en sbc_water_cooled_case.scad deben cambiarse en consecuencia.

use <../sbc_models/sbc_models.scad>
include <../sbc_models/sbc_models.cfg>
Puedes conseguir el SBC Model Framework en los foros ODROID en https://forum.odroid.com/viewtopic.php?f=53&t=33823

Prueba Inicial del Bloque de Agua

No sabía muy bien cómo funcionaría un bloque de agua de un tamaño tan reducido. Sé que el ODROID-XU4 tiene un SOC relativamente pequeño, es uno de los SBC más controvertidos a la hora de refrigerar cuando se ejecuta a 2Ghz, y sí, funcionó. Este éxito es una muy buena señalar para su implantación en la mayoría de SBC. Después de más de un año y medio de trabajo en el proyecto, finalmente llegó el momento de hacer la prueba inicial y averiguar con certeza si estaba ante un diseño viable. No es una prueba exhaustiva, ya que la definitiva vendrá cuando el intercambiador de calor se incorpore al sistema.

Banco de Pruebas y Parámetros Operativos

Se utilizó un radiador de cobre de 120 mm y un ventilador de 120 mm para probar el bloque de agua utilizando la imagen HK Minimal Ubuntu 18.04. Todas las pruebas se llevaron a cabo con A15@2ghz, A7@1.5ghz, memoria a 933mhz con la configuración del regulador en “Performance” para la CPU y la GPU.

$ uname -a
Linux c2n1 4.14.127-164 #1 SMP PREEMPT Wed Jun 19 17:28:22 -03 2019 armv7l armv7l armv7l GNU/Linux

Figure 5 - Waterblock Test Bed
Figura 5 – Banco de pruebas del bloque de agua
Kernel compile at 2ghz @ 71F(21.66c) Ambient Temperature
real 25m12.282s
user 172m3.503s
sys 16m48.678s
Figure 6 -Kernel Compile Test 2ghz
Figura 6 - Prueba de compilación de Kernel a 2ghz

Me pareció interesante ver que el tiempo de compilación es ligeramente mejor que el tiempo de compilación cruzada del ODROID-H2 probado en un estudio reciente de cnx-software.com. https://www.cnx-software.com/2019/07/14/odroid-h2-review-ubuntu-19-04/ El autor comparó la compilación cruzada en ODROID-H2 de un kernel ODROID-XU4 con un tiempo de compilación nativo ODROID-XU4Q. La temperatura ambiental durante esa prueba fue más alta. Desafortunadamente no tengo un ODROID-H2, así que no puedo duplicar la prueba para comparar el rendimiento con la misma temperatura ambiental. Otra nota en relación a la prueba de compilación del kernel; tras completar la prueba, me di cuenta de que ésta se había estado ejecutando sobre un kernel stock que tenía habilitadas las denominadas transparent huge pages (THP). No estoy seguro de si esto ayudó o perjudicó al tiempo de ejecución, pero como me interesaban los resultados térmicos, no le di demasiada importancia. La prueba BOINC usó el mismo kernel.

Temperatura Ambiental de la Prueba Boinc 8 hilos de ejecución @ 72(22.22c)

La carga de trabajo de 8 hilos de ejecución de BOINC Universe@home fue usada para las siguientes pruebas a 2ghz, 1.9ghz y 1.8ghz durante aproximadamente 1 hora cada una. Se usó la misma carga de trabajo pausando el procesamiento de BOINC hasta que el SOC se enfriase, se ajustó la frecuencia del reloj y luego se reanudó la carga de trabajo de BOINC. Como es evidente en el cuadro que aparece a continuación, dos hilos de ejecución terminaron aproximadamente 10 minutos antes durante la prueba de 1.8 ghz. Creo que los resultados siguen siendo válidos considerando que no hubo cambios en los últimos 10 minutos de las pruebas de 1.9ghz o 2.0ghz. Al observar la drástica diferencia de temperatura una vez que se completaron los 2 hilos de ejecución, inicialmente supuse que ambos estaban funcionando con núcleos A15, pero después de examinar los datos de la prueba más de cerca no pude corroborar esta conclusión porque la temperatura en todos los núcleos A15 cayó proporcionalmente. Esto parece indicar que podrían haber sido los dos núcleos A7. No se hubiera esperado tal disminución y uniformidad en la temperatura del núcleo A15 si ese fuera sido el caso. No he hecho ningún otro análisis o prueba para confirmar esta hipótesis, por lo que aún está por determinar. Por simplicidad, el gráfico muestra el núcleo A15 más popular para cada frecuencia probada.

Figure 7 - BOINC Test at 2ghz, 1.9ghz and 1.8ghz
Figura 7 - Prueba BOINC a 2ghz, 1.9ghz y 1.8ghz

Figure 8 - BOINC htop
Figura 8 – htop BOINC

Resumen

La prueba de compilación del kernel pudo mantenerse aproximadamente en los 68 °C y las cargas de BOINC también funcionaron bien en las distintas frecuencias de la prueba. Es posible realizar algunas pequeñas mejoras en el rendimiento térmico añadiendo un fluido con mejores propiedades de absorción térmica, velocidad de flujo variable o ajustando los patrones de flujo a través del bloque de agua. Espero terminar el diseño del intercambiador de calor para poder realizar pruebas más exhaustivas con el sistema completo.

Listado Materiales XU4 Coste (USD)
Púas 1/4”, ABS $.09 x 2 $0.18
Tubo 1/4” 1’ $0.15
Cobre 1/8” 15.5mm x 16.75mm $0.38
Bomba 5v 1.5w .5 L/min $5.00
Filamento Plastico ABS, 30g $0.34
Pegamento y Electricidad $0.25
Sub-Total $6.30

Del presupuesto de 14$, quedan $ 7.70 para el intercambiador de calor. Tengo varios diseños en los que estoy interesado actualmente. Aunque la bomba actual ha funcionado bien, también he estado viendo otras opciones para reducir su tamaño y coste. Si este proyecto tiene éxito, la refrigeración por agua del SBC puede ser económica y permite ampliar la envoltura térmica al permitir que un SBC funcione sin estrangulamiento a temperaturas ambiente altas mientras aumenta el rendimiento en el mundo real de SOC utilizando procesos de fabricación más antiguos.

Los archivos de diseño de OpenSCAD, los datos de prueba y los scripts gplot están disponibles en el foro https://forum.odroid.com/viewtopic.php?f=98&t=35751.

Cinco Minutos de Diversión con tu Monku R1: Comando Retro Cubículo

Requisitos

  • Una Monku Retro 1,2,3 / ODROID-C1+, 2, XU4 (se supone que estos dispositivos estén configurados con Ubuntu y MATE. Consulta las referencias al final para los dispositivos R1, R2 y dispositivos R3).
  • Una tarjeta de audio USB
  • Un adaptador WiFi USB ODROID
  • An ODROID USB WiFi Adapter x1

Introducción y Objetivos del tutorial

Todos nos aburrimos en el trabajo y a veces tenemos la oportunidad de matar el tiempo. ¡Este tutorial te muestra cómo convertir tu consola Monku Retro en un Comando Retro Cubículo! La perfecta consola para jugar discretamente en una pantalla VGA. Los siguientes pasos te mostrarán cómo ajustar los scripts en tu Monku R1, R2 o R3 (ODROID-C1+, -C2, -XU4) para que al usar el botón de control personalizado puedas cambiar al modo VGA y se ajuste automáticamente el archivo de configuración de retroarch para usar la tarjeta de audio USB. El R3, ODROID-XU4, no utiliza script de control personalizado, aunque puedes ejecutar a mano los scripts que cambian la configuración del audio de retroarch. Necesitarás un dispositivo Monku Retro, como el que te hemos ayudado a montar R1, R2 y R3, una tarjeta de audio USB, un adaptador WiFi USB y un gamepad inalámbrico. Usaremos auriculares para audio e inalámbricos siempre que sea posible para mantener un perfil bajo cuando juegue durante el tiempo de inactividad del cubículo. Continua con el resto de pasos para crear tu propio Comando Retro Cubículo En primer lugar, unas cuantas cosas sobre los componentes necesarios. El gamepad inalámbrico GameSir no es realmente necesario. Puedes optar por la versión cableada por aproximadamente la mitad del precio. Hardkernel tiene un precio muy bueno para ese modelo, así que tenlo en cuenta cuando vayas a comprar los componentes. Recomendamos la versión inalámbrica porque es más fácil de ocultar y menos apreciable: no vemos el cable negro largo; son todas las cosas que necesitamos para nuestro Comando Retro Cubículo. También puede evitar el coste de la tarjeta de audio USB. Aunque, ¿quién quiere jugar a juegos sin sonido? El adaptador WiFi también es opcional si no tienes pensado navegar por la red WiFi de la cafetería más cercano, de lo contrario, es un complemento perfecto para nuestra sigilosa consola de juegos retro. Muy bien, vamos a ponernos manos a la obra.

Configurar el audio

Lo primero es lo primero, desactivemos el modo de pantalla completa en retroarch. Inicia retroarch, si es necesario, navega hasta la sección Drivers y desplázate hacia abajo hasta la opción Video, continua hacia abajo hasta la opción Start in Fullscreen Mode y desactívala. Usa este mismo proceso y vuelva a activarla cuando hayamos terminado de configurar retroarch. La siguiente captura de pantalla muestra la configuración que debemos aplicar.

A continuación, dirígete a la sección Drivers del sistema de menús y seleccione la opción Audio. Cambia la opción Audio Driver a alsa. Desplázate hacia abajo y busca la opción Device. Asegúrate de dejar la configuración en su valor original. Usa la navegación izquierda y derecha para hojear los dispositivos de audio que hay disponibles. Nota: Si no puede seleccionar ningún dispositivo, salte de retroarch, reinícialo e intente hojear de nuevo los dispositivos de audio disponibles. Añadiremos los cambios en el archivo de configuración a mano, de modo que esta parte no es la más importante.

Si tienes problemas para que aparezca el hardware de audio en retroarch, salte de retroarch y abre un terminal desde la ubicación del menú Applications -> System Tools -> MATE Terminal. Introduce el siguiente comando, aplay -L, deberías ver algo similar a lo que se muestra a continuación.

Deberías ver una entrada similar a esta, hw:CARD=ODROIDHDMI, DEV=0, y tras conectar el adaptador de audio USB, otra entrada similar a esta, front:CARD=Device,DEV=0. Haz una copia de estas cadenas y guárdalas en un archivo temporal. Ejecuta los siguientes comandos desde el terminal en el directorio de inicio de odroid, es decir, el directorio por defecto.

$ cp .config/retroarch/retroarch.cfg .config/retroarch/retroarch.cfg.Orig
$ cp .config/retroarch/retroarch.cfg .config/retroarch/retroarch.cfg.VgaAudio
$ cp .config/retroarch/retroarch.cfg .config/retroarch/retroarch.cfg.HdmiAudio
Estamos haciendo una copia de seguridad del actual archivo de configuración de retroarch y dos copias que podemos usar con scripts para alterar la configuración del audio. Una vez que los comandos terminen de ejecutarse, abre retroarch.cfg.VgaAudio usando tu editor CLI favorito, yo usaré nano.
$ nano .config/retroarch/retroarch.cfg.VgaAudio
Desplázate hacia abajo hasta la línea que tiene la configuración del dispositivo de audio. Cambia el valor de esta configuración por front:CARD=Device,DEV=0. Repite estos pasos con el archivo retroarch.cfg.HdmiAudio, en este archivo introduce hw:CARD=ODROIDHDMI,DEV=0 para el valor del dispositivo de audio.

Una vez realizados estos cambios, escribe algunos scripts que utilizarán los archivos que acabamos de crear. Usa tu editor favorito para crear los siguientes archivos.

#!/bin/bash
#set_hdmi_audio
$ cp /home/odroid/.config/retroarch/reroarch.cfg.HdmiAudio 
/home/odroid/.config/retroarch/reroarch.cfg
#!/bin/bash
#set_vga_audio
$ cp /home/odroid/.config/retroarch/reroarch.cfg.VgaAudio 
/home/odroid/.config/retroarch/reroarch.cfg
Fijemos los permisos adecuados para estos archivos. Ejecuta los siguientes comandos en la terminal.
$ sudo chmod 755 set_vga_audio set_hdmi_audio
$ sudo chmod +x set_vga_audio set_hdmi_audio
Ejecuta el script set_vga_audio que acabas de crear y prepárate para probar tu consola de juegos retro en una pantalla VGA con adaptador de audio USB. Inicia retroarch y comprueba la configuración del dispositivo.

¡Ejecuta un juego con los auriculares puestos y experimenta con disimulo los juegos retro que puedes disfrutar en tu escritorio! Nota: ¡No olvide restaurar la toda configuración de pantalla en todas las copias de los archivos de configuración de retroarch, incluso en las nuevas que haya creado! Simplemente usa Ctrl + W y escribe en pantalla completa para localizar la entrada, fija su valor en "on" si está "off". Haz esto con todas las copias del archivo de configuración.

Una configuración del Comando Cubículo un poco menos sigilosa, pero igualmente funcional.

Configurar el mando

Supongo que el mando inalámbrico GameSir no lo has configurado previamente para tu consola de juegos retro. La siguiente sección te ayudará a configurar un nuevo mando para un dispositivo Monku Retro 1, 2, 3 (ODROID-C1 +, -C2, -XU4). Vamos a configurar Antimicro para que podamos empezar a controlar el entorno de escritorio con el gamepad. Abre una terminal, no indicaré la ruta del menú a partir de ahora. Escribe antimicro en la terminal y espera a que se inicie la aplicación. Conecta tu mando compatible con Linux y asegúrate de que antimicro lo reconozca. Si no funciona, deberías probar con otro mando. Haz clic en el botón Controller Mapping en la esquina inferior izquierda de la IU. Aquí es donde le cuentas a antimicro la funcionalidad básica de tu mando. Si no tiene un botón para una posición específica de la lista, por ejemplo, Linux parece ignorar el botón central azul en los mandos GameSir, usa tu ratón para hacer clic en la siguiente opción viable. Empareja los botones del mando con el indicador de botón verde del gráfico del mando.

Nota: Algunos botones, como los disparadores, se disparan varias veces y tendrá que usar el ratón para hacer una copia de seguridad de la posición del mapeo y corregir la doble entrada. Haga clic en “sabe” cuando haya terminado y regresa a la interfaz de usuario principal de antimicro.

Verás un nuevo mapeo en la IU principal de antimicro que contiene botones para todas las nuevas asignaciones que acaba de crar. Lo que vamos a hacer ahora es activar la compatibilidad con el ratón para que puedas controlar el entorno de escritorio desde el gamepad cuando no se ejecute retroarch. Usaremos el joystick izquierdo para controlar el ratón de forma más pausada y precisa y el joystick derecho para controlarlo con mayor rapidez. Los botones A y B serán los botones izquierdo y derecho del ratón. Haz clic derecho en el área de la barra izquierda y selecciona el ratón normal de la lista de opciones.

Vuelve a hacer clic en los botones del area izquierda y localiza el botón Mouse Settings en la parte inferior de la ventana. La imagen de arriba muestra el botón que estamos buscando. En la ventana de configuración del ratón, configura la Velocidad horizontal y la Velocidad vertical en 10 para el joystick izquierdo tal y como se muestra a continuación.

Haz lo mismo con el joystick derecho, pero en este caso fija la Velocidad horizontal y la Velocidad vertical en 30 como se muestra a continuación.

Ahora, asignaremos los botones del ratón, cierre todos los cuadros de diálogo y regresamos a la IU principal de antimicro. Localiza el botón A en la lista de botones debajo de la lista de miniaturas y dpad. Haz clic en él y luego en la pestaña Mouse. Selecciona el botón izquierdo del ratón. Haz lo mismo para el botón B, pero en este caso elije el botón derecho del ratón para esa asignación. A continuación, se muestra una captura de pantalla que muestra la asignación del botón izquierdo del ratón en la práctica.

Pruébalo mientras la IU principal de antimicro está abierta. Deberías ver que el ratón se mueve por la pantalla cuando las listas de botones en la IU de antimicro se vuelven azules para indicar que están activos. Experimenta cómo se siente, ajusta las velocidades de los controles del ratón como mejor te parezca.

Cuando estés listo para volver a la interfaz de usuario principal de antimicro, haz clic en el botón Save As en la parte superior derecha de la pantalla. Guarda la configuración del mando como game_sir_wired.xml o como quieras nombrar tu mando dentro del directorio de inicio de ODROID tal y como se muestra a continuación. Aquí tienes una copia de mi archivo XML (http://middlemind.net/images/products/monku_r1_build/gs3w.xml) por si está utilizando un mando GameSir, puedes usarlo y así ahorrar algo de tiempo. Si está utilizando un controlador Easy SMX, usa este archivo (http://middlemind.net/images/products/monku_r1_build/easySmx.xml).

Haga clic en Options -> Settings en el menú antimicro y asegúrate de que solo esté marcados Close To Tray y Launch In Tray. Esto nos permite que antimicro se mantenga activo en la bandeja de aplicaciones y no sature nuestra pantalla. ¡Tenemos una configuración más que ajustar y luego terminaremos con antimicro y retroarch!

Estando todavía en la ventana de configuración de antimicro, haz clic en la opción Auto Profile de la izquierda. Esto determina qué perfil se asociará automáticamente cuando se conecte el gamepad. Solo tienes un mapeo. Sería genial si tuvieras diferentes opciones para diferentes hardware, pero hasta dónde puede llegar, solo lo estás configurando para el único mando que tienes. Haz clic en la casilla de verificación Active en la parte superior de la ventana. Luego selecciona la fila Default en la tabla. Haz clic en el botón Edit y busca el archivo XML de asignación del mando que guardaste anteriormente. Haz clic en Ok, luego salte de antimicro. Si aparece en la bandeja del sistema, haz clic en el icono del mando en la bandeja del sistema y salte de la aplicación. ¡Fantástico! ¡Hemos terminado con la configuración antimicro!

 

A continuación, vamos a poner a trabajar retroarch. Inicia retroarch desde el sistema de menús, no mencionaré la ruta del menú desde este aquí en adelante. Primero, hagamos que el gamepad funcione en retroarch. En retroarch, puedes usar las teclas de flecha, intro y retroceso del teclado para navegar por el sistema de menús sin el gamepad. Asegúrate de tener un ratón, teclado y mando del juego conectados a tu ODROID. Lo primero que haremos es hacer que funcione el mando. Usa las flechas en el teclado para desplazarte hasta la sección Settings, luego baja hasta a la sección Input tal y como se muestra a continuación.

Ajusta la configuración en esta pantalla tal y como se ve a continuación. Por lo general, yo configuro el número máximo de mandos en 4 ya que hay 4 puertos USB. Y me gusta la configuración del combo "L1 + R1 + Start + Select" del gamepad. Seamos realistas, si accidentalmente golpeas esta combinación durante el juego, algo no irá bien. Deja la configuración restante y desplázate hacia abajo hasta User 1 Binds. Deberás configurar cada entrada de usuario de esta forma, no es tan lamentable y solo te llevará un minuto. Consejo: asigna los botones A y B por nombre, no por posición. Si estás utilizando un mando GameSir, los colores verde y rojo se asignan al botón positivo/seleccionar, negativo/atrás. Simplemente es lo que me gusta a mí, ¡Aunque tú puedes asignar los botones como mejor te parezca!

Perfecto, esto es todo lo que necesitas hacer para usar tu nuevo mando inalámbrico. El sistema de juego sigiloso está a la vuelta de la esquina.

Configuración del adaptador WiFi USB

Conecta el adaptador WiFi USB a tu dispositivo ODROID configurado como consola de juegos Monku Retro o, de lo contrario, ejecuta Ubuntu y MATE. En la esquina superior derecha de la pantalla del escritorio, después de cerrar retroarch, si fuera necesario, debería ver un icono de red, haga clic en él. Usa las opciones del menú para agregar una nueva red inalámbrica para que pueda navegar por la web cuando no estés jugando.

Bueno, con esto concluimos este tutorial. Espero que hayas disfrutado. ¡Ahora vete a pasar horas sigilosas de juego retro dentro de tu cubículo!

Referencias

http://middlemind.net/tutorials/odroid_go/mr1_build.html http://middlemind.net/tutorials/odroid_go/mr3_build.html https://amzn.to/2m3QWii https://amzn.to/2m8BnWs https://bit.ly/2kWBbcP https://bit.ly/2JxEu4V http://middlemind.net/tutorials/odroid_go/5mf_mr1_cc.html

Simples Actualizaciones del Estado por Mensajes de Texto SMS de tu Sistema de Monitorización Remota CloudShell2

Existe una nueva versión de la herramienta de información y monitorización Cloudshell2, versión 1.0.4-1. Las siguientes son algunas de sus nuevas características:

  • Agrega soporte GSM a través del dispositivo USB2UART
  • Incorpora un nuevo switch de línea de comando para identificar un disco duro defectuoso con mayor facilidad (experimental)

Soporte GSM

Figura 01

Figura 02

La imagen de arriba muestra cómo conecté el dispositivo GSM a mi ODROID-XU4, la imagen también muestra un Arduino Nano que es simplemente una sugerencia, ya que son muy baratos y su sucesor (Arduino Nano Every) cuesta tan solo 8€ con un microprocesador más potente, por supuesto, podría usar cualquier dispositivo USB2UART (ve enlace más abajo), pero muchos de vosotros poseeréis quizás un Arduino, así que también podríais usarlo, cada Arduino también debería tener un modo tristado en el que poder iniciar Arduino con RST y GND conectados el uno al otro. Sería como un puente desde USB al pin 0 y 1. Si esto no te funciona, al igual que a mí, debes usar un boceto/fuente como el de este ejemplo (https://bit.ly/2kxFxaf). Omite el resultado en texto, usa la misma velocidad en baudios para el hardware y software en serie y debería funcionar.

Aquí tienes un enlace con más instrucciones sobre qué conector debe usar para comunicarse con el dispositivo GSM:  https://bit.ly/2kXcxZD. Por cierto, yo utilicé este https://bit.ly/2kqkbLI para conectar los 5V a mi dispositivo GSM, dependiendo del qué tú utilices, esto podría ser totalmente diferente, la conexión de la fuente de alimentación externa, etc.

Antes de conectar cualquier cosa, debe configurar el dispositivo GSM en tu PC/Laptop / ODROID con minicom minicom -b 115200 -D/dev/ttyUSB0 o si deseas hacerlo en Windows puede usar mi herramienta (SerialLogger) que escribí en 2013. Se entrega con el paquete debian y puede encontrarla dentro de la carpeta /usr/share/doc/cloudshell2-tracking/. Es una aplicación de 64 bits, si desea una compilación de 32 bits o para Windows XP, por favor pregunta.

Figura 03 - Serial Logger

Si la comunicación funciona, debes deshabilitar el PIN de su tarjeta SIM con este comando AT+CLCK="SC", 0, "1234" (1234 debe intercambiarse con tu PIN) y configurar otros ajustes sobre tu banda de red. Ya deberías poder enviar y recibir SMS con tu dispositivo (también se recomienda ajustar la velocidad de transmisión fija en lugar de auto en tu dispositivo GSM).

Ahora puedes configurar el dispositivo GSM dentro del archivo de configuración /etc/cloudshell2-monitoring/cloudshell2-monitoring.conf, con tu número de teléfono para enviar SMS, nick, nombre del puerto y velocidad de transmisión.

Nota: No he comprobado la intensidad de la señal ni si el dispositivo GSM se conecta a un proveedor de red, debes tener una buena cobertura y debe estar seleccionada la banda de frecuencia correcta y la selección de red en automático.

Si todo funciona y tu PIN está deshabilitado y tu dispositivo GSM está conectado a tu ODROID-XU4, debes reiniciar la herramienta de monitoreo cloudshell2 sudo systemctl restart cloudshell2-monitoring.service y puedes comprobar si el dispositivo GSM fue detectado con:

odroid@odroidxu4:~/CloudShell2$ sudo systemctl status cloudshell2-monitoring.service
● cloudshell2-monitoring.service - "ODROID Cloudshell2 Monitoring"
   Loaded: loaded (/lib/systemd/system/cloudshell2-monitoring.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-09-12 18:05:17 CEST; 5s ago
 Main PID: 6137 (start-lcd)
   CGroup: /system.slice/cloudshell2-monitoring.service
           ├─6137 /bin/bash /usr/bin/start-lcd
           └─6141 /usr/bin/cloudshell2-monitoring

Sep 12 18:05:17 odroidxu4 systemd[1]: Started "ODROID Cloudshell2 Monitoring".
Sep 12 18:05:17 odroidxu4 start-lcd[6137]: Found GSM Shield
Sep 12 18:05:17 odroidxu4 start-lcd[6137]: GSM disable echo
Sep 12 18:05:17 odroidxu4 start-lcd[6137]: GSM shield command executed OK
Sep 12 18:05:17 odroidxu4 start-lcd[6137]: GSM enable live SMS
Sep 12 18:05:17 odroidxu4 start-lcd[6137]: GSM shield command executed OK
Sep 12 18:05:17 odroidxu4 start-lcd[6137]: GSM set SMS text mode
Sep 12 18:05:17 odroidxu4 start-lcd[6137]: GSM shield command executed OK
Si todo está bien, ahora puedes enviar mensajes SMS a tu CloudShell2 y tu CloudShell2 te informará automáticamente si algo va mal (error de RAID, temperatura elevada, etc.)

Figura 04 - Mensaje SMS iPhone

Los comandos válidos en el momento de la publicación incluyen (status, reboot, shutdown) con el Nick de tu cloudshell2 como prefijo (cs2 pro defecto), como en la imagen de arriba.

Referencias https://bit.ly/2mtQdr0

Monku R3: Desarrollando la Mejor Consola de Juegos ODROID-XU4/XU4Q - Parte 1

Requisitos

Herramientas:

  • Un reducido juego destornilladores que contiene pequeños destornilladores Phillips
  • Una superficie de trabajo limpia, libre de estática.
  • Monitor o TV con soporte HDMI para probar el dispositivo.
  • Software para grabar la imagen de la tarjeta SD compatible con Mac. Yo uso balenaEtcher, es gratis y funciona muy bien.
  • Software para grabar la tarjeta SD compatible con Windows. Yo uso Win32 Disk Imager, es gratis y funciona bien, aunque puede llegar a ser un poco ongorroso a la hora de utilizarlo con unidades muy grandes.

Elementos ODROID:

  • ODROID-XU4/ODROID-XU4Q x1
  • Una Carcasa
  • Dos Tarjetas Micro SD de 64GB
  • Un Cable HDMI
  • Una Fuente de Alimentación de 5V/4A
  • Un Mando GameSir conectado por cable
  • Un Módulo Wifi USB
  • Un Lector de tarejtas SD

El coste total del proyecto tal y como hemos descrito anteriormente y sin incluir el envío o las herramientas que no tienes es de alrededor de unos 94$. Si excluyes el mando para jugar o ya tienes uno, puedes ahorrar alrededor de unos 17$. Además, no necesitas tener dos tarjetas micro SD. A mí me gusta tener una de repuesto, por si alguna me da fallos, el precio es muy bueno por ambas tarjetas. Además, la tarjeta está bien valorada y, según mi experiencia personal, solo he tenido un fallo inesperado en 12 adquisiciones, así que las he estado utilizando regularmente en la configuración y desarrollo de estos dispositivos. Si dispones de un cable HDMI, un cable micro USB y un adaptador AC de 5V/4A de 5,5 mm, puedes ahorrar aún más en el coste de este proyecto. Entonces, aunque el precio indicado es de alrededor de unos 94$, probablemente pueda hacerlo por alrededor de unos 80$ si ya dispones de algunos componetnes. No está nada mal una vez que veas lo que puede llegar a hacer este dispositivo.

Introducción y Objetivos del Tutorial

Este tutorial cubre la configuración y la fabricación de la consola de juegos desde el punto de vista del hardware y del software. Ahora, a diferencia de la Monku Retro 1, 2, no añadiremos ningún botón de hardware especial. El ODROID-XU4 viene con un botón de reinicio integrado, así que esto ya lo tenemos. En cuanto al botón de control personalizado, no he logrado encontrar una buena ubicación para la actual carcasa. Sin embargo, este dispositivo es mucho más potente que el C1+ o incluso el C2 y también es bastante más fiable, así que de momento no agregaremos ninguno al R3. También no detendremos en la configuración del software, incluida la instalación y configuración de ubuntu, retroarch y antimicro. Echemos un vistazo a algunas de las características del dispositivo con el que vamos a trabajar, ¡Fíjate bien en la lista de emuladores soportados!

Caracteristicas R3/ODROID-XU4

  • ¡Calidad ODROID!
  • Botón de reinicio de hardware
  • Soporte para Atari 2600, Atari 5200, Atari 7800, Atari Jaguar, Atari Lynx, ColecoVision, Commodore64, MSX-1, MSX-2, NES, GameBoy, GameBoy Color, Virtual Boy, SNES, N64, GameBoy Advance, WonderSwan Pocket/Color, NEO GEO Pocket/Color, Sega SG-1000, Sega Mark 3, Sega Master System, Sega Genesis, Sega GameGear, Sega Dreamcast, NEC Turbo Graphics 16, NEC Super Graphics, PSP y emuladores PS1 configurados y listos para usar.
  • Retroarch con XBM, scripts personalizados para monitorizar el botón del software, iniciar retroarch, mantener antimicro.
  • Configurado para un bajo uso de memoria y para poder utilizar un mando conectado.
  • Control completo con el gamepad del entorno de escritorio Linux cuando no está en modo de quiosco de juego a través de antimicro.
  • Conectividad de red WiFi.

Echemos un vistazo al rendimiento de este dispositivo en comparación con otros dispositivos comunes.

Figura 01 - ODROID-XU4 vs otras placas.

El Hardware

Lo primero es lo primero, revisamos las herramientas y los componentes, las colocamos en su sitio y nos preparemos para el montaje. Nosotros disponemos de un juego de destornilladores electrónicos. Si has montado un ODROID-GO, te puede servir el mismo juego de destornilladores. Ten en cuenta que tenemos nuestro dispositivo, un ODROID-XU4 que se muestra a continuación, este tutorial se puede aplicar tanto a la versión ODROID-XU4 como a la versión ODROID-XU4Q de este dispositivo. Este dispositivo puede ejecutar casi todos los emuladores que se te ocurran y lo hace de maravilla. Tenemos nuestra placa, carcasa, tarjetas SD, módulo wifi USB y herramientas listas para ponernos manos a la obra.

Figura 02 – Elementos del Monku R3

Despeja tu espacio de trabajo y coge la carcasa, sácala de su bolsa de plástico si fuera necesario, colócala en el centro de tu espacio de trabajo. La carcasa tiene dos clips principales, por lo general, es más fácil trabajar con ellos que con los de la carcasa del C1+/C2. El primer clip está en el lado izquierdo de la parte inferior de la carcasa, cerca de la parte superior. El segundo clip está en el extremo superior de la parte inferior de la carcasa, cerca de la derecha. Puedes ver pequeños rectángulos cerca de estas áreas en la siguiente imagen.

Figura 03

Para retirar el primer clip, desplaza ligeramente la carcasa tal y como se muestra a continuación. Empuja ligeramente la parte inferior hacia la izquierda mientras empujas la parte superior hacia la derecha.

Figura 04

Una vez que se desprenda, gira la carcasa para que el otro clip se situe en la posición que se muestra a continuación. Aplica un poco de fuerza hasta que el clip se suelte. Debería soltarse fácilmente si lo haces bien. Usaremos la misma técnica para el segundo clip.

Figura 05

Una vez que separes la carcasa, encontrarás una sorpresa dentro. Una bolsita con pequeños tornillos. Si dispones de un ODROID-GO y tienes varios tornillos que te sobran, te recomiendo usarlos en lugar de los tornillos proporcionados. Ahora esto podría haber cambiado, pero en su momento los tornillos que incluía la carcasa eran algo más pequeños que los tornillos del ODROID-GO, descubrí que se trabaja mejor con los tornillos incluidos en el kit ODROID-GO. Vamos a presentar las herramientas y los componentes que necesitamos para armar la carcasa con la placa XU4 que debemos montar en su interior. No tienes que preocuparse por el acceso a la tarjeta SD, si has trabajado con la carcasa del C1+ o C2, se accede igualmente con la misma facilidad a la tarjeta SD.

Figura 06

Abre con cuidado la bolsa antiestática en la que viene el XU4. Asegúrate de no tener una carga estática descargándose frente a algo grande y metálico. Teniendo en cuenta el diseño de la carcasa y de la placa, apoya la placa sobre la bolsa antiestática, vamos a situar la placa sobre la mitad inferior de la carcasa y colocar y apretar los 2 tornillos internos. La carcasa XU4 es similar a la carcasa del C1+/C2 en el hecho de que hay dos tornillos internos y 2 tornillos externos

Consejo: Asegúrate de apretar los tornillos, aunque no demasiado, suficiente con que queden ajustados.

Figura 07

Figura 08

Darle la vuelta a la carcasa, coloca y aprieta los dos tornillos externos. Si colocas la parte posterior de la carcasa mirando hacia ti, observarás un pequeño interruptor blanco. Mueve el interruptor para que esté más cerca del borde de la carcasa con la finalidad de usar la tarjeta SD, mueve el interruptor hacia el otro lado, más cerca del centro de la carcasa, para usar eMMC. Ya has terminado con el hardware. A continuación, vamos a trabajar con la tarjeta SD y la imagen del sistema operativo.

Figura 09

Figura 10

El Software

Para el siguiente paso vamos a localizar una imagen específica del sistema operativo Ubuntu. Probé algunas imágenes y realicé todo tipo de pruebas y llegué a la conclusión de que Ubuntu 16.04 LTS es la que ofrece mejor combinación de rendimiento, características y soporte. Dirígete a la wiki de Hardkernel. Localiza la entrada ODROID-XU4 en el lado derecho del sitio. Selecciónelo y luego pincha en os_images de la lista de opciones. Luego selecciona linux y ubuntu_4.9. Sé que es un kernel antiguo y ya no tiene soporte, quería ejecutarlo con un kernel un poco más antiguo con menos funciones, pero más eficiente. Puedes probar uno más reciente. Los pasos de configuración del software deben ser practicamente idénticos siempre que utilices MATE.

Figura 11

Yo suelo usar la copia de Corea del Sur la mayor parte del tiempo. Puedes usar cualquiera que te venga mejor. Localiza la entrada ubuntu-16.04.2-mate-odroid-xu4-20170510.img.xz o puedes usar este enlace directo https://tinyurl.com/y3oj4lr3.

Figura 12

Luego descomprime la imagen descargada del sistema operativo. Deberías terminar con una entrada de archivo llamada ubuntu-16.04.2-mate-odroid-xu4-20170510.img que tiene un tamaño de casi 5 GB. Ahora tienes que grabar en una tarjeta microSD la imagen del sistema operativo. En el listado de componentes anterior tienes un enlace a las tarjetas SD que yo uso actualmente. Para Apple MacOS, utilizo Balena Etcher. En Microsoft Windows, uso Win32 Disk Imager. Los usuarios de Linux pueden usar herramientas de CLI como dd.

En MacOS, instale Balena Etcher desde el enlace. Selecciona la imagen del sistema operativo sin comprimir que acabamos de descargar. Inserta tu tarjeta micro SD en tu Mac usando un convertidor de algún tipo, como el que hemos mencionados anteriormente. Asegúrate de seleccionar la unidad de destino adecuada. No desearas sobrescribir datos importantes, así que asegúrate de verificar la unidad correcta. Una vez que estés seguro de que todo está configurado correctamente, graba la imagen del sistema operativo a la tarjeta SD. Esto solo llevará unos minutos. La tarjeta SD se desmontará y estará lista para ser extraída al final del proceso.

Figura 13

Figura 14

En Windows, instale Win32 Disk Imager desde mi enlace. Selecciona la imagen del sistema operativo sin comprimir que acabamos de descargar. Si tienes problemas para descomprimir la imagen del sistema operativo, intenta usar 7-Zip. Me ha sido muy útil en el pasado.

AVISO: asegúrate de verificar tres veces la letra de la unidad de destino. Es muy fácil en Windows, usando este software, seleccionar la unidad incorrecta y arruinar Tu PC. Por lo tanto, verifícalo bien y asegúrate de tener seleccionada la letra de unidad correcta. Una vez hecho esto, haga clic en el botón Write para escribir la imagen del sistema operativo en la tarjeta SD. Espera unos minutos y deja que se complete. Deberás desmontar la tarjeta SD antes de retirarla del ordenador.

Figura 15

En Linux, usa el siguiente comando para listar las unidades del sistema.

$ sudo fdisk -l
Busca una entrada como la siguiente. Asegúrate de haber identificado la unidad correcta expulsando la tarjeta SD y verificando que la entrada ya no esté disponible.

AVISO: Ten cuidado y tomate el tiempo que necesites para identificar correctamente el dispositivo Linux o podrías terminar sobrescribiendo una de tus unidades.

Device Boot Start End Sectors Size Id Type
/dev/sda1 8192 30253055 30244864 14.4G c W95 FAT32 (LBA)
Para restaurar una imagen en una unidad utilizando el terminal en un sistema Linux Ubuntu, usa el siguiente comando:
$ sudo dd of=/dev/sda1 if=~/ubuntu-16.04.2-mate-odroid-xu4-20170510.img
Espera unos minutos a que finalice el proceso y aparecerá un informe del resultado en el terminal. ¡Ahora tienes una tarjeta SD lista para usar en tu ODROID-XU4!

Actualizaciones de Software, Tamaños de Partición y Mucho Más

Lo primero es lo primero: eliminemos ese molesto mensaje de inicio de sesión. Si tu dispositivo tiene problemas con el USB al arrancar, simplemente reinícialo. Sin embargo, diría te que uses mejor los botones de control del software una vez que todo esté configurado y nunca utilices el botón de encendido del hardware a menos que lo vuelva a encender. Para el resto del tutorial, debes tener un teclado y un ratón conectados al dispositivo. Si te diriges a la siguiente ubicación del menú Applications -> System Tools -> MATE Terminal, se abrirá una ventana de terminal.

Figura 16

Vamos a ejecutar una serie de comandos en el terminal. Voy a enumerarlos a continuación. Algunos tardan un tiempo en ejecutarse, es posible que tengas estar cerca de la pantalla para que respondas a alguna pregunta durante instalación. Vamos a configurar el inicio de sesión automático, actualizar Ubuntu e instalar algunos paquetes.

Escribe este comando o cópialo y pégalo en la ventana del terminal.

$ sudo nano /usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greeter.conf
Se te pedirá la contraseña, usa odroid. Verás un texto como este en el archivo.
[Seat:*]
greeter-session=lightdm-gtk-greeter
Añade una línea en la parte inferior, autologin-user=odroid, y luego guarda y cierra el archivo. Presione Ctrl + O y luego presiona Intro para guardar el archivo. Presione Ctrl + X y luego presione Intro para salir del editor. No se te pedirá que inicies sesión la próxima vez que reinicies.

A continuación, actualizaremos los paquetes del sistema operativo e instalaremos algunas cosas. Esta parte lleva algo de tiempo, pero, en su mayor parte, se ejecuta sola. Introduce y ejecuta cada uno de estos comandos en el orden que se muestra a continuación desde la ventana del terminal.

$ sudo apt-get update -y
Si recibes un mensaje boot.ini para este comando, simplemente presione Intro.
$ sudo apt-get upgrade -y
$ sudo apt-get install git -y
$ sudo apt-get install gparted -y
$ sudo apt-get install make -y
$ sudo apt-get install cmake -y
$ sudo apt-get autoremove -y
Ahora que todo eso está hecho, el sistema está empezando a mejorar un poco. Lo siguiente que vamos a hacer es desactivar cualquier espacio de intercambio que esté usando el sistema operativo. Se cree que las particiones de intercambio degradan la tarjeta SD, que están pensadas para que soporten un determinado número de operaciones de lectura/escritura antes de que empiecen a fallar. Hasta ahora lo he estado deshabilitando sin un impacto notable en el rendimiento. Ejecuta el siguiente comando en la terminal.
$ swapon -s
Si ves un resultado similar al siguiente, entonces es que tiene habilitado zram. Sigue los pasos que se detallan a continuación para apagarlo y eliminarlo.
$ swapon -s
Filename Type Size Used Priority
/dev/zram0 partition 219824 2080 5
/dev/zram1 partition 219824 2076 5
/dev/zram2 partition 219824 2076 5
/dev/zram3 partition 219824 2076 5
Básicamente lo que queremos es deshabilitar estas particiones de intercambio para que nuestra tarjeta SD dure tanto como sea posible. Ejecuta el siguiente comando. El ODROID-XU4 creo que no tiene una partición de intercambio por defecto.
$ sudo apt-get remove --purge zram-config -y
Si observas una partición de intercambio estándar en la lista, sigue estos pasos para eliminar y deshabilitar la partición de intercambio.
$ swapoff -a
Esto desactivará inmediatamente el intercambio en el sistema. Luego, elimina las entradas de intercambio de /etc/fstab editando el archivo como root y comentando las entradas de la partición de intercambio. Reinicia el sistema. Si, por algún motivo, la partición de intercambio todavía sigue estando abierta, gparted, System -> Administration -> GParted. Localiza la partición en la lista de particiones activas y desmontala, luego elimina la partición.

A continuación, ejecutaremos una actualización de software MATE navegando hasta System -> Administration -> Software Update en el sistema de menús.

AVISO: si te solicita realizar una actualización parcial, omite este paso. Vamos trabajar con los paquetes que hemos instalado. He notado que en algunos casos los paquetes pueden descontrolarse. Yo simplemente continuaría con la actualización, si no aparece el cuadro de diálogo de Actualización Parcial.

Si no te aparece la solicitud de actualización parcial, haga clic en el botón Update, espera un poco mientras se muestra lentamente un cuadro de diálogo con una barra de progreso y se realizan las actualizaciones. Al final del proceso, se te pedirá que reinicie el sistema.

Figura 17

Observa como ahora no aparece el cuadro de dialogo de inicio de sesión cuando arranca el sistema. Se parece cada vez más a una consola de juegos retro por minutos. De acuerdo, lo último que vamos a hacer es cambiar el tamaño de la partición principal para usar todo el espacio disponible. Si vas a System -> Administration -> GParted en el sistema de menús, debería ver algo como lo que se muestra a continuación. Ten en cuenta que hay alrededor de 50 GB de espacio no utilizado. Si tiene menos espacio sin usar, pero sigues teniendo espacio en la tarjeta SD, deberías cambiar el tamaño de tu partición root.

Figura 18

Te hare un resumen rápido del proceso.

AVISO: Es posible que no necesites hacer esto, pero deberías comprobarlo de todos modos. La mejor manera de trabajar en nuestro ODROID-XU4 es con un sistema de archivos ext4. Usa la segunda tarjeta SD que viene en la lista de compras recomendadas de hardware. Escribe la imagen del sistema operativo base en la SD como lo hemos hecho anteriormente e instala gparted, también como lo hicimos anteriormente. No tiene que ejecutar todas las actualizaciones, solo asegúrese de que gparted esté instalado. Usa el adaptador SD a USB, que hemos mencionado, para montar la tarjeta SD y redimensionar sus particiones en el sistema operativo. Debería ver aparecer un pequeño icono de unidad, lo llamaremos SD-USB para SD a USB.

Enciende la tarjeta SD Ubuntu básica si aún no lo ha hecho. Inicia gparted desde el menú System -> Administration -> GParted y selecciona la tarjeta SD-USB conectada, no el sistema de archivos root que ejecuta Ubuntu.

Figura 19

Selecciona el sistema de archivos root en la tarjeta SD-USB. Haz clic derecho sobre él y dirigete a la opción de cambio de tamaño si recibes un error, es posible que tengas que desmontar esta partición y luego intentar cambiar el tamaño. Puedes cambiar el tamaño de la partición arrastrando la flecha hasta la derecha o configurando los campos del formulario para que tenga 0 espacio libre. Hemos terminado con esta sección.

Figura 20

Instalación Retroarch y Antimicro

Bien, ya estamos llegando a alguna parte. Instalemos retroarch y antimicro para que podamos empezar con el proceso de configuración. Para instalar retroarch necesitamos abrir una terminal, Applications -> System Tools -> MATE Terminal.

$ sudo add-apt-repository ppa:libretro/stable && sudo apt-get update -y && sudo apt-get install retroarch* libretro-* -y
Prueba el comando anterior en el ODROID-XU4, presiona Intro si se te solicita, e Y si se te solicita tambien. Si falla, no te preocupes. He observado que falla en el ODROID-C2, pero no estoy seguro si también lo hace en el ODROID-C1+: los * en las listas de paquetes son los culpables. Se copian algunos paquetes que tienen problemas de dependencia y luego detiene todo el comando. Si falla, intenta ejecutar este comando en su lugar.
$ sudo apt-get install retroarch retroarch-assets retroarch-dbg libretro-beetle-lynx libretro-genesisplusgx libretro-handy libretro-4do libretro-bsnes-mercury-performance libretro-bsnes-mercury-accuracy libretro-bsnes-performance libretro-beetle-wswan libretro-dinothawr libretro-beetle-ngp libretro-bsnes-balanced libretro-gambatte libretro-fbalpha2012 libretro-fba libretro-beetle-psx libretro-vba-next libretro-gw libretro-mupen64plus libretro-beetle-sgx libretro-2048 libretro-tyrquake libretro-beetle-pcfx libretro-prosystem libretro-bsnes-accuracy libretro-parallel-n64 libretro-picodrive libretro-mame libretro-nestopia libretro-mednafen-psx libretro-core-info libretro-gpsp libretro-mess libretro-beetle-pce-fast libretro-mgba libretro-fbalpha2012-neogeo libretro-fba-neogeo libretro-beetle-vb libretro-tgbdual libretro-fba-cps1 libretro-fba-cps2 libretro-fmsx libretro-stella libretro-yabause libretro-mess2014 libretro-mess2016 libretro-desmume libretro-beetle-bsnes libretro-glupen64 libretro-catsfc libretro-quicknes libretro-bsnes-mercury-balanced libretro-vbam libretro-bluemsx libretro-fceumm libretro-nxengine libretro-snes9x-next libretro-mame2014 libretro-mame2016 libretro-fbalpha2012-cps1 libretro-fbalpha2012-cps2 libretro-fbalpha2012-cps3 libretro-fbalpha libretro-snes9x libretro-prboom libretro-beetle-gba -y
Ok, si alguno de estos paquetes falla, elimínalo de la lista e intentalo nuevamente. El comando anterior es el comando exacto que uso en mis ODROID-C2. Para mis ODROID-XU4s, he estado usando el comando inicial mencionado anteriormente. Una vez hecho esto, realiza una pequeña actualización y limpieza.
$ sudo apt-get update -y
$ sudo apt-get upgrade -y
$ sudo apt-get autoremove -y
Ahora deberías tener esta opción de menú disponible tras haberse ejecutado los comandos, Applications -> Games -> Retroarch. Haz clic en él y debería ver algo similar a lo que se muestra a continuación.

Figura 21

No experimentes con retroarch aún, volveremos a él mas adelante. A continuación, tenemos que instalar antimicro para poder controlarlo todo con un gamepad cuando retroarch no se esté ejecutando. Dirígete a esta URL, https://github.com/AntiMicro/antimicro/releases y descargate la última versión como un archivo zip. Deberías verlo debajo de las entradas de Windows EXE. Una vez que haya terminado la descarga, abre la carpeta de inicio de ODROID. Hay un acceso directo en el escritorio para ello. Crea una nueva carpeta llamada install_zips como se muestra a continuación.

Figura 22

Ahora dirígete a la carpeta de descargas y copia el archivo zip antimicro desde allí y pégalo en la carpeta install_zips. Haz clic derecho sobre él y selecciona Extract Here

Figura 23

Ahora abra un terminal desde Applications -> System Tools -> MATE Terminal, y ejecuta los siguientes comandos. Si tu carpeta antimicro, después de extraer el archivo, tiene un nombre diferente, usa ese nombre en el comando para cambiar de directorio a continuación.

$ cd install_zips/antimicro-2.23/
$ sudo apt-get install libsdl2-dev -y
$ sudo apt-get install qttools5-dev -y
$ sudo apt-get install qttools5-dev-tools -y
$ sudo apt-get install libxtst-dev -y
Una vez que todos los paquetes estén instalados, podemos compilar antimicro sin ningún error. Ejecuta los siguientes comandos.
$ cmake .
$ sudo make
$ sudo make install
Deberías ver algo como lo siguiente durante este proceso.

Figura 24

Una vez hecho esto, prueba antimicro, escribiendo run antimicro en el terminal. Si todo está bien, debería ver algo como lo que se muestra a continuación.

Figura 25

Conecta un mando de juegos compatible con Linux. Hardkernel tiene el mejor precio que he visto para los mandos GameSir. Por lo tanto, si te haces con un algun ODROID-GO u otro hardware, coge uno de estos mandos con cable GameSir. Inicia Applications -> Games -> RetroArch y debería ver un gran texto amarillo parpadeando en la parte inferior de la pantalla, mira de cerca. Algunas versiones del mando han tenido un comportamiento raro, pero no he tenido problemas. Cierra retroarch. Ahora escribe en la ventana de terminal el comando antimicro. Debería ver algo similar a lo que se muestra a continuación con un mando correctamente detectado.

Figura 26

A continuación, vamos a configurar antimicro y retroarch.

Configuración Retroarch y Antimicro

Primero configura Antimicro para que podamos empezar a controlar el entorno de escritorio con el gamepad. Abre un terminal, no enumeraré la ruta del menú desde aqui en adelante. Escribe antimicro en la terminal y espera a que se inicie la aplicación. Conecta tu mando compatible con Linux y asegúrate de que antimicro lo reconozca. Si no es así, deberás probar con otro mando.

Haz clic en el botón Controller Mapping en la esquina inferior izquierda de la IU. Aquí es donde le hablas a antimicro de la funcionalidad básica de tu mando. Si no tienes un botón para una posición específica de la lista, por ejemplo, Linux parece ignorar el botón central azul de los mandos GameSir, usa tu ratón para hacer clic en la siguiente opción viable. Empareja los botones del gamepad con el indicador de botón verde del gráfico del mando.

AVISO: Algunos botones actúan como disparadores y se disparan varias veces. Usa el ratón para hacer una copia de seguridad de la posición del mapeo y corregir la doble entrada. Haz clic en guardar cuando haya terminado y regresa a la interfaz de usuario principal de antimicro.

Figura 27

Verás una nueva asignación en la IU antimicro principal que contiene botones para todas las nuevas asignaciones que acabas de crear. Lo que vamos a hacer aquí es activar la compatibilidad con el ratón para que puedas controlar el entorno de escritorio desde el gamepad cuando no se ejecute retroarch. Utilizaremos el joystick izquierdo para un control preciso y más lento del ratón y el joystick derecho para un control más rápido y tosco del ratón. Los botones A y B serán los botones izquierdo y derecho del ratón. Haz clic derecho en el área izquierda del joystick y selecciona mouse (normal) de la lista de opciones.

Figura 28

Haz clic en el pulgar izquierdo, marca nuevamente los botones y busca el botón Mouse Settings en la parte inferior de la ventana. La imagen de arriba muestra el botón. En la ventana de configuración del ratón, configura la Velocidad horizontal y vertical en 10 para el joystick izquierdo tal y como se muestra a continuación.

Figura 29

Haz lo mismo con el joystick derecho, excepto que ahora ajustaras la Velocidad horizontal y la vertical en 30 tal y como se muestra a continuación.

Figura 30

Ahora, asignaremos los botones del ratón, cierre todos los cuadros de diálogo y regresa a la IU principal de antimicro. Busca el botón A en la lista de botones debajo de la lista de miniaturas y dpad. Haz clic en él y luego en la pestaña Mouse. Seleccione el botón izquierdo del ratón. Haz lo mismo para el botón B, excepto que seleccionas el botón derecho del ratón para esa asignación. A continuación, se muestra una captura de pantalla que muestra la asignación del botón izquierdo del ratón en acción.

Figura 31

Figura 32

Pruébalo mientras la IU principal de antimicro está abierta. Deberías ver que el ratón se mueve por la pantalla cuando las listas de botones en la IU antimicro se vuelven azules para indicar que están activos. Ajusta las velocidades de los controles del raton de acuerdo con tus preferencias personales.

Figura 33

Cuando esté todo listo, regresa a la interfaz de usuario principal antimicro y haz clic en el botón Save As en la parte superior derecha de la pantalla. Guarda la configuración del controlador como game_sir_wired.xml o como quieras nombrar a tu mando dentro del directorio de inicio de odroid tal y como se muestra a continuación.

Figura 34

Haga clic en Options -> Settings en el menú antimicro y asegúrate de que solo esté marcado Close To Tray and Launch In Tray. Esto asegurará que antimicro se quede activo en la bandeja de aplicaciones y no sature nuestra pantalla. ¡Tenemos que ajustar una configuración más y luego terminaremos con antimicro y retroarch!

Figura 35

Mientras que todavía estás en la ventana de configuración de antimicro, haz clic en la opción Auto Profile a la izquierda. Esto determinará qué perfil se asociará automáticamente con el gamepad conectado. Solo tienes un mapeo. Haz clic en la casilla de verificación Active en la parte superior de la ventana. Luego seleccione la fila por defecto en la tabla. Haga clic en el botón Edit y busca el archivo XML de asignación del mando que guardaste unos pasos atrás. Haga clic en Ok y luego salte de antimicro, si aparece en la bandeja del sistema, haz clic en el icono del mando en la bandeja y salte de la aplicación. ¡Hemos terminado con la configuración de antimicro!

Figura 36

Figura 37

Figura 38

A continuación, inicia retroarch desde el sistema de menús, no enumeraré la ruta del menú de aqui en adelante. Primero, dejemos que el gamepad funcione en retroarch. En retroarch, puede usar las teclas de flecha, intro y retroceso para navegar por el sistema de menús sin el gamepad. Asegúrate de tener un ratón, teclado y mando de juego conectados a tu ODROID. Lo primero que haremos es hacer que funcione el mando. Usa las flechas en el teclado para navegar a la izquierda a la sección de Configuración, luego baja a la sección Input tal y como se muestra a continuación.

Figura 39

Ajusta la configuración en esta pantalla tal y como se observa a continuación. Por lo general, yo suelo configurar el número máximo de mandos en 4 ya que hay 4 puertos USB. Me gusta el combo de menú "L1 + R1 + Inicio + Seleccionar" del Gamepad. Deja la configuración restante y desplázate hacia abajo hasta User 1 Binds. Deberá configurar cada entrada del usuario.

Consejo: asigna los botones A y B por nombre, no por posición. Si estás utilizando un mando GameSir, asigna los colores verde y rojo al uso del botón positivo/seleccionar, negativo/atrás. Es justo lo que a mi me gusta, ¡puedes asignarlos como quieras!

Figura 40

Figura 41

El siguiente paso lleva un poco de tiempo, pero requiere muy poco trabajo por tu parte. Solo tiene que hacer clic en algunas cosas y esperar a que se completen. Vuelve al Menú principal, que es la primera sección con la que se inicia retroarch. Asegúrate de estar conectado a internet. Desplazate hacia abajo hasta Content Updater y abre esta sección.

Figura 42

Normalmente yo ejecuto cada opción en orden. Prueba primero la opción Core Updater.

Consejo: Puedes que tenga que iniciar retroarch desde el terminal: sudo retroarch; al actualizar archivos principales. Si ejecutas retroarch con un -v para que te muestre un resultado detallado y observas un mensaje de error durante la ejecución del comando Core Update, debe cerrar retroarch y reiniciarlo con el comando sudo.

A continuación, dirigete Thumbnails Updater, esta parte puede llevar un tiempo, selecciona cada sistema para el que tienes pensado cargar ROM. Resiste el impulso de hacer clic en un montón sobre una fila. Yo lo he hecho y puede bloquear la aplicación o ralentizar cada proceso individual, ya que todos compiten por los recursos del sistema. Lo mejor es dejar pasar una exploración y luego seguir adelante.

Consejo: hay algunos juegos únicos para los que puedes obtener miniaturas desde aquí, como DOOM Demo, Cave Story y Dinothawr. Podrás cargar estos juegos desde Content Downloader.

Figura 43

A continuación, salte de la sección Thumbnail Updater con la tecla de retroceso. Desplázate hacia abajo hasta Content Downloader y descargate cualquier contenido especial que desees de la lista.

Consejo: Si ves una pantalla que no tiene opciones, espere un minuto, retroce y vuelve a esa sección. Es posible que no haya terminado de descargarse el índice de opciones disponibles. Por lo general, no instalo los juegos únicos, pero este es el lugar para ello. Creo que puedes ignorar la mayor parte del contenido, aunque la decisión es tuya. Ejecuta la siguiente lista de actualizaciones de una en una.

  • Update Core Info Files
  • Update Assets
  • Update Joypad Profiles
  • Update Cheats
  • Update Databases
  • Update Overlays
  • Update GLSL Shaders
  • Update Slang Shaders

Cierra retroarch. A continuación, carga algunas ROM. Poseo una copia de Contra para el NES y tengo una versión en forma de ROM. Abre la carpeta de inicio de odroid usando el acceso directo que hay en el escritorio. Haz clic derecho en la carpeta y crea un nuevo directorio, asígnale el nombre de ROMS. Abre la carpeta ROMS y cree una nueva carpeta y asígnale el nombre NES. Obviamente, sustituirás la carpeta NES por cualquier otro sistema del que desees cargar ROM. No todos los sistemas son compatibles y algunos emuladores tienen advertencias sobre los archivos de BIOS que deben copiarse, etc. Muchos de los sistemas más antiguos son compatibles y se pueden agregar fácilmente. El ODROID-C1 + probablemente pueda manejar SNES y Genesis, pero me gusta usarlo para juegos de 8 bits. El ODROID-C2 sin lugar a duda tiene suficiente potencia para sistemas de 16 bits y me gusta usarlo para sistemas portátiles de 8 bits, 16 bits y el resto de sitemas.

Figura 44

Una vez que tenga todas tus ROM instaladas, podemos empezar a hablarle a retroarch de los archivos. Inicie retroarch y desplázate hacia la derecha hasta que veas la opción Scan Directory.

Figura 45

Navega hasta la carpeta ROMS, deberías ver una lista. Luego selecciona un sistema para escanearlo. Escanear grandes conjuntos de ROM puede llevar mucho tiempo. Una vez más, resiste el impulso de iniciar múltiples escaneos, las cosas irán mejor si dejas que se complete una operación antes de comenzar una nueva. En este caso, solo tenemos una ROM, Contra, asi que se completará el escaneo al instante.

Figura 46

Vuelva a salir de la sección Scan Directory y ahora deberías ver un pequeño mando NES en la lista de secciones. Desplázate hasta él y ahora debería ver Contra, o cualquier ROMS que intentaras cargar. Carga un juego seleccionándolo y luego seleccionando un emulador de destino. Tu juego debería cargarse.

Figura 47

Figura 48

Figura 49

Retroarch no reconocerá todas las ROM para cada sistema. También es posible que desees probar diferentes emuladores en ROM problemáticas. Eso es algo más avanzado y lo cubriré en el próximo tutorial donde lo resumiré todo.

Referencía

http://middlemind.com/tutorials/odroid_go/mr3_build.html