Kodi 18.2: Probando los Drivers mali gbm en una Imagen Mínima de Ubuntu 18.04

He compilado y desarrollado la versión 18.2 de Kodi a partir de los paquetes finales para hacer pruebas públicas. Lo más probable es que tenga suerte usando Kodi 18.2 con la imagen mínima. Te invito a probarlo.

El paquete incluye el complemento inputstream.adaptive que es necesario para ver material de vídeo protegido contra copia DRM. El paquete también incluye el complemento script.module.inputstreamhelper necesario para descargar libwidevinecdm.so. Los paquetes necesarios para que una instalación de Kodi funcione son kodi y kodi-bin, los clientes de eventos y el resto de paquetes no son necesarios, pero sí muy recomendables.

Ubuntu 18.04 minimal image link: https://odroid.in/ubuntu_18.04lts/ubuntu-18.04.1-4.14-minimal-odroid-xu4-20181203.img.xz

Kodi

$ wget https://www.areascout.at/kodi/kodi-addon-dev_18.2~git20190423.0531-f2643566d0-1~bionic_all.deb
$ wget https://www.areascout.at/kodi/kodi-bin_18.2~git20190423.0531-f2643566d0-1~bionic_armhf.deb
$ wget https://www.areascout.at/kodi/kodi-eventclients-common_18.2~git20190423.0531-f2643566d0-1~bionic_all.deb
$ wget https://www.areascout.at/kodi/kodi-eventclients-dev_18.2~git20190423.0531-f2643566d0-1~bionic_all.deb
$ wget https://www.areascout.at/kodi/kodi-eventclients-kodi-send_18.2~git20190423.0531-f2643566d0-1~bionic_all.deb
$ wget https://www.areascout.at/kodi/kodi-eventclients-ps3_18.2~git20190423.0531-f2643566d0-1~bionic_all.deb
$ wget https://www.areascout.at/kodi/kodi-eventclients-wiiremote_18.2~git20190423.0531-f2643566d0-1~bionic_armhf.deb
$ wget https://www.areascout.at/kodi/kodi-tools-texturepacker_18.2~git20190423.0531-f2643566d0-1~bionic_armhf.deb
$ wget https://www.areascout.at/kodi/kodi_18.2~git20190423.0531-f2643566d0-1~bionic_all.deb

$ wget https://www.areascout.at/kodi/mali-x11-gbm-fbdev_13.0.6-1_armhf.deb

$ apt install ./mali-x11-gbm-fbdev_13.0.6-1_armhf.deb

$ apt install ./kodi-bin_18.2~git20190423.0531-f2643566d0-1~bionic_armhf.deb
$ apt install ./kodi_18.2~git20190423.0531-f2643566d0-1~bionic_all.deb
$ apt install ./kodi-tools-texturepacker_18.2~git20190423.0531-f2643566d0-1~bionic_armhf.deb
$ apt install ./kodi-eventclients-common_18.2~git20190423.0531-f2643566d0-1~bionic_all.deb
$ apt install ./kodi-eventclients*
$ apt install ./kodi/kodi-addon-dev_18.2~git20190423.0531-f2643566d0-1~bionic_all.deb
Añadir un usuario y agregarlo a un grupo
$ adduser odroid
$usermod -aG sudo,adm,audio,operator,input,video,tty,staff,games,users,plugdev,netdev,disk odroid
Iniciar sesión con un usuario creado
$ su - odroid
Activar el Prompt de color
$ sed -i '1iforce_color_prompt=yes' ~/.bashrc
$ su odroid
Este artículo fue tomado de un hilo de los foros ODROID. Para más información, consulta el siguiente enlace: https://forum.odroid.com/viewtopic.php?f=98&t=34149

Cómo Crear una Consola de Juegos Retro Monku - Parte 1

Introducción y Objetivos del tutorial

Hola y bienvenidos a nuestro primer tutorial sobre dispositivos ODROID. Esta review muestra, en detalle, cómo hemos creado un Monku1000 a partir de un kit ODROID-GO estándar de Hardkernel.com. Tan sólo necesitas un juego de destornilladores para levar a cabo esta tarea y te mostraremos pequeños consejos prácticos que hemos ido aprendiendo mientras hemos montado varios de estos dispositivos. Este tutorial incluye fotos de cada paso del montaje. ¡Así que vamos a ello!

Herramientas necesarias

- Un pequeño juego de destornilladores con unos cuantos destornilladores Phillips. - Una superficie de trabajo limpia y libre de energía estática. - Una tarjeta micro SD de 8GB o 16GB (necesaria para la instalación del software). - Ordenador portátil o de escritorio con lector de tarjetas SD (necesario para configurar el software).

El Kit

Lo primero es lo primero, repasemos dónde puedes adquirir un ODROID-GO. Puedes buscar en eBay y encontrar uno pre-construido, pero entonces ¿Dónde estaría la diversión? Por lo tanto, tus dos opciones pasan por realizar un pedido directo al fabricante o comprarlo en Amazon. El pedido directo es más barato: el kit cuesta 38$, aunque los gastos de envío pueden ser elevados. No te vayas al coste de entrega inicial; introduce alguna información de la dirección para conseguir un precio más preciso. Te Ayudará a encontrar algunos amigos que también quieran construir uno, hacer el pedido juntos para ahorrar algo en el envío. Si realizas el pedido en Amazon.com, pagará alrededor de 60$ por el kit, que viene a ser aproximadamente el mismo precio cuando incluimos el envío. Yo lo compré directamente a hardkernel.com junto con algunos otros artículos para que el coste de envío me doliese menos.

[Una de las mejores fuentes nacionales para comprar el kits de ODROID-GO y TODAS los productos de ODROID es AmeriDroid en ameridroid.com]

El Montaje

Ahora que disponemos de uno, comencemos desempaquetando el kit y esparciendo todos los elementos en una superficie de trabajo limpia, plana y sin estática. Una mesa de cocina debería ser suficiente, pero asegúrate de estar en un lugar donde no se acumule carga estática, ya que fácilmente puedes freír un componente con una descarga estática. Asegúrate de que el altavoz esté lejos de cualquier metal. El altavoz tiene un imán y puede dañarse si tira de un objeto metálico afilado.

Figure 1 - Make sure your work surface is clean and your speaker is away from any metal
Figura 1: Asegúrate de que tu superficie de trabajo esté limpia y que tu altavoz esté lejos de cualquier metal

Lo primero que tenemos que hacer es extraer el frontal y la pantalla de la carcasa. Colócalos en un área de trabajo limpia. Usa el plástico de burbujas que protege la pantalla a la hora de colocarla boca abajo. Coloca el frontal de la carcasa boca abajo. Usando la pestaña, retira suavemente la capa protectora de la pantalla. Guárdala para usarla con posterioridad colocándola con el lado adhesivo hacia arriba sobre una superficie limpia y apartada.

Figure 2 - Make sure to save the screen protector for later
Figura 2 - Asegúrate de guardar el protector de la pantalla para más adelante

Luego, coloca la pantalla boca abajo, insertando la parte superior de la pantalla debajo de las pestañas de plástico. Deja que la parte inferior de la pantalla se apoye en las pestañas inferiores tal y como se muestra a continuación.

Figure 3 - Snap the screen into place
Figura 3 - Encaja la pantalla en su lugar

Coloca dos dedos en la parte inferior de la pantalla, fuera de las pestañas, y presiona suavemente hasta que la pantalla encaje en su lugar. Ahora coge el adhesivo protector que se despegó, asegúrate de que no tenga residuos y colócalo sobre la pantalla lo mejor que puedas, protegiendo la mayor área posible.

Dobla el plástico de burbujas de color rosa y coloca la carcasa encima de él para que las ranuras de los botones queden fuera de la superficie de trabajo. Ahora extrae todos los botones del molde de plástico y retira la bolsa de plástico con los botones. Coloca los botones de control a la izquierda y a la derecha debajo de la pantalla. Deberías tener suficiente espacio debajo de la carcasa para presionar los botones y hacer que encajen bien.

Figure 4 - Set the button in the slots, making sure they go all the way in
Figure 4 - Set the button in the slots, making sure they go all the way in

Coloca los botones de control a la izquierda y a la derecha debajo de la pantalla. Empújalos hacia abajo y gira el pulgar para asegurarte de que entren por completo. Sitúa los botones y el joystick direccional en sus respectivos lugares. A continuación, coloca las almohadillas de goma en la parte superior de cada elemento de control. Empuja la goma suavemente y con cuidado hacia abajo alrededor de los pin de plástico, solo un poco con cada almohadilla.

Coloca la placa de circuito encima de los botones tal y como se muestra a continuación. El gran chip de plata debe estar en la esquina superior izquierda. La placa se alineará perfectamente con algunos pin de guía.

Figure 5 - Placing the circuit board
Figura 5 - Colocando la placa de circuitos

Aprieta a mano los cuatro tornillos mientras la pantalla está en la superficie de trabajo. Luego levanta la carcasa y terminar de apretarlos. Tienes que apretarlos solo hasta que empiecen a notar dureza en la rosca. No lo hagas en exceso, pero no deben estar sueltos de ninguna forma, deben estar bien fijados.

Presiona el lado del conector de la pantalla, ambos lados al mismo tiempo para cerrarlo. Tienes que tirar de la ranura de conexión hasta el final y luego deslizar el cable plano de la pantalla hasta el final del conector. Sujeta el cable mientras presionas el lado izquierdo y derecho de la ranura de conexión.

Figure 6 - Hold the ribbon in place
Figura 6 – Ubicando el cable plano en su lugar

La línea blanca del cable plano de la pantalla debe estar recta y paralela a la línea de la placa de circuitos. La línea blanca debe estar cerca pero no sobre la línea de la placa de circuito.

Ahora es un buen momento para comprobar la pantalla. Puede conectar rápidamente la batería en el conector de la batería. Asegúrate de que el interruptor de encendido esté en su lugar y enciende el dispositivo. Debería ver un ícono de error de la tarjeta SD en pantalla si todo ha ido bien.

Figure 7 - SD card error icon
Figura 7 - Icono de error de la tarjeta SD

Si deseas personalizar tu dispositivo, ahora es el momento de colocar una imagen especifica en el hueco donde va la batería. Usa la batería para medir y cortar la imagen con el tamaño adecuado. Enrolla el cable de la batería en el lado derecho del conector y colócalo tal y como se muestra a continuación. Desliza la batería de izquierda a derecha. Dobla ligeramente los cables de la batería y deslízala en su ranura de izquierda a derecha, luego empuja su lado izquierdo hacia abajo hasta que encaje en su lugar.

Figure 8 - Example battery placement
Figura 8 - Ejemplo de cómo colocar la batería

El siguiente es el altavoz. Conecta los cables de los altavoces y enróllalos un poco como se muestra a continuación. Si hay algo de plástico colgando de la batería, puedes deslizar ligeramente los cables del altavoz por debajo. Asegúrate de que los cables de los altavoces estén alejados de los tornillos y del propio altavoz.

Figure 9 - Notice the battery and speaker connectors a firmly pushed into place and touch the back of the connection slot
Figura 9: Observa como la batería y los conectores de los altavoces están firmemente colocados en su lugar y tocan la parte posterior de la ranura de conexión

Figure 10 - Another look at the cables
Figura 10 - Otro vistazo a los cables.

Asegúrate de que en la parte posterior de la carcasa se pueda acceder limpiamente al tornillo y que el soporte del altavoz no sujete los cables del altavoz. Los cables deben estar alejados del propio altavoz. Cierre la carcasa con los correspondientes tornillos. Si la esquina inferior derecha del altavoz no se cierra totalmente, haz girar los tornillos unas cuantas vueltas más hasta que quede bien apretado. Siempre puede retirar el juego en la carcasa desde el lado del altavoz, pero no puede quitar el juego en la carcasa desde el lado de la batería porque no hay tornillo allí. Si tiene mucho juego en ese lado de la carcasa, un poco de molde de plástico a lo largo del borde de la carcasa puede servirte. Personalmente, yo lo tengo así.

¡Genial! Ahora tienes un dispositivo con aspecto elegante. El último paso es agregar el protector de pantalla. Si aún no lo ha hecho, retira la etiqueta protectora de la pantalla.

Figure 11 - A snazzy looking device
Figura 11 - Un dispositivo con aspecto elegante

Despega la tira adhesiva del protector de pantalla. Usa el pulgar o el extremo de un destornillador para mantener el borde de la tira hacia abajo mientras despegas el centro.

Figure 12 - Peel out the adhesive strip
Figura 12 - Despegando la tira adhesiva

Desgarra la tira restante hacia abajo por la pestaña y luego retírala lentamente del protector de plástico. Desliza el protector de plástico sobre la parte superior del bisel de la pantalla haciendo un poco de presión hacia abajo en el centro del protector de plástico.

Pasa el dedo por el borde del protector de pantalla y coloca el dispositivo en un área segura. Sitúa algo encima como un teléfono y déjela reposar durante unos minutos.

Carga tu dispositivo a través del USB. La luz roja permanecerá encendida durante la carga. Para ver si se ha cargado completamente, vuelva a enchufarlo y observa si la luz roja se enciende nuevamente. Si no es así, es que está completamente cargado.

Figure 13 - Check the red light to see if fully charged
Figura 13 – Comprueba la luz roja para ver si está completamente cargado

El Software

Consulta aquí para obtener información sobre la actualización de tu dispositivo con el último firmware. Necesitará obtener la última versión para asegurarte de que las cosas funcionen bien y para poder cargar los emuladores (NES, SMS, GG, GB, GBC, CV) cuando enciendas tu dispositivo.

Puedes consultar aquí las plantillas básicas de tarjetas SD que lo tienen todo menos las ROMs de los juegos. Puedes coger una de éstas y copiar tus ROM para empezar a jugar sobre la marcha. También puede encontrar imágenes de tarjetas SD en eBay para este dispositivo, simplemente búsquelas. ¡Ahora estarás listo para jugar a tus juegos retro en cualquier lugar!

NetBSD para el Odroid-C2

Desde que NetBSD anunciara que estaban haciendo de ARM una arquitectura de nivel 1, he estado siguiendo su trabajo de desarrollo. Hace unas semanas, en la lista de correo de los desarrolladores de ARM de NetBSD, Jared McNeill dijo: “... el kernel GENERIC64 ahora admite el SoC Amlogic S905 utilizado en la placa ODROID-C2. Ethernet, USB y SD / eMMC funcionan..." Inmediatamente me hice con una imagen y empecé a hacer pruebas. Quiera comentar cual ha sido el resultado y animar a otros a que lo prueben. No es habitual que ODROID reciba un nuevo sistema operativo que no sea Linux.

$ uname -a
NetBSD odroid-c2 8.99.37 NetBSD 8.99.37 (GENERIC64) #0: Sat Apr 6 17:42:28 UTC 2019 mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/evbarm/compile/GENERIC64 evbarm
En el par de semanas que lo he estado usando, a pesar de que actualmente es una imagen de desarrollo, da la impresión de que es bastante estable. No he tenido ningún problema con Ethernet, USB o SD /eMMC. Todavía no hay un driver de memoria de imagen, así que toda la interacción se realiza a través de la consola serie o ssh. Recientemente, tanto Armv7 como Arm64 para NetBSD han sido movidos a un arranque EFI utilizando el último U-Boot y lo que parece ser el U-Boot Driver Model (DM). Hay una presentación de FOSDEM'19 U-Boot y diapositivas que cubren algunas de estas características.

https://video.fosdem.org/2019/K.4.401/hw_uboot.mp4https://fosdem.org/2019/schedule/event/hw_uboot/attachments/slides/3324/export/events/attachments/hw_uboot/slides/3324/Jagan_Teki___U_Boot_from_Scratch_v2019_01_edition_v2.pdf

Actualización de NetBSD de Benny Siegert en FOSDEM'19 https://video.fosdem.org/2019/K.3.401/netbsd_update.mp4

U-Boot NetBSD Odroid-C2

