Posiblemente uno de los mejores usos que tiene una raspberry es usarla como dispositivo multimedia para una televisión. De esta forma puedes «esmartivizar» (convertir en una smart TV) una televisión que no tenga incorporada la posibilidad de instalarle aplicaciones (Por cierto, aprovecho para pedir por favor a Arturo Pérez Reverte que añada ya el verbo «esmartivizar» en el diccionario de la RAE).
¿Tú crees? ¿Y cuál sería entonces la primera persona del pretérito imperfecto de subjuntivo del verbo esmartivizar?
Como todo el mundo sabe, mi anónimo amigo, sería «esmartivizara» o «esmartivizase». Pero vamos a los asuntos que nos interesan.
Se puede conseguir convertir una Raspberry en todo un reproductor multimedia de varias formas, pero lo más sencillo y habitual es instalar en su «disco duro» (Recordad que una raspberry usa una tajeta micro SD como unidad principal de disco) un sistema operativo especializado en ello. Los tres más habituales son Kodi, OSMC y RasPlex. A pesar de que el desarrollo de Rasplex lleva parado bastante tiempo, para mi Rasplex es el mejor de los tres por su buena interfaz y facilidad de uso, sin olvidar que los otros dos permiten instalar plugins que también permiten reproducir vídeos de Plex, Amazon TV o Netflix, mientras que rasplex no permite reproducir contenido de estas dos últimas plataformas.
Si instalamos uno de estos sistemas para reproducir contenidos remotos en una Raspberry Pi 3 o 3B+, tenemos todo correctamente configurado y además tenemos nuestra raspberry conectada a internet mediante un cable de red, no vamos a tener problema alguno y todo irá como la seda. Pero si optamos por hacer la conexión mediante el interface WiFi de estos dispositivos, aunque tengamos todo configurado correctamente vamos a empezar a tener problemas de todo tipo. En este artículo vamos a ver cómo detectarlos y corregirlos.
Pero primero voy a contaros la historia de cómo…
Bueno... ya empiezas con historias del Abuelo Cebolleta. Cómo te gusta meter paja por el medio de los artículos. Vete al grano, anda.
No usuario anónimo. Quiero dejar claro qué fallos le noté al sistema para que si alguien también nota comportamientos extraños en su dispositivo pueda compararlos con lo que me pasó a mi y sacar conclusiones. Si tienes demasiada prisa como para leer esta pequeña historia, vete directamente al punto 4 del artículo en el que muestro cómo solucionar el problema. Como os decía antes de esta molesta interrupción, os voy a detallar el problema y sus síntomas y luego veremos cómo solucionarlo.
1- Objetivo y primeros fallos
Tengo desde hace bastante tiempo una Raspberry Pi 2 que ahora mismo uso con Rasplex pero que anteriormente ha tenido otros usos a lo largo de su vida. Primero fue el servidor de esta página web (al momento de escribir este artículo esta web te la está generando una Raspberry Pi 3B+ que está encima de mi escritorio), luego la usé como consola de videojuegos en la televisión principal de mi casa y por último y hasta el día de hoy la estoy usando como reproductor multimedia usando RasPlex. La televisión a la que está conectada está lejos de una toma de red, por lo que estoy obligado a conectarla a través de WiFi. Como este modelo de Raspberry no cuenta con WiFi de serie, he tenido que comprarle un adaptador USB-WiFi para que funcione correctamente. Como llega buena señal del router al que está conectado, las películas se ven sin pausas y todo va estupendamente. Esta Raspberry no tiene problema alguno y estoy encantado con ella.
De hecho va todo tan bien que acabé preparando otra Raspberry (en esta ocasión una Raspberry Pi 3) para hacer lo mismo en otra televisión.
¡Eh! ¡Esa tiene WiFi incorporado! Creo que te puedes ahorrar en esa tele el adaptador USB WiFi.
No te adelantes, porque las cosas van a empezar a complicarse. Efectivamente ya no necesitaba un adaptador WiFi. Le realicé una instalación idéntica a la que tenía la Raspberry Pi 2… pero las películas se paraban cada dos por tres. Se paraban a veces nada más empezar y a veces a los pocos minutos. Era imposible visualizar nada así.
Me armé de paciencia y puse un portátil al lado de la tele realizando pings continuos a la Raspberry mientras iniciaba la reproducción de una película para intentar saber si tenía que ver con desconexiones o algo similar.
¿Cómo? ¿Que guarrada has dicho que le has hecho a tu Raspberry?
¡Qué mal pensado! Le realicé un ping contínuo, que viene a ser algo… como jugar al ping pong con un dispositivo. Tu le mandas un byte a un dispositivo (ping) y el dispositivo te devuelve el byte (pong). De esa forma sabes que responde y que está ahí. Si no responde es porque o hay un problema con la red (ya sea en la tarjeta de red, el cable de red, la intensidad de la señal WiFi o el propio router) o hay un problema con el dispositivo (no está encendido o algo le impide gestionar ese ping). Es una buena forma de saber que está todo bien. Al ser continuo le obligamos a jugar al «ping pong» todo el rato, así que si hay una desconexión sabremos en qué momento se produce.
¿Y cómo se hace eso del ping continuo? Qué tengo que comprar para hacerlo.
No hay que comprar nada especial. Si tienes un ordenador con windows, debes abrir el menú inicio y buscar el símbolo de sistema entre los programas instalados (puedes pulsar en el menú inicio, teclear «cmd» y en el programa que sale pulsar «enter») y luego teclear lo siguiente:
ping 192.168.xxx.xxx -t
Es decir… escribes ping, luego la dirección ip de tu raspberry (la puedes ver en el interfaz de Plex, o saberla mediante Angry IP Scanner, tal y cómo indico en el punto 5 de este artículo) y por último escribes «-t» y pulsas enter. Si tu ordenador es un Linux o un Mac, podrías usar el terminal. El comando en este caso es el mismo pero sin el «-t» del final. Si todo va bien debería salirte algo como esto:
Pero a mi en lugar de eso, me aparecía esto otro.
Fijaos que llega un momento en el que la raspberry dejaba de responder a los pings. Pocos segundos después de dejar de responder a los pings, la película se paraba por completo. Después de un rato había de nuevo respuesta a esos pings y la película se volvía a reproducir hasta que había una nueva caída de la red. Este problema también lo logré reproducir (de forma incluso mucho más intensa) haciendo un pre-caching, que consiste en bajarse las carátulas de las películas que hay almacenadas en el servidor. Por supuesto reviso en internet a ver si era el único al que le pasaba a esto y efectivamente le pasa a más gente, pero todo el mundo indica que para evitar estos problemas hay que conectar por el cable de red porque por medio de WiFi siempre se tiene peor conectividad que por cable. Eso es cierto, y de hecho eso seguramente solucione el problema… pero no es una solución válida para mi. No es problema de conectividad de WiFi, porque con la Raspberry pi 2 las películas no se paran conectando el dispositivo por WiFi (y la 2 es menos potente que la 3). Eso es ir a lo fácil y no es mi estilo. Si la 2 funciona por WiFi sin problemas la 3 también va a funcionar también por WiFi caiga quien caiga.
2- Primer intento de solución: Cambiemos de sistema operativo.
Todo indicaba un fallo de red, pero… ¿Será que RasPlex no está bien preparado para las características que tiene la Raspberry Pi 3? No olvidemos que en el momento de escribir este artículo estamos en el año 2019 y RasPlex lleva sin actualizarse desde el 2016. Era una posibilidad, así que opté por probar con otro sistema operativo, en este caso OSMC, que viene a ser un Kodi vitaminado. Después de instalar el plugin de Plex dentro de OSMC llegó la gran decepción. Tenía exactamente los mismos síntomas. El mismo comportamiento en la reproducción de las películas (se paraban al rato de iniciar la reproducción) y el mismo comportamiento ante pings continuos (Bloques enteros con pérdida de paquetes).
O sea... que si ningún sistema operativo hacía funcionar correctamente el WiFi, el problema era que seguramente la tarjeta de red se te había quemado. Espero que tuvieras la Raspberry en garantía para cambiarla.
No tan rápido. Tengo más raspberrys en casa, y el OSMC también corre en una Raspberry Pi 3B+ (Rasplex no es compatible con las 3B+, pero OSMC sí que funciona en ese modelo), así que cambié la tarjeta MicroSD a una Raspberry 3B+ que uso con pi-hole mediante WiFi. Esa no puede fallar porque la uso todos los días y sé que el WiFi le funciona bien. Hago las mismas pruebas y… ¿Pero cómo puede ser? ¡Ahí está el problema de nuevo!
Conclusión: no es la tarjeta WiFi. Vuelvo a poner la 3B+ en su sitio habitual y su conexión WiFi le vuelve a funcionar a las mil maravillas.
Pero... pero... espera. No puede ser. Si no es la tarjeta de red ¿Qué está causando esto?
Pues no lo tengo nada claro, pero todo apunta a dos causas probables.
- El sistema operativo de Kodi, Rasplex y OSMC no está bien programado para las conexiones WiFi.
- Hay algo en el hardware de la Raspberry que hace que cuando le metes caña (reproducir un vídeo mientras lo está descargando, las dos cosas a la vez) la raspberry se cuelgue inmediatamente. Pero no creo que los tiros vayan por ahí porque si no no tendría sentido que ocurriera lo mismo mientras se hace el pre-caching.
En todo caso está claro que Plex en mi Raspberry Pi 2 funciona mediante su tarjeta WiFi correctamente, así que el siguiente paso es probar con una tarjeta WiFi conectada al puerto USB. A ver si va a ser que la tarjeta WiFi de la placa de las Raspberry Pi 3 y 3B+ no es compatible con estos sistemas operativos. Raro, porque en todos los sitios pone que el sistema funciona en estas placas, pero no es imposible.
3- Conectamos un adaptador USB-WiFi al puerto USB
Pues vamos allá. Conectamos el mismo adaptador que va perfectamente en la Raspberry Pi 2. En RasPlex, cuando buscamos redes WiFi (los nombres de las redes se llaman SSID’s) ahora nos aparecen todos duplicados, pero en la zona inferior nos aparece qué tarjeta de red ha encontrado cada una de esas redes, marcadas como wlan0 y wlan1. Conecto primero con la cero y luego con la 1, y en ambos casos compruebo mediante Angry IP Scanner que wlan0 corresponde con la tarjeta de red de la placa de la Raspberry y la wlan1 corresponde al adaptador USB-WiFi. Así que me conecto a mi SSID con el adaptador en wlan1 y… No me lo puedo creer. ¿Pero cómo puede seguir fallando?
¡¡Quiero entender lo que está pasando!! ¿Pero cómo es posible esto? Con el adaptador USB-WiFi conectado da igual que me conecte mediante wlan0 o wlan1. El problema sigue estando ahí. Las películas se paran, el pre-caching también y el ping contínuo muestra bloques de paquetes perdidos. ¡¡Pero si este adaptador me funciona correctamente en la Raspberry Pi 2!! Solucionar esto empieza a ser algo personal.
4- La solución definitiva.
Necesito saber qué es lo que diferencia mi Raspberry Pi 2 (que funciona perfectamente con plex y un USB-WiFi) de la 3 y de la 3B+ para poder dar con la solución. La 3 y la 3B+ son más potentes (tienen procesadores más rápidos). ¿Podría ser un problema de calentamiento excesivo? Aparentemente no. No estoy monitorizando temperaturas, pero llevo tiempo trabajando con estos aparatos y poniendo el dedo en el disipador mientras funciona (niños, no hagáis esto en casa) no noto que se caliente excesivamente. Tienen los mismos puertos: 4 usb’s 2.0, un interface de red RJ45, salida de audio y HDMI, un puerto GPIO para frikadas varias… Lo único que diferencia sustancialmente estos modelos es que la 3 y la 3B+ tienen WiFi y Bluethooth integrado y la 2 no lo tiene. Es entonces cuando se me ocurre una idea malévola. ¿Se pueden desactivar estos puertos de la placa de forma sencilla para así usar el adaptador USB-WiFi de forma única?
Todo es posible con un soldador y un poco de estaño.
No, por favor. No quiero llegar a esos extremos. Resulta que sí se pueden desactivar sin tocar la placa y la verdad es que resulta muy sencillo.
Debemos entrar en la partición «/boot» de la raspberry. Si tenéis un ordenador con Linux, tal vez lo más sencillo sea poner la tarjeta de la Raspberry en un lector de tarjetas y una vez hecho esto se os montarán las dos particiones que tiene la tarjeta. Simplemente tendréis que entrar en la partición «boot».
También podéis hacer otra cosa para entrar en la partición boot. Desde otro ordenador podéis usar un programa para acceder al terminal de la raspberry (como Putty o el comando «ssh» del terminal de Linux o Mac OS). Tenéis instrucciones de cómo hacerlo en el punto 5 de este tutorial. Simplemente tendréis que usar el usuario y contraseña de la distribución que habéis usado. Os doy los tres logins de las tres distribuciones de las que estamos hablando.
- RASPLEX: Usuario: root – Password: rasplex
- OSMC: Usuario: osmc – Password: osmc
- Kodi mediante Libreelec: Usuario: root – Password: libreelec
Una vez dentro del sistema tenéis que teclear lo siguiente:
cd /boot
Y ya estaréis en la partición correcta. Una vez ahí, si estáis en un ordenador con Linux, hay que editar el archivo «config.txt» como root. Si habéis entrado por SSH a la raspberry podéis hacerlo tecleando el comando siguiente:
sudo nano config.txt
Veréis dentro del archivo un montón de cosas. Vamos a insertar las siguientes líneas arriba de todo del archivo.
dtoverlay=pi3-disable-wifi
dtoverlay=pi3-disable-bt
Como podréis suponer, la primera línea apaga el WiFi y la segunda apaga el Bluethooth de la raspberry antes de que arranque (el sistema operativo, gracias a estas dos líneas, no es capaz de reconocer que nuestra Raspberry tiene estos dos dispositivos instalados en su placa madre).
¡Eh! ¡Para el carro! Pero ¿Por qué deshabilitas los dos? ¿Con deshabilitar el WiFi no es suficiente?
Pues posiblemente, pero como en esta raspberry no uso Bluethooth preferí hacer esta prueba deshabilitando ambos dispositivos. No he llegado a hacer la prueba deshabilitando uno sólo y ante la duda de que no funcione deshabilitando sólo el WiFi prefiero advertir a la gente para que deshabilite los dos. En todo caso si alguien prueba a deshabilitar sólo uno de ellos que me indique los resultados y los pondré en esta noticia.
Ahora guardamos el archivo. Si estáis usando nano desde la raspberry tenéis que pulsar primero «Control»+»o» y luego «Control»+»x», y luego reiniciar la raspberry. En caso de usar Linux, después de guardar los cambios podemos volver a poner la tarjeta en la raspberry encenderla.
Una vez hecho esto, hay que entrar en el interface de administración de redes WiFi de Rasplex y buscar nuestra red. Ahora en lugar de aparecer dos veces cada SSID encontrado (marcado cada uno como wlan0 y wlan1), aparecen una única vez (porque sólo detecta redes el adaptador USB-WiFi, ya que el WiFi de la placa está apagado). Con esto realizado, volví a intentar la reproducción de alguna película y a realizar el pre-caching y a pesar de no esperar gran cosa… ¡¡Funcionaba todo perfectamente!! Pero… ¿Por qué?
Pues os voy a ser sinceros. Aún no lo sé. Sé que las Raspberrys (del modelo 3B+ hacia atrás) tienen fama por tener cuellos de botella serios en algunos componentes que causan que no puedan ir a toda la velocidad a la que pueden ir teóricamente. Sin embargo no creo que este problema vaya por ahí porque en Raspbian no he notado estos síntomas. Además quiero suponer que el cuello de botella de la tarjeta WiFi de la placa va a ser el mismo que el del USB, por lo que no debería ser éste el problema.
Bajo mi humilde opinión, creo que esto se debe más a un problema de programación o falta de mantenimiento de las distribuciones OpenElec, Kodi y Rasplex. A pesar de poder correr en las Pi 3 y 3B+, puede que no hayan optimizado su código lo suficiente y por eso hay estos problemas en estos modelos concretos. Sé que Rasplex no actualiza su código desde el 2006, con lo que lo más probable es que el problema sea éste, pero las otras dos sí han actualizado algo más su código, por lo que me sorprende este comportamiento en ellas. Si alguien tiene alguna información de por qué ocurre esto (más alla de simplemente saber cómo se soluciona) agradecería que la pusiera también en los comentarios.
En todo caso, después de una semana con un uso intensivo de este aparato, puedo certificar que así funciona todo correctamente.
Oye... pues voy a hacerlo como tú dices. ¿Qué adaptador WiFi has usado?
Supongo que cualquier adaptador USB-WiFi debería funcionar correctamente (la mayoría de adaptadores hoy en día tienen drivers para Linux). Yo he usado un TP-Link TL-WN725, que ya en la caja indica que es compatible con Linux. Si podéis conseguirlo, al menos sabréis que con éste no vais a tener fallo alguno.
Si al final os decidís a comprar algo similar, aseguraos de que el dispositivo sea compatible con con Linux para no andar luego dando palos de ciego por culpa de los drivers.
O sea, que se soluciona del todo desactivando el WiFi de la raspberry y poniendo un adaptador USB-WiFi. Pero me queda una duda. ¿Cuál es la primera persona del pretérito pluscuamperfecto del verbo "esmartivizar"?
Yo hubiera o hubiese esmartivizado. Eres incorregible.
Deja una respuesta