
El Raspberry Pi es un dispositivo increíblemente popular conocido por su asequibilidad, versatilidad, capacidades y comunidad vibrante. Es fácil encontrar sitios y artículos para fanáticos, pero la mayoría de las personas no conocen sus debilidades hasta que ellas mismas sufren y buscan información en los foros.
Trataré de hablar sobre algunos problemas que encontré personalmente, así como algunos problemas típicos que con mayor frecuencia aparecerán en personas que no sospechan nada al respecto. Y, por último, por qué no recomiendo Pi para algunas aplicaciones, en particular, servicios NAS como NextCloudPi y Open Media Vault. Espero que esto me ahorre tiempo, así que no repito todo esto en los foros.
He tenido muchas Raspberry Pi y las he estado usando durante muchos años. Cuando apareció el primer modelo en 2012, se convirtió en un hito importante en el mercado de una sola placa. Aunque ya existían varios tableros buenos, como Beagleboard y Odroid, eran bastante caros, y solo los fanáticos incondicionales podían comprarlos y probarlos.
Pi no es tan poderoso en comparación con ellos, pero debido a la increíble baratura literalmente explotó el mercado. Blogs, tarjetas de expansión, muchos proyectos personales, toneladas de bibliotecas ... Raspberry Pi fue el primero en lograr todo esto, y hasta el día de hoy una comunidad próspera es la mayor ventaja de Pi sobre otros tableros.
Pero ahora es 2019 y es hora de mirar de nuevo. En mi opinión, hay alternativas más abiertas de mejor calidad al mismo precio. Trataré de explicarlo.
Rendimiento

Raspberry Pi redujo el precio cortando esquinas. Como resultado, el tablero no es lo suficientemente productivo para algunas tareas, en comparación con los competidores. En particular, no es adecuado para tareas de red y funcionalidad USB.
Aquí está el
chip SMSC LAN9514 , que se conecta al SoC con un canal USB, actuando como un adaptador USB a Ethernet y un concentrador USB al mismo tiempo. Por lo tanto, Ethernet y USB se sientan en el mismo canal y compiten entre sí, lo que contradice el uso típico del NAS, cuando algo se descarga a través de la red y se almacena en una unidad USB, sin mencionar la adición de RAID aquí.
Por la misma razón, incluso cuando finalmente lanzaron un modelo habilitado para Gigabit Ethernet el año pasado, el rendimiento real de la red ni siquiera se acercó al gigabit, pero fue un
máximo de 40 MB / s en velocidad neta y un máximo de 20 MB / s si Transferencia a un dispositivo USB . En ese momento, ya había placas baratas con Gigabit Ethernet y USB3 reales.
De hecho, el Wi-Fi
no pasa por SMSC , sino que se conecta al chip BCM4343 a través de
SDIO , por lo que este cuello de botella se puede evitar de alguna manera usando Wi-Fi. Sin embargo, el chip Wi-Fi no es omnipotente, tendrá que lidiar con la interferencia circundante, por lo que esta no es una alternativa ideal.
Por estas razones, no recomendaría usar Pi como NAS, ya sea Open Media Vault o Nextcloud.
Real Brain Pi - Fuente cerrada
Si ha estado involucrado en disputas de libertad de software, entonces el principal problema en nuestros sistemas Linux son los blobs binarios de código cerrado. No entraré en detalles, pero el problema es que estas partes del sistema no se pueden verificar y tienen acceso a todo lo que sucede en el dispositivo. Esto generó grandes proyectos de código abierto, como
Android Replicant , diseñados para liberar nuestros sistemas de cualquier blob binario: un proceso doloroso, tedioso y lento.
Un problema similar es con la Raspberry Pi, donde la CPU y la GPU están integradas en el mismo chip
BCM2837B0 . El procesador central es un ARM A53 de cuatro núcleos y 64 bits a 1400 MHz (en el Pi 3B), y el procesador gráfico es un VideoCore IV de 32 bits y doble núcleo con una frecuencia de 400 MHz. La integración de CPU y GPU es popular en el mundo móvil porque reduce el precio y el consumo de energía. Los competidores NXP iMX y Allwinner utilizan un enfoque similar.
Por lo tanto, en el último Pi hay seis núcleos, pero solo cuatro de ellos son ARM. Linux se ejecuta en el procesador, pero puede sorprenderle que Linux en este dispositivo sea un ciudadano de segunda clase. Los núcleos de GPU se ejecutan bajo el sistema operativo ThreadX en tiempo real. Este sistema operativo de código cerrado administra el sistema sin el conocimiento del kernel de Linux.
Al comienzo de la descarga, el procesador Raspberry Pi está completamente deshabilitado (técnicamente en un estado de
reinicio ) y es la GPU la que inicia el sistema. Puede echar un vistazo a la carpeta
/boot
y encontrará blobs binarios con los que la GPU inicia el procesador y su propio sistema operativo
ThreadX (
bootcode.bin y
start.elf ). Lea más sobre el proceso de descarga
aquí .
Es la GPU que monta la tarjeta SD, descarga estos blobs y lee la configuración del
archivo de texto config.txt , que editamos para ajustar la configuración de video o overclockear la GPU. Linux no está involucrado aquí.
Cuando la GPU permite que la CPU cargue el kernel de Linux, no solo abandona el escenario, funciona solo como un
procesador de gráficos . No, la GPU sigue siendo la principal. ¿Alguna vez has pensado quién muestra estos logotipos cuando el Pi se conecta a HDMI? ¿O son estos
símbolos de rayos o temperatura en los iconos de advertencia? Exactamente, esto es lo que hace el sistema ThreadX en la GPU, y Linux no sabe lo que está sucediendo en absoluto.
Es posible que no conozcamos la funcionalidad completa de la GPU, pero sabemos algo de lo que él es responsable. Para este artículo, es importante que ThreadX monitoree la caída de voltaje, un problema generalizado, como veremos más adelante, y reduce la frecuencia del procesador para evitar fallas y congelamiento del procesador. Por lo tanto, en humanos, los dispositivos funcionan a una frecuencia de 600 MHz en lugar de 1400 MHz, en el mejor de los casos. Esta aceleración comienza a 4,65 V y también puede activarse por temperatura. Al mismo tiempo, Linux todavía piensa que el sistema está funcionando normalmente a una frecuencia completa.
Esto es justo lo que vemos. Dado que el sistema operativo principal es propietario, no tenemos forma de saber qué más está haciendo o es capaz de hacer, por lo que siempre hay un problema de privacidad.
Hay al menos una patente incluida en el blob de código cerrado que prohíbe la apertura de código
hasta al menos 2025 , pero no sabemos si esto se hará incluso en ese momento. Hubo intentos de
aplicar ingeniería inversa a VideoCore IV y crear firmware de código abierto para ello. Desafortunadamente, el
proyecto murió antes de sacar algo útil. Al igual que con los blobs de Android, este es un trabajo increíblemente difícil.
Problemas de nutrición