=> version
U-Boot 2019.04-rc1-00141-g63f7e3fca3 (Feb 15 2019 - 20:11:48 -0400) odroid-c2
=> dm tree
Class Index Probed Driver Name
-----------------------------------------------------------
root 0 [ + ] root_driver root_driver
firmware 0 [ ] psci |-- psci
clk 0 [ ] fixed_rate_clock |-- xtal-clk
simple_bus 0 [ + ] generic_simple_bus |-- soc
simple_bus 1 [ ] generic_simple_bus | |-- bus@c1100000
reset 0 [ ] meson_reset | | |-- reset-controller@4404
i2c 0 [ ] i2c_meson | | `-- i2c@8500
simple_bus 2 [ + ] generic_simple_bus | |-- bus@c8100000
simple_bus 3 [ ] generic_simple_bus | | |-- sys-ctrl@0
syscon 0 [ ] syscon | | |-- ao-secure@140
serial 0 [ + ] serial_meson | | |-- serial@4c0
pinctrl 0 [ + ] meson-gxbb-pinctrl | | `-- pinctrl@14
pinconfig 0 [ ] pinconfig | | |-- bank@14
pinconfig 1 [ ] pinconfig | | | `-- usb-hub
pinconfig 2 [ + ] pinconfig | | |-- uart_ao_a
pinconfig 3 [ ] pinconfig | | | `-- mux
pinconfig 4 [ ] pinconfig | | |-- uart_ao_a_cts_rts
pinconfig 5 [ ] pinconfig | | | `-- mux
pinconfig 6 [ ] pinconfig | | |-- uart_ao_b
pinconfig 7 [ ] pinconfig | | | `-- mux
pinconfig 8 [ ] pinconfig | | |-- uart_ao_b_cts_rts
pinconfig 9 [ ] pinconfig | | | `-- mux
pinconfig 10 [ ] pinconfig | | |-- remote_input_ao
pinconfig 11 [ ] pinconfig | | | `-- mux
pinconfig 12 [ ] pinconfig | | |-- i2c_ao
pinconfig 13 [ ] pinconfig | | | `-- mux
pinconfig 14 [ ] pinconfig | | |-- pwm_ao_a_3
pinconfig 15 [ ] pinconfig | | | `-- mux
pinconfig 16 [ ] pinconfig | | |-- pwm_ao_a_6
pinconfig 17 [ ] pinconfig | | | `-- mux
pinconfig 18 [ ] pinconfig | | |-- pwm_ao_a_12
pinconfig 19 [ ] pinconfig | | | `-- mux
pinconfig 20 [ ] pinconfig | | |-- pwm_ao_b
pinconfig 21 [ ] pinconfig | | | `-- mux
pinconfig 22 [ ] pinconfig | | |-- i2s_am_clk
pinconfig 23 [ ] pinconfig | | | `-- mux
pinconfig 24 [ ] pinconfig | | |-- i2s_out_ao_clk
pinconfig 25 [ ] pinconfig | | | `-- mux
pinconfig 26 [ ] pinconfig | | |-- i2s_out_lr_clk
pinconfig 27 [ ] pinconfig | | | `-- mux
pinconfig 28 [ ] pinconfig | | |-- i2s_out_ch01_ao
pinconfig 29 [ ] pinconfig | | | `-- mux
pinconfig 30 [ ] pinconfig | | |-- i2s_out_ch23_ao
pinconfig 31 [ ] pinconfig | | | `-- mux
pinconfig 32 [ ] pinconfig | | |-- i2s_out_ch45_ao
pinconfig 33 [ ] pinconfig | | | `-- mux
pinconfig 34 [ ] pinconfig | | |-- spdif_out_ao_6
pinconfig 35 [ ] pinconfig | | | `-- mux
pinconfig 36 [ ] pinconfig | | |-- spdif_out_ao_13
pinconfig 37 [ ] pinconfig | | | `-- mux
pinconfig 38 [ ] pinconfig | | |-- ao_cec
pinconfig 39 [ ] pinconfig | | | `-- mux
pinconfig 40 [ ] pinconfig | | |-- ee_cec
pinconfig 41 [ ] pinconfig | | | `-- mux
gpio 0 [ ] meson-gx-gpio | | `-- meson-gpio
simple_bus 4 [ + ] generic_simple_bus | |-- periphs@c8834000
pinctrl 1 [ + ] meson-gxbb-pinctrl | | `-- pinctrl@4b0
pinconfig 42 [ ] pinconfig | | |-- bank@4b0
pinconfig 43 [ + ] pinconfig | | |-- emmc
pinconfig 44 [ ] pinconfig | | | `-- mux
pinconfig 45 [ + ] pinconfig | | |-- emmc-ds
pinconfig 46 [ ] pinconfig | | | `-- mux
pinconfig 47 [ ] pinconfig | | |-- emmc_clk_gate
pinconfig 48 [ ] pinconfig | | | |-- mux
pinconfig 49 [ ] pinconfig | | | `-- cfg-pull-down
pinconfig 50 [ ] pinconfig | | |-- nor
pinconfig 51 [ ] pinconfig | | | `-- mux
pinconfig 52 [ ] pinconfig | | |-- spi-pins
pinconfig 53 [ ] pinconfig | | | `-- mux
pinconfig 54 [ ] pinconfig | | |-- spi-ss0
pinconfig 55 [ ] pinconfig | | | `-- mux
pinconfig 56 [ + ] pinconfig | | |-- sdcard
pinconfig 57 [ ] pinconfig | | | `-- mux
pinconfig 58 [ ] pinconfig | | |-- sdcard_clk_gate
pinconfig 59 [ ] pinconfig | | | |-- mux
pinconfig 60 [ ] pinconfig | | | `-- cfg-pull-down
pinconfig 61 [ ] pinconfig | | |-- sdio
pinconfig 62 [ ] pinconfig | | | `-- mux
pinconfig 63 [ ] pinconfig | | |-- sdio_clk_gate
pinconfig 64 [ ] pinconfig | | | |-- mux
pinconfig 65 [ ] pinconfig | | | `-- cfg-pull-down
pinconfig 66 [ ] pinconfig | | |-- sdio_irq
pinconfig 67 [ ] pinconfig | | | `-- mux
pinconfig 68 [ ] pinconfig | | |-- uart_a
pinconfig 69 [ ] pinconfig | | | `-- mux
pinconfig 70 [ ] pinconfig | | |-- uart_a_cts_rts
pinconfig 71 [ ] pinconfig | | | `-- mux
pinconfig 72 [ ] pinconfig | | |-- uart_b
pinconfig 73 [ ] pinconfig | | | `-- mux
pinconfig 74 [ ] pinconfig | | |-- uart_b_cts_rts
pinconfig 75 [ ] pinconfig | | | `-- mux
pinconfig 76 [ ] pinconfig | | |-- uart_c
pinconfig 77 [ ] pinconfig | | | `-- mux
pinconfig 78 [ ] pinconfig | | |-- uart_c_cts_rts
pinconfig 79 [ ] pinconfig | | | `-- mux
pinconfig 80 [ ] pinconfig | | |-- i2c_a
pinconfig 81 [ ] pinconfig | | | `-- mux
pinconfig 82 [ ] pinconfig | | |-- i2c_b
pinconfig 83 [ ] pinconfig | | | `-- mux
pinconfig 84 [ ] pinconfig | | |-- i2c_c
pinconfig 85 [ ] pinconfig | | | `-- mux
pinconfig 86 [ + ] pinconfig | | |-- eth-rgmii
pinconfig 87 [ ] pinconfig | | | `-- mux
pinconfig 88 [ ] pinconfig | | |-- eth-rmii
pinconfig 89 [ ] pinconfig | | | `-- mux
pinconfig 90 [ ] pinconfig | | |-- pwm_a_x
pinconfig 91 [ ] pinconfig | | | `-- mux
pinconfig 92 [ ] pinconfig | | |-- pwm_a_y
pinconfig 93 [ ] pinconfig | | | `-- mux
pinconfig 94 [ ] pinconfig | | |-- pwm_b
pinconfig 95 [ ] pinconfig | | | `-- mux
pinconfig 96 [ ] pinconfig | | |-- pwm_d
pinconfig 97 [ ] pinconfig | | | `-- mux
pinconfig 98 [ ] pinconfig | | |-- pwm_e
pinconfig 99 [ ] pinconfig | | | `-- mux
pinconfig 100 [ ] pinconfig | | |-- pwm_f_x
pinconfig 101 [ ] pinconfig | | | `-- mux
pinconfig 102 [ ] pinconfig | | |-- pwm_f_y
pinconfig 103 [ ] pinconfig | | | `-- mux
pinconfig 104 [ ] pinconfig | | |-- hdmi_hpd
pinconfig 105 [ ] pinconfig | | | `-- mux
pinconfig 106 [ ] pinconfig | | |-- hdmi_i2c
pinconfig 107 [ ] pinconfig | | | `-- mux
pinconfig 108 [ ] pinconfig | | |-- i2sout_ch23_y
pinconfig 109 [ ] pinconfig | | | `-- mux
pinconfig 110 [ ] pinconfig | | |-- i2sout_ch45_y
pinconfig 111 [ ] pinconfig | | | `-- mux
pinconfig 112 [ ] pinconfig | | |-- i2sout_ch67_y
pinconfig 113 [ ] pinconfig | | | `-- mux
pinconfig 114 [ ] pinconfig | | |-- spdif_out_y
pinconfig 115 [ ] pinconfig | | | `-- mux
gpio 1 [ + ] meson-gx-gpio | | `-- meson-gpio
simple_bus 5 [ ] generic_simple_bus | |-- bus@c8838000
simple_bus 6 [ + ] generic_simple_bus | |-- bus@c883c000
simple_bus 7 [ + ] generic_simple_bus | | `-- system-controller@0
clk 1 [ + ] meson_clk | | |-- clock-controller
syscon 1 [ + ] syscon | | `-- system-controller@0
clk 2 [ ] meson_clk | | `-- clock-controller
eth 0 [ + ] eth_designware | |-- ethernet@c9410000
simple_bus 8 [ + ] generic_simple_bus | `-- apb@d0000000
mmc 0 [ + ] meson_gx_mmc | |-- mmc@72000
blk 0 [ ] mmc_blk | | `-- mmc@72000.blk
mmc 1 [ + ] meson_gx_mmc | `-- mmc@74000
blk 1 [ ] mmc_blk | `-- mmc@74000.blk
regulator 0 [ ] fixed regulator |-- regulator-usb-pwrs
regulator 1 [ ] fixed regulator |-- regulator-tflash_vdd
regulator 2 [ ] fixed regulator |-- regulator-vcc1v8
regulator 3 [ ] fixed regulator `-- regulator-vcc3v3
En pruebas posteriores descubrí que el módulo WiFi 3 de Hardkernel funciona bien y que el módulo 0 es reconocido, pero tiene un problema de conexión. No he dedicado mucho tiempo intentando solucionar el problema. No dispongo de un módulo 4 para probarlo y los módulos 5 y 5a no los reconoce. Sospecho que es porque no hay driver de kernel para ellos. Tienes los resultados de algunas pruebas básicas con LAN, WiFI, eMMC y USB publicados en un hilo de los Foros Hardkernel https://forum.odroid.com/viewtopic.php?f=138&t=34457

Figura 1 - htop ejecutándose en NetBSD

Carga y configuración básica de NetBSD

Para cualquier persona que quiera probar NetBSD en un ODROID-C2, aquí tiene una guía básica de instalación y configuración. Necesitas una consola serie para iniciar esta imagen. No es una imagen liberada, de modo que las imágenes actuales solo se pueden encontrar en el servidor NetBSD Arm Current. También tienes una imagen ODROID-XU4 y ODROID-C1+. La imagen ODROID-XU4 no se puede utilizar en este momento. La imagen ODROID-C2 funciona con una tarjeta SD o eMMC. En el primer arranque, se cambiará automáticamente el tamaño del sistema de archivos raíz y luego se reiniciará. http://www.invisible.ca/arm/

Descomprime y escribe la imagen usando dd, o utiliza una aplicación como etcher.io o Win32DiskImager:

$ gzip -d NetBSD-evbarm-aarch64-201904061750Z-odroidc2.img.gz
$ dd if=./NetBSD-evbarm-aarch64-201904061750Z-odroidc2.img of=/dev/< your card reader location > e.g. sdb
$ sync
Una vez arrancada, root no tiene contraseña. Para asignarle una contraseña:
$ passwd
Para cambiar el nombre del host:
$ vi /etc/rc.conf
$ hostname=< your hostname >
Para añadir un usuario, el directorio por defecto es /home/
$ useradd -m -G wheel < username >
$ passwd < username >
Ajusta la configuración regional de todo el sistema según tu ubicación.
$ echo "export LANG="en_US.UTF-8"" >> /etc/profile
$ echo "export LC_CTYPE="en_US.UTF-8"" >> /etc/profile
$ echo "export LC_ALL=""" >> /etc/profile

Carga de aplicaciones informáticas

Puesto que se trata de una imagen en desarrollo, no dispones de un entorno de usuario completo. Es una imagen de sistema operativo básica. Además, no existe una lista de binarios de aplicaciones disponibles, así que me centrare en la instalación de binarios (pkg_add), la compilación de código fuente (pkgsrc) y la actualización con conjuntos tar completos.

Obtener paquetes binarios para Aarch64

Los archivos binarios proceden de un servidor no liberado y requiere de una ligera modificación de las prácticas normales.

$ export PKG_PATH="http://www.invisible.ca/arm/packages/arm64/current"
$ pkg_add -v < package name >
Usando un navegador web de otro ordenador, también puede ver lo que hay disponible. Los paquetes se agregan a medida que se van compilando, así que revisalos regularmente si no tienes pensado compilar desde la fuente. http://www.invisible.ca/arm/packages/arm64/current

Coger pkgsrc de CVS (código fuente)

El espacio de usuario completo es de aproximadamente 3.7 GB, así que asegúrese de tener suficiente espacio. Las aplicaciones se agrupan por funcionalidad, de modo que tómate un minuto para familiarizarte con el diseño.

$ cd /usr
$ cvs -d anoncvs@anoncvs.netbsd.org:/cvsroot checkout -P pkgsrc
Para compilar una aplicación específica
$ cd /usr/pkgsrc/< group directory >/< app name >
$ make install
Todas las dependencias se compilarán para la aplicación en concreto e incluso se descargarán si es necesario, así que asegúrate de tener conexión a Internet durante el proceso. Yo compilé bastantes paquetes sin problemas. Si has configurado PKG_PATH previamente, debes desconfigurarla antes de usar pkgsrc o te lo recordará.
$ unset PKG_PATH

Utilizar los conjuntos tar

Puedes usar los conjuntos tar para actualizar al último kernel y el entorno de usuario. En las imágenes de desarrollo, se recomienda actualizar el kernel y el entorno de usuario

Actualizar el kernel

$ mkdir -p /root/tmp/kernel
$ cd /root/tmp/kernel
$ cp /netbsd /onetbsd
$ ftp $ https://nyftp.netbsd.org/pub/NetBSD-daily/HEAD/latest/evbarm-aarch64/binary/sets/kern-GENERIC64.tgz
$ tar xzvf /root/tmp/kernel/kern-GENERIC64.tgz
$ cp ./netbsd /netbsd
$ cp meson-gxbb-odroidc2.dtb /boot/dtb/amlogic/
$ reboot
Actualizar el entorno excepto para /etc
$ mkdir -p /root/tmp/sets
$ cd /root/tmp/sets
$ for x in base comp games man misc modules tests text xbase xcomp xfont xserver; do ftp https://nyftp.netbsd.org/pub/NetBSD-daily/HEAD/latest/evbarm-aarch64/binary/sets/$x.tgz; done
$ for x in base comp games man misc modules tests text xbase xcomp xfont xserver; do tar -C / -zxvpf $x.tgz; done
Actualizar configuración /etc/
$ for x in etc xetc; do ftp https://nyftp.netbsd.org/pub/NetBSD-daily/HEAD/latest/evbarm-aarch64/binary/sets/$x.tgz; done
$ etcupdate -s etc.tgz -s xetc.tgz
$ rm -Rf /root/tmp
$ reboot

Ejemplo con sudo

Una de las típicas aplicaciones que puedes cargar es sudo. Aquí tienes ejemplos usando el repositorio actual de binarios y pkgsrc.

Obteniendo el binario sudo

$ export PKG_PATH="http://www.invisible.ca/arm/packages/arm64/current"
$ pkg_add -v sudo
Compilando sudo desde pkgsrc. Nota: Se supone que has descargado pkgsrc como he descrito con anterioridad
$ unset PKG_PATH
$ cd /usr/pkgsrc/security/sudo
$ make install
Independientemente del método de instalación, debes configurar sudo para que funcione. Usando visudo como se muestra a continuación, elimina el comentario de la línea 88 para permitir que los miembros del grupo sudo puedan ejecutar cualquier comando y el resto de opciones como miembros del grupo wheel (línea 82)
$ groupadd sudo
$ usermod -G sudo < username >
$ visudo
$ %sudo ALL=(ALL) ALL
Futura actualización de aplicaciones Actualizando el paquete binario sudo:
$ pkg_add -uv sudo
Actualizando sudo y todas sus dependencias:
$ pkg_add -fuuv sudo

Notas

Algunos paquetes requieren una configuración adicional y generalmente se te informará de ello en el momento de la instalación. Muchas veces se proporcionan ejemplos, como el ejemplo de instalación de dbus que se indica a continuación:

$ cp /usr/pkg/share/examples/rc.d/dbus /etc/rc.d/
Si vas a cargar y usar git, curl o wget, recuerda cargar los certificados root de CA.
$ pkg_add -v mozilla-rootcerts openssl mozilla-rootcerts-openssl
Otras aplicaciones típicas que se pueden cargar usando pkg_add
$ pkg_add -v bash htop zip p7zip gzip dos2unix

Configuración del WiFi

Localiza el nombre del dispositivo usando ifconfig. Si no está en la lista, probablemente no exista un driver de kernel; revisar dmesg.

$ ifconfig -a
Edita wpa_supplicant y añade las entradas apropiadas
$ vi /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
network={
       ssid=< network name >
       scan_ssid=1
       key_mgmt=WPA-PSK
       psk=< passwordkey >
}
Habilitar en el arranque
$ vi /etc/rc.conf
wpa_supplicant=YES
wpa_supplicant_flags="-i < device name > -c /etc/wpa_supplicant.conf"
Inicia el servicio WiFi
$ chmod 600 /etc/wpa_supplicant.conf
$ /etc/rc.d/wpa_supplicant start
o para la depuración
$ wpa_supplicant -Bd -c /path/to/wpa-supplicant.conf -i < device name >
Añadir "-f file" enviará mensajes de depuración (usar -d) al archivo.

Una última nota, esta es una imagen de desarrollo, así que no es para producción. Como he dicho antes, no he tenido ningún problema ... hasta hoy, cuando he tirado de un reciente lanzamiento con un nuevo kernel. He tenido mi primer fallo de segmentación, aunque el sistema operativo todavía seguía funcionando. Podría tener sentido mantener la versión anterior en estas ocasiones. Estoy seguro de que aparecerán más problemas a medida que avance el desarrollo. Quiero tomarme un minuto y enviarle un gran agradecimiento a la Fundación NetBSD, a su equipo de desarrollo y especialmente a Jared McNeill. ¡Ayudemos respaldando su maravilloso trabajo de llevar NetBSD a ARM y a los ODROIDs de Hardkernel!

Referencias

NetBSD Project https://www.netbsd.org/ NetBSD Guide https://www.netbsd.org/docs/guide/en/index.html NetBSD pkgsrc guide http://www.netbsd.org/docs/pkgsrc/index.html NetBSD pkgsrc browser http://pkgsrc.se/ NetBSD Mailing List https://www.netbsd.org/mailinglists/#port-arm NetBSD Arm Bootable Images http://www.invisible.ca/arm/ NetBSD Index of Arm64 Current http://www.invisible.ca/arm/packages/arm64/current/

Hacer que Nuestro Servidor de Semillas BitTorrent ODROID-HC1 Funcione como un NAS

El mes pasado, en mi artículo sobre como montar tu propio servidor de semillas BitTorrent ODROID-HC1, evidencié cómo un ODROID-HC1 podía ser un excelente servidor de semillas BitTorrent. Sin embargo, ahora que lo tienes funcionando y todos tus archivos de torrent se han descargado (o se están descargando), ¿cómo podemos acceder a esas descargas de una forma sensata? En el artículo de este mes, asumiré que ya tienes configurado tu servidor de semillas BitTorrent y que has trabajado con el artículo del número de abril de 2019. Te guiaré a través de los siguientes pasos: dar acceso a los archivos descargados a través del protocolo samba y convertir efectivamente tu servidor semilla de BitTorrent en un auténtico NAS.

Figure 1 - The state of my BitTorrent Seed Server.png
Figura 1 - El estado de mi servidor de semillas BitTorrent

Ya conocemos dos cuestiones clave sobre nuestro servidor de semilla BitTorrent:

  • Nuestros archivos BitTorrent se descargan en /home//ssd/torrents, donde sea que se encuentre tu nombre de usuario de Linux, y
  • Conocemos la dirección IP de nuestro servidor de semilla BitTorrent.

Samba proporciona los protocolos SMB/CIFS para sistemas operativos Linux y Unix. Esto nos aporta interoperabilidad con las redes de Windows, permitiéndonos el intercambio rápido y seguro de archivos e impresoras dentro de una red mixta. Básicamente es lo que te permite hacer clic derecho en una carpeta en el escritorio de Linux, elegir "Compartir" y compartes la carpeta en tu red. Sin embargo, con un servidor sin interfaz gráfica, puede que no esté tan claro cómo encontrar la capacidad de compartir tus carpetas. Si intentamos acceder a los recursos compartidos de red de nuestro servidor de semillas BitTorrent desde una máquina con Windows, simplemente recibiremos un error de tiempo agotado.

Figure 2 - Without Samba configured on my seed server, my Windows 10 laptop will simply timeout
Figura 2: Sin Samba configurado en mi servidor de semillas, mi ordenador portátil con Windows 10 simplemente se desconectará.

Esto es debido a que no hay un sistema de intercambio de archivos compatible con Windows integrado en mi servidor de semillas BitTorrent. Ahora, seamos claros: cuando digo "compatible con Windows", no te vayas a llevar una impresión equivocada. SMB/CIFS también es perfecto para Linux y, de hecho, lo vamos a utilizar para compartir archivos en red a través de Samba. Es simplemente que Microsoft fue el primero en utilizar realmente los protocolos SMB/CIFS de IBM a mediados de los 90, lo cual permitió compartir archivos en su entorno MS-DOS. Samba llegó casi al mismo tiempo, trabajando duramente para brindar a los usuarios de MS-DOS acceso por red a los archivos alojados en servidores Unix. Actualmente, en 2019, SMB/CIFS es un protocolo de uso compartido de archivos multiplataforma consolidado que se utiliza en todas las plataformas principales. Entonces, lo primero es lo primero: necesitamos instalar Samba. Accede a tu servidor de semillas BitTorrent a través de SSH y escriba lo siguiente:

$ sudo apt update
$ sudo apt install samba
El primer comando actualiza la información del paquete disponible desde los diferentes repositorios en nuestro sistema. El segundo comando instala la versión más actual de Samba desde estos repositorios, activándolo como un demonio del sistema usando la configuración por defecto.

Consejo: recuerda que cuando ejecutes sudo apt update, si recibes un error sobre cuestiones de tiempo/futuro, verifica y corrige la fecha de tu sistema y empieza de nuevo. Personalmente, me gusta añadir una pila de reloj en tiempo real a mi ODROID-HC1 para evitar este error y asegurarme de que las marcas de tiempo son las correctas en todos mis archivos.

Ahora, con Samba instalado y activo deberíamos poder ir a \10.0.0.145 en Windows o smb: //10.0.0.145 en Linux (reemplazando 10.0.0.145 con cualquiera que sea la dirección IP de tu servidor) y mientras no contemple ningún recurso compartido, no debe haber errores o tiempo de espera. El siguiente paso es añadir un recurso compartido. El proceso que usamos normalmente, hacer clic con el botón derecho en una carpeta y seleccionar "Compartir", se realizará mediante programación utilizando el archivo de configuración de Samba.

Abre el archivo de configuración de Samba para editarlo con este comando:

$ sudo nano /etc/samba/smb.conf
Dentro del editor nano resultante, presiona ALT + / para saltar al final del archivo. En una nueva línea, agregaremos nuestra carpeta /home//ssd/torrents como un recurso compartido de red de solo lectura. ¿Por qué de solo lectura? Estas son las semillas de BitTorrent. Si permites escritura, incluso simplemente buscado en la carpeta provocarías cosas como crear archivos caché en miniaturas ocultos dentro de las carpetas, dando lugar a sumas de comprobación erróneas y fallos en tus semillas. Queremos que sean solo de lectura para que podamos acceder a ellos desde nuestra red sin afectar a su capacidad para continuar proporcionando semillas. Si alguna vez deseas eliminar un torrent, puede hacerlo desde la interfaz web de Transmission.

Añade lo siguiente al archivo smb.conf, recuerda cambiar cualquier ruta de Linux que te encuentres en la línea de ruta y aguega el nombre de usuario correcto en “valid users”

[torrents]
read only = yes
path = "/home//ssd/torrents"
guest ok = no
valid users =
Guarda tu trabajo presionando CTRL-O (O para guardar los cambios), seguido de CTRL-X para salir.

El siguiente paso es crear tu acceso de usuario de Samba. Samba no utiliza las credenciales de usuario de Linux, sino que mantiene su propia lista de usuarios y contraseñas, que debemos crear con el siguiente comando (nuevamente, reemplaza cualquier nombre de usuario que tengas por usuarios válidos en el archivo de configuración).

$ sudo smbpasswd -a
Ahora, Samba debería estar listo para compartir tu carpeta de torrents de la unidad SSD de tu ODROID-HC1. Vamos a probarlo. Un rápido reinicio de Samba asegurará que la nueva configuración se ha cargado.
$ sudo systemctl restart smbd
Ahora, navega hasta el recurso compartido de red de tu servidor de semillas BitTorrent desde un ordenador dentro de tu LAN introduciendo \10.0.0.145 orrents en Windows o smb://10.0.0.145/torrents en un sistema Linux, reemplazando mi IP por la IP de tu propio servidor.

Figure 3 - With Samba working, I can now navigate to my BitTorrent downloads
Figura 3 - Con Samba funcionando, ahora puedo navegar hasta mis descargas de BitTorrent

Ahí lo tienes. En dos breves lecciones, has configurado con éxito un servidor de descarga/semillas BitTorrent y lo has convertido en un NAS para que pueda acceder a tu contenido desde cualquier ordenador de tu red. Todo en un pequeño ODROID-HC1. Tienes total libertar para descargar temporadas completas de mi webcast, Category5 Technology TV a tu servidor desde https://torrent.category5.tv o hazte con la última versión de NEMS Linux para ODROID-N2, ODROID-XU4 o ODROID-C2 desde https: //nemslinux.com

Figure 4 - Performance is exceptional on the ODROID-HC1, and streaming the 1080p video directly to my desktop looks superb
Figura 4: el rendimiento es excepcional en el ODROID-HC1, y la transmisión del video a 1080p directamente a mi escritorio es excelente

Sobre el Autor

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

Juegos Linux: PC-Engine / TurboGrafx - Parte 4

En la última parte de la serie, jugué a algunos juegos de lucha realmente geniales, así como algunos de los mejores juegos de disparos por los que es conocida esta consola. Una especie de cajón desastre de juegos, aunque solo había unos cuantos con lo que realmente no disfruté. En general, el sistema hasta ahora cuenta con muchísimos juegos con lo que he disfrutado bastante, y tan solo me encontré con unas cuantas “manzanas podridas” que no me gustaron para nada. Descubrí que muchos los juegos interesantes solo están disponibles en japonés, lo cual era de esperar, aunque por otro lado me entristecía porque ello implicaba perderme algunos de los mejores juegos.

Juegos que me han gustado

L-Dis

Figura 1: L-Dis tiene gráficos muy brillantes, un bonito desplazamiento de paralaje y muchos enemigos y elementos visuales.

Figura 2 - Los jefes llegar a ser enormes en este juego

No estoy seguro de si catalogarlo como un gracioso 'em up o simplemente un shoot ‘em up, pero la verdad es que es bastante divertido. L-Dis tiene colores brillantes, buen desplazamiento de paralaje y una acción bastante rápida. Puedes recolectar satélites que actúan a modo de escudo y luchan contigo, o pueden usarse con la segunda tecla de acción (por ejemplo, soltando una bomba que despeje la pantalla).

Last Alert

Figura 3 - Last Alert tiene toneladas de enemigos que reaparecen continuamente

Figura 4: Los combates con los jefes pueden llegar a ser algo complicadas, aunque siempre empiezan con una divertida voz.

Este juego es divertido, no solo por lo entretenido que es el juego, sino a las pésimas interpretaciones de las voces. ¡De Verdad! El juego se hizo famoso por sus horribles interpretaciones de voces, tanto en el propio juego antes luchar con los jefes como en todas las secuencias de vídeo. En https://youtu.be/XpQWDWtXgsQ?t=306, puedes encontrar un muy buen ejemplo de ello además de un excelente análisis del juego. Matar enemigos y cumplir los objetivos de tu misión te dará puntos de experiencia, que se utilizan para subir de nivel, lo que significa que cuantos más enemigos mates, más de nivel subirás, más golpes podrás recibir y mejores armas obtendrás. Ya que en muchos lugares los enemigos simplemente siguen engendrándose, en realidad podrías pulverizarlos si fuera necesario. Simplemente puedo recomendar este juego por su encanto y por sus divertidas interpretaciones de voces. Los gráficos están bien; Nada especial pero tampoco son malos. El sonido y la música no están mal, así que por lo general este juego es un buen aporte.

Loom

Figura 5 – Loom, una de mis aventuras favoritas de todos los tiempos

Figura 6 - Siempre empieza con la última hoja.

Loom es uno de mis juegos favoritos de todos los tiempos y la versión PC Engine / TurboGrafx es muy buena. En cuanto a los gráficos, me recuerda mucho a la versión Amiga o a la versión EGA DOS del juego, pero con la ventaja adicional de la banda sonora del CD. Desafortunadamente, salió antes de que se lanzara la versión talkie de Loom, y por lo tanto todos los diálogos son simples textos escritos, aunque ésta es la forma a la que estoy acostumbrado a jugar. Los efectos de sonido son buenos y no están desordenados como en la versión de FM-Towns. En general, es Loom en todo su esplendor, y si nunca lo has jugados, la versión PC Engine / TurboGrafx es una buena forma de vivir el juego si no quieres arrancar el ScummVM.

Lords of Thunder

Figura 7 - Lords of Thunder tiene buenos gráficos con gran cantidad de desplazamiento de paralaje

Figura 8 - También tiene enormes jefes con lo que luchar al final de cada nivel.

Este simpático shoot ‘em up es el sucesor de Gates of Thunder, que presenté en la primera parte de esta serie en enero, aunque este juego se ve y se siente muy diferente al de su antecesor. El juego tiene desplazamiento de paralaje en todos los niveles, los gráficos están bien y presentan un cierto detalle. Antes de cada nivel puedes elegir entre una de las 4 armaduras diferentes que tienen distintos tipos de ataques principales y especiales. En la esquina superior izquierda tiene dos barras: la barra azul representa tu salud, la barra por encima representa tu nivel de potencia que cambia de rojo a amarillo y finalmente a verde. Cada color aumenta la fuerza de tu ataque y se reducirá si te golpean. La mayoría de las veces disparas al enemigo, pero si te acercas demasiado a un enemigo, tu personaje usará una especie de espada que provoca daño adicional y es suficiente para matar a la mayoría de los enemigos con un solo golpe (excepto los jefes y los grandes/fuertes enemigos). Los enemigos, en su mayoría, sueltan diamantes azules o rojos, que se agregarán a tus "créditos", que se pueden usar antes de cada nivel para comprar artículos que aumentan la salud de tu fuerza o proporcionan un escudo o ataque especial. Algunos enemigos (especialmente los más fuertes) dejan caer objetos que pueden aumentar tu fuerza general o recargar tu salud. Puedes elegir el orden en el que quieres jugar los niveles. El juego tiene una fantástica banda sonora de metal y los sonidos en general también son muy buenos. Exite otra versión para Sega CD que mezcla sonidos y música y es un poco más facil que la versión de PC Engine, en el caso de que quieras probarla.

Mad Stalker - Full Metal Force

Figura 9: Los enemigos más habituales a menudo son como tú y usan ataques similares

Figura 10 - Los jefes difieren ligeramente en su diseño y tienen una barra de salud

Al principio, no estaba muy seguro de si este juego me iba a gustar o no. Empiezas con una introducción bastante animada con muchos detalles y animaciones. Es uno de los mejores juegos para el sistema, pero una vez más está completamente en japonés, así que no tengo ni idea de lo que sucede, lo cual es una pena. Después de la introducción, te presentan los tres personajes que puedes elegir, cada uno con algunas diferencias en su estilo de lucha. A lo largo del nivel luchas contra muchos y diferentes enemigos, algunos de los cuales más adelante cambian de color que te indica que son una versión más fuerte que la anterior, aunque en general hay bastante variedad de enemigos. De vez en cuando aparece un cartucho de salud que restaura parte de tu salud. Los jefes son muy similares a ti. Tienen una barra de salud igual que tú y pueden recibir tantos golpes como tú puedas soportar, lo que los hace difíciles de vencer, ya que a menudo también cuentan con mejores armas y ataques. Aun así, esto hace que el juego sea interesante. Decidí que me gustaba el juego cuando terminé los primeros 5 niveles mientras hacía este análisis. Es muy agradable y tiene cierto valor de rejuego debido a los diferentes personajes que puedes elegir.

Mugen Senshi Valis - Legend of a Fantasm Soldier

Lo más probable es que la serie Valis vuelva a aparecer más adelante, así que discúlpame si olvido mencionar ésta en el momento en que llegue a ella.

Figura 11: Los gráficos no son los mejores, aunque tienes muchos y diferentes monstruos

Figura 12 - Los jefes siempre tienen un patrón que siguen continuamente.

Este juego empieza con una introducción muy larga sobre una colegiala que es atacada por monstruos, recibe una espada mágica y empieza a luchar contra esos monstruos. Por supuesto, todo está en japonés, ¡así que no entiendo nada de nada! La calidad de esta introducción varía por momentos. Los personajes están muy bien dibujados, pero el nivel de calidad de la animación varía mucho, desde una animación suave hasta una serie de imágenes que se muestran en fila. Hay muchos videos, especialmente entre cada nivel. Puedes recoger diferentes objetos. Las letras representan tus diferentes estilos de ataque con tu espada y pequeños corazones que llenan un poco tu salud. A veces encuentras un gran corazón que rellena toda tu salud o te aporta una vida extra. Las luchas contra los jefes generalmente siguen un patrón "simple" que una vez que lo descubres, te permite derrotar fácilmente al jefe. Si te queda mucha salud al final del nivel, simplemente derribar contenciosamente al enemigo es todo lo que necesitas para derrotarlo. También tienes ataques mágicos que pueden activarse presionando las techas de "arriba" y de ataque, y al presionar hacia arriba y saltar darán un salto más alto de lo normal. Si recoges el mismo icono de arma que estás usando, el poder de tu arma aumentará, que también estará disponible para cualquier otra arma que elijas, así que una vez que alcances el nivel 3 (mira el icono de la espada en la parte inferior de las imágenes) podrás cambiar entre cualquier arma que te guste y estarás completamente emparejado con esa arma. La música es bien, aunque no es nada fuera de lo normal, y se adapta perfectamente al juego. ¡Si te gustan este tipo de juegos definitivamente deberías probarlo!

Nekketsu Koukou Dodgeball Bu - Soccer Hen

Figura 13 - Comparativa directa entre PC Engine (mostrada) y la versión NES con PC Engine con gráficos mucho mejores

Figura 14 - Comparativa directa entre PC Engine y la versión NES (mostrada) con la PC Engine que tiene mejores gráficos.

Si alguna vez has juegado a “Nintendo World Cup” para la NES, entonces sabrás de qué va este juego, es un juego muy similar, pero con gráficos mejorados y una banda sonora con calidad CD. Hay algunas escenas de anime aquí y allá y una presentación motivadora (todo en japonés, por supuesto). El terreno también varía mucho entre los niveles, puedes jugar en campos rocosos o incluso helados. En NES este juego era mi favorito. La jugabilidad, la música y el estilo gráfico era muy divertidos en la NES, y ver este juego en la PC Engine, me dio mucha alegría. Sin embargo, tiene algunos cambios, ya que en la versión NES puedes elegir con qué equipo quieres jugar, y en la versión PC Engine, prácticamente solo tienes un equipo y sigues más de una trama en torno a este equipo. Por supuesto, el juego también está completamente en japonés, así que lo agradecerás si has jugado a la versión de NES antes, sabrás que significan las opciones antes de empezar una partida. El juego está en esta lista principalmente por razones de nostalgia. Dudo que todo el mundo considere que se trata es un juego imprescindible, pero en mi caso, me trae buenos recuerdos de la versión NES, aunque con gráficos mejorados y algunas características y pantallas nuevas y agradables entre partidas. Incluso se ve mejor que la versión de Sega Genesis. La música es probablemente el punto más cuestionable de este juego. No hay duda de que la calidad de la música es mucho mejor que la versión de NES, ya que son pistas de sonido de CD, aunque puedes escuchar claramente la melodía principal del juego que tanto me gusta en la versión de NES. Entonces, ¿por qué discutir cual es la mejor? La melodía de la versión NES tiene su propio y único encanto, y tiene un gran impacto, algunos pueden preferir ésta sobre la banda sonora de CD. En general, es una experiencia increíble que solo puedo recomendar si te gusta la versión NES del juego.

Juegos que están bien

Lady Phantom

Desafortunadamente, éste es uno de esos juegos que está completamente en japonés, creo que disfrutaría bastante más si entendiera más el juego. En general, los gráficos son buenos, aunque el nivel de animación es bastante limitado. Es un juego de táctica al estilo mecha similar a la serie Battle Field u otros juegos de estrategia basados en turnos, aunque en este juego no cambias entre tu turno y el turno del enemigo, sino entre unidades, y también puede suceder que una unidad puede tener múltiples turnos o contar con otro turno de poco tiempo. Solo te lleva algo de tiempo aprender los diferentes comandos, pero debido a que me cuesta mucho entender el resto de menús, probablemente me esté perdiendo en gran cantidad de personalización antes de iniciar una pelea. En general, el juego se puede jugar con lo poco que entiendo, pero como la voz y todos los textos están en japonés, me pierdo todo lo que tiene que ver con la historia del juego.

Legion

Me resultó dicidil decidir donde colocar este shoot ‘em up. Cuando empecé el jugar, lo odié de inmediato. Tardé menos de 5 segundos en morir, tan pronto como regresé y mi nave dejó de parpadear (invencibilidad), morí nuevamente y justo después otra vez. No podía creer lo malo que era. Reinicié el juego como 5 o 6 veces sin llegar a ninguna parte, luego simplemente fui agotando mis continues, y rara vez acertaba darle al primer jefe, con aproximadamente 10 vidas (y dos continues) malgastados solo con este enemigo. Poco después, morí de nuevo sin más continues. Comencé un par de veces más y empecé a hacer un gran uso de la función de guardar y recargar de retroarch para "engañarme" a mí mismo a lo largo del primer nivel sin perder demasiadas vidas. En una partida, logré conseguir un disparo expansivo (que empieza como un sistema de doble vía pero que puede actualizarse para tener aún más), y con esto el juego finalmente se volvió "divertido". En el primer jefe, probablemente guardé y cargué unas 20 o 50 veces hasta que lo conseguí vencer sin morir y perdiendo todas mis armas. Seguí así. Guardé asegurándome de no perder una vida y al arma, y con ello el juego mejoró bastante. Este juego es muy rápido: si dejas que un enemigo te pase, volverá por detrás y se estrellará contra ti o te disparará por la espalda, porque no disparan cuando vienen de frente, sino sólo desde atrás, desde donde tú no puedes disparas. Es difícil y retador, pero también muy divertido. Al inicio de cada nivel, tienes un chico que habla en inglés contigo, lo que probablemente venga a ser algún tipo de historia, pero no tienes tiempo para prestar atención a lo que dice mientras intentas sobrevivir. En este juego, el Turbo para el botón de ataque se hace prácticamente obligatorio, o de lo contrario te eliminarán bastante más rápido.

Lemmings

Ya había jugado a Lemmings en mi Amiga y me gustó bastante por aquel entonces. La versión de PC Engine es decente con buenos gráficos y sonidos y, como era de esperar, la música es excelente, ya que se reproduce desde un CD. Los controles funcionan bien, aunque si usas un mando, debe ser lo suficientemente rápido y sensible. Si quieres jugar a una buena versión de Lemmings en tu ODROID, este es una de los mejores que puedes conseguir.

Lodoss Tousenki, Record of Lodoss War, Lodoss Tousenki 2 y Record of Lodoss War 2

Estos juegos están muy ligados al anime del mismo nombre, y no como la versión de Sega Dreamcast que no presenta los mismos personajes. Las secuencias de video están muy bien trazadas, e incluso cuenta con música de introducción y otra música del Anime. El juego en sí es un buen juego de rol, ya que puedes visitar diferentes ciudades y luchar contra los monstruos sobre el propio mapa. Incluso tiene un modo de lucha automática. Aparte de las escenas y el momento en el que hablas con los personajes de las ciudades, los gráficos no son demasiado impresionantes, aunque tampoco están tan mal. El segundo juego es en realidad una mejora sobre las ya buenas animaciones y escenas del primer juego. Los gráficos también mejoran un poco en el segundo juego. Sin embargo, ambos juegos están totalmente en japonés, lo que hace que sea bastante difícil de jugar, ya que no sé qué significan las diferentes opciones ni cómo proceder. No entiendo la historia, lo cual es una verdadera lastima, ya que la introducción y las extensas secuencias de video realmente se sumarían a la experiencia si las entendiese.

Lords of the Rising Sun

Este juego es bastante interesante, básicamente es una mezcla de estrategia y acción. Te mueves con tus ejércitos e intentas conquistar la ciudad y las fortalezas, la conquista en sí se realiza en tiempo real contigo andando, rompiendo puertas, matando a tus enemigos con una espada. También está completamente en inglés, incluida la larga introducción y las secuencias de video, por lo que es realmente fácil de entender. Lo que he jugado hasta ahora lo he disfrutado bastante, aunque me imagino que se volverá mucho más difícil más adelante. Tengo ganas de seguir probandolo.

Magical Fantasy Adventure - Popful Mail

Esta versión de Popful Mail es rara. Es uno de mis juegos favoritos de Sega CD, pero esta versión tiene una secuencia de vídeo que falta en la versión de Sega CD, que realmente ayuda con el argumento. Algunas otras cosas también se ven mejor, algunos personajes tienen primeros planos animados cuando les hablas, lo cual en realidad esta bastante bien. En general, los gráficos no son tan buenos como en la versión de Sega CD. Los sprites de los personajes son mucho más pequeños que en la Sega CD y los fotogramas de animación también son más reducidos. La jugabilidad cambia totalmente. En la versión de Sega CD, mueves la espada cuando la necesitas, mientras que en la versión de PC Engine funciona de manera muy similar a los primeros juegos Ys, donde te topas con el enemigo para atacarlos. Saltas sobre su cabeza y, de hecho, siguen de pie, o simplemente corre hacia ellos. Esto último puede dar buenos resultados con los jefes, ya que puedes golpearlos muchas veces simplemente chocandote contra ellos, pero con muchos enemigos deberías saltar, ya que es más seguro en la mayoría de los casos. Aún así, tiene su encanto, pero puesto que todo está en japonés una vez más, nos falta la trama y los diálogos, lo cual puede ser bastante divertido si sabes lo que dicen. No obstante, definitivamente me decanto por la versión de Sega CD.

Magicoal

Este es un impresionante juego de rol con una gran cantidad de buenos gráficos animados, la jugabilidad y los controles son realmente buenos. Puedes jugar con uno o dos jugadores, y puedes seleccionar qué jugador quieres usar, ya sea un niño o una niña, ambos son una especie de magos. La música y los sonidos también son muy buenos, realmente disfruté jugando al juego. Entonces, ¿por qué este juego solo está en "juegos que están bien"? Simplemente porque está completamente en japonés, y no tengo ni idea de lo que estoy haciendo. Simplemente camino sin rumbo y espero que las cosas sucedan. Llamo a todas las puertas y hablo con todo el mundo, aunque no entiendo lo que estoy haciendo. Me imagino que este juego debería ser muy bueno si realmente pudiéramos entender lo que está sucediendo.

Martial Champion

Martial Champion es un juego de lucha similar a Street Fighter 2. Puedes elegir entre 10 personajes diferentes, lo cual esta bastante bien, y también puedes ajustar la dificultad del juego con diferentes niveles y dificultades. El juego utiliza dos capas, por lo que el fondo se desplaza algo diferente al primer plano cuando saltas. Pero aparte de esto, no hay mucho más, no hay animaciones de fondo. Los personajes solo tienen unos cuantos fotogramas de movimiento (dos o tres como máximo), de modo que no es el mejor juego de lucha que he visto en cuanto a gráficos. Aún así, la presentación general es bastante decente, los controles de los personajes funcionan bastante bien y todos presentan estilos de lucha diferentes. En conjunto, es un juego "aceptable", pero no de primera categoría. Si te gustan los juegos de lucha como Street Fighter, deberías probarlo.

Metamor Jupiter

Metamor Jupiter es un clásico shmup. Lo que le hace destacar es que puedes "transformar" tu nave espacial y con ello, poder cambiar el arma que usas entre un potente láser, un disparo expansivo y un disparo directo más concentrado con un potente láser adicional que sube y baja. También puedes darte la vuelta y disparar hacia atrás. Puedes recibir golpes de los enemigos o de lo obstáculos, y de vez en cuando aparece foltando un cristal de energía que puedes recoger para reponer tu salud. En general, me gusta el juego, la introducción es muy animada, pero como viene siendo habitual está sólo en japonés. No está mal, pero tampoco es nada del otro mundo.

Meteor Blaster DX

Esta es una "producción" bastante reciente de 2000-2004 y consta de tres juegos Meteor Blaster DX, Loop y la versión de caravana Implode. Todo hecho por "MindRec". Meteor Blaster DX es un clon de Meteor con gráficos normales, el sonido y la música están bastante bien. Tiene características como el escudo y la deformación para hacen la vida más fácil (aunque son limitadas). Es una versión bastante buena de Meteor y es divertido Loop es un juego de tuberías en el que puedes girar las tuberías para crear un "loop", de ahí, el nombre. Conecta las tuberías para que al final se conecten nuevamente con el punto de inicio y conseguirás puntos. Cuanto más largo sea el bucle, más puntos, pero cuando toda el área se llene de tuberías, perderás. En Implode haces estallar bloques del mismo color que están conectando. El resto caerán en el lugar donde estaban los bloques eliminados. Borra todo el tablero para conseguir puntos extra. Es un juego interminable hasta que el tablero se llena por completo. Esta es una pequeña colección de juegos, y es bueno saber que algunos desarrolladores trabajaron en juegos para PC Engine mucho después de que se cancelara.

Might and Magic III - Isles of Terra

Este es un clásico juego de rol en el que juegas desde una perspectiva en primera persona y caminas a través de mazmorras, resolviendo rompecabezas y luchando contra monstruos. El juego tiene buena música y los gráficos están bastante bien para un juego de este tipo. Aún así, no es mi género favorito, y te llevará bastante tiempo completarlo. La serie Might and Magic es muy conocida y muy respetada dentro de su género.

Minesweep

¿Qué puedo decir? Es minesweep, lo amas o lo odias. Los tableros grandes pueden parecer bastante pequeños en el sistema, pero aún así funcionan. No soy fan de este juego en particular, pero funciona bien y tiene buena música. Se parece mucho a la versión de Windows 3.1.

Mirai Shounen Conan

Este es un pequeño y divertido juego de plataformas especialmente para niños, ya que los personajes principales también son todos niños. Aunque no es nada especial. Tiene algunas escenas y animaciones bonitas, pero como todo esta en japonés, no sé lo que sucede. Sin embargo, es un juego de plataformas bastante decente; No puedo decir que impresione, pero bueno. Vale la pena probarlo y es algo para que tus hijos jueguen, si quieres algo que no sea demasiado violento.

Monster Lair

También conocido como Wonder Boy III, Monster Lair es un juego arcade de carreras y armas. De hecho, está muy cerca del original, únicamente el fondo no se desplaza como la versión arcade. Me pregunto si esto se hizo intencionalmente o no, ya que debería haber sido posible hacerlo. Para mí, esta versión me parece un poco más difícil que la versión arcade, aunque todavía sigue siendo divertido. Cambiar al modo turbo puede ser bastante útil cuando luchas contra los jefes.

Motteke Tamago

En este juego, controlas un ave que recolecta los huevos que encuentran en el mapa, que a partir de ese momento te seguirán. Estos huevos eclosionan después de un tiempo y correrán a tu "casa", lo cual te dará puntos. El que tenga más puntos gana la ronda. Hay otras aves (ordenador o otros jugadores) que intentan hacer lo mismo. Puedes luchar contra ellas cargando y corriendo entre sí, así como recolectar diferentes tipos de mejoras, que te hacen caminar más rápido, eclosionar más rápido, detener a tus enemigos por un momento, y demás. Es un buen juego competitivo y puedes elegir si quieres escuchar las pistas del CD o la música sintetizada a través del chip de sonido interno.

Mystic Formula

Este juego de correr y disparar cuenta con 4 personajes diferentes con distintos tipos de ataques para elegir. Deja de disparar, y carga tu ataque haciendo más daño cuando lo sueltas, aunque a veces muchos ataques pequeños pueden hacer más daño que los ataques en lo que tienes que cargar. La música está bien, y el sonido puede llegar a ser un poco molesto en los momentos en los que el mismo sonido de ataque se repite una y otra vez. Hay diferentes potenciadores que puedes recoger e incluso puedes raptar a uno de tus compañeros a modo de apoyo que te seguirá y disparará aleatoriamente. Los gráficos no son muy buenos en mi opinión. En la introducción están bien, pero en el juego son bastante sosos y no hay mucho más que decir. Está bien para pasar un rato.

Nekketsu Koushinkyoku - Soreyuke Daiundoukai

Este juego es muy similar a Nekketsu Koukou Dodgeball Bu - Soccer Hen. Tiene un estilo gráfico similar, ofrece personajes parecidos y también es muy similar dentro del juego mientras luchas a través de los diferentes niveles, superando a tus oponentes. Este juego permite hasta 4 jugadores (el resto siempre los maneja el PC) y empieza con algunas pistas de carreras en las que tienes que correr de una ventana a la siguiente evitando obstáculos y a tus oponentes, además de intentar llegar a la meta. Para esto, hay varias armas y elementos que se pueden usar como armas que vas encontrando en los niveles, como un bate de béisbol, una bola de bolos o unos nudillos de metal. Tras un par de niveles de carreras, te conviertes en un camorrista donde gana el último que quede en pie. Es bastante divertido, aunque aún no lo he probado del todo. Los gráficos y los sonidos también son muy buenos, así que creo que no te equivocaras con el título, excepto por el hecho de que todo está en japonés nuevamente.

Neo Nectaris

Una vez más, este juego está totalmente en japonés, pero no hay mucho que hacer en relación a la historia o el texto que hay para leer. Este juego es un juego de estrategia básico, muy similar a Advanced Wars para GBA. Se basa en rondas: primero mueves todas tus unidades, luego lo hace el enemigo. El terreno puede darte diferentes ventajas, como una mejor cobertura o ataque. De hecho, si no pones el terreno a tu favor, es muy probable que pierdas la batalla. No es malo, desde el punto de vista gráfico. Me gusta mucho la animación y los detalles del combate cuando luchan entre sí las unidades. Aparte de eso, no hay mucho más que decir sobre el juego.

Nexzr

Este tirador espacial tiene un comienzo bastante soso y es un poco dificil, pero una vez que empiezas a recoger potenciadores, se vuelve mucho más fácil y divertido. El juego tiene buena música que realmente se ajusta a la configuración. Los gráficos en general son buenos, pero nada de vanguardistas. Esta bien ver un buen número de naves espaciales enemigas que se parecen más a naves portadoras, y algunas de hecho, llevan naves más pequeñas si no las destruyes antes de que puedan despegar. De vez en cuando, una gran aeronave "salta" al sistema, acopañada de una animación bastante buena. Te eliminan bastante rápido (un golpe y se acabó), de modo que es mejor mantener bajo control los potenciadores, y usar la función de guardado del emulador de vez en cuando. Tienes varios potenciadores diferentes que puedes recoger, empezando con un escudo que absorberá un golpe (que no se pueden agrupar), para dispara misiles que apuntan automáticamente, que son bastante normales. En general, el juego es bueno, aunque no impresiona demasiado.

Juegos que no me han gustado

Langrisser - Kouki no Matsuei

Se trata de otro juego táctico totalmente en japonés como Fire Emblem y similares, pero mucho más caótico. Cuando te lanzan al juego, te cuesta mucho descubrir cuáles son tus unidades y cuáles son las unidades enemigas, lo cual es aún más difícil cuando se enfrentan en combate. A menudo piensas que están aniquilando al enemigo y descubres, que en realidad eran tus unidades las que acababan de morir. El juego tiene un modo de batalla automática en el que el PC se hace cargo de tus unidades y luchará contra el enemigo. ¿te imaginas cual será el resultado de esto? De todos modos, no me gustó el juego para nada. Está todo en japonés y no es fácil de entender, son cientos de unidades las que hay que mover, lo cual te lleva una eternidad, con menús y estilo de lucha bastante complicados de entender.

Lord of Wars

Este juego me recuerda mucho a "Advanced Wars" de la GBA, pero con unos gráficos y jugabilidad mucho peores. También está totalmente en japonés, y simplemente por eso es difícil de entender. Tampoco es que sea muy divertido de jugar en mi opinión. Las animaciones en las secuencias de video y en las reuniones de misiónes son bastante buenas, pero el juego en sí es todo lo contrario, los gráficos y el nivel de animación se reducen al mínimo absoluto y se parece más a un juego de Game Boy más que a un juego para PC Engine.

Magical Dinosaur Tour

El juego no es tan malo, pero en realidad no es realmente un juego. Es una enciclopedia multimedia sobre dinosaurios, algunos con solo texto e imágenes, otros con narraciones y otros con animaciones. Es interesante, aunque está más dirigido a niños que estén interesados en aprender más sobre los dinosaurios.

The Manhole

Este juego es, literalmente, una aventura de "apuntar y hacer clic", ya que lo único que puedes hacer es apuntar a algo y hacer clic, después de lo cual suceden "cosas". Tiene buena música clásica y diferentes efectos de sonido (incluso puedes cantar "The ABCs" en este juego). Los gráficos no son muy buenos, y parece más bien que alguien los dibujó en “Paint”. El texto del juego está en inglés, pero los diálogos está en japonés. En general, es una experiencia extraña con mucha exploración y bucles. No está mal, aunque tampoco es mi tipo de juego.

Motoroader MC

Este juego de carreras me recuerda mucho a los micro machines, pero solo porque todo es muy pequeño y no porque estés compitiendo en un "mundo minusculo". La parte más impresionante de este juego es que puedes jugar con hasta 5 jugadores. Competir con el PC es increíblemente difícil (al menos para mí), y llegar en último lugar en todas las carreras no es nada que considere divertido.

Nekketsu Legend Baseball

A pesar del nombre, este juego tiene muy poco en común con los otros dos juegos de Nekketsu de esta serie, más bien es un juego de béisbol al estilo RPG donde los combates se hacen con juegos de béisbol, de modo que, si un enemigo te ataca, le arrojas pelotas como en un juego de béisbol, Si ellos fallan, pierden HP, y si ellos golpean la pelota, tú pierdes HP. Es algo confuso, y dado que todo está en japonés (lo cual rara vez es bueno en un juego de rol, al menos para mí) no tengo ni idea de qué tengo que hacer.

¡Ven y Conoce Qwiic!

Ahí está; posado justo encima de tu ODROID-GO portátil, delante de tus narices: un cabezal hembra de entrada/salida de propósito general (GPIO) de 10 pin. ¿Cómo vamos a usarlo? Bueno, le podemos conectar algunos sensores (por ejemplo, ODROID Weather2 Board), confeccionar un breve diseño de Arduino y usar la pantalla de cristal líquido (LCD) integrada para monitorizar el flujo de datos.

Puedes preguntar: "Dime algo, ¡Yo no lo sé!". Bueno, ¿qué tal esto? Con sólo una pequeña inversión de 1.50$, puedes montar un completo ecosistema de sensores, herramientas, activadores y pantallas para tu ODROID-GO y aún te sobrarán cuatro pin GPIO para otros proyectos (consulta la Figura 1).

Figure 1 - This project will turn your ODROID-GO into an I2C powerhouse
Figura 1: Este proyecto convertirá tu ODROID-GO en un potente I2C

Antes de empezar con las instrucciones paso a paso para este proyecto que amplía los horizontes, déjame hacer un punto "Qwiic". Veras que este proyecto va a utilizar la interfaz de circuito inter-integrado (I2C; pronunciado “ojo cuadrado”) a la que se puede acceder a través de cuatro pines con la interfaz GPIO del ODROID-GO. Los pines que usaremos son 3.3V, SCL, SDA y GND, es decir, los pines número 6, 5, 4 y 1, respectivamente. Eso es todo lo que hay, estos cuatro pines representan la interfaz I2C de GO.

Como puedes ver, solo se necesitan cuatro pines para usar una interfaz I2C. Sin embargo, no dejes que este pequeño número de pines te engañe. Estos cuatro cables pueden soportar hasta 1008 dispositivos. Hasta ahora, acceder a tantos dispositivos habría sido un auténtico dolor de cabeza. Por suerte, tenemos un salvador I2C. SparkFun Electronics (SFE) recientemente ha tomado una decisión "Qwiic" que supondrá grandes beneficios para el ODROID-GO.

SFE invento el sistema Qwiic como respuesta a la creación de una “simple” interfaz plug-and-go para microcontroladores complejos o placas independientes aptas para microprocesadores. En pocas palabras, Qwiic es una combinación de clavija/receptor de cuatro pines que agrega una interfaz I2C para, bueno, cualquier cosa. Puedes encontrar clavijas Qwiic en sensores ambientales, herramientas láser de distancia, servomotes flexibles y clones de Arduino. Desafortunadamente, agregar tus placas independientes heredadas al sistema Qwiic suponía todavía hacer uso de un montón de cables trenzados. Esto era así hasta que llegó el Adaptador Qwiic (ver Figura 2). Esta pequeña y económica placa permite que prácticamente cualquier dispositivo heredado I2C pueda combinarse con el sistema Qwiic. Eso significa que el ODROID-GO puede actualizarse rápida y fácilmente al sistema Qwiic.

Figure 2 - The SparkFun Electronics Qwiic Adapter. Image courtesy of SparkFun Electronics
Figura 2 - El adaptador Qwiic de SparkFun Electronics. Imagen por cortesía de SparkFun Electronics.

¿Estás listo para agregar un completo universo de placas independiente I2C a tu GO? Bueno, pues entonces, conozcamos Qwiic. Ah, y si tiene curiosidad por la definición de "Qwiic", no te preocupes, no hay ninguna. No obstante, puede valerte esta aproximación: “Rápidamente, circuito inter-integrado cableado”.

Componentes

  • Adaptador Qwiic SFE - DEV-14495
  • Cabezal macho de 6 pines (puedes usar el cabezal macho de 10 pines incluido en tu kit ODROID-GO) o SFE PRT-00116
  • Cable Qwiic 100mm - SFE PRT-14427
  • 2 pequeños trozos de cable de núcleo solido procedente de retales

Paso a paso

Paso 1. Rompe una parte de tu cabezal macho que incluya 6 pin del cabezal.

Paso 2. Utiliza unos alicates para retirar dos pin (es decir, # 2 y # 3) del cabezal de 6 pin tal y como se muestra en la Figura 3. Sí, en este punto puedes empezar a contar tus pin desde cualquiera de los extremos del cabezal.

Figure 3 - Push these two pins out of the header
Figura 3 – Retirando estos dos pin del cabezal

Paso 3. Empuja suavemente los dos pines externos hacia abajo hasta que la parte superior de cada pin quede al mismo nivel que la parte superior del cabezal (consulta la Figura 4).

Figure 4 - Carefully push these two pins down inside the header
Figura 4 - Empuja con cuidado estos dos pin hacia abajo dentro del cabezal

Paso 4. Coloca la placa adaptador Qwiic encima del cabezal y empuja con cuidado los pin # 4 (es decir, SDA) y # 5 (es decir, SCL) hasta que la parte superior de los pines se encuentren al mismo nivel que la parte superior de la PCB adaptador.

Paso 5. Suelda los pines a las yemas SCL y SDA sobre la PCB adaptador Qwiic.

NOTA: los siguientes pasos requerirán un cableado preciso y una cuidadosa soldadura, pero confió en ti y SÉ que puedes hacerlo.

Paso 6. Corta tu cable de retales con una longitud de aproximadamente de 7-9 mm y empuja este cable hacia abajo a través de la yema GND en la PCB adaptador. Continúa a a lo largo de abertura del cabezal que está directamente debajo de la yema GND. Ahora dobla el cable hacia el pin del cabezal extendido más cercano, no hacia el pin SDA; sino en dirección opuesta.

Paso 7. Suelda un extremo de este cable a la yema GND y el otro extremo al pin del cabezal extendido. Cuando esté completamente ensamblado e instalado en el ODROID-GO, este pin irá al pin GPIO #1.

Paso 8. Corta un trozo de cable sobrante con una longitud de 12-15 mm e inserta este cable en la yema de 3.3 V en el PCB adaptador Qwiic. Continúa empujando este cable hacia abajo en la abertura del cabezal que está debajo de esta yema. Dobla el cable y dirígelo a lo largo del cabezal hasta el pin extendido restante ubicado en la posición más alejada del cabezal macho

Paso 9. Estate absolutamente seguro de que este cable no haga contacto con ningún otro pin del cabezal. Utiliza un trozo de aislamiento de cable para asegurar que los pines SCL y SDA del cabezal estén completamente aislados.

Paso 10. Suelda este cable a la yema 3.3V del PCB y el otro extremo al pin del cabezal extendido. Este pin irá al pin GPIO # 6 (ver la Figura 5).

Figure 5 - Success! Your Qwiic Adapter is properly connected, safely insulated, and installed on your ODROID-GO
Figura 5 - ¡Victoria! Tu adaptador Qwiic está conectado correctamente, aislado de forma segura e instalado en tu ODROID-GO

Ahí vamos. Acabas de mejorar el sistema I2C de tu máquina de juegso. Asegúrate de probar tus pines Qwiic en la placa adaptadora antes de colocar una placa independiente. Simplemente enchufa el adaptador Qwiic en el ODROID-GO entre los pines 1-6 GPIO; asegúrate de que el pin # 1 sea el pin GND en el adaptador. Luego, prueba la salida de voltaje con tu leal multímetro entre las yemas 3,3 V y GND (consulta la Figura 6).

Figure 6 - Use this handy-dandy schematic for verifying your connections
Figura 6: Utiliza este práctico esquema para comprobar tus conexiones

Ahora sumerge el dedo en tu nuevo ecosistema con la medida láser SFE Qwiic Distance VL53L1X time-of-flight (consulta la Figura 7). Además, observa lo fácil que es escribir código para una placa aparte tan compleja (consulta la Figura 8). El sistema Qwiic reconoce y utiliza automáticamente los pines ODROID-GO I2C. Esto está muy logrado. Ahora Qwiic es realmente plug-and-GO.

Figure 7 - Plug-and-GO; make measurements that are accurate to within 5 mm
Figura 7 - Plug-and-GO; Realiza mediciones con una precisión de 5 mm.

Figure 8 - Here is my sample Loop function from an Arduino sketch using the VL53L1X Qwiic sensor
Figura 8: Aquí tienes mi ejemplo de función Loop de un esquema Arduino utilizando el sensor Qwiic VL53L1X

En conclusión

1. La librería maestra de ODROID-GO tiene algunos conflictos con las librerías de software SFE. Por lo tanto, copia los archivos cabecera ODROID-GO que necesitas para tu proyecto e insértalos en un nuevo directorio de librería (como se muestra en la Figura 9).

Figure 9 - These are the ODROID-GO master library files that I copied into a new library. I then used #include for adding this library to my Arduino sketch
Figura 9 - Estos son los archivos de la librería maestra de ODROID-GO que copié en una nueva librería. Luego utilicé #include para agregar esta librería a mi esquema de Arduino

2. También se pueden usar otras placas separadas Qwiic con tu nuevo adaptador. Pruébalas individualmente o en cadena juntando un par de cientas.

Tu Propio Dispositivo de Internet Móvil

Me gustaría anunciar un proyecto en el que he estado trabajando durante bastante tiempo. Se trata de un MID o dispositivo de Internet móvil, con la misma promesa interminable de los ordenadores de bolsillo de antaño. Conectado a dispositivos móviles y ejecutando un sistema operativo de escritorio completo, este dispositivo puedes activarlo de una forma que las plataformas móviles actuales no lo permiten.

La era de los ordenadores personales comerciales adaptados a las necesidades del usuario está llegando a su fin. Esto inevitablemente conlleva riesgos de seguridad debido al aumento de la propiedad del software, la pérdida de decisión del usuario y el cambio en el control pasando del típico usuario o administrador a una empresa con motivos de vigilancia o con fines de lucro.

Afortunadamente, los ordenadores de placa reducida, como la Raspberry Pi y los productos basados en ésta, están liderando un camino que nos permite retomar la clase de libertades informáticas que hemos disfrutado en el pasado. Estas libertades incluyen la posibilidad de construir tu propio dispositivo móvil sin intereses corporativos y gubernamentales.

Con algo de tiempo libre y el soporte de los fabricantes de pantallas táctiles, ahora es posible ensamblar un dispositivo de bolsillo con un ordenador de placa reducida (SBC).

Si los comparamos con los típicos dispositivos móviles, estos dispositivos son menos atractivos, tienen menos duración de batería y no tienen acceso a Google Play o App Store. Sin embargo, carecen de software hostil para el usuario, son totalmente personalizables y cuentan con verdaderas funciones multitarea.

Dispositivos móviles de internet - modelos 16 y 17

El modelo 16 podría describirse como potente y tosco. Es más rápido, más fácil de construir, altamente compatible y tiene mayor capacidad de expansión y modificación. También es grueso, pesado, caliente, ineficiente y tosco por los bordes.

El modelo 17 podría describirse como elegante y refinado. Es inteligente, reducido, innovador y eficiente como un moderno dispositivo móvil. También está diseñado expresamente con muy poco espacio en el diseño para posibles errores o ampliaciones.

Requisitos

Revisa los requisitos previos necesarios antes de continuar:

  • Proveedor GSM: con la configuración actual del software y el hardware recomendado, solo admite proveedores celulares GSM de América del Norte. Específicamente ATT, ATT prepago y T-Mobile.
  • Hardware soportado más reciente: el proyecto generalmente solo admite una gama limitada de dispositivos por razones de recursos. A continuación, se analizará en detalle el hardware requerido.
  • Conectividad (opcional): cuenta SIP para llamadas telefónicas, cuenta de correo electrónico con acceso externo y un proveedor XMPP para comunicación en grupo privado

Inicio

Si tú o tu organización cumplen con los requisitos del sistema, elije un rombo:

  • Trabajar en el desarrollo de un dispositivo para ti o tu organización. Este link dirige al desarrollador/creador de bricolaje a una serie de páginas con diagramas, notas de compilación, revisiones de componentes e imágenes de software.
  • Contratar a Software Freedom Solutions para que desarrolle un dispositivo para ti. Elegir el número de modelo y las opciones personalizadas. Por ejemplo, ¿Te gustaría una cámara web, una batería diferente o una opción personalizada más radical? Este link llega al email de SFS en forma de presupuesto.
  • Soporte gratuito. Es importante que la mayoría de los problemas sean dirigidos a un sistema de seguimiento de errores y no se mantengan privados. Los individuos y las organizaciones tienen libertad para hacer publicaciones con el fin de obtener ayuda de cualquier tipo.
  • Soporte pagado. Si tú o tu organización requiere soporte puntual, específico o privado, contacte directamente con Software Freedom Solutions. Este link contacta con SFS por correo electrónico.
  • Trabajar en el código directamente por diversas razones como por ejemplo incluir mejoras o con fines de estudio.

Análisis del hardware

En primer lugar, familiarízate con los componentes de hardware y conoce las razones por las que se utilizan.

  • Cinta adhesiva de montaje 3M. No han sido las revoluciones en los SBC, la pantalla táctil o la tecnología de la batería las que han hecho posible este proyecto. En su lugar, lo ha sido la cinta resistente y duradera que ha sido utilizada ampliamente y que ha permitido mantener integrados la mayoría de los componentes.
  • Cinta Kapton. Si es lo suficientemente buena para las máquinas más fiables jamás construidas (Voyager 1 y 2), es lo suficientemente buena como para usarla en este proyecto. La cubierta exterior puede estar compuesta en su totalidad por cinta Kapton si optas por no construir una. Diversos ensayos han demostrado que Kapton se calienta mucho menos que la cinta aislante.
  • Pantalla Waveshare 5” 800x480 HDMI (A). El pilar de hardware del proyecto. Varios diseños se basan en ella. Además, sirve a modo "armazón" del dispositivo en que están montados el resto de componentes. El dispositivo “conector” HDMI permite una conexión simple, resistente y compacta que está localizada físicamente a un lado de la pantalla con la PI y es clave para mantener todo el dispositivo unido. Cualquier resolución más alta sería frustrante a la hora de usarla. Además, la conexión HDMI utilizada es bastante menos delicada que un cable plano.
  • Pantalla Waveshare 5 "800x480 HDMI (B). Esta usa una entrada USB en lugar de una pantalla A similar SPI. Puede usar un cable FPV HDMI para una conexión plana en ambos lados. Actúa como un ratón genérico, lo cual es ideal para SBC y sistemas operativos alternativos. No funciona con la emulación del tercer botón de evdev
    • Pantalla Waveshare 5" 800x480 HDMI (H):
    • Entrada USB
    • Pantalla capacitiva
    • Botones de control con brillo y encendido/apagado.
    • Escalado de hardware - no utilizado
    • Amplificador de altavoz/puerto de auriculares para audio HDMI - no utilizado
    • Control de retroiluminación PWM - no utilizado
    • Entrada DisplayPort/VGA - no utilizada
  • Pantalla Waveshare 7" 1024x600 HDMI. El pilar central del hardware del Modelo 4, también sirve como "armazón" del dispositivo en el cual se monta el resto de componentes. Un conector HDMI "prestado" de una pantalla rota de 5" combinado con un adaptador HDMI de 90 grado permite una conexión directa desde la pantalla a la PI sin cables.
  • Pantalla Waveshare 4" 800x480 HDMI. El pilar del hardware del Modelo 6, también sirve como "armazón" del dispositivo, ya que es el componente en el que se montan el resto de componentes. La pantalla es IPS y es extremadamente nítida. Utiliza un interruptor de encendido para la luz de fondo como las otras pantallas.
  • Weboost Home 4G. Este amplificador de señal celular es esencial para recibir una señal de datos GSM estable, que no penetra bien en las estructuras. Los típicos teléfonos inteligentes no tienen una dependencia absoluta de los datos como lo hacen estos dispositivos, de modo que una conexión débil es inaceptable. Las pruebas han demostrado que este dispositivo marca la diferencia entre una llamada SIP casi inservible y una llamada casi perfecta. La prueba de intensidad de la señal no muestra la imagen completa de las posibilidades de este dispositivo. La verdadera ventaja está en la mejora de la pérdida de paquetes de datos. Se recomienda separar las antenas en vertical y horizontal.
  • Adaptador celular USB Huawei E303. Este dispositivo 3.5G tiene un perfil delgado y se puede reducir aún más con una herramienta dremel. Puede llegar a usar menos potencia que el 308U.
  • Adaptador celular Sierra Wireless 308U USB. Este dispositivo 3G tiene un perfil pequeño, similar al E303, con dos luces indicadoras. Tiene soporte para una única antena externa. Puede llegar a utilizar más potencia que el E303.
  • Adaptador celular Sierra Wireless 313U USB. Este dispositivo 4G LTE tiene un perfil ancho y delgado con dos luces indicadoras. Tiene soporte para dos antenas externas. Se debe tener más cuidado a la hora de ubicar los componentes de audio, situándolos lejos de sus potentes transmisores. Puede llegar a usar más potencia que el 340U.
  • Adaptador celular Sierra Wireless 340U USB. Este dispositivo 4G LTE tiene un perfil ancho y delgado con una pantalla indicadora LCD de tamaño generoso. Tiene soporte para 2 antenas externas. Se debe tener cuidado a la hora de ubicar los componentes de audio para que éstos estén lejos de sus potentes transmisores. Puede llegar a usar menos potencia que el 313U.
  • Pequeño micrófono USB. Se trata de un micrófono con buen rendimiento, económico, compacto, adecuado y de baja potencia. Simplemente conéctalo y monta el dispositivo de modo que esté ubicado en la parte inferior, funciona bien para las llamadas de voz e incluso puede tener la suficiente sensibilidad para usarse como manos libres.
  • Amplificador drok micro 3w. Esta placa analógica es estéreo pero solo utilizaremos un canal para este proyecto. El sonido estéreo adecuado requiere más separación de espacio de lo que permite un dispositivo del tamaño de un teléfono inteligente. El volumen completo es tan alto como el altavoz de un teléfono de gama media. La placa en sí también es muy pequeña para la potencia disponible. También puede tirar directamente de la energía de la batería de 3.7 voltios sin utilizar un puerto USB. Sin embargo, el diseño definido está completamente hecho sin soldadura. Las pruebas han demostrado que no es posible unir los canales de audio izquierdo y derecho en un solo canal mono más potente.
  • Amplificador i2s digital Adafruit MAX98357. Ha demostrado ser un amplificador muy estable y nítido. Ningún problema de bucle de tierra como puede tener un amplificador analógico. Barato y con pin ajustable.
  • Cámara Logitech c525
  • Menos problemas que csi
  • La cámara/micrófono se recoge hacia delante o hacia atrás.
  • Será propenso a los fallos cuando se introduzca en el bolsillo
  • Testing - con pruebas reiteradas siempre funciona
  • ADC Adafruit ads1015
  • Fiable
  • El cargado y el cableado/placas de alimentación importantes contienen una función de monitorización
  • Testing - con pruebas reiteradas siempre funciona
  • Cámara espía arducam Pequeña Son necesarios 3 fallos para volver a colocar los dos conectores/rma requeridos Testing - no es práctico debido a los fallos - se necesita una cámara csi alternativa
  • Módulo linterna Fiable Gran placa de potencia/Cableado significativo; contiene una función linterna Testing - con pruebas reiteradas siempre funciona
  • Luz de notificación Fiable Sin rechazos Testing- con pruebas reiteradas siempre funciona
  • Cable de extensión DC de Philmore (18AWG). Cuando este cable se corta por la mitad, se puede usar un lado para el conector del dispositivo y el otro lado para el conector del cargador.
  • Altavoz portátil ovalado Icstation 1W. Este pequeño altavoz se puede escuchar al otro lado de una habitación. Los cables son tan pequeños que se deben fundir con un soldador para poner a la vista el cobre.
  • Mini interruptor snap Uxcell. Este interruptor es delgado y rectangular y puede caber fácilmente dentro de la carcasa de un dispositivo. Anteriormente se vendía con cables previamente soldados, pero ahora solo se puede encontrar el interruptor.
  • Micro HUB USB Tanbin 4 en 1. Este pequeño hub puede usarse con cualquier host USB con modificación de cable. Los conectores USB pueden extraerse fácilmente para su uso en situaciones difíciles. Ten cuidado con los cortocircuitos y cables cruzados, prueba el hub con una tablet USB OTG antes de usarlo.

Cargadores

Ten cuidado al usar cualquier cargador de este modo, ya que por defecto carecen de una conexión de sensor de temperatura a la batería, que es una característica de seguridad adicional bastante importante. En el típico escenario de 1.3A de consumo máximo de las baterías, configurar el cargador a 1.8A cargará las baterías mientras continúa alimentándose el dispositivo. Solo debes configurar el cargador para que se cargue lentamente con la potencia necesaria para ejecutar el dispositivo. Cargar las baterías de litio demasiado rápido es peligroso. Es posible que no se lleguen a cargar las baterías de forma óptima, pero evita una gran cantidad de trabajo de diseño adicional del cargador. Se debe usar un cargador/fuente de alimentación que sea seguro implementando el cambio automático entre los modos CC y CV, también conocido como limitador de corriente y voltaje.

Fuentes de alimentación recomendadas

  • “Pequeña” placa de potencia convertidor Yeeco DC a DC boost (https://amzn.to/2GRlc71).
    • Fallo fatal: fallo con caídas de voltaje con grandes cargas después de calentarse. Realmente buena con 1 amperio con el paso del tiempo.
    • Recomendada de todas formas, ya que se puede poner fácilmente en paralelo con un suministro idéntico.
  • Ultra-pequeña placa de potencia Yeeco de alta eficiencia de 3A (ya no está disponible)
    • Fiable. No hay interruptor de encendido. La reina de todas las fuentes de alimentación. La carga integrada funciona a 500 mA por defecto, pero parece tener una opción para 1000 mA. La carga integrada nunca interrumpe la salida. Cuenta con dos indicadores LED de advertencia de baja tensión.

Placas de alimentación alternativas no probadas y sistema de carga integrados

Para comentarios, preguntas y sugerencias, visite el hilo original en https://forum.odroid.com/viewtopic.php?f=116&t=31662.

Actualizando Ubuntu a la versión 18.04

Cuando Ubuntu 18.04 fue lanzado para ODROID-C2 en verano de 2018, Hardkernel señaló que desafortunadamente, debido a una serie de complicados problemas de dependencias, era imposible actualizar desde la versión 16.04 a la versión 18.04 (en ese momento). Esto significaba que los usuarios de la versión 16.04 se quedaban atascados sin una ruta de actualización, o se veían obligados a reinstalar y empezar de cero.

En mi caso, me encontraba ejecutando 3 ODROID-C2s "en producción" con la versión 16.04 que quería actualizar a la 18.04. Después de probar crossgrading en el N1 (https://bit.ly/2PpeHMA) miré la opción de actualizar desde la 16.04 a 18.04, lo cual debería ser un tema bastante simple. Así que empecé con el sistema más complicado que tenía en ejecución, un C2 con X11, Kodi, Chrome, mpd, Home Assistant, mosquitto, munin-node, MariaDB, una cámara web, una tarjeta de sonido externa, sensores conectados a GPIO y un montón de scripts personalizados. La actualización funciona si sigues los pasos que se detallan a continuación.

Procedimiento de actualización

Trabajar en cualquier entorno de producción puede ser peligroso, así que hice una copia de seguridad (dd o odroid-backup) y si no puedes permitirse tiempo de inactividad (yo no podría o mi resultado WAF caería en picado) ejecuta la actualización en un hardware diferente con una copia de tu sistema operativo

En primer lugar, debes asegurarte de que el sistema esté actualizado. Instala todas las actualizaciones que falten con:

$ sudo apt-get update
$ sudo -y apt-get dist-upgrade
Hay dos maneras de probar la actualización: a través de do-release-upgrade (que es la forma oficial, pero puede fallar) o a través de distrorejuve (que es un método chapucero, pero puede funcionar donde falle el primero). Si está ejecutando la imagen mínima, es posible que tengas que instalar el siguiente paquete para disponer del programa do-release-upgrade:
$ sudo apt-get install ubuntu-release-upgrader-core
Antes de probar cualquier método, es mejor guardar una lista de los paquetes instalados:
$ sudo apt list --installed | cut -d '/' -f 1 > /root/packages.16
En mi caso, probé el método do-release-upgrade en un C2 que ejecutaba la imagen mínima y el método distrorejuve en dos C2 que ejecutaban Xorg y tenían más paquetes instalados. En mi caso ambos métodos funcionaron.

do-release-upgrade

Es mejor iniciar do-release-upgrade desde un terminal tras un arranque limpio.

$ sudo do-release-upgrade
Figura 1 – Esquema general de la instalación

El sistema puede avisarte si has restringido los paquetes y te hará desinstalarlos o actualizarlos para continuar. A continuación, cogerá una lista de paquetes que se actualizarán y te preguntará si desea mantener tus cambios en los archivos de configuración personalizados. Por lo general, las respuestas por defecto no deberían presentar problemas. Si el proceso va bien, la actualización debería transcurrir sin incidentes. Cuando finalice la actualización, te indicará que debes reiniciar.

Figura 2 - Reinicio necesario

En este paso, no deberías reiniciar automáticamente, sino hacerlo desde un intérprete de comandos. Deberías echarle un vistazo "Chequeo previo al arranque" que se muestran más adelante antes de decidir reiniciar.

distrorejuve

Si el primer método te ha dado error o si te va la aventura, puedes probar distrorejuve.

$ sudo apt-get install git
$ git clone https://github.com/mad-ady/distrorejuve.git
$ cd distrorejuve
$ sudo ./distrorejuve.sh --to-latest-lts
Lo más probable es que distrorejuve te lance un aviso sobre: Un montón de paquetes relacionados con X11 que están instalados y que pueden causarte problemas y te sugerirá que los elimines. Puedes eliminarlos ya que los instalarás más adelante:
$ sudo apt-get -y remove x11-common brltty-x11… xterm xvt xzoom
$ sudo apt-get -y autoremove
Si obtienes errores al eliminar paquetes porque has guardado algunos, debes mantenerlos:
$ sudo apt-mark showhold chromium-browser
$ sudo apt-mark unhold chromium-browser
Tienes repositorios de terceros que deben desactivarse antes de que empieces con la actualización. Deberás comentar las líneas indicadas en /etc/apt/sources.list.d/*. Además, si estás utilizando la rama xenial-backports en sources.list, deberás comentarla también. Desafortunadamente, el script también fallará si tiene entradas deb-src en tu sources.list. Éstas también tienen que ser comentadas antes de empezar.

Una vez completados todos los requisitos, puedes iniciar la actualización:

$ sudo ./distrorejuve.sh --to-latest-lts
Llevará un tiempo, pero debería terminar sin problemas. Sin embargo, una vez que se haya completado el proceso, ten en cuenta que aún no has terminado. Aún tienes que volver a añadir los paquetes que faltan (recuerda que es posible que hayas desinstalado X11). Coge una lista de los paquetes instalados actualmente y compárala con la guardada anteriormente. Vamos a ignorar las librerías porque generalmente dependen de algo más.
$ sudo apt list --installed | cut -d '/' -f 1 > /root/packages.18
$ sudo diff -u /root/packages.16 /root/packages.18 | grep '^-' | cut -c 2- | grep -v '^lib' | tail -n +2 | xargs echo
Figura 3 - Paquetes que faltan

Aparecerá una lista con los paquetes que faltan (en su mayoría X11 y programas gráficos) que debes reinstalar manualmente. Ten en cuenta que no se podrán instalar todos los paquetes porque algunos pueden haber sido reemplazados por paquetes con versiones más recientes y otros habrán sido cesados (como gksu, systemd-shim). Así que la mejor manera de hacer esto es intentar seleccionar una línea de salida e instalarla (adaptar la línea hasta que se instale), luego pasar a la siguiente línea hasta que termines. También debes habilitar los backports en /etc/apt/sources.list, ya que fueron desactivados antes de la actualización:

# echo 'deb http://ports.ubuntu.com/ubuntu-ports/ bionic-backports 
main universe restricted universe' >> /etc/apt/sources.list
# apt-get update

Chequeo previo al arranque

Querrás asegurarte de que tu sistema se encuentre saneado antes de reiniciar, así que comprueba lo siguiente: Todavía tienes una imagen kernel/uInitrd y boot.ini en /media/boot Si deseas configurar la red a través de /etc/network/interfaces, asegúrate de que el paquete ifupdown todavía sigue instalado

Re-activar repositorios específicos de ODROID

Durante el proceso de actualización, los repositorios de terceros (como el repositorio de ODROID) se deshabilitaron y deben volver a habilitarse en este punto. Edita /etc/apt/sources.list.d/odroid.list, descomenta la correspondiente línea y reemplaza "xenial" por "bionic":

$ sudo vi /etc/apt/sources.list.d/odroid.list
$ cat /etc/apt/sources.list.d/odroid.list
deb http://deb.odroid.in/c2/ bionic main
También debes comprobar que /etc/apt/sources.list haya cambiado sus repositorios a bionic. Me sorprendió ver que no lo hizo después de usar el método do-release-upgrade. Realiza los cambios necesarios si encuentra repos sin cambios.

Ejecuta una actualización e instala los siguientes paquetes:

$ sudo apt-get update
$ sudo apt-get dist-upgrade
$ sudo apt-get install --reinstall mali-x11 aml-libs bootini u-boot
Si tienes instalado Xorg también debe instalar:
$ sudo apt-get install --reinstall xserver-xorg-video-fbturbo
Ahora puede actualizar el kernel del 3.14 al 3.16. Deberá eliminar los archivos cabecera y el kernel actualmente instalados (si están instalados). Al eliminarlo, se te indicará que es una operación peligrosa pudiendo dejar tu sistema inservible. Debe responder "No" en este punto para continuar con la eliminación.
$ sudo apt-get remove linux-image-c2 linux-headers-c2 linux-image-3.14.79-117 linux-headers-3.14.79-117
Figura 4. Solicitud de eliminación del kernel

Ahora necesitas instalar el kernel 3.16:

$ sudo apt-get install linux-odroid-c2
En este punto, vuelve a verificar que los archivos image/uInitrd/meson64_odroidc2.dtb/boot.ini están bien en /media/boot. Cualquier archivo que falte o esté trucado hará imposible el arranque.

Figura 5. Comprobando el estado de los archivos de arranque.

Ahora, cruza los dedos y reinicia tu nuevo sistema. Ten en cuenta que el comando de reinicio solo podrá apagar el sistema en lugar de reiniciarlo, así que es posible que tengas que desconectar el enchufe. Cuando se inicie el sistema, puedes ejecutar los siguientes comandos para realizar una pequeña limpieza:

$ sudo apt-get autoremove
$ sudo apt-get clean

Correcciones posteriores a la instalación

Una vez que el reinicio finaliza satisfactoriamente (de lo contrario, tendrás tu copia de seguridad, ¿verdad? ¡Sí!), aún te quedan algunas cosas que reparar.

man Descubrirás que man está inservible tras la actualización.

Figure 6. Reparando Man

Puedes solucionarlo gracias a @WildPenguin: https://forum.odroid.com/viewtopic.php?t=34044

$ sudo apt-get install apparmor-utils
$ sudo aa-disable /usr/bin/man
c2play Si estás utilizando c2play de @CrashOverride's (https://bit.ly/2vfQtLt) deberás recompilarlo en base a la rama bionic:
$ sudo apt install libasound2-dev libavformat-dev libass-dev libx11-dev
$ git clone -b bionic https://github.com/OtherCrashOverride/c2play
$ cd c2play
$ make c2play -j4
lirc lirc también ha pasado por muchos cambios entre las versiones de distro y no funcionará con la configuración anterior. Deberás seguir la guía wiki para 18.04 y así poder configurar lirc: https://bit.ly/2ZhZEIS, o migrar la configuración existente con los siguientes comandos:
$ sudo mv /etc/lirc/lircd.conf /etc/lirc/lircd.conf.d/ir-remotes.conf
$ sudo mv /etc/lirc/lircd.conf.dist /etc/lirc/lircd.conf
$ sudo vi /etc/lirc/lirc_options.conf
driver = default
device = /dev/lirc0
$ echo 'meson-ir' | sudo tee -a /etc/modules
$ sudo service lircd restart
pulseaudio produce silbidos sobre HDMI Esto debería haberse solucionado con un parche del kernel reciente, pero si observas este problema, consulta este hilo del foro donde encontraras una solución alternativa: https://forum.odroid.com/viewtopic.php?t=34116

LCD ODROID 3.5" está deshabilitada Después de reinstalar la salida de video por defecto del X11 irá a HDMI. Tendrás que seguir los pasos de instalación de la wiki, ya que hay algunos cambios desde la versión 16.04:  https://bit.ly/2GAlUXa.

Conclusión

En general, la actualización de Ubuntu 16.04 a 18.04 tuvo buen resultado en mis sistemas. Había varias cosas por ajustar y arreglar, pero la mayoría de las cosas iban bien. Te sugiero que lo pruebes y actualices tu sistema anterior si no has empezado con una imagen en blanco. Para cualquier problema y preguntas recurre al tema de soporte: https://forum.odroid.com/viewtopic.php?f=140&t=34251

Creando un Nodo Bitcoin Utilizando un ODROID-HC2

Es muy probable que hayas oído hablar del Bitcoin, la criptomoneda anónima y segura que ha levantado ampollas en los últimos años. Uno de los principales problemas que he visto es que la gente suele confía en terceras personas para que gestionen sus transacciones. Me propuse comprar un pequeño netbook Dell con una insignificante CPU Intel Atom, 2 GB de RAM y un SSD de 240 GB para que actuase a modo de billetera principal para la criptomoneda, y más o menos mi banco. El ordenador portátil tiene una unidad totalmente encriptada, y dispongo de copias de seguridad de las claves de mi billetera, conservándolas en tres lugares diferentes. Sin embargo, cuando ejecutas una versión completa de las billeteras centrales, significa que tienes que almacenar una copia completa de la cadena de bloques (blockchain) en el dispositivo que la usa.

La cadena de bloques de Bitcoin ocupa alrededor de 200 GB, una gran cantidad de datos para almacenar. Sin olvidar, que mi netbook sólo se encendería cuando necesitara realizar una transacción, puesto que es más seguro tenerlo apagado. Obviamente, ejecutar la cadena de bloques en el portátil no era lo ideal, ya que tendría que estar siempre encendido. Además, quería que las conexiones entrantes y salientes fueran todavía más anónimas, así que opté por canalizar todo el tráfico del nodo a través de una VPN a modo de acceso privado a Internet, con un sistema de apagado de VPN, de modo que, si la VPN no funciona, no se conectaría y sobre ella, se usaría The Onion Relay (TOR) con la finalidad de hacer aún más anónimas las transacciones.

La ventaja de montar todo esto es permitir que cualquier dispositivo de mi LAN pueda realizar transacciones con la red blockchain directamente usando mi nodo para enviar y recibir mis transacciones, en lugar de confiar en otras personas. La otra ventaja es que, como estoy ejecutando una copia completa de la cadena de bloques, también estoy ayudando dando soporte a la red Bitcoin al proporcionar a otras personas una copia completa de la cadena de bloques. Esta guía no incluye el tema de la configuración de la VPN, pero si te ayudará a echar a andar TOR, así como a montar a propio nodo.

Inicialmente cogí la idea de pinode.co.uk donde puedes encontran muchos de estos proyectos, y ya lo tenía ejecutandose sobre un nodo Monero en una Raspberry Pi 3 Model B+ con una unidad flash de 128GB. En este tutorial he mezclado las ideas de pinode con el  Turorial de Thundroid, llegando a realizar algunos cambios en ciertas cuestiones. He optado por un ODROID-HC2 ya que me permite usar un disco duro SATA nativo, la variante HC2 permite discos de 3.5″, mientras que el HC1 permite discos de 2.5″. Cualquiera de las dos versiones puede valer, y si realmente lo quisieras, posiblemente podrías optar por un ODROID-XU4 o incluso una Raspberry Pi 3 Model B+ si usas una unidad flash de 512 GB o un kit para conectar unidades adicionales. En este tutorial usaremos l plataforma ODROID, pero puedes usar la plataforma que quieras. Técnicamente, si quisieras, podría usar incluso un PC dedicado, pero esto te llevaría a desperdiciar su hardware y sería mucho menos eficiente en cuanto a consumo de energía. Yo prefiero el ODROID sobre la Raspberry Pi, ya que el hardware que incorpora es más potente.

Hardware

Figure 1 - ODROID-HC2 with RTC battery, 1TB Seagate Iron Wolf HDD, and Model 3 Wifi NIC
Figura 1: ODROID-HC2 con batería RTC, disco duro Seagate Iron Wolf de 1TB y NIC Wifi modelo 3

La razón por la que recomiendo usar una unidad NAS es porque esta unidad estará encendida las 24 horas del día, los 7 días de la semana, leyendo y escribiendo datos continuamente. Las unidades NAS están específicamente optimizadas para este tipo de comportamiento y, por lo tanto, serán más fiables. Puedes usar perfectamente una unidad que no sea NAS, pero a largo plazo es mejor contar con una unidad NAS.

Figure 2 - ODROID-HC2 pictured in a clear acrylic case with the wireless NIC inserted, and 16GB flash card before it was flashed with the Ubuntu 18.04.1 OS
Figura 2: ODROID-HC2 dentro de una carcasa acrílica transparente con el NIC inalámbrica conectado, y una tarjeta flash de 16GB antes de grabarle el SO Ubuntu 18.04.1

Hardware opcional

Figure 3 - ODROID-HC2 being worked on at my desk with the UART connector kit pictured
Figura 3: ODROID-HC2 trabajando sobre mi mesa de escritorio con el kit de conexión UART

Lo primero es lo primero, tenemos que conectarlo a Internet. Si tienes pensado usar Wifi, sigue la wiki sobre nmcli para el ODROID. Si usas la conexión de la consola UART, sigue este tutorial. Tienes que grabar la imagen mínima de Ubuntu 18.04 que puedes descargar  aquí y luego usar Etcher para trasladarla a una MicroSD. Una vez hecho esto, colócala en el ODROID e inícialo y conéctate por SSH o a través de consola. Para ambos casos, las credenciales de inicio son:

username: root

password: odroid

Para los usuarios de Raspberry Pi, tendrán que buscar las credenciales de la imagen que estés utilizando.

Trabajo previo

Tendremos que ocuparnos de algunas cosas antes de convertirlo en un nodo Bitcoin. Primero, creamos un nuevo usuario con una contraseña segura con derechos de superusuario y cambiemos la contraseña de root. No olvides cambiar "USER" por lo que quieras en los comandos que aparecen a continuación:

$ root@odroid:~# passwd
$ root@odroid:~# adduser USER
$ root@odroid:~# usermod -aG sudo USER
$ root@odroid:~# adduser bitcoin
Necesitamos actualizar el sistema y cambiar la zona horaria y los datos de configuración regional, así como cambiar el nombre de host en /etc/hosts y /etc/hostname para que coincidan. Yo lo he nombrado como "btcdroid" pero tú puedes asignarle el nombre que quieras:
$ root@odroid:~# apt update
$ root@odroid:~# apt dist-upgrade -y
$ root@odroid:~# apt install htop git curl bash-completion jq
$ root@odroid:~# dpkg-reconfigure tzdata
$ root@odroid:~# dpkg-reconfigure locales
$ root@odroid:~# nano /etc/hosts
$ root@odroid:~# nano /etc/hostname

Montar el disco duro

Ahora tenemos que montar el disco duro. En mi caso, el disco duro era completamente nuevo y sin formato, así que tuve que formatearlo en primer lugar. Puedes seguir las instrucciones de Digital Ocean si te encuentras en la misma situación. En cualquier caso, una vez que tengas la unidad con un formato Linux compatible, podremos continuar.

Necesitaremos conseguir el UUID de la partición que se ha creado. Simplemente ejecutamos el comando lsblk y apareran en pantalla los nombres y UUID de todas las unidades.

$ root@odroid:~# lsblk --fs
Tras ejecutar este comando deberías ver algo como esto. Necesitamos anotar el UUID que nos da para usarlo en los siguientes pasos.

Figure 4 - After running the lsblk command
Figura 4 - Después de ejecutar el comando lsblk

Ahora necesitamos editar el fstab con nano y añadir una línea completamente nueva. Reemplaza 123456 por el UUID que hemos obtenido con el anterior comando.

$ root@odroid:~# nano /etc/fstab
$ # New Line in /etc/fstab
$ UUID=123456 /mnt/hdd ext4 noexec,defaults 0 0
¡Estupendo!, ahora que fstab ha sido modificado, necesitamos crear el punto de montaje, montarlo, verificarlo y definir el propietario.
$ root@odroid:~# mkdir /mnt/hdd
$ root@odroid:~# mount -a
$ root@odroid:~# df /mnt/hdd
Figure 5 - At this point if everything was done correctly you should see something similar to this
Figura 5 – Llegados a este punto, si todo se hacho correctamente, debería ver algo similar a esto

Ahora daremos permisos al usuario bitcoin para todo el disco duro que configuramos anteriormente.

$ root@odroid:~# chown -R bitcoin:bitcoin /mnt/hdd/

Mover swap al disco duro

Ahora deberemos mover el archivo swap al HDD, por lo que necesitamos instalar un paquete y hacer algunos cambios de configuración.

$ root@odroid:~# apt install dphys-swapfile
$ root@odroid:~# nano /etc/dphys-swapfile
$ #Add the following lines
$ CONF_SWAPFILE=/mnt/hdd/swapfile
$ CONF_SWAPSIZE=2048
$ root@odroid:~# dphys-swapfile setup
$ root@odroid:~# dphys-swapfile swapon
$ root@odroid:~# shutdown -r now

Aumentar la seguridad

Ahora se debe reconfigurar para tener un archivo swap de 2GB en el disco duro y debemos reiniciar. Llegado a este punto, vuelve a iniciar sesión como usuario normal y no como root, ya que estamos a punto de deshabilitar root a través de SSH. Sin embargo, si está utilizando el kit de conexión serie UART opcional, aún podrás iniciar sesión como root por este medio. Ahora continuaremos y eliminaremos el antiguo archivo swap

Endurecer SSH

Necesitamos bloquear el acceso remoto a SSH, y Digital Ocean cuenta con una excelente guía sobre seguridad SSH. Recomiendo encarecidamente deshabilitar los inicios de sesión por contraseña y exigir que se genere un par de claves SSH. Puede leer el tutorial aquí, aunque definitivamente también tendremos que deshabilitar el acceso de root. Es un riesgo de seguridad importante si se mantiene root, puesto que todo el mundo sabe que Linux tiene un usuario root. Escribe el siguiente comando para editar el archivo sshd_config.

$ user@btcdroid:~$ sudo nano /etc/ssh/sshd_config

$ #Find the following line
$ PermitRootLogin yes
$ #Change it to no so it looks like below
$ PermitRootLogin no
$ #Save and quit

$ user@btcdroid:~$ sudo service sshd restart
Eso deshabilitará el inicio de sesión de root, aunque recomiendo encarecidamente que solo se permitan inicios de sesión con par de claves SSH, ya que es mucho más seguro que una contraseña.

Firewall

Una de mis herramientas favoritas sobre la que he escrito con anterioridad es uncomplicated firewall. Sólo vamos a permitir agujeros para que el firewall permita la corrspondiente comunicación, así como limitar las conexiones SSH, de esta forma es menos probable que se vea comprometido por un ataque de fuerza bruta. También añadiremos algunas defensas para evitar un posible ataque de fuerza bruta.

La línea ufw permite 192.168.0.0/24, suponemos que la dirección IP de tu btcdroid es algo así como 192.168.0.xxx, donde xxx es cualquier número de 0 a 255. Si tu dirección IP es 12.34.56.78, debes adaptar esta línea para que ufw permita 12.34.56.0/24. De lo contrario, te bloquearías a ti mismo para siempre a menos que conectes el kit de conexión UART.

$ user@btcdroid:~$ sudo apt install ufw
$ user@btcdroid:~$ sudo ufw default deny incoming
$ user@btcdroid:~$ sudo ufw default allow outgoing

$ # make sure to use the correct subnet mask and IP ranges. (see warning above)
$ user@btcdroid:~$ sudo ufw allow from 192.168.0.0/24 to any port 22 comment 'allow SSH from local LAN'
$ user@btcdroid:~$ sudo ufw allow 9735 comment 'allow Lightning'
$ user@btcdroid:~$ sudo ufw allow 8333 comment 'allow Bitcoin mainnet'
$ user@btcdroid:~$ sudo ufw allow 18333 comment 'allow Bitcoin testnet'
$ user@btcdroid:~$ sudo ufw enable
$ user@btcdroid:~$ sudo systemctl enable ufw
$ user@btcdroid:~$ sudo ufw status
Ahora deberíamos instalar Fail2Ban, de lo que suelo hablar a menudo. Esto hace que, después de cinco intentos de inicio de sesión fallidos por SSH, bloquee la IP del atacante durante diez minutos, lo que hace que sea casi imposible realizar un ataque de fuerza bruta.
user@btcdroid:~$ sudo apt install fail2ban

Aumentar el límite de archivo abierto

En el caso de que tu BTCDroid esté saturado de solicitudes de Internet (honestas o malintencionadas debido a un ataque DDoS), rápidamente te encontrarás con el error "can't accept connection: too many open files". Esto se debe a un límite en los archivos abiertos que representan conexiones tcp individuales y que está fijado demasiado bajo.

Edita los siguientes archivos, añade las líneas adicionales justo antes del comentario final, guarda y salte.

$ user@btcdroid:~$ sudo nano /etc/security/limits.conf
$ #add/change the following lines
$ * soft nofile 128000
$ * hard nofile 128000
$ root soft nofile 128000
$ root hard nofile 128000

$ user@btcdroid:~$ sudo nano /etc/pam.d/common-session
$ #add the following
$ session required pam_limits.so

$ user@btcdroid:~$ sudo nano /etc/pam.d/common-session-noninteractive
$ #add the following
$ session required pam_limits.so

Instalación de Bitcoin Core

Finalmente estamos listos para empezar con los componentes más divertidos. Estos componentes proceden en su mayoría de pinode.co.uk, aunque parecen funcionar perfectamente en el ODROID-HC2, aunque con algunos ajustes que ya hemos realizado específicamente para la plataforma ODROID.

Primero necesitamos instalar nuestras dependencias:

$ user@btcdroid:~$ sudo apt install autoconf libevent-dev libtool libssl-dev libboost-all-dev libminiupnpc-dev -y
Luego necesitamos crear un directorio para descargar nuestros archivos y, finalmente, descargar éstos usando git:
$ user@btcdroid:~$ mkdir ~/bin
$ user@btcdroid:~$ cd ~/bin
$ user@btcdroid:~$ git clone -b 0.17 https://github.com/bitcoin/bitcoin.git
Ahora, una vez descargados, configuraremos, compilaremos e instalaremos los archivos. En los siguientes comandos ejecutaremos seis tareas al mismo tiempo, ya que ODROID cuenta con ocho núcleos que hacen que se pueda ejecutar todo más rápido. Es posible que quieras reducir este número a dos con una Raspberry Pi. También puedes ejecutarlos sin el parametro “-jX” para que se ejecute como una única tarea, aunque esto puede llevarte un par de horas. Una vez que ejecutes el comando make, vate a hacer la cena o algo porque esto tardará una o dos horas, incluso con la CPU Samsung Exynos 5422 de ocho núcleos del ODROID-XU4.
$ user@btcdroid:~$ cd bitcoin
$ user@btcdroid:~$ ./autogen.sh
$ user@btcdroid:~$ ./configure --enable-upnp-default --disable-wallet
$ user@btcdroid:~$ make -j6
$ user@btcdroid:~$ sudo make install
Ahora tenemos que preparar el directorio Bitcoin. Vamos a cambiar a bitcoin nombrado como no super-usuario, el cual creamos anteriormente, aunque puedes asignarle el nombre que quieras. Lo más importante es que este usuario solo tenga permisos para administrar el nodo bitcoin, pero no para realizar cambios en el sistema. Esto es lo mejor que tiene Linux en comparación con Windows, en cuanto a seguridad y permisos. En teoría, esto debería aislarte de un posible ataque, por lo que, en el peor de los casos, solo podrian meterse con los sistemas Bitcoin y no con el sistema operativo en sí.

Utilizamos el demonio de Bitcoin, llamado "bitcoind", que se ejecuta en segundo plano sin interfaz de usuario y almacena todos los datos en el directorio /home/bitcoin/.bitcoin. En lugar de crear un directorio real, creamos un enlace que apunte a un directorio del disco duro externo.

$ user@btcdroid:~$ sudo su bitcoin

# add symbolic link that points to the external hard drive
$ bitcoin@btcdroid:~$ mkdir /mnt/hdd/bitcoin
$ bitcoin@btcdroid:~$ ln -s /mnt/hdd/bitcoin /home/bitcoin/.bitcoin

# Navigate to home directory and check the symbolic link (the target must not be red).
$ bitcoin@btcdroid:~$ cd ~
$ bitcoin@btcdroid:~$ ls -la
Ahora debemos configurar el demonio de Bitcoin y asegurarnos de fijar una contraseña y un nombre de usuario extremadamente seguros, distintos del nombre de usuario y de la contraseña de tu sistema. A continuación, cerraremos la sesión del usuario bitcoin para configurar TOR.
$ bitcoin@btcdroid:~$ nano /home/bitcoin/.bitcoin/bitcoin.conf

# BTCDroid: bitcoind configuration
# /home/bitcoin/.bitcoin/bitcoin.conf

# Bitcoind options
$ server=1
$ daemon=1
$ txindex=1
$ disablewallet=1

# Connection settings
$ rpcuser=SECURE_USERNAME
$ rpcpassword=SECURE_PASSWORD

# Optimizations for ODROID Hardware
$ dbcache=192
$ maxorphantx=60
$ maxmempool=192
$ maxconnections=80
$ maxuploadtarget=5000

#Optimizations for Raspberry Pi 3B.
#I commented out the ones for the ones I recommend for a Raspberry Pi 3B, just uncomment those, and comment out the ODROID ones for it to work
#dbcache=96
#maxorphantx=30
#maxmempool=96
#maxconnections=40
#maxuploadtarget=5000

$ bitcoin@btcdroid:~$ exit

Configurar TOR

Ahora, instalaremos TOR para empaquetar el tráfico y cifrarlo con el fin de hacerlo todo anónimo. Vamos a instalar Tor y agregaremos un repositorio para conseguir la versión más actualizada de Tor, ya que la que está en los repositorios predeterminados es muy antigua.

Primero, agregaremos un par de entradas a /etc/apt/sources.list.d/, añadiremos la clave GPG para aceptarla, actualizaremos nuestro repositorio y finalmente instalaremos Tor.

$ user@btcdroid:~$ sudo nano /etc/apt/sources.list.d/tor.list
#Add the following lines and then save and close
deb https://deb.torproject.org/torproject.org bionic main
deb-src https://deb.torproject.org/torproject.org bionic main
#save and exit
$ user@btcdroid:~$ curl https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --import
$ user@btcdroid:~$ gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
$ user@btcdroid:~$ sudo apt update
$ user@btcdroid:~$ sudo apt install tor deb.torproject.org-keyring tor-arm nyx
Ahora necesitamos configurar TOR:
$ user@btcdroid:~$ sudo nano /etc/tor/torrc
#add these settings to the bottom of the file
$ ControlPort 9051
$ CookieAuthentication 1
$ CookieAuthFileGroupReadable 1
$ HiddenServiceDir /var/lib/tor/bitcoin-service/
$ HiddenServicePort 8333 127.0.0.1:8333
#save and exit
$ user@btcdroid:~$ sudo systemctl restart tor.service
#Get your Tor hostname
$ user@btcdroid:~$ sudo cat /var/lib/tor/bitcoin-service/hostname
Vamos a necesitar el nombre de host que muestre (con una dirección ".onion"), así que ten en cuenta el resultado del último comando.

Configurarlo todo para el inicio automático

Queremos programarlo todo para que se inicie en el arranque, de modo que crearemos un servicio SystemD que iniciará nuestro nodo Bitcoin para que se ejecute con el usuario bitcoin y se pase a TOR. En este punto, te doy la opción de ejecutarlo solo en TOR o permitir que se ejecute sobre TOR, IPv4 e IPv6. La opción de solo Tor es más anónima, el otro modo es más bien un modo dual, por lo tanto, si TOR no está disponible, aún se puede sincronizar y además la sincronización es más rápida. La elección es suya: simplemente elimina el comentario para el que quieras donde dice ExecStart e inserta tu hostname.onion donde te lo solicite en el comando ExecStart. Después de esto, reiniciaremos y veremos si todo funciona. Asegúrate de usar el nombre de usuario que creamos anteriormente donde dice USER_NAME.

$ user@btcdroid:~$ sudo nano /etc/systemd/system/bitcoind.service

# BTCdroid systemd unit for bitcoind
# /etc/systemd/system/bitcoind.service

$ [Unit]
$ Description=Bitcoin daemon
$ After=network.target

$ [Service]
#Uncomment the ExecStart string below to force the node to only run over Tor
#ExecStart= /usr/local/bin/bitcoind -datadir=/home/bitcoin/.bitcoin/data -daemon -proxy=127.0.0.1:9050 -externalip=HOSTNAME.onion -conf=/home/bitcoin/.bitcoin/bitcoin.conf -listen -bind=127.0.0.1 -pid=/run/bitcoind/bitcoind.pid

#Uncomment the ExecStart string below to allow Tor, IPv4, and IPv6 connections
#ExecStart= /usr/local/bin/bitcoind -datadir=/home/bitcoin/.bitcoin/data -daemon -proxy=127.0.0.1:9050 -externalip=HOSTNAME.onion -conf=/home/bitcoin/.bitcoin/bitcoin.conf -listen -discover -pid=/run/bitcoind/bitcoind.pid

#Tells Bitcoin to shutdown safely when stopped.
$ ExecStop= /usr/local/bin/bitcoin-cli stop

# Creates /run/bitcoind owned by bitcoin
$ RuntimeDirectory=bitcoind
$ User=bitcoin
$ Group=bitcoin
$ Type=forking
$ PIDFile=/run/bitcoind/bitcoind.pid
$ Restart=on-failure

# Hardening measures
####################

# Provide a private /tmp and /var/tmp.
$ PrivateTmp=true

# Mount /usr, /boot/ and /etc read-only for the process.
$ ProtectSystem=full

# Disallow the process and all of its children to gain
# new privileges through execve().
$ NoNewPrivileges=true

# Use a new /dev namespace only populated with API pseudo devices
# such as /dev/null, /dev/zero and /dev/random.
$ PrivateDevices=true

# Deny the creation of writable and executable memory mappings.
$ MemoryDenyWriteExecute=true

[Install]
$ WantedBy=multi-user.target
#save and exit
$ user@btcdroid:~$ sudo systemctl enable bitcoind.service
$ user@btcdroid:~$ sudo shutdown -r now
$ user@btcdroid:~$ mkdir /home/USER_NAME/.bitcoin
$ user@btcdroid:~$ sudo cp /home/bitcoin/.bitcoin/bitcoin.conf /home/USER_NAME/.bitcoin/
$ user@btcdroid:~$ sudo chown USER_NAME:USER_NAME /home/USER_NAME/.bitcoin/bitcoin.conf
Debe reiniciarse, así que espere un minuto y vuelva a conectarse con el usuario que creamos al principio. Puede tardar algunos minutos hasta que el nodo reciba sus primeras conexiones, y luego comenzará a tirar de los bloques. Puede verificar el estado con el comando bitcoin-cli.
$ user@btcdroid:~$ bitcoin-cli getblockchaininfo
Debería mostrar algo como esto (Figura 6) y si la cantidad de bloques aumente cada pocos minutos, todo funciona bien. Ten en cuenta que esto podría demorarse varios días, ya que necesitamos descargar al menos 200 GB para estar al día con el blockchain.

Figure 6 - Output of bitcoin-cli
Figura 6 – Resultado de bitcoin-cli

Resultado de Bitcoin-cli

Además de verificar el estado de la descarga del blockchain, puedes monitorizar el tráfico a través de TOR con Nyx.

$ user@btcdroid:~$ sudo nyx
Figure 7 - Seeing the traffic via Tor on Nyx
Figura 7 - Viendo el tráfico a través de Tor con Nyx

Actualización automática de parches de seguridad

Puesto que se trata de un dispositivo que, mayoritariamente, vamos a dejar encendido y desatendido, es mejor configurarlo para que automaticamente se aplique cualquier parche de seguridad que pueda estar disponible y de esta forma se mantega por si solo. Así que activemos el paquete de actualizaciones desatendidas y lo configuraremos. El primer paso muestra en pantalla un prompt interactivo y a continuación procedemos a editar los archivos.

$ user@btcdroid:~$ sudo dpkg-reconfigure --priority=low unattended-upgrades
$ user@btcdroid:~$ sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
#modify these lines in the file to look like the following, although you can make it reboot whenever you want. Make sure there is a semicolon at the end of each line. You can uncomment the "${distro_id}:${distro_codename}-updates"; line if you want it to update non security related packages too

#near the top of the file
$ Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
// Extended Security Maintenance; doesn't necessarily exist for
// every release and this system may not have it installed, but if
// available, the policy for updates is such that unattended-upgrades
// should also install from here by default.
"${distro_id}ESM:${distro_codename}";
// "${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-proposed";
// "${distro_id}:${distro_codename}-backports";
};

#below are spread out in the same file
$ Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
$ Unattended-Upgrade::Remove-Unused-Dependencies "true";
$ Unattended-Upgrade::Automatic-Reboot "true";
$ Unattended-Upgrade::Automatic-Reboot-Time "02:30";
#save and exit
Eso es todo, has terminado. Déjame conocer qué es lo que piensas o si crees que habría que mejorar algo. Con el tiempo, lo ubicaré en un servidor Supermicro dentro de mi rack con una matriz ZFS, posiblemente el próximo año.

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

¡Whoa, ha llegado la primavera! Mientras que nuestras ideas y rutinas pasan a ser actividades al aire libre, las tormentas ocasionales nos hacen que no retiremos a nuestro hogar para disfrutar de algunos juegos de Android provechosos. Por suerte, hay muchos desarrolladores de juegos que se están preparando para hacer de este próximo verano el "Verano de los Juegos de éxito".

Hidden in Plain Sight

Se te perdona sino te has percatado del debut de Langrisser. ¡Casi lo pasamos por alto nosotros también! Sí, ésta es la misma serie RPG táctica Langrisser, pero todo ha sido preparado para una experiencia móvil con Android. Aunque es gratis, se te mostrarán los típicos anuncios de compra dentro de la propia aplicación en los que se suelen basar este tipo de juegos "gratuitos".

Gracias a Dios, Zilong Game Limited, ha incluido algunos extras bastante agradables dentro del propio juego para compensar estas molestias. Por ejemplo, una partitura musical respaldada por complejas escenas y más de 300 niveles clásicos de toda la vida de la serie, permite a Langrisser despertar tu interés por los juegos, observa la Figura 1.

Figure 1 - The Langrisser series goes mobile
Figura 1 - La serie Langrisser llega a los móviles

Hometown Heroes

Los aficionados a Android han estado esperando pacientemente este juego durante más de un año. La espera podría haber llegado a su fin y, por su aspecto, podría haber valido la pena. The Elder Scrolls: Blades, del desarrollador Bethesda Game Studios, también conocido como Bethesda Softworks, debe estar muy cerca de su lanzamiento. ¿Por qué? Ahora puede reservar un lugar en Google Play Store para recibir una notificación cuando este juegazo esté disponible. Aunque para deleitarte hasta que The Elder Scrolls: Blades salga a la luz, el desarrollador ha lanzado varias capturas de pantalla bastante exclusivas que te permiten contemplar algunas de las gozadas visuales que te esperan.

Figure 2 - Almost like a photograph from your Summer vacation. Image courtesy of Bethesda Game Studios
Figura 2 - Casi una fotografía de tus vacaciones de verano. Imagen por cortesía de Bethesda Game Studios.

Como puede ver en esta captura de pantalla, la iluminación y los efectos de sombra son espectaculares. Sin embargo, para alcanzar esta calidad durante el tiempo de juego, es mejor que optes por un ODROID-XU4 como motor de juego preferente. The Elder Scrolls: Blades debería presentarse a modo de descarga gratuita acompañado de las típicas compras dentro de la aplicación ahora requeridas.

Cute Crowdfunding

¿Conoces los juegos que se están posicionando en el mercado a través de los sitios web de crowdfunding? Pues bien, cada vez más desarrolladores están recurriendo a este modelo de financiación para apoyar el desarrollo y lanzamiento de juegos. Algunos juegos lo hacen a través del proceso de recaudación de fondos, pero la mayoría de los juegos no lo hacen. Así que cuando Hamsterdam llego a recaudar más de 30,000$, debería ser simplemente una cuestión de tiempo que este juego llegase a Play Store.

En Hamsterdam, juegas con un lindo y pequeño hamster (¡No me digas!) Llamado Pimm. El objetivo de Pimm es liberar a Hamsterdam de las pandillas, como puedes ver en la Figura 3, y localizar el muy querido abuelo Pimm. Suena bastante fácil, ¿verdad? Bueno, las pandillas han contaminado las mentes de la población con una droga y la búsqueda del anciano Pimm se complica mucho y rápido. Puedes hacerte una idea de cómo es Hamsterdam con este trailer:

Figure 3 - Take that, you dirty rotten vermin. Image courtesy of Muse Games
Figura 3 - Toma esto, guarros bichos podridos. Imagen por cortesía de Muse Games.

Varoom, Varoom

Uno de los juegos de carreras más populares de Xbox One es Project Cars. Con el éxito adicional de la consola PS4 y dentro del mercado del PC, era solo una cuestión de tiempo que Project Cars llegase a Android.

Ahora llamado Project Cars Go, esta versión del cásico de consola incluye nuevos coches junto con la posibilidad de poder personalizarlos por parte del usuario. Habiendo vendido más de 2 millones de copias de las versiones de consola, esta versión móvil podría ponerse rápidamente a la cabeza de los juegos de Android.

El desarrollo de Project Cars Go es un proyecto de colaboración entre Gamevil y Slightly Mad Studios. Aunque la fecha oficial de lanzamiento no está del todo clara, al menos tienen un "logotipo", que puedes ver en la Figura 4, creemos que el proyecto Cars Go estará disponible a principios de verano. Puede seguir el desarrollo de este juego directamente desde CEO:

Figure 4 - Hey we’ve got a logo. Image courtesy of Slightly Mad Studios
Figura 4 - ¡Eh!, tenemos un logotipo. Imagen por cortesía de Slightly Mad Studios

Cómo Convertirse en tu Propio Desarrollador de Juegos

¿Tienes ganas de crear tu propio juego de Android? ¿Te gustaría distribuir tu juego a todo el mundo sin las molestias que supone usar Play Store? Bueno, el mismo desarrollador que nos ha traído Crashlands, Butterscotch Shenanigans, está a punto de ofrécete tu momento en el prestigioso mundo de los juegos.

Levelhead es similar al típico juego de plataformas 2D, de hecho, puedes jugar a este juego como si fuera un simple "juego" si quieres, pero con una gran diferencia: puedes crear tus propios niveles y publicar tus nuevos desafíos del juego para que todo el mundo los disfrute. Levelhead viene repleto de típicas características de este tipo de juegos (por ejemplo, villanos, potenciadores, caminos, etc.) que puedes organizar y controlar. Cuando tu nueva versión de Levelhead esté lista, puede lanzarla al mundo. Y por mundo ... nos referimos al MUNDO! Verá que Levelhead es un creador de juegos multiplataforma que permite que tus niveles de juego sean utilizados por consolas, PCs, así como esa "otra" plataforma de juegos para dispositivos móviles. Échale un vistazo:

Figure 5 - If you build it, they might play. Image courtesy of Butterscotch Shenanigans
Figura 5 - Si lo creas, se podrá jugar. Imagen por cortesía de Butterscotch Shenanigans

Vamos a jugar a Android: el Top Ten de ODROID Magazine de abril

10. Asphalt 9: Legends - GRATUITO 9. Minecraft - $6.99 8. The War of Mine - $14.99/Pack de expansión para desarrolladores $1.99 7. Crashlands – $4.99 – Busca Levelhead para reventar el top ten tras su liberación. 6. Fire Emblem Heroes – GRATUITO 5. The Escapists 1 AND 2 - $6.49 & $6.99 4. Shadowgun Legends – GRATUITO 3. Riptide GTP Series - $2.99; Project Cars Go podría dar a este título el 3 puesto de la lista 2. Fortnite - GRATUITO 1. PUBG Mobile – GRATUITO

Conociendo a un ODROIDian Joy Cho, Ingeniero de Hardkernel

Imagen 1 - Joy con su sobrina.

Por favor háblanos un poco sobre ti. Mi nombre coreano es Jeonghwa Cho y tengo 42 años. He estado trabajando como ingeniero de software integrado durante 17 años. Soy el responsable en particular de los paquetes de soporte de la placa (BSP), incluidos los dispositivos de gestión e inicio de la placa. Principalmente, trabajo con los cargadores de arranque, los sistemas operativos y los drivers de dispositivos del kernel. El diseño del sistema en cuando a colaboración con el hardware y los equipos de aplicación es una de las partes más importantes de mi trabajo. Llevo trabajando en Hardkernel 3 años. Actualmente soy responsable de desarrollo de ordenadores de placa reducida basados en núcleo ARM y que usan Linux, junto con sus dispositivos multimedia y de conectividad. Antes de Hardkernel, trabajé en el campo de los sistemas de audio, visual y navegación (AVN) del automóvil, desarrollo de BSP ARM Linux, teléfonos móviles, Plex Media Player (PMP) y redes domésticas.

Imagen 2 - Joy ha trabajado con muchos productos a lo largo de su carrera.

Vivo en Corea y mi ciudad natal es la ciudad de Paju, que se encuentra al norte de Corea del Sur. De niño, me era muy común escuchar los gritos de los soldados al amanecer y, con frecuencia, experimentaba grandes atascos de tráfico causados por largas colas de gigantes tanques en movimiento. Hoy en día no es más que una vieja historia, y espero que Corea se unifique pronto para que así llegue ser un país más fuerte. Me gradué en la facultad de ingeniería de la Universidad de Sejong en Corea con una licenciatura en ingeniería, y mi especialidad fue Ingeniería Electrónica y de Comunicaciones. Cuando era alumno de secundaria, solía fascinarme los programas musicales de radio y MTV, es por ello quería ser ingeniero técnico para controlar equipos de transmisión y sonido. Pero, una vez que tuve en mis manos un prototipo de placa de hardware de un teléfono móvil con varios dispositivos conectados en mi primer trabajo, me enamoré de estos pequeños ordenadores y a partir de ahí empecé a interesarme en ellos. Luego solicité cambiar de departamento, del equipo de RF/Call al equipo de drivers de dispositivos. Los miembros de mi familia son mi padre, mi madre, mi hermano menor, mi cuñada, mi sobrina y mi sobrino. No tengo hijos, y mi relación con mi hermano es muy estrecha, así que considero a mi sobrina y mi sobrino prácticamente mis propios hijos. Todos lo que me rodean dicen que mi sobrina se parece mucho a mí, así que mi amor por ella es muy especial. Cuando ingresó a la escuela primaria el año pasado, consideré seriamente dejar mi trabajo para protegerla de situaciones peligrosas como si fuera su guardaespaldas. Mi padre es farmacéutico y tiene una pequeña farmacia en mi ciudad natal. Es muy estricto consigo mismo y siempre está estudia en su campo. Amo su vida y siempre trato de aprender de él. Cuando alguien me pregunta quien es la personal que más respeto, siempre respondo que es mi padre.

¿Cómo empezaste con los ordenadores? Realmente no estaba muy interesado en los dispositivos informáticos durante mi adolescencia, incluso tenía pensado en ir a una escuela de ingeniería. La razón por la que compré mi primer ordenador fue la de jugar al "StarCraft" con mis amigos y estudiantes de la universidad. Cuando ingresé a la universidad, ni siquiera sabía cómo instalar Windows 95. Sin embargo, 6 meses después, era capaz de ensamblar los componentes de un ordenador por mi cuenta. ¡Gracias, StarCraft!

Imagen 3: el primer ODROID de Joy, el primitivo ODROID-X

¿En qué tipo de proyectos trabajas en Hardkernel? Normalmente me centro en temas relacionados con la secuencia de arranque, el rendimiento/estabilidad del sistema y los componentes de visualización que los usuarios de ODROID necesitan en la fase inicial, directamente después del lanzamiento de nuevas versiones de productos ODROID. Desde que ODROID-N1 y N2 admiten el modo de inicio SPI, el nuevo esquema de la BIOS basado en Petitboot está acaparando gran parte de mis intereses.

¿Cómo usas tus ODROIDs personales? Los utilizo como sistemas multimedia y estaciones de juegos para mis sobrinos y para mí. Aman los ODROIDs. También utilizo mis ODROID para estudiar técnicas fuera del trabajo. Todavía sigo conociendo la plataforma Linux, existen muchas plataformas y soluciones de código abierto interesantes que los brillantes ingenieros han ido desarrollando. En los últimos años, me he dado cuenta de la necesidad de estudiar los entornos de trabajo en red y los sistemas multimedia. Es una gran barrera que hace uso de mis ODROID para proyectos interesantes de los foros de ODROID. Para superar mis limites, tengo planes para un proyecto personal que implica un pequeño servidor Máquina a Máquina (M2M) y un dispositivo que permita compartir la transmisión de video basándose en gstreamer.

Imagen 4 - La sobrina y el sobrino de Joy disfrutan jugando en su ODROID

¿Qué ODROID es tu favorito y por qué? Todos los ODROID son como mis niños. Todos son estupendos. Pero si tengo que elegir uno, escogería el ODROID-C2. Fue mi primer niño en Hardkernel. Me dio muchas oportunidades para intimar con la plataforma de código abierto de Linux y también me hizo enfrentarme a muchas situaciones difíciles como el falso problema del reloj de la CPU de 2.0 GHz. Otro ejemplo fue que para hacer una única imagen de arranque independientemente del arranque desde la tarjeta SD o el eMMC, tuve que hackear el área oculta del cargador de arranque analizando los códigos hexadecimales y diseñar nuevas cabeceras. Pero afortunadamente, a muchos usuarios de ODROID les encanta el primer ODROID de 64 bits de ARM, y aprendí mucho durante el proceso. Espero que a muchos ODROIDIAN les guste también el nuevo modelo, el ODROID-N2.

¿Qué innovaciones te gustaría ver en los futuros productos Hardkernel? No tengo ninguna idea en particular a la hora mejorar, pero creo que la mayor fortaleza de ODROID es que es un dispositivo que permite una gran variedad de posibles usos. Quedo sorprendido todos los días cuando leo los hilos del Foro ODROID porque hay muchos y brillantes ingenieros que crean buenos estándares con los productos ODROID. Hay toneladas de proyectos magníficos. Basándonos en ellos, podemos usar un dispositivo ODROID para prácticamente cualquier cosa.

Imagen 5 - Joy tiene una extensa colección de libros con la que disfruta leyendo en su tiempo libre

¿Qué aficiones e intereses tienes aparte de los ordenadores? ¡Leer libros! Me gusta mucho los libros. Las novelas clásicas y coreanas, junto con los libros de historia y filosofía son mis favoritos. Todos los fines de semana, visito una librería y paso varias horas allí. El olor a papel de los libros me hace sentir cómodo, y me hace estar lejos de mi ajetreada vida mientras me concentro en los libros.

Imagen 6 - La ciudad natal de Joy, Paju, en el norte de Corea del Sur, ha cambiado mucho desde que era joven

¿Qué consejo le darías a alguien que quiera aprender más sobre programación? Creo que una base sólida en matemáticas, algoritmos y hardware es muy importante. Cuanto más gano en experiencia y trabajo en varios proyectos, más siento que funciona. Se repite la misma historia de siempre, pero creo que es fundamental.