Este no es un error técnico de Raspberry Pi, sino un error típico del usuario.
El primer modelo apenas usó 80 mA, pero cada nueva generación se volvió más y más poderosa, y por esta razón más intensiva en energía. Además, muchos usuarios conectan dispositivos USB que también consumen energía si no vienen con sus propias fuentes de alimentación.
El conector microUSB se diseñó originalmente solo para 1.8 A, y aunque es un estándar antiguo, y puede encontrar cargadores que ofrecen más, muchas personas intentan usar cargadores de teléfonos 1 A viejos o comprar adaptadores baratos en Internet para alimentar Frambuesa Pero Pi es una computadora y requiere una fuente de alimentación estable y de alta calidad que proporcione 5 V estables en la entrada con una intensidad de corriente de hasta 2.5 A. No solo se necesita un transformador decente, sino también una conexión de alta calidad (o se producirá una caída de voltaje), pero lo más importante que necesita un buen
cable , de lo contrario el voltaje a través de él disminuirá considerablemente. Los cables defectuosos son incluso más comunes que las fuentes de voltaje inestables, así que asegúrese de usar un buen cable: quizás 20
AWG o similar, o simplemente compre una fuente de alimentación oficial. La conclusión es que no todos los cargadores USB funcionarán correctamente, incluso si son 2.5A 5V.
Agregue esto a lo que discutimos en la última sección, y comenzará a comprender el panorama general. La mayoría de los usuarios trabajan en sus dispositivos con una frecuencia reducida, y la GPU les oculta esto, por lo que en realidad trabajan con una frecuencia reducida de 600 MHz: casi lo mismo que ARMv6 en el primer Pi.
En muchos casos, los esfuerzos de la GPU son insuficientes y el sistema se bloquea al azar o simplemente se congela, posiblemente corrompiendo datos o dañando la tarjeta SD. Esto generalmente ocurre
bajo carga , es decir, cuando los transistores requieren una potencia máxima. Luego, el usuario llega a los foros y se queja:
mi fuente de alimentación está en orden, ejecuté esto y aquello, y nada falló . Por supuesto, esto no es cierto, pero a menudo no creen en ello.
En mi opinión, esto es lo que los japoneses pueden llamar
Poka Yoke , es decir, debemos diseñar sistemas que,
por su diseño , no permitan que el usuario se dispare en el pie. Una vez más, la fuente de alimentación oficial es de muy buena calidad por su precio, y lo recomiendo encarecidamente.
No me gusta que un sistema propietario oculto reduzca la frecuencia más allá de nuestro control. Sería mejor si el sistema se congela: entonces puede ver inmediatamente lo que está sucediendo y una persona puede reemplazar la fuente de alimentación. En mi opinión, esto es mejor que engañar a los usuarios y hacer que se quejen
en Internet . Es difícil imaginar la razón por la cual los desarrolladores de Pi habrían hecho esto si no hubieran ocultado el problema de Poka Yoke.
Verificar problemas de energía
Tomó demasiado tiempo, pero
aun así logramos registrar el problema a nivel del núcleo. Si
ve un mensaje de este tipo en los registros del sistema:
kern: crit: [1701.464833 2.116656] ¡Subtensión detectada! (0x00050005)
kern: info: [1707.668180 6.203347] Voltaje normalizado (0x00000000
entonces tienes una disminución en el voltaje. Es bueno que ahora Linux capture al menos esa información, pero si queremos saber más, necesitamos acceso directo a la GPU.
El comando vcgencmd puede obtener información del sistema del firmware ThreadX.
Puede usar los
vcgencmd measure_clock arm
y
vcgencmd measure_volts
para verificar la frecuencia y el voltaje reales. Aquí hay un ejemplo de salida de un script de
monitoreo de tkaiser.
Conclusión
Realmente creo que Raspberry Pi se ha convertido en un evento muy importante en la historia de las computadoras de una sola placa, pero hoy está rezagado en términos de calidad, rendimiento y apertura. Existen alternativas asequibles donde los desarrolladores han prestado más atención a estos problemas.
A pesar de esto, todavía uso Raspberry Pi, lo que
ayuda a los usuarios a configurar su propio alojamiento en la nube. Dada la popularidad de esta placa, tiene sentido para mí mantenerla mientras sea útil para las personas.