Está en la página 1de 453

MANUAL RASPBERRY PI 4

MEMORIA DE ESTADÍA PROFESIONAL

REPORTE TÉCNICO

PARA OBTENER EL TITULO DE

INGENIERÍA EN MECATRÓNICA

PRESENTA

ISABEL SANABRIA ORTEGA


ASESOR DE LA ORGANIZACIÓN: C. RUBEN ANDRADE JIMENEZ
ASESOR ACADÉMICO: M. EN C. ÁNGEL DAVID GÓMEZ SÁNCHEZ
ORGANIZACIÓN: SOLARIS DIGITAL
GENERACIÓN: MAYO 2020 - DICIEMBRE 2021
CUATRIMESTRE DE TERMINO: SEPTIEMBRE – DICIEMBRE 2021
CARTA DE AUTORIZACIÓN DE DIGITALIZACIÓN DEL REPORTE
TÉCNICO

Elabora Dirección de División y se entrega al estudiante.


CARTA DE ACEPTACIÓN
CARTA DE TÉRMINO
Elabora y entrega la organización cuando se concluye la Estadía Profesional.
MANUAL RASPBERRY
PI 4

DEDICATORIA
A mi institución. La Universidad Tecnológica de Tecámac, casa de estudio que me
brindo un espacio formativo, propio a las materias que me fueron impartidas durante
el periodo de aprendizaje escolarizado, además de valiosos recursos, como las
herramientas mecánicas - manuales, que tuve el placer de aprender a manejar,
instrumentos de visualización electrónicos, que me enseñaron la importancia de cada
calculo, medición análisis e interpretación y software, diferentes programas que de
manera digital ayudaron en cada práctica.

A mis formadores. Maestros de gran sabiduría quienes se han esforzado por


ayudarme a llegar al punto en el que me encuentro, compartiendo su conocimiento y
también resolviendo mis dudas, no ha sido fácil el proceso, pero gracias a la
dedicación que los ha regido, he logrado importantes objetivos como culminar el
desarrollo de mi tesis con éxito y obtener una afable titulación profesional.

Al personal administrativo. Personas que me brindaron su tiempo para apoyarme en


cada tramite, su paciencia, sus consejos, que me proporcionaron en más de una vez
un panorama diferente, y ayudaron de guía para llevar a cabo los proyectos
requeridos.

A mi Empresa. A Solaris Digital le doy las gracias por darme la oportunidad de


mostrar mis conocimientos además de desarrollar mis habilidades mediante el
proyecto que se me asignó, de igual manera por las experiencias obtenidas mediante
los cursos que me permitieron tomar.

A mi madre, una mujer que simplemente me hace llenar de orgullo, te amo y no va


haber manera de devolverte tanto que me has ofrecido, desde tu incomparable
paciencia hasta tu gran sabiduría. Esta tesis es un logro más que llevo a cabo, y sin

I
MANUAL RASPBERRY
PI 4

lugar a dudas ha sido en gran parte gracias a ti; no sé en donde me encontraría de


no ser por tu ayuda, tu compañía, y tu amor.

II
MANUAL RASPBERRY
PI 4

ÍNDICE

Índice General
CARTA DE AUTORIZACIÓN DE DIGITALIZACIÓN DEL REPORTE TÉCNICO.....II
CARTA DE ACEPTACIÓN........................................................................................III
CARTA DE TÉRMINO...............................................................................................IV
DEDICATORIA............................................................................................................I
ÍNDICE........................................................................................................................II
RESUMEN (Mínimo una y máximo dos cuartillas)...................................................IX
ABSTRACT................................................................................................................X
INTRODUCCIÓN........................................................................................................1
CAPÍTULO I METODOLOGÍA.......................................................................................2

1.1. PLANTEAMIENTO DEL PROBLEMA.................................................................3


1.2. JUSTIFICACIÓN..................................................................................................4
1.3. CRONOGRAMA DE ACTIVIDADES..................................................................5
1.4. OBJETIVOS.........................................................................................................8
1.4.1. Objetivo General...............................................................................................8
1.4.2. Objetivos Específicos.......................................................................................8
1.5. DISEÑO DE LA INVESTIGACIÓN......................................................................9
1.6. MARCO TEÓRICO, HISTÓRICO O REFERENCIAL.......................................10
CAPÍTULO II GENERALIDADES DE LA EMPRESA..................................................22

2.1 ANTECEDENTES HISTÓRICOS DE LA EMPRESA.........................................23


2.2 MISIÓN...............................................................................................................23
2.3 VISIÓN................................................................................................................23
2.4 UBICACIÓN........................................................................................................24
2.5 GIRO...................................................................................................................25
CAPÍTULO III RASPBERRY PI 4................................................................................26

3.1 Especificaciones técnicas...................................................................................27


Especificaciones..........................................................................................................27

III
MANUAL RASPBERRY
PI 4

Especificaciones físicas.............................................................................................27

LAS INSTRUCCIONES DE SEGURIDAD...................................................................29

3.2 Diagramas esquemáticos...................................................................................29


PINS ID SD e ID SC.....................................................................................................31

3.3 Guía rápida.........................................................................................................36


Configuración...............................................................................................................36

Instalación del sistema operativo.................................................................................37

Instalación de imágenes en Chrome OS.....................................................................39

Instalación de imágenes en Linux................................................................................39

Instalación de imágenes en Mac OS...........................................................................43

Instalación de imágenes en Windows.........................................................................44

Tarjeta SD para Raspberry Pi......................................................................................46

Conexión de una pantalla............................................................................................47

3.4 Sistema operativo Raspberry Pi.........................................................................50


Actualización y actualización del sistema operativo Raspberry Pi..............................50

Reproducción de audio y video....................................................................................55

Usando una cámara web USB.....................................................................................59

Utilidades útiles............................................................................................................64

Pitón.............................................................................................................................71

GPIO y el encabezado de 40 pines.............................................................................80

3.5 Configuracion......................................................................................................86
Herramienta raspi-config..............................................................................................86

Configuración de redes................................................................................................93

Configuración de una Raspberry Pi sin cabeza........................................................100

Configuración de un punto de acceso inalámbrico enrutado....................................103

IV
MANUAL RASPBERRY
PI 4

Configuración de un punto de acceso inalámbrico con puente..............................109

Usando un servidor proxy..........................................................................................114

Configuración HDMI...................................................................................................117

Rotar su pantalla........................................................................................................122

Configuración de audio..............................................................................................124

Configuración de almacenamiento externo...............................................................125

Localización de su Raspberry Pi................................................................................128

Cambiar la configuración de pines predeterminada..................................................129

Árboles de dispositivos, superposiciones y parámetros............................................134

La línea de comandos del kernel...............................................................................169

Configuración de UART.............................................................................................171

Iconos de advertencia de firmware............................................................................177

Códigos de parpadeo de advertencia LED................................................................178

Asegurar su Raspberry Pi..........................................................................................179

Configurar pantalla en blanco....................................................................................188

La bootcarpeta...........................................................................................................189

3.6 Archivo config.txt..............................................................................................192


¿Qué es config.txt?....................................................................................................192

Opciones comunes....................................................................................................193

Audio analógico integrado (conector de 3,5 mm)......................................................195

Opciones de arranque...............................................................................................196

Control GPIO..............................................................................................................203

Opciones de overclocking..........................................................................................205

Filtros condicionales...................................................................................................212

Opciones heredadas..................................................................................................217
V
MANUAL RASPBERRY
PI 4

Opciones de memoria.............................................................................................217

Opciones de clave de licencia y códec......................................................................219

Opciones de video.....................................................................................................220

Canalización HDMI Raspberry Pi 4...........................................................................244

Ajustes de la cámara..................................................................................................245

Opciones misceláneas...............................................................................................246

3.7 El nucleo de Linux............................................................................................246


Núcleo........................................................................................................................246

Construyendo el Kernel.............................................................................................247

Configurando el Kernel..............................................................................................254

Parcheando el Kernel................................................................................................256

Encabezados de kernel.............................................................................................257

3.8 usando Linux....................................................................................................257


Terminal.....................................................................................................................257

El sistema de archivos de Linux................................................................................262

Comandos de Linux...................................................................................................263

Editores de texto........................................................................................................268

Usuarios de Linux......................................................................................................270

Raíz y Sudo................................................................................................................271

El archivo `.bashrc`....................................................................................................273

Secuencias de comandos de Shell............................................................................274

Programación de tareas con Cron.............................................................................275

El systemd demonio...................................................................................................276

3.9 Acceso remoto..................................................................................................278


3.10 Hardware Raspberry Pi..................................................................................278

VI
MANUAL RASPBERRY
PI 4

3.11 Hardware del módulo de computo.................................................................278


3.12 Procesadores..................................................................................................279
CAPÍTULO IV PROYECTOS.....................................................................................280

CAPÍTULO V PROGRAMACIÓN...............................................................................282

CAPÍTULO VI PRUEBAS..........................................................................................284

CAPÍTULO VII CAMBIOS..........................................................................................286

CAPÍTULO VIII APLICACIÓN TERMINADA.............................................................288

CAPÍTULO XI IDEAS PARA MEJORAR EL MANUAL..............................................290

CAPÍTULO X… (Se coloca la numeración consecutiva al último capítulo


desarrollado). RESULTADOS, RECOMENDACIONES Y CONCLUSIONES..........292

10.1. RECOMENDACIONES.................................................................................292
10.2 IMPLANTACIÓN.............................................................................................293
10.3 PRUEBAS TÉCNICAS...................................................................................294
10.4 CONCLUSIONES...........................................................................................294
GLOSARIO................................................................................................................295

REFERENCIAS (BIBLIOGRAFÍA).............................................................................297

ANEXOS....................................................................................................................301

Índice de Ilustración
Ilustración 0-1 Logo Visual Studio Code....................................................................10
Ilustración 0-2 Logo Flutter y plataformas..................................................................13
Ilustración 0-3 Tarjeta Raspberry Pi 4.......................................................................14
Ilustración 0-4 Arquitectura de la tarjeta Raspberry Pi 4...........................................15
Ilustración 0-5 Raspberry Pi Model B........................................................................16
Ilustración 0-6 Raspberry Pi Model A........................................................................17
Ilustración 0-7 Raspberry Pi Zero..............................................................................18
Ilustración 0-8 Raspberry Pi 400................................................................................18
Ilustración 0-9 Raspberry Pi Pico...............................................................................19
Ilustración 0-10 Microcontrolador RP2040 Raspberry...............................................20
Ilustración 0-1 Logo Solaris Digital............................................................................23
Ilustración 0-2 Croquis de ubicación..........................................................................24
VII
MANUAL RASPBERRY
PI 4

Ilustración 0-1 Dibujo mecánico (dimensiones en milímetros)................................28


Ilustración 0-2 Entrada de energía USB-C................................................................29
Ilustración 0-3 MICRO HDMI 1..................................................................................30
Ilustración 0-4 MICRO HDMI 0..................................................................................30
Ilustración 0-5 Expansión GPIO.................................................................................31
Ilustración 0-6 Display................................................................................................31
Ilustración 0-7 Cámara...............................................................................................32
Ilustración 0-8 Gigabit ethernet..................................................................................32
Ilustración 0-9 PoE Header........................................................................................33
Ilustración 0-10 A/V JACK..........................................................................................33
Ilustración 0-11DG.....................................................................................................33
Ilustración 0-12 Power On PWR Led y status ACT Led............................................34
Ilustración 0-13 Diagrama global...............................................................................34
Ilustración 0-14 Generador de imágenes rpi..............................................................37
Ilustración 0-15 Código instalación en Mac OS.........................................................42
Ilustración 0-16 Cable HDMI......................................................................................46
Ilustración 0-17 HDMI_micro......................................................................................47
Ilustración 0-18 Cable DVI-HDMI...............................................................................47
Ilustración 0-19 Adaptador VGA-HDMI......................................................................48
Ilustración 0-20 Cable RCA........................................................................................48
Ilustración 0-21 imagen de la cámara........................................................................59
Ilustración 0-22 imagen de la cámara........................................................................60
Ilustración 0-23 imagen de la cámara........................................................................61
Ilustración 0-24 TypeError..........................................................................................74
Ilustración 0-25 hello world........................................................................................76
Ilustración 0-26 Código..............................................................................................77
Ilustración 0-27 Fila de pines GPIO...........................................................................79
Ilustración 0-28 pines GPIO designación...................................................................79
Ilustración 0-29 Biblioteca GPIO Zero Python...........................................................82
Ilustración 0-30 Pantalla de opciones........................................................................86
Ilustración 0-31 Configuración de código de pais......................................................93
Ilustración 0-32 Clave de red protejida......................................................................93
Ilustración 0-33 /etc/environment archivo................................................................115
Ilustración 0-34 Línea al archivo para sudousar......................................................116
Ilustración 0-42 Advertencia subtención.................................................................181
Ilustración 0-43 Sobretemperatura (80-85 ° C)........................................................181
Ilustración 0-44 Sobretemperatura (85 ° C +)..........................................................182

Índice de Tablas
VIII
MANUAL RASPBERRY
PI 4

Tabla 0-1 Actividades de proyecto................................................................................7


Tabla 0-2 Actividades en estadía..................................................................................7
Tabla 0-3 Planeación del proyecto................................................................................8
Tabla 0-1 Patrón de bits..............................................................................................65
Tabla 0-2 Respuesta de la frecuencia actual del reloj especificado...........................66
Tabla 0-3 voltajes........................................................................................................66
Tabla 0-4 Identificador que muestra el monitor...........................................................69
Tabla 0-5 Registros del subsistema iniciar sesión.....................................................70
Tabla 0-6 Configuración HDMI..................................................................................120
Tabla 0-7 aspect_ratio identificación.........................................................................120
Tabla 0-8 Opciones config.txt....................................................................................123
Tabla 0-9 Opciones tipo de visualización..................................................................173
Tabla 0-10 Asignación de los dos primeros UART:..................................................176
Tabla 0-11 Dispositivos Linux en SO Raspberry Pi:.................................................177
Tabla 0-12 Combinaciones: core_freqconfig.txt........................................................177
Tabla 0-13 UART principal........................................................................................178
Tabla 0-14 Códigos de parpadeo de advertencia LED.............................................183
Tabla 0-15 Archivos de kernel...................................................................................195
Tabla 0-16 Configuración enable_jtag_gpio=1.........................................................211
Tabla 0-17 Overclocking............................................................................................215
Tabla 0-18 Valores predeterminados de frecuencias en MHz..................................215
Tabla 0-19 Valores predeterminados en todos los modelos.....................................216
Tabla 0-20 Voltaje de núcleo de CPU / GPU óptimo................................................216
Tabla 0-21 Frecuencia específica para Raspberry Pi 4, Raspberry Pi 400 y CM4. 216
Tabla 0-22 Filtros de modelo.....................................................................................221
Tabla 0-23 Valores máximos recomendados............................................................226
Tabla 0-24 Modo de video compuesto......................................................................229
Tabla 0-25 sdtv_aspect comando.............................................................................229
Tabla 0-26 hdmi_pixel_encoding comando...............................................................232
Tabla 0-27 hdmi_blanking comando.........................................................................233
Tabla 0-28 hdmi_drive comando...............................................................................233
Tabla 0-29 hdmi_group comando.............................................................................234
Tabla 0-30 Valores válidos si hdmi_group=1(CEA)..................................................239
Tabla 0-31 Valores válidos si hdmi_group=2 (DMT).................................................243
Tabla 0-32 Modo CVT personalizado........................................................................246
Tabla 0-33 framebuffer_depth...................................................................................251
Tabla 0-34 framebuffer_priority multiples pantallas..................................................252
Tabla 0-35 display_hdmi_rotate para orientación de la pantalla..............................253

IX
MANUAL RASPBERRY
PI 4

Índice de Gráficas

Gráfica 1.1 nnnnnnnnnnnnnnnn7

Gráfica 2.1 nnnnnnnnnnnnnnnn.8

Gráfica 3.1 nnnnnnnnnnnnnnnn7

RESUMEN (Mínimo una y máximo dos cuartillas)


Describir de forma sintetizada el proyecto realizado durante la Estadía Profesional.
Tomar en cuenta los siguientes puntos:
 Breve descripción de la empresa o institución y su entorno.
 Problemática de la empresa o institución.
 Alcance logrado
 Puntos relevantes del proyecto.

Nota, se genera hasta el final que se tienen los resultados alcanzados y por ende
puede redactarse cuál es el contenido, pero debe dejarse el espacio de esta hoja y
título desde la primera revisión, para siempre tenerla en cuenta.

Debe describir de manera general que se encontrará el lector del reporte de forma
muy general, no por capítulo y de esa manera determinará si le es útil o no al objetivo
que busca, al consultar el presente documento.

Extensión mínima una y máximo dos cuartillas.

Lleva una numeración romana al pie de página y se incluye en el índice.

X
MANUAL RASPBERRY
PI 4

ABSTRACT

Es el resumen traducido en inglés. Se revisa y autoriza por la academia de inglés,


una vez que se presenta la propuesta en la tercera evaluación.

Lleva una numeración romana al pie de página y se incluye en el índice.

XI
MANUAL RASPBERRY
PI 4

INTRODUCCIÓN
La investigación contenida en este reporte partió de necesidad de un buen manejo
de la herramienta Raspberry Pi 4 desde cero, a través de una guía de los
conocimientos básicos, utilizados para el manejo de este pequeño ordenador, con el
fin de capacitar a los usuarios, e impulsar su imaginación para la creación de nuevos
proyectos generando una mayor comprensión del ordenador y sus infinitas
posibilidades en el mundo de la programación

1
MANUAL RASPBERRY
PI 4

El texto se redactará en forma impersonal sustituyendo el “observamos u observé”


por “se observó”, el “veo o vemos” por el “se ve”. Debe contener el ¿por qué? y
¿para qué? del estudio; se inicia con una identificación del tema como motivación del
mismo y definir claramente el problema que se pretende resolver, las razones que
despertaron el interés en el tema. Se llevará al lector por el mismo proceso que
siguió para definir la necesidad de realizar el estudio, sustentar los antecedentes de
referencias documentadas o no referidas básicamente a la zona de estudio.

No debe contener ni cuadros, ni figuras.


Se incluye también un bosquejo de los capítulos (por lo cual se va
complementando su redacción en cada parcial, de acuerdo a lo escrito en cada
capítulo.

Nota: para que pueda realizar esto, necesita comprender el concepto de SALTO DE SECCIÓN,
de WORD e iniciar con la paginación

A partir de la INTRODUCCIÓN lleva una numeración arábiga al pie de página y


se incluye en el índice.

2
MANUAL RASPBERRY
PI 4

CAPÍTULO I METODOLOGÍA

3
MANUAL RASPBERRY
PI 4

1.1. PLANTEAMIENTO DEL PROBLEMA


Informática o computación es la ciencia que estudia los métodos y técnicas para
almacenar, procesar y transmitir información en formato digital, empleando sistemas
computarizados. Esta ciencia es aplicada directa e indirectamente a través de todos
los dispositivos electrónicos usados actualmente, y de igual forma se desarrollan
proyectos nuevos a cada instante, por lo cual el promover y enseñar informática
genera infinitas posibilidades para el futuro desarrollo de tecnología, y como todo
siempre empieza por algo pequeño.

Para facilitar el aprendizaje, realizar tareas básicas, programar y compilar programas,


se necesita un dispositivo ordenador capaz de manejar cualquier proyecto
informático, se necesita que sea de bajo coste y placa simple, de tamaño reducido y
la posibilidad de conectarle distintos accesorios para realizar un sin fin de tareas, que
le dé versatilidad, con procesador rápido. Por esta razón el ordenador Raspberry Pi
4, es ideal ya que además de poseer las características antes mencionadas, puede
ser usado como un pequeño ordenador domestico básico, de sistema operativo de
código abierto y hardware libre. Este ordenador de bolsillo se caracteriza por ser muy
utilizado para desarrollar pequeños prototipos para la formación sobre informática y
electrónica en colegios, además de ser apto para cumplir a la perfección el objetivo
de este manual.

La finalidad de este manual, es proporcionar una base de conocimientos accesibles


por medio de una aplicación amigable con el usuario, que proporcione los temas de
interés, para esto se tiene pensado en realizar algunas secciones que expliquen el
funcionamiento de cada uno de los componentes, como identificarlos, las
características y donde pueden comprarse, esto relacionado al espacio de trabajo
steren maker y Solaris Digital como curso de capacitación electrónica, actualización
en componentes y desarrollo de proyectos tecnológicos.

4
MANUAL RASPBERRY
PI 4

1.2. JUSTIFICACIÓN
La revolución tecnológica permite el uso creciente de dispositivos móviles, juegos,
recursos en línea y digitales para auto-dirigir su propio aprendizaje, tanto dentro
como fuera del aula, fomentando la creación y el desarrollo de aplicaciones para
estudio e investigación, ya que en un entorno personalizado se impulsa la creatividad
propia, usando las tecnologías en educación, siendo un apoyo para maestros y
estudiantes, con información respaldada por fuentes bibliográficas y sugerencias de
fuentes de consulta.

México tiene actualmente un aproximado de 129 millones de habitantes, de los


cuales, el número de dispositivos móviles conectados en el país es de 115.4
millones, lo que constituye un 89,1% de la población, y casi todos los dispositivos
muestran un aumento en el número de usuarios respecto al año anterior,
exceptuando: las laptops y ordenadores (usadas por el 76% el año pasado), los
teléfonos móviles sin características inteligentes, (por el 13%) y las tablets (por el
50%), entre usuarios de 16 a 64 años de edad, usan diversos dispositivos móviles.
Porcentualmente estos se clasifican en:
 Celulares (cualquier tipo): 98.9% .
 Teléfonos inteligentes (smartphone): 98.7%.
 Teléfonos móviles sin características “inteligentes”: 11.4%.
 Laptops y/u ordenadores de escritorio (pc): 74.2%.
 Tablets: 48%.
 Televisores inteligentes para ver contenido en línea (como Netflix): 24%.
 Consolas de videojuegos: 48.3%.
 Dispositivos inteligentes para el hogar (Smart Home): 12.2%.
 Relojes inteligentes: 22.6%.
 Dispositivos de realidad virtual: 6.3%.
Esta información nos da un rango aproximado de futuros usuarios para este manual,
ya que puede ser adquirido por medios digitales.

5
MANUAL RASPBERRY
PI 4

La realización de este manual digital pretende ser un material de apoyo para el


aprendizaje, desarrollo e implementación de proyectos informáticos y electrónicos, a
fin de preparar a los usuarios para enfrentar problemáticas, y llevar a cabo sus
propuestas de mejora, o creación de nuevos prototipos de dispositivos, de forma
concreta, abarcando aspectos relacionados a la electrónica, programación y
manufactura, con información extraída de fuentes confiables, y opciones de consulta.

Como resultado de la realización de los proyectos contenidos en este manual, será


posible familiarizarse con el aprendizaje didáctico, ampliando y reforzando de
manera eficaz su conocimiento en computación, todo con bases científicas y
referencias bibliográficas, que pueden ser consultadas, ya sea de manera digital o en
el mismo manual, proporcionando un punto de partida, motivando a los usuarios para
generar sus propios diseños y dejar volar su imaginación.

1.3. CRONOGRAMA DE ACTIVIDADES


Tabla 1 ACTIVIDADES DE PROYECTO

FECHA ACTIVIDAD DESCRIPCIÓN.


30 AGO Selección de Selección de plataforma en base a cuál facilita la
plataforma programación, cual es más amigable y
profesional. 
31 AGO Investigación  Tipo de programación (lenguaje).
1 SEP Cursos de Curso desde cero para aprender a programar en
programación Visual Studio Code, lenguaje java, Python y C 
2 SEP Cursos de Interfaz gráfica en la plataforma, practica de
programación curso java y plataforma con inicio, usuario
ventanas.
3 SEP Cursos de Interfaz gráfica en la plataforma, y plataforma
programación inicio, usuario ventanas.
6 SEP Interfaz gráfica Primer interfaz con las animaciones y contenido
7 SEP Interfaz gráfica Elaboración de propuestas del manual
completas
8 SEP Boceto doble Interfaz terminada
manual
9 SEP Programación Animaciones más amigables para el usuario 
10 SEP Programación Descripción de la interfaz y los recorridos de la
interfaz  información 
13 SEP Análisis del código Edición de los diferentes códigos de movimiento

6
MANUAL RASPBERRY
PI 4

14 SEP Investigación de Código para modificar la reacción de contenido


movimiento seleccionado
15 SEP Modificación de Código modificado
código
17 SEP Código final Código listo
20 SEP Introducción de Todo el contenido que hace falta en .la
contenido restante programación se añade
21SEP Información y Fuentes de consulta para las practicas
consulta
22 SEP Información y Libros, blogs y publicaciones de información con
consulta referente a los proyectos
23 SEP Información y Selección de material de referencia a usar para
consulta realizar las practicas
24 SEP Información y Selección de prácticas para el manual
consulta
27 SEP Lista de material Hoja de material a ocupar
28 SEP Lista de material Material electrónico y materia prima
29 SEP Lista de material Herramientas
30 SEP Lista de material Entornos de programación
1 OCT Lista de material Lenguajes de programación
4 OCT Análisis de practicas Cronograma de actividades
5 OCT Análisis de practicas Cronograma de pruebas y tiempos
6 OCT Presentación de los Presentación diapositivas para autorización de
proyectos las practicas que se van a realizar
7 OCT Presentación de los Análisis, selección y aprobación. (Depende de
proyectos esto se agendaran las actividades posteriores)
8 OCT
11 OCT
12 OCT
13 OCT
14 OCT
15 OCT
18 OCT
19 OCT
20 OCT
21 OCT
22 OCT
25 OCT
26 OCT
27 OCT
28 OCT
29 OCT
1 NOV

7
MANUAL RASPBERRY
PI 4

3 NOV
4 NOV
5 NOV
8 NOV
9 NOV
10 NOV
11 NOV
12 NOV
16 NOV
17 NOV
18 NOV
19 NOV
22 NOV
23 NOV
24 NOV
25 NOV
26 NOV
29 NOV
30 NOV
1 DIC
2 DIC
3 DIC
6 DIC
7 DIC
8 DIC
9 DIC
10 DIC .
Tabla 0-1 Actividades de proyecto

29 NOV - 3 DIC
30 AGO - 3 SEP

27 SEP - 1 OCT

16 - 19 NOV

22 - 26 NOV
18 - 22 OCT

25 - 29 OCT
11 -15 OCT
13 - 17 SEP

20 - 24 SEP

8 - 12 NOV
6 - 10 SEP

6 - 10 DIC
1 - 5 NOV
4 - 8 OCT

Actividades

Actividad Descripción 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Tabla 0-2 Actividades en estadía

8
MANUAL RASPBERRY
PI 4

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
ACTIVIDAD MES/DIA
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Portada AGO X
Introducción
Resumen
Dedicatoria OCT X
Indice
Abstract
Metodologia SEP X X/X X X X/X X/X X/X X/X X X X X
Capitulo 2 SEP/OCT X X X X X X X
Capitulo 3 OCT X X X X x x x
Capitulo 4 OCT
Capitulo 5 OCT
Capitulo 6
Capitulo 7
Capitulo 8
Capitulo 9
Capitulo 10
Capitulo 11
Capitulo 12
Conclusiones
Bibliografía
Anexos
Glosario

Tabla 0-3 Planeación del proyecto

1.4. OBJETIVOS
1.4.1. Objetivo General
Realizar una aplicación amigable con el usuario, que contenga un manual digital, el
cual, gracias al desarrollo de prácticas realizadas por el cliente, provea conocimiento
y una mejor perspectiva para el uso del ordenador Raspberry Pi 4
1.4.2. Objetivos Específicos
Realizar un manual para la capacitación, comprensión, uso y manejo del ordenador
Raspberry Pi 4, fomentando la creatividad para futuros proyectos.

9
MANUAL RASPBERRY
PI 4

1.5. DISEÑO DE LA INVESTIGACIÓN


La investigación se llevó a cabo por partes para encontrar la mejor forma de elaborar
el proyecto, con procedimientos, técnicas, y herramientas metodológicas.
Entorno de programación: Se eligió Visual Studio Code ya que es un editor de código
fuente compatible con varios lenguajes de programación, además de usar también
Flutter que es un kit de herramientas de interfaz de usuario de google para realizar
aplicaciones compiladas nativamente para móvil web y escritorio desde una única
base de código, tanto para Android como para iOS (Apple).
Lenguaje de programación: Existe una variedad, y cada uno tiene características que
lo diferencian, sin embargo, Python, ya que es un lenguaje versátil multiplataforma y
multiparadigma, destacado por su código legible y limpio, que se emplea en
plataformas de alto tráfico como google, YouTube o Facebook, es fácil y sencillo de
aprender, desarrollado bajo una licencia de código abierto, por lo que es de libre uso
y distribución incluso para uso comercial. Flutter utiliza Dart como lenguaje de
programación, también desarrollado por Google. Posiblemente, esta sea una
desventaja, ya que Dart no es un lenguaje muy conocido ni usado por la comunidad
de desarrolladores móviles (Swift, Objective-C, Kotlin, Java) y web (JavaScript, PHP,
Java, Ruby…). Aunque es muy parecido a Java y C# (Microsoft), si se tiene
experiencia con alguno de estos lenguajes es muy intuitivo empezar con Dart. Si bien
es cierto que Dart aún no incluye características muy útiles de los nuevos lenguajes
de programación como Swift y Kotlin, Google lo está evolucionando para facilitar el
desarrollo con Flutter. Por esta razón se decidió usar ambos lenguajes.
Cursos para aprendizaje y refuerzo: la mayoría de estos cursos fueron seleccionado
en internet a través de plataformas, videos, aplicaciones y libros en línea, por
mencionar algunos principales se encuentran las plataformas, GitHub, Codigofacilito,
aplicaciones como SoloLearn, libros como Python para todos y Raspberry Pi 4
Manual Completo: Una guía paso a paso a la nueva Raspberry Pi 4 y a la creación
de proyectos innovadores.
Diseño: Tomando como referencia la psicología del color, que es el estudio de los
colores en relación con el comportamiento humano. Su objetivo es determinar el

10
MANUAL RASPBERRY
PI 4

significado de los colores y cómo el color afecta nuestras decisiones cotidianas,


como los artículos que compramos. El significado de los colores tiene un impacto en
por qué preferimos ciertos colores sobre otros. Un mismo color también puede tener
diferentes significados que dependen de nuestra crianza, sexo, ubicación, valores y
otros factores por lo cual se eligió la paleta de colores de Solaris digital.
Materiales: Los materiales se eligieron conforme a las prácticas seleccionadas y
aprobados, bajo la supervisión de Solaris Digital, para un correcto y mejor
aprovechamiento en el desarrollo de los proyectos.

1.6. MARCO TEÓRICO, HISTÓRICO O REFERENCIAL

Ilustración 0-1 Logo Visual Studio Code

Visual Studio Code


Es un editor de código fuente desarrollado por Microsoft para Windows, Linux y
macOS. Incluye soporte para depuración, control de Git integrado, resaltado de
sintaxis, finalización de código inteligente, fragmentos de código, permite trabajar con
diversos lenguajes de programación, admite gestionar tus propios atajos de teclado y
refactorización de código, personalizable, de modo que los usuarios pueden cambiar
el tema del editor, los métodos abreviados de teclado y las preferencias. Es gratuito y
de código abierto, proporciona una utilidad para descargar y gestionar extensiones
con las que podemos personalizar y potenciar esta herramienta.

Historia

11
MANUAL RASPBERRY
PI 4

Visual Studio Code fue anunciado el 29 de abril de 2015 por Microsoft en la


conferencia Build de 2015. Una versión preliminar fue lanzada poco después. El 18
de noviembre de 2015, Visual Studio Code fue lanzado bajo la licencia MIT y su
código fuente fue publicado en GitHub, también se anunció el soporte de extensión.
El 14 de abril de 2016, Visual Studio Code graduó la etapa de vista previa pública y
se lanzó a la web.

Características
El código combina la interfaz de usuario optimizada de un editor moderno con
asistencia y navegación de código enriquecido y una experiencia de depuración
integrada, sin la necesidad de un IDE completo. Visual Studio Code, cuenta con
herramientas de Debug hasta opciones para actualización en tiempo real de nuestro
código en la vista del navegador y compilación en vivo de los lenguajes que lo
requieran (por ejemplo, en el caso de SASS a CSS). Además de las extensiones,
tendremos la posibilidad de optar por otros themes o bien configurarlo a nuestro
gusto. Para modificar el esquema de colores y los iconos

Ventajas
 Se puede utilizar como lenguajes de programación.
 Visual Studio Code es una herramienta que tiene soporte nativo para gran
variedad de lenguajes, entre ellos podemos destacar los principales del
desarrollo Web: HTML, CSS, y JavaScript, entre otros.
 Posibilidad de configurar la interfaz a nuestro gusto. De esta forma, podremos
tener más de un código visible al mismo tiempo, las carpetas de nuestro
proyecto y también acceso a la terminal o un detalle de problemas, entre otras
posibilidades.
 Existencia de una amplísima gama de temas o estilos visuales para Visual
Studio Code, que hacen el trabajo con el software más agradable a la vista.

12
MANUAL RASPBERRY
PI 4

 Goza de un soporte técnico formidable pues debido a su frecuente uso por la


comunidad de desarrolladores, se puede encontrar fácilmente documentación
y ayuda en foros y sitios relacionados
Las extensiones de Visual Studio Code otorga infinidad de opciones, como colorear
tabulaciones, etiquetas o recomendaciones de autocompletado. También hay
extensiones que ayuda con el lenguaje de programación a usar, como por ejemplo
para Python, C / C++, JavaScript, etc.
Algunas extensiones para el desarrollo web en Visaual Studio Code son:
 Better Haml: Extensión que ayuda con la sintaxis y autocompletado de Haml.
 YML (Yseop Markup Language): Provee soporte para YML, dando color y
atajos.
 HTML Snippets: Añade colores a las etiquetas HTML y atajos para este
lenguaje.
 Beautify: Deja un código más atractivo y facilita su lectura.
Dos extensiones que facilitan la lectura del código y la navegación por los menús
son:
 Visual Studio Code-icons: Extensión que cambia y añade iconos para
conseguir una navegación más sencilla e intuitiva. Con ella se identifica a
simple vista si es un fichero de HTML, un directorio, un fichero de Ruby o de
JavaScript.
 Indent-Rainbow: Extensión que permite identificar rápidamente qué está
dentro de que, si se tiene un código amplio con funciones y anidaciones,
Las extensiones que ayudan con los lenguajes de programación son:
 Ruby: Extensión muy completa, ayuda a desarrollar Ruby con Visual Studio
Code, recomendaciones de texto, proporciona atajos y herramientas del
propio Ruby como Rubocop. Es una herramienta que analiza y formatea el
código. O Reek que es una herramienta que examina las clases, módulos y
métodos de Ruby y reporta cuando el ‘código huele mal’.
 Ruby Solargraph: Da sugerencias de auto-completado de código

13
MANUAL RASPBERRY
PI 4

Estas son solo algunas de ellas, pero Visual Studio Code tiene muchas más, desde
el apartado extensiones tiene la opción de ver las más populares, las de lenguajes de
programación u otros temas. Para poder visualizarlas, debe ir a los puntos
suspensivos al lado del buscador y saldrá un menú desplegable con las sugerencias.

Ilustración 0-2 Logo Flutter y plataformas

Flutter
Es un framework de código abierto para crear aplicaciones nativas de forma fácil,
rápida y sencilla, es un SDK desarrollado por Google para crear aplicaciones
móviles, fue desarrollado como un software para uso interno dentro de la compañía,
pero vieron el potencial que tenía y decidieron lanzarlo como proyecto de código
libre, actualmente es uno de los proyectos de desarrollo de aplicaciones móviles que
más está creciendo.
Historia
La primera versión de Flutter fue conocida como "Sky" y corrió en el sistema
operativo de Android. Fue lanzado en el Dart developer summit de 2015, declarado
de ser capaz de hacer un render a 120 fotogramas por segundo. En junio de 2020 se
dio a conocer que las empresas Canonical y Google se unieron para llevar el entorno
de desarrollo al sistema operativo Linux, creando primeramente un sistema Beta para
probarlo.

14
MANUAL RASPBERRY
PI 4

Funcionalidades de Flutter
 Calidad nativa: Las aplicaciones nativas se desarrollan específicamente para
un sistema operativo, Flutter utiliza todas las ventajas de las aplicaciones
nativas para conseguir calidad en el resultado final.
 Experiencia de usuario: Flutter incluye Material Design de Google y Cupertino
de Apple, con lo que la experiencia de usuario es óptima y los interfaces de
usuario idénticos a los de las aplicaciones desarrolladas por las propias
compañías.
 Tiempo de carga: Una de las principales causas de abandono de una
aplicación es el tiempo que tarda en cargar, con Flutter se experimentan
tiempos de carga por debajo de un segundo en cualquiera de los soportes iOS
o Android.
 Desarrollo ágil y rápido: Gracias a la característica hot-reload, puedes
programar y ver los cambios en tiempo real en tu dispositivo o en los
simuladores.
 Otra de las ventajas de utilizar este framework es que da igual el sistema
operativo utilizado, ya que puede descargarse para Windows, Mac o Linux.
 Utiliza un motor gráfico, llamado Skia, que renderiza en 2D los elementos
gráficos. Flutter está escrito en C, C++ y, mayormente, en Dart. De forma
resumida, la capa del motor está escrito en C++ y la de los Widgets en Dart.

15
MANUAL RASPBERRY
PI 4

Ilustración 0-3 Tarjeta Raspberry Pi 4

Raspberry Pi 4
Es un ordenador de bajo coste y formato compacto destinado al desarrollado para
hacer accesible la informática a todos los usuarios. La Raspberry Pi también se
caracteriza por ser muy utilizada para desarrollar pequeños prototipos y para la
formación sobre informática y electrónica en los colegios, basan en el hardware libre
y habitualmente se utilizan también sistemas operativos libres basados en
GNU/Linux. Para este microordenador se ha desarrollado Raspberry Pi OS (antes
conocido como Raspbian) que es una versión personalizada de Debian.
Las placas Raspberry Pi se basan en un SoC de arquitectura ARM de bajo consumo
y buen rendimiento. Se acompañan por un modelo de memoria RAM, cuya
capacidad varía según el modelo. Disponen de varias salidas de vídeo y en las
versiones más nuevas se agrega un conector jack de 4 polos, para entrada de micro
y salida de audio. Cuentan con un lector de tarjetas donde se instala el sistema
operativo y varios puertos USB. También dispone de una gran cantidad de
conectores GPIO para poder desarrollar una gran cantidad de proyectos.
La Raspberry Pi 4, que es la versión más moderna cuenta con un conector Gigabit
Ethernet y una tarjeta WiFi + Bluetooth integrada. Este modelo más moderno tiene un

16
MANUAL RASPBERRY
PI 4

conector de alimentación del tipo USB-C y dos conectores MIPI, uno para un
display y el otro para una cámara.
Para hacerlo funcionar debemos alimentar la placa mediante el conector específico.
Debemos cargar el sistema operativo que queramos en la tarjeta de memoria SD,
para poder disfrutar de toda su funcionalidad. Tendremos que conectar teclado y
ratón, así como una pantalla de visualización de datos para poder interactuar con la
placa.

Ilustración 0-4 Arquitectura de la tarjeta Raspberry Pi 4

Historia
La primera Rasberry Pi fue lanzada al mercado en febrero de 2012 de la mano de la
Raspberry Pi Foundation. Esta organización nace con la idea de promover y enseñar
informática en los centros educativos y universidades de Reino Unido. Para hacerlo
lo más accesible posible, desarrollaron este pequeño ordenador de bajo coste y
grandes posibilidades.
Precisamente es en el buen rendimiento y el bajo coste en donde radica el gran
existo de la Raspberry Pi. Cuentan además con una gran conectividad y de
conexiones GPIO que permiten desarrollar una gran variedad de proyectos
educativos.

17
MANUAL RASPBERRY
PI 4

Modelos de Raspberry Pi
Versiones Pi Model B
Son las placas de tipo completo que incluyen puertos Ethernet y puertos USB.
Podemos encontrar las variantes B+, donde el «+» nos indica variaciones o
actualizaciones menores. Las versiones más modernas de estas placas agregan
conectividad WiFi y Bluetooth.

Ilustración 0-5 Raspberry Pi Model B

Versiones Pi Model A
Estas placas suelen ser un poco más compactas que las «Model B» y suelen tener
un formato cuadrado. Podemos decir que son versiones sencillas de las placas
Raspberry Pi, ya que tienen limitaciones en conectividad. Las «Model A» suelen
tener solo un puerto USB y carecen de puerto Ethernet, y son más económicas que
las «Model B». Las versiones más modernas de estas placas agregan conectividad
WiFi y Bluetooth.

18
MANUAL RASPBERRY
PI 4

Ilustración 0-6 Raspberry Pi Model A

Versiones Pi Zero
Este tipo de placas tienen un formato super reducido de formato rectangular y tienen
un consumo energético realmente reducido. Todos los modelos disponen de un
microUSB y un microHDMI. Salvo la primera Raspberry Pi Zero, las demás versiones
cuentan con conectividad WiFi y Bluetooth. Estas tienen precios super reducidos, por
debajo de los 20 euros.

Ilustración 0-7 Raspberry Pi Zero

Versiones Pi 400

19
MANUAL RASPBERRY
PI 4

Posiblemente la versión más particular que han lanzado de todas las variantes.
Tenemos una Raspberry Pi embebida en un teclado, lo cual es una solución muy
interesante si queremos tener un ordenador compacto. Dispone de un procesador
potente de 4 núcleos, 4GB de memoria RAM, conectividad WiFi + Bluetooth y dos
puertos USB 3.0, un puerto USB 2.0, dos microHDMI e incluso un puerto Gigabit
Ethernet. La Raspberry Pi que integra tiene un diseño único específico para ser
embebida dentro del teclado.

Ilustración 0-8 Raspberry Pi 400

Versiones Pi Pico
No es un ordenador compacto, es más bien un microcontrolador que se basa en el
procesador RP2040, desarrollado por la propia compañía. Está pensado para ser
usado sobre todo para proyectos del tipo DIY (Do It Yourself; en castellano, háztelo
tú mismo). Tiene un precio de 5 dólares y carece de cualquier tipo de puerto de
conexión y también de conectividad inalámbrica.

Ilustración 0-9 Raspberry Pi Pico

20
MANUAL RASPBERRY
PI 4

Este tipo de tarjetas están pensadas para ser integradas en proyectos de IoT o para
automatización. Se puede encontrar muchos módulos basados en este tipo de placas
para montaje sobre carriles DIN. La versión Compute Module 4 ofrece hasta 8GB de
RAM y 32GB de memoria eMMC y conectividad WiFi + Bluetooth, pensado sobre
todo para IoT y soluciones Cloud.
Una de las particulares de estas placas es que requieren de una placa especifica de
ampliación para poderlos programar. Cuando ya están programados, se puede
instalar y ya realizaran las tareas para las cuales han sido programados.
Hasta la fecha Raspberry Pi únicamente vendía placas y diferentes periféricos, pero
han ampliado su cartera de soluciones. La compañía ha desarrollado el procesador
RP2040, un procesador de bajo coste y alto rendimiento en un encapsulado
reducido.
Este procesador RP2040 es una solución potente y accesible a todo el mundo, por
un precio muy reducido. Ofrece hasta seis bancos independiente de RAM y un
conmutador de estructura de bus, que permite organizar fácilmente los núcleos y los
motores DMA para que funcionen en paralelo.
RP2040 es un procesador pensado para proyectos DIY y microcontroladores. Tiene
unas dimensiones de 7x7mm y que se basa en el proceso de 40nm de TSMC.
Ofrece un bajo consumo con una gran potencia y se integra por primera vez en la
Raspberry Pi Pico.

21
MANUAL RASPBERRY
PI 4

Ilustración 0-10 Microcontrolador RP2040 Raspberry

Especificaciones
 Procesador Arm Cortex-M0+ de doble núcleo, reloj flexible que funciona hasta
133 MHz
 SRAM en chip de 264 KB
 2× UART, 2× controladores SPI, 2× controladores I2C, 16× canales PWM
 1× controlador USB 1.1 y PHY, con soporte para host y dispositivo
 8× máquinas de estado de E / S programables (PIO) para soporte periférico
personalizado
 Potencia de entrada admitida: 1.8–5.5V DC
 Temperatura de funcionamiento: -20 ° C a + 85 ° C
 Programación de arrastrar y soltar usando almacenamiento masivo a través
de USB
 Modos de reposo y de reposo de bajo consumo
 Reloj en chip preciso
 Sensor de temperatura
 Bibliotecas aceleradas de enteros y de punto flotante en chip

22
MANUAL RASPBERRY
PI 4

CAPÍTULO II GENERALIDADES
DE LA EMPRESA

23
MANUAL RASPBERRY
PI 4

2.1 ANTECEDENTES HISTÓRICOS DE LA EMPRESA

Ilustración 0-11 Logo Solaris Digital

Empresa legalmente establecida 100% mexicana.


Solaris digital surge inicialmente con el nombre de digita capacitación electrónica y
en el año de 1995 se constituye como Solaris digital.
Nace en su momento como respuesta a la necesidad de capacitación y actualización
en el mercado nacional. Dirigida desde sus inicios a estudiantes de nivel medio
superior y superior, docentes, técnicos especializados, empresas, instituciones
educativas y público en general.

2.2 MISIÓN
Cumplir y satisfacer las exigencias de nuestros clientes a través de nuestra
Mechatronic Desing Center (Centro Mecatrónico de Diseño) ofrecemos servicios de
capacitación, desarrollo y comercialización.
Nuestra meta es llegar a personas que tengan interés en las áreas de electrónica,
mecatrónica, robótica, control, programación de sistemas y ramas afines, formando
así excelentes desarrolladores. Siempre innovando, desarrollando y aplicando
tecnología de vanguardia, contando con el respaldo del talento de nuestro equipo de
trabajo. Para así satisfacer las necesidades del mercado nacional e internacional y
así seguir cambiando la forma de ver al mundo.

2.3 VISIÓN
Nos vemos como uno de los grupos con presencia nacional e internacional más
importante y reconocido en el campo de la capacitación y desarrollo mecatrónico.
Apoyando siempre al desarrollo tecnológico del país.

24
MANUAL RASPBERRY
PI 4

2.4 UBICACIÓN

Ilustración 0-12 Croquis de ubicación

25
MANUAL RASPBERRY
PI 4

2.5 GIRO
Solaris digital empresa que trabaja un conjunto de diferentes cursos de electrónica a
personas con conocimiento previo o poco, al igual trabaja en la realización de
distintos proyectos en los cuales se aplican la Mecatrónica.

26
MANUAL RASPBERRY
PI 4

CAPÍTULO III RASPBERRY PI 4

27
MANUAL RASPBERRY
PI 4

3.1 Especificaciones técnicas.


Especificaciones

Procesador: Broadcom BCM2711, SoC de 64 bits Cortex-A72 (ARM v8) de cuatro


núcleos a 1,5 GHz
Memoria: SDRAM LPDDR4-3200 de 2GB, 4GB u 8GB (según el modelo)
Conectividad: 2.4 GHz y 5.0 GHz IEEE 802.11ac inalámbrica, Bluetooth 5.0, BLE,
Gigabit Ethernet, 2 puertos USB 3.0; 2 puertos USB 2.0.
GPIO: Cabecera GPIO estándar Raspberry Pi de 40 pines (totalmente compatible
con las placas anteriores)
Video y sonido: 2 × puertos micro-HDMI (hasta 4kp60 compatible); Puerto de
pantalla MIPI DSI de 2 carriles; Puerto de cámara MIPI CSI de 2 carriles; Puerto de
video compuesto y audio estéreo de 4 polos
Multimedia: H.265 (decodificación 4kp60), H264 (decodificación 1080p60,
codificación 1080p30); OpenGL ES 3.1, Vulkan 1.0
Tarjeta SD; Ranura para tarjeta micro-SD para cargar el sistema operativo y el
almacenamiento de datos
Potencia de entrada: 5 V CC a través del conector USB-C (mínimo 3 A *); 5 V CC a
través del encabezado GPIO (mínimo 3 A *); Alimentación a través de Ethernet (PoE)
habilitada (requiere un SOMBRERO PoE separado)
Temperatura de funcionamiento: 0 - 50 grados C ambiente
Se puede utilizar una fuente de alimentación de 2,5 A de buena calidad si los
periféricos USB descendentes consumen menos de 500 mA en total.

Especificaciones físicas.

ADVERTENCIAS
 Este producto solo debe conectarse a una fuente de alimentación externa de 5
V / 3 A CC o 5,1 V / 3 A CC mínimo. Cualquier fuente de alimentación externa
utilizada con la Raspberry Pi 4 Modelo B deberá cumplir con las regulaciones
y estándares aplicables en el país de uso previsto.
28
MANUAL RASPBERRY
PI 4

 Este producto debe operarse en un ambiente bien ventilado y, si se usa dentro


de un estuche, el estuche no debe cubrirse.
 Este producto debe colocarse sobre una superficie estable, plana y no
conductora en uso y no debe colocarse contactado por elementos
conductores.
 La conexión de dispositivos incompatibles a la conexión GPIO puede afectar
el cumplimiento y resultar en dañar la unidad e invalidar la garantía.
 Todos los periféricos utilizados con este producto deben cumplir con los
estándares relevantes para el país de uso. y estar marcados en consecuencia
para garantizar que se cumplan los requisitos de seguridad y rendimiento.
Estos artículos incluyen, entre otros, teclados, monitores y ratones cuando se
utilizan junto con la Raspberry Pi.
 Donde se conectan periféricos que no incluyen el cable o conector, el cable o
conector debe ofrecer un aislamiento y un funcionamiento adecuados para
que el rendimiento y la seguridad cumplan los requisitos.

Ilustración 0-13 Dibujo mecánico (dimensiones en milímetros)

29
MANUAL RASPBERRY
PI 4

LAS INSTRUCCIONES DE SEGURIDAD


Para evitar un mal funcionamiento o daños a este producto, tenga en cuenta lo
siguiente:
 No lo exponga al agua, la humedad ni lo coloque sobre una superficie
conductora mientras esté en funcionamiento.
 No lo exponga al calor de ninguna fuente; Raspberry Pi 4 Modelo B está
diseñado para un funcionamiento confiable a temperatura ambiente normal.
 Tenga cuidado durante la manipulación para evitar daños mecánicos o
eléctricos en la placa de circuito impreso y conectores.
 Evite manipular la placa de circuito impreso mientras está encendida y solo
manéjela por los bordes para minimizar el riesgo de daños por descarga
electrostática.

3.2 Diagramas esquemáticos.

Ilustración 0-14 Entrada de energía USB-C

30
MANUAL RASPBERRY
PI 4

Ilustración 0-15 MICRO HDMI 1

31
MANUAL RASPBERRY
PI 4

Ilustración 0-16 MICRO HDMI 0

Ilustración 0-17 Expansión GPIO

PINS ID SD e ID SC:
Estos pines están reservados para HAT ID EEPROM.
32
MANUAL RASPBERRY
PI 4

En el momento del arranque, esta interfaz 12C será interrogada para buscar una
EEPROM que identifique la placa adjunta y permita la configuración automática del
GPIOS (y opcionalmente, los controladores de Linux). NO USE estos pines para otra
cosa que no sea conectar una EEPROM 12C ID. Déjelo desconectado si no se
requiere ID EEPROM.

Ilustración 0-18 Display

Ilustración 0-19 Cámara

33
MANUAL RASPBERRY
PI 4

Ilustración 0-20 Gigabit ethernet

Ilustración 0-21 PoE Header

34
MANUAL RASPBERRY
PI 4

Ilustración 0-22 A/V JACK

Ilustración 0-23DG

35
MANUAL RASPBERRY
PI 4

Ilustración 0-24 Power On PWR Led y status ACT Led

Ilustración 0-25 Diagrama global


36
MANUAL RASPBERRY
PI 4

3.3 Guía rápida.


Configuración
La computadora Raspberry Pi, necesitará los siguientes accesorios:
 Un monitor de computadora o televisión. La mayoría debería funcionar como
pantalla para Raspberry Pi, pero para obtener los mejores resultados, se debe
utilizar una pantalla con entrada HDMI. También se necesitará un cable de
pantalla apropiado para conectar el monitor a la Raspberry Pi. Si la pantalla
utiliza una conexión HDMI y tiene altavoces integrados, puede ser utilizada
para emitir sonido.
 Un teclado y un mouse de computadora. Cualquier teclado y mouse USB
estándar funcionará con la Raspberry Pi. Los teclados y ratones inalámbricos
funcionarán si ya están emparejados.
 Una fuente de alimentación de buena calidad. Se recomienda la fuente de
alimentación oficial Raspberry Pi, que ha sido diseñada específicamente para
proporcionar de forma constante + 5,1 V a pesar de las rápidas fluctuaciones
en el consumo de corriente. Esas fluctuaciones en la demanda son algo que
ocurre mucho cuando se usan periféricos con la Raspberry Pi, y algo que
otros suministros, diseñados para proporcionar una corriente constante para
cargar teléfonos celulares, generalmente no resuelven tan bien. También tiene
un cable micro USB adjunto, lo que significa que no usa accidentalmente un
cable de mala calidad, algo que puede ser un problema. Para Raspberry Pi 4,
Model B, se debe usar la fuente de alimentación tipo C; para todos los demás
modelos se debe utilizar la fuente de alimentación micro USB.
Se necesitará una tarjeta SD; Se recomienda una tarjeta micro SD de 8 GB como
mínimo y utilizar Raspberry Pi Imager para instalar un sistema operativo en ella.
Elementos opcionales
Un cable de red (Ethernet) para conectar su Raspberry Pi a su red local e Internet.
Si no se está utilizando un monitor HDMI con altavoces, es posible que también se
necesite algún tipo de hardware de sonido. El audio se puede reproducir a través de

37
MANUAL RASPBERRY
PI 4

altavoces o auriculares conectándolos al conector AV (no disponible en Raspberry


Pi 400). Sin embargo, los altavoces deben tener su propia amplificación, ya que la
salida de la Raspberry Pi no es lo suficientemente potente como para controlarlos
directamente.
Instalación del sistema operativo
Raspberry Pi recomienda el uso de Raspberry Pi Imager para instalar un sistema
operativo en la tarjeta SD. Se necesitará otra computadora con un lector de tarjetas
SD para instalar la imagen, no olvide verificar los requisitos de la tarjeta SD.
IMPORTANTE
NOOBS, o New Out Of the Box Software para darle su nombre completo, era un
instalador basado en tarjetas SD para computadoras Raspberry Pi; ya no se
recomienda ni se apoya el uso de NOOBS. Utilizar Raspberry Pi Imager.
Raspberry Pi Imager
Raspberry Pi desarrollo una herramienta gráfica de escritura de tarjetas SD que
funciona en Mac OS, Ubuntu 18.04 y Windows llamada Raspberry Pi Imager; esta es
la opción más fácil para la mayoría de los usuarios, ya que descarga la imagen
automáticamente y la instala en la tarjeta SD.
Descargar la última versión de Raspberry Pi Imager e instalar. Si se desea utilizar
Raspberry Pi Imager desde una segunda Raspberry Pi, puede ser instalado desde
una terminal usando sudo apt install rpi-imager. Luego:
 Conectar un lector de tarjetas SD con la tarjeta SD adentro.
 Abrir Raspberry Pi Imager y elegir el sistema operativo requerido de la lista
presentada.
 Elegir la tarjeta SD en la que se desea escribir la imagen.
 Revisar sus selecciones y hacer clic en el Writebotón para comenzar a escribir
datos en la tarjeta SD.
Si se usa Raspberry Pi Imager en Windows 10 con el acceso controlado a la carpeta
habilitado, se deberá permitir explícitamente el permiso de Raspberry Pi Imager para
escribir la tarjeta SD. Si no se hace esto, el proceso de generación de imágenes
fallará con un error de "no se pudo escribir".

38
MANUAL RASPBERRY
PI 4

Ahora se inserta la tarjeta SD en la Raspberry Pi y se enciende. Para el sistema


operativo Raspberry Pi, se necesita iniciar sesión manualmente, el nombre de
usuario predeterminado es pi, con contraseña raspberry, y la distribución
predeterminada del teclado se establece en Reino Unido (Reino Unido) .
Se debe cambiar la contraseña predeterminada de inmediato para asegurarse de
que la Raspberry Pi sea segura.
Opciones avanzadas

Cuando este la Raspberry Pi Imager abierta, al presionar Ctrl-Shift-X se abrirá un


menú "Avanzado". Este menú permite realizar tareas como habilitar SSH o configurar
el nombre de host de su Raspberry Pi antes del primer arranque.

Ilustración 0-26 Generador de imágenes rpi

El menú de Opciones avanzadas es útil cuando desea configurar una Raspberry Pi


sin cabeza.
Descarga de una imagen
Si se está utilizando una herramienta diferente a Raspberry Pi Imager para escribir
en la tarjeta SD, la mayoría requiere que se descargue la imagen primero y luego se

39
MANUAL RASPBERRY
PI 4

use la herramienta para escribirla en la tarjeta. Las imágenes oficiales de los


sistemas operativos recomendados están disponibles para descargar desde la
página de descargas del sitio web de Raspberry Pi. Algunos proveedores externos
también ofrecen sistemas operativos alternativos para computadoras Raspberry Pi.
Es posible que se deba descomprimir el archivo descargado (.zip) para obtener el
archivo de imagen (.img) que necesita para escribir en la tarjeta.
El sistema operativo Raspberry Pi con imagen de escritorio contenida en el archivo
ZIP tiene más de 4GB de tamaño y usa el formato ZIP64. Para descomprimir el
archivo, se requiere una herramienta de descompresión que admita ZIP64. Las
siguientes herramientas zip son compatibles con ZIP64: 7-Zip para Windows, The
Unarchiver para macOS y descomprimir en Linux.
Instalación de imágenes en Chrome OS
Para escribir imágenes en una tarjeta SD y unidades USB con Chrome OS se utiliza
la Utilidad de recuperación oficial de Chromebook. Se puede usar para crear medios
de recuperación de Chromebook y también aceptará .ziparchivos que contengan
imágenes.
 Descargue la utilidad de recuperación de Chromebook.
 Descargue el archivo zip de Raspberry Pi OS.
 Inicie la utilidad de recuperación
 Haga clic en el ícono de Configuración de engranajes en la esquina superior
derecha, junto al ícono de cierre de la ventana.
 Seleccione la opción Usar imagen local.
 Elija el .ziparchivo que descargó.
 Inserte la tarjeta SD y haga clic en Continuar.
 Lea la advertencia y haga clic en el botón Crear ahora.
 Espere a que la barra de progreso se complete dos veces (para
desempaquetar y escribir). Esto puede tardar unos minutos. Una vez que se
complete el proceso, se mostrará una gran marca de verificación verde.
 Cierre el programa y expulse la tarjeta.

40
MANUAL RASPBERRY
PI 4

Instalación de imágenes en Linux


Raspberry Pi Imager suele ser la opción que la mayoría de los usuarios para escribir
imágenes en tarjetas SD, por lo que es un buen lugar para comenzar. Si se está
buscando opciones más avanzadas en Linux, se puede usar las herramientas de
línea de comando estándar siguientes.
El uso de la dd herramienta puede sobrescribir cualquier partición de su máquina. Si
especifica el dispositivo incorrecto al usarlo dd, puede eliminar su partición principal
de Linux. Por favor tenga cuidado.
Descubrir el punto de montaje de la tarjeta SD y desmontarlo
 Ejecute lsblk –p para ver qué dispositivos están conectados actualmente a la
máquina.
 Si la computadora tiene una ranura para tarjetas SD, inserte la tarjeta. De lo
contrario, inserte la tarjeta en un lector de tarjetas SD y luego conecte el lector
a la computadora.
 Corre de lsblk –p nuevo. El nuevo dispositivo que ha aparecido es la tarjeta
SD (por lo general, también puede saberlo por el tamaño de dispositivo que
aparece en la lista). El nombre del dispositivo seguirá el formato descrito en el
siguiente párrafo.
 La columna izquierda de los resultados del lsblk –p comando proporciona el
nombre del dispositivo de su tarjeta SD y los nombres de las particiones en
ella (generalmente solo una, pero puede haber varias si la tarjeta se usó
anteriormente). Aparecerá como algo como /dev/mmcblk0 o /dev/sdX (con
nombres de partición /dev/mmcblk0p1 o /dev/sdX1 respectivamente), donde X
es una letra minúscula que indica el dispositivo (por ejemplo /dev/sdb1). La
columna de la derecha muestra dónde se han montado las particiones (si no lo
han sido, estará en blanco).
 Si se han montado particiones en la tarjeta SD, desmonte todas con umount,
por ejemplo umount /dev/sdX1 (reemplácelo sdX1 con el nombre del
dispositivo de su tarjeta SD y cambie el número de cualquier otra partición).

41
MANUAL RASPBERRY
PI 4

Copiar la imagen a la tarjeta SD


En una ventana de terminal, escriba la imagen en la tarjeta con el siguiente
comando, asegurándose de reemplazar el if= argumento del archivo de entrada con
la ruta a el .imgarchivo y el /dev/sdX del archivo de salida of= con el nombre correcto
del dispositivo. Esto es muy importante, ya que perderá todos los datos del disco
duro si proporciona el nombre de dispositivo incorrecto. Asegúrese de que el nombre
del dispositivo sea el nombre de toda la tarjeta SD como se describe anteriormente,
no solo una partición. Por ejemplo: sdd no sdds1 o sddp1; mmcblk0 no mmcblk0p1.
sudo dd if=2021-05-07-raspios-buster-armhf.img of=/dev/sdX bs=4M
conv=fsync
Tenga en cuenta que el tamaño de bloque configurado en 4M funcionará la mayor
parte del tiempo. Si no es así, intente 1M, aunque esto llevará mucho más tiempo.

Copiar una imagen comprimida a la tarjeta SD


En Linux, es posible combinar el proceso de descomprimir y copiar SD en un solo
comando, lo que evita cualquier problema que pueda ocurrir cuando la imagen
descomprimida tiene más de 4 GB. Esto puede suceder en ciertos sistemas de
archivos que no admiten archivos de más de 4 GB (por ejemplo, FAT), aunque debe
tenerse en cuenta que la mayoría de las instalaciones de Linux no usan FAT y, por lo
tanto, no tienen esta limitación.
El siguiente comando descomprime el archivo zip (reemplace 2021-05-07-raspios-
buster-armhf.zip con el nombre de archivo zip apropiado) y canaliza la salida
directamente al comando dd. Esto a su vez lo copia en la tarjeta SD.
descomprimir -p 2021-05-07-raspios-buster-armhf.zip | sudo dd de = / dev / sdX
bs = 4M conv = fsync

Comprobación del progreso de la copia de la imagen


De forma predeterminada, el dd comando no proporciona ninguna información sobre
su progreso, por lo que puede parecer que se ha congelado. Puede llevar más
tiempo terminar de escribir en la tarjeta. Si el lector de tarjetas tiene un LED, es
posible que parpadee durante el proceso de escritura.
42
MANUAL RASPBERRY
PI 4

Para ver el progreso de la operación de copia, puede ejecutarse el comando dd con


la opción de estado. sudo dd if = 2021-05-07-raspios-buster-armhf.img of = / dev /
sdX bs = 4M conv = fsync status = progress
Si se está utilizando una versión anterior de dd, es posible que la opción de estado
no esté disponible. Es posible que pueda usar el dcfldd comando en su lugar, que le
dará un informe de progreso que muestra cuánto se ha escrito. Otro método es
enviar una señal USR1 a dd, que le permitirá imprimir información de estado.
Descubra el PID de dd utilizando pgrep -l dd o ps a | grep dd. Luego use kill -USR1
PID para enviar la señal USR1 a dd.

Opcional: comprobar si la imagen se escribió correctamente en la tarjeta SD


 Una vez que dd haya terminado de copiar, se puede verificar lo que se ha
escrito en la tarjeta SD dd volviendo de la tarjeta a otra imagen en su disco
duro, truncando la nueva imagen al mismo tamaño que el original y luego
ejecutando diff (o md5sum) en esas dos imágenes.
 Si la tarjeta SD es mucho más grande que la imagen, no se querrá volver a
leer toda la tarjeta SD, ya que estará casi vacía. Por lo tanto, debe verificar la
cantidad de bloques que se escribieron en la tarjeta mediante el dd comando.
Al final de su ejecución, dd habrá mostrado el número de bloques escritos de
la siguiente manera:
xxx + 0 registros en
aaa + 0 grabaciones
yyyyyyyyyy bytes (yyy kB, yyy KiB) copiados, 0,00144744 s, 283 MB / s
Necesita el número xxx, que es el recuento de bloques. Se puede ignorar los
yyy números.
 Copie el contenido de la tarjeta SD a una imagen en su disco duro usando dd
nuevamente: sudo dd if=/dev/sdX of=from-sd-card.img bs=4M count=xxx
If es el archivo de entrada (es decir, el dispositivo de la tarjeta SD), of es el
archivo de salida en el que se copiará el contenido de la tarjeta SD (llamado

43
MANUAL RASPBERRY
PI 4

from-sd-card.imgen este ejemplo) y xxx es el número de bloques escritos por


la dd operación original .
 En caso de que la imagen de la tarjeta SD sea aún más grande que la imagen
original, trunque la nueva imagen al tamaño de la imagen original usando el
siguiente comando (reemplace el reference argumento del archivo de entrada
con el nombre de la imagen original): truncate --reference 2021-05-07-
raspios-buster-armhf.img from-sd-card.img
 Compare las dos imágenes: diff debe informar que los archivos son idénticos.
diff -s from-sd-card.img 2021-05-07-raspios-buster-armhf.img
 Corre sync. Esto asegurará que la caché de escritura se vacíe y que sea
seguro desmontar su tarjeta SD.
 Retire la tarjeta SD del lector de tarjetas.
Instalación de imágenes en Mac OS
Raspberry Pi Imager es la opción recomendada para que la mayoría de los usuarios
escriban imágenes en tarjetas SD. Sin embargo, si no desea utilizar Imager, puede
configurarlo para copiar un sistema operativo a la tarjeta desde la línea de
comandos.
Encontrar la tarjeta SD
Insertar la tarjeta SD en la ranura o conecte el lector de tarjetas SD con la tarjeta SD
adentro y escriba diskutil list en la línea de comando. Debería ver algo como esto,

Ilustración 0-27 Código instalación en Mac OS

44
MANUAL RASPBERRY
PI 4

Aquí la tarjeta SD es, /dev/disk2sin embargo, su disco y la lista de particiones


pueden variar.

Copiar la imagen
ADVERTENCIA: El uso de la dd herramienta de línea de comandos puede
sobrescribir el sistema operativo de Mac si especifica el dispositivo de disco
incorrecto. Si no se está seguro de qué hacer, se recomienda que utilice la
herramienta Raspberry Pi Imager.
Antes de copiar la imagen, debe desmontar la tarjeta SD.
diskutil unmountDisk /dev/diskN
Luego puede copiar la imagen, sudo dd bs=1m if=path_of_your_image.img
of=/dev/rdiskN; sync reemplazando N con el número de disco.
Se debe usar rdisk (que significa 'disco sin formato') en lugar de disk, esto acelera la
copia.
Esto puede tardar unos minutos, dependiendo del tamaño del archivo de imagen.
Puede comprobar el progreso presionando Ctrl+T. Una vez dd finalizado el comando,
puede expulsar la tarjeta: sudo diskutil eject /dev/rdiskN
Solución de problemas
 Si el comando informa dd: /dev/rdiskN: Resource busy, primero se debe
desmontar el volumen sudo diskutil unmountDisk /dev/diskN.
 Si el comando informa dd: bs: illegal numeric value, cambie el tamaño del
bloque bs=1ma bs=1M.
 Si el comando informa dd: /dev/rdiskN: Operation not permitted, vaya a
System Preferences-> Security & Privacy-> Privacy-> Files and Folders-> Give
Removable Volumes access to Terminal.
 Si el comando informa dd: /dev/rdiskN: Permission denied, la tabla de
particiones de la tarjeta SD está protegida contra la sobrescritura de Mac OS.

Borre la tabla de particiones de la tarjeta SD usando este comando:


sudo diskutil partitionDisk /dev/diskN 1 MBR "Free Space" "%noformat%" 100%

45
MANUAL RASPBERRY
PI 4

Ese comando también establecerá los permisos en el dispositivo para permitir la


escritura.

Instalación de imágenes en Windows


Raspberry Pi Imager es una opción recomendada para que la mayoría de los
usuarios escriban imágenes en tarjetas SD, por lo que es un buen lugar para
comenzar. Si se está buscando una alternativa en Windows, puede usarse
balenaEtcher, Win32DiskImager o imgFlasher.
balenaEtcher
 Descargue el instalador de Windows de balena.io
 Ejecute balenaEtcher y seleccione el archivo de imagen del sistema operativo
Raspberry Pi descomprimido
 Seleccione la unidad de la tarjeta SD
 Finalmente, haga clic en Grabar para escribir la imagen del sistema operativo
Raspberry Pi en la tarjeta SD
 Vera una barra de progreso. Una vez completada, la utilidad desmontará
automáticamente la tarjeta SD para que sea seguro quitarla de su
computadora.
Win32DiskImager
 Inserte la tarjeta SD en el lector de tarjetas SD. Puede usar la ranura para
tarjeta SD si tiene una, o un adaptador SD en un puerto USB. Tenga en
cuenta la letra de unidad asignada a la tarjeta SD. Puede ver la letra de la
unidad en la columna de la izquierda del Explorador de Windows, por ejemplo,
G:
 Descargue la utilidad Win32DiskImager de la página del proyecto de
Sourceforge como un archivo de instalación y ejecútela para instalar el
software.
 Ejecute la Win32DiskImagerutilidad desde el escritorio o menú.
 Seleccione el archivo de imagen que se extrajo anteriormente.

46
MANUAL RASPBERRY
PI 4

 En el cuadro del dispositivo, seleccione la letra de la unidad de la tarjeta SD.


Tenga cuidado de seleccionar la unidad correcta: si se elige la unidad
incorrecta, podría destruir los datos en el disco duro de su computadora. Si
está usando una ranura para tarjeta SD en su computadora y no puede ver la
unidad en la ventana Win32DiskImager, intente usar un adaptador SD externo.
 Haga clic en 'Escribir' y espere a que se complete la escritura.
 Salga de la impresora de imágenes y expulse la tarjeta SD.
ImgFlasher rápido
 Descargue la versión portátil de Windows desde upswift.io
 Ejecute imgFlasher y elija una imagen o un archivo zip
 Elija tarjeta SD o unidad USB
 Haga clic en 'Flash'
 Espere hasta que se complete el flash.
Tarjeta SD para Raspberry Pi
Las computadoras Raspberry Pi usan una tarjeta micro SD, excepto en los primeros
modelos que usan una tarjeta SD de tamaño completo.
ADVERTENCIA: Debido a una limitación de hardware en Raspberry Pi Zero, 1 y 2, la
partición de inicio en la tarjeta SD debe ser de 256 GB o menos, de lo contrario, el
dispositivo no se iniciará. Los modelos posteriores de Raspberry Pi 2, con un SoC
BCM2837, junto con Raspberry Pi 3, 4, Zero 2 y Raspberry Pi 400 no tienen esta
limitación. Esto no afecta al sistema operativo Raspberry Pi, que siempre usa una
pequeña partición de arranque.
Capacidad recomendada
Recomendamos utilizar una tarjeta SD de 8 GB o más de capacidad con el sistema
operativo Raspberry Pi. Si está utilizando la versión lite de Raspberry Pi OS, puede
utilizar una tarjeta de 4 GB. Otros sistemas operativos tienen requisitos diferentes:
por ejemplo, LibreELEC puede ejecutarse desde una tarjeta más pequeña. Consulte
con el proveedor del sistema operativo para averiguar qué capacidad de tarjeta
recomienda.

47
MANUAL RASPBERRY
PI 4

Solución de problemas
Se recomienda comprar una tarjeta Pi SD de uno de nuestros revendedores oficiales.
Las tarjetas SD oficiales son tarjetas micro SD y se suministran con un adaptador
que permite su uso en una ranura para tarjetas SD de tamaño completo.
Si tiene problemas con su tarjeta SD:
 Asegúrese de estar utilizando una tarjeta SD genuina. La mejor manera de
evitar las tarjetas SD falsas es comprar siempre a un proveedor de confianza.
 Asegúrese de estar utilizando una fuente de alimentación de buena calidad: le
recomendamos que utilice una fuente de alimentación oficial Raspberry Pi.
 El cable de la fuente de alimentación a la Raspberry Pi también puede causar
problemas. Por lo general, esto se debe a la resistencia de los cables del
cable de alimentación USB; Para ahorrar dinero, los cables USB tienen la
menor cantidad de cobre posible, lo que provoca una caída de voltaje en el
cable.
 Asegúrese de apagar el sistema operativo correctamente antes de apagar la
Raspberry Pi.
Conexión de una pantalla
A menos que esté configurada la Raspberry Pi para que funcione sin cabeza, para un
uso regular, querrá conectar la Raspberry Pi a una pantalla: ya sea un monitor de
computadora o un televisor.
Conexión mediante HDMI
La Raspberry Pi tiene un puerto HDMI que puede conectar directamente a un monitor
o TV con un cable HDMI. Ésta es la solución más sencilla; algunos monitores y
televisores modernos tienen puertos HDMI, otros no, pero hay otras opciones.

48
MANUAL RASPBERRY
PI 4

Ilustración 0-28 Cable HDMI

La Raspberry Pi 4 tiene dos conectores micro HDMI, que requieren un cable micro
HDMI de buena calidad, especialmente cuando se utilizan monitores o televisores
4K.

Ilustración 0-29 HDMI_micro

Si se está usando Raspberry Pi con un monitor con parlantes incorporados y lo está


conectando con un cable HDMI, también puede usarlo para emitir sonido.

49
MANUAL RASPBERRY
PI 4

Conexión mediante DVI


Para monitores con un puerto DVI, puede usar un cable HDMI a DVI o un cable
HDMI con un adaptador DVI.

Ilustración 0-30 Cable DVI-HDMI

A diferencia de HDMI, el estándar DVI no admite audio


Conexión mediante VGA
Solo para monitores con VGA, puede usar un adaptador HDMI a VGA. Tenga en
cuenta que VGA no admite audio.

Ilustración 0-31 Adaptador VGA-HDMI

50
MANUAL RASPBERRY
PI 4

Usando el puerto compuesto


La mayoría de los modelos de Raspberry Pi tienen un puerto de salida compuesto
para conectarse a dispositivos analógicos, pero el tipo de conector varía según el
modelo. La Raspberry Pi original usaba un conector RCA, y un cable de video
compuesto RCA estándar funcionará. Otros modelos (Raspberry Pi B + y posteriores)
combinan la salida de audio y la salida compuesta en el mismo conector de 3,5 mm.
Esto requiere un tipo particular de cable, con audio en la punta, audio en el anillo 1,
tierra en el anillo 2 y video en la funda. Esto es lo mismo que los clientes potenciales
utilizados en Zune y en dispositivos Apple.

Ilustración 0-32 Cable RCA

3.4 Sistema operativo Raspberry Pi.


Raspberry Pi OS es un sistema operativo gratuito basado en Debian, optimizado
para el hardware Raspberry Pi, y es el sistema operativo recomendado para el uso
normal en una Raspberry Pi. El sistema operativo viene con más de 35,000
paquetes: software precompilado incluido en un formato agradable para una fácil
instalación en su Raspberry Pi.
El sistema operativo Raspberry Pi está en desarrollo activo, con énfasis en mejorar la
estabilidad y el rendimiento de tantos paquetes Debian como sea posible en
Raspberry Pi.
Actualización y actualización del sistema operativo Raspberry Pi
Es importante mantener su Raspberry Pi actualizada. La primera y probablemente la
más importante razón es la seguridad. Un dispositivo que ejecuta Raspberry Pi OS
contiene millones de líneas de código en las que puede confiar. Con el tiempo, estos
51
MANUAL RASPBERRY
PI 4

millones de líneas de código expondrán vulnerabilidades conocidas, que están


documentadas en bases de datos disponibles públicamente, lo que significa que son
fáciles de explotar. La única forma de mitigar estas vulnerabilidades como usuario del
sistema operativo Raspberry Pi es mantener su software actualizado, ya que los
repositorios ascendentes rastrean de cerca los CVE e intentan mitigarlos
rápidamente.
La segunda razón, relacionada con la primera, es que el software que está
ejecutando en su dispositivo ciertamente contiene errores. Algunos errores son CVE,
pero los errores también podrían afectar la funcionalidad deseada sin estar
relacionados con la seguridad. Al mantener su software actualizado, está reduciendo
las posibilidades de encontrar estos errores.
Usando APT
La forma más sencilla de gestionar la instalación, actualización y eliminación de
software es utilizando APT (Advanced Packaging Tool) de Debian. Para actualizar el
software en el sistema operativo Raspberry Pi, puede usar la apt herramienta desde
una ventana de Terminal.
Mantener su sistema operativo actualizado
APT mantiene una lista de fuentes de software en su Pi en un archivo en
/etc/apt/sources.list. Antes de instalar el software, debe actualizar su lista de
paquetes con apt update. Continúe y abra una ventana de Terminal y escriba:
sudo apt update
A continuación, actualice todos sus paquetes instalados a sus últimas versiones con
el siguiente comando:
sudo apt full-upgrade
Tenga en cuenta que full-upgrade se usa con preferencia a un simple upgrade, ya
que también recoge cualquier cambio de dependencia que pueda haberse realizado.
En términos generales, hacer esto con regularidad mantendrá su instalación
actualizada para la versión principal del sistema operativo Raspberry Pi que esté
utilizando (por ejemplo, Stretch). No se actualizará de una versión principal a otra,
por ejemplo, Stretch to Buster.

52
MANUAL RASPBERRY
PI 4

Sin embargo, se realizan cambios ocasionales en la imagen del sistema operativo


Raspberry Pi de la Fundación que requieren intervención manual, por ejemplo, un
paquete recién introducido. Estos no se instalan con una actualización, ya que este
comando solo actualiza los paquetes que ya tiene instalados.
El kernel y el firmware se instalan como un paquete Debian, por lo que también
recibirán actualizaciones cuando se utilice el procedimiento anterior. Estos paquetes
se actualizan con poca frecuencia y después de pruebas exhaustivas.
Quedarse sin espacio
Cuando se ejecuta sudo apt full-upgrade, mostrará cuántos datos se descargarán y
cuánto espacio ocupará en la tarjeta SD. Vale la pena verificar df –h que tiene
suficiente espacio libre en el disco, ya que desafortunadamente apt no lo hará por
usted. También tenga en cuenta que los archivos de paquetes descargados (.deb
archivos) se guardan en formato /var/cache/apt/archives. Puede eliminarlos para
liberar espacio con sudo apt clean (sudo apt-get clean en versiones anteriores de
apt).
Actualización desde versiones del sistema operativo
ADVERTENCIA
Es posible actualizar una imagen existente, pero no se garantiza que funcione en
todas las circunstancias y no se recomienda. Si desea intentar actualizar la versión
de su sistema operativo, primero haga una copia de seguridad; no se acepta ninguna
responsabilidad por la pérdida de datos debido a una actualización fallida.

La última versión del sistema operativo Raspberry Pi se basa en Debian Buster. La


versión anterior se basó en Stretch. Para actualizar, primero modifique los archivos
/etc/apt/sources.list y /etc/apt/sources.list.d/raspi.list. En ambos archivos, cambie
cada aparición de la palabra stretch a buster. (Ambos archivos requerirán sudo para
editar).
Luego abra una ventana de terminal y ejecute:
sudo apt update
sudo apt -y dist-upgrade

53
MANUAL RASPBERRY
PI 4

Responda "sí" a las indicaciones. También puede haber un punto en el que la


instalación se detiene mientras se muestra una página de información en la pantalla;
mantenga presionada la spacetecla para desplazarse por todo esto y luego presione
q para continuar.
Finalmente, si no está usando PulseAudio para otra cosa que no sea audio
Bluetooth, elimínelo de la imagen ingresando:
sudo apt -y purge "pulseaudio*"
Si se cambia a un nuevo modelo de Raspberry Pi (por ejemplo, el Pi 3B +), es
posible que también deba actualizar el kernel y el firmware siguiendo las
instrucciones anteriores.
Buscando software
Puede buscar en los archivos un paquete con una palabra clave determinada con
apt-cache search:
apt-cache search locomotive
sl - Correct you if you type `sl' by mistake
Puede ver más información sobre un paquete antes de instalarlo con apt-cache
show:
apt-cache show sl
Package: sl
Version: 3.03-17
Architecture: armhf
Maintainer: Hiroyuki Yamamoto <yama1066@gmail.com>
Installed-Size: 114
Depends: libc6 (>= 2.4), libncurses5 (>= 5.5-5~), libtinfo5
Homepage: http://www.tkl.iis.u-tokyo.ac.jp/~toyoda/index_e.html
Priority: optional
Section: games
Filename: pool/main/s/sl/sl_3.03-17_armhf.deb
Size: 26246
SHA256: 42dea9d7c618af8fe9f3c810b3d551102832bf217a5bcdba310f119f62117dfb

54
MANUAL RASPBERRY
PI 4

SHA1: b08039acccecd721fc3e6faf264fe59e56118e74
MD5sum: 450b21cc998dc9026313f72b4bd9807b
Description: Correct you if you type `sl' by mistake
Sl is a program that can display animations aimed to correct you
if you type 'sl' by mistake.
SL stands for Steam Locomotive.
Instalación de un paquete con APT
sudo apt install tree
Escribir este comando debería informar al usuario cuánto espacio en disco ocupará
el paquete y solicitar la confirmación de la instalación del paquete. Ingresar Y (o
simplemente presionar Enter, ya que sí es la acción predeterminada) permitirá que
ocurra la instalación. Esto se puede omitir agregando la –y bandera al comando:
sudo apt install tree -y
La instalación de este paquete pone a tree disposición del usuario.
Desinstalar un paquete con APT
Puede desinstalar un paquete con apt remove:
sudo apt remove tree
Se solicita al usuario que confirme la eliminación. Nuevamente, la –y bandera se
confirmará automáticamente.
También puede optar por eliminar por completo el paquete y sus archivos de
configuración asociados con apt purge:
sudo apt purge tree

Utilizando rpi-update
rpi-update es una aplicación de línea de comandos que actualizará el kernel del
sistema operativo Raspberry Pi y el firmware VideoCore a las últimas versiones
preliminares.
ADVERTENCIA
No se garantiza que funcionen las versiones preliminares del software. No debe
usarlo rpi-updateen ningún sistema a menos que lo recomiende un ingeniero de

55
MANUAL RASPBERRY
PI 4

Raspberry Pi. Puede dejar su sistema poco confiable o incluso completamente roto.
No debe usarse como parte de ningún proceso de actualización regular.
El rpi-update script lo proporciona un tercero, "Hexxeh", y también es compatible con
los ingenieros de Raspberry Pi. La fuente del script se puede encontrar en GitHub en
https://github.com/Hexxeh/rpi-update
Que hace
rpi-update descargará la última versión preliminar del kernel de Linux, sus módulos
correspondientes, los archivos del árbol de dispositivos, junto con las últimas
versiones del firmware VideoCore. Luego instalará estos archivos en ubicaciones
relevantes en la tarjeta SD, sobrescribiendo las versiones anteriores.
Todos los datos de origen utilizados por rpi-update provienen del repositorio de
GitHub https://github.com/Hexxeh/rpi-firmware . Este repositorio simplemente
contiene un subconjunto de los datos del repositorio de firmware oficial, ya que no se
requieren todos los datos de ese repositorio.
Corriendo rpi-update
Si está seguro de que necesita usarlo rpi-update, es aconsejable que primero haga
una copia de seguridad de su sistema actual, ya que la ejecución rpi-update podría
provocar que el sistema no se inicie.
rpi-update debe ejecutarse como root. Una vez que se complete la actualización,
deberá reiniciar.
sudo rpi-update
sudo reiniciar
Tiene una serie de opciones, que están documentadas en el repositorio de Hexxeh
GitHub en https://github.com/Hexxeh/rpi-update

Cómo volver a la seguridad


Si ha hecho un rpi-update y las cosas no funcionan como desea, si la Raspberry Pi
aún es de arranque, puede volver a la versión estable usando:
sudo apt-get update

56
MANUAL RASPBERRY
PI 4

sudo apt install --reinstall libraspberrypi0 libraspberrypi- {bin, dev, doc} raspberrypi-
bootloader raspberrypi-kernel
Deberá reiniciar la Raspberry Pi para que estos cambios surtan efecto.
Reproducción de audio y video
La forma más sencilla de reproducir audio y video en Raspberry Pi es utilizar la
aplicación OMXPlayer instalada.
Esto está acelerado por hardware y puede reproducir muchos formatos de archivo de
audio y video populares. OMXPlayer utiliza la omx interfaz de aceleración de
hardware (API) OpenMAX ( ), que es la API de medios oficialmente admitida en
Raspberry Pi. OMXPlayer fue desarrollado por Edgar Hucek del Proyecto Kodi.
La aplicación OMXPlayer
La línea de comando más simple es omxplayer <name of media file>. El archivo
multimedia puede ser de audio, video o ambos. Para los ejemplos a continuación,
usamos un archivo de video H264 que se incluye con la instalación estándar del
sistema operativo Raspberry Pi.
omxplayer /opt/vc/src/hello_pi/hello_video/test.h264
Por defecto, el audio se envía al puerto analógico. Si está utilizando un dispositivo de
visualización equipado con HDMI con altavoces, debe indicarle a omxplayer que
envíe la señal de audio a través del enlace HDMI.
omxplayer --adev hdmi /opt/vc/src/hello_pi/hello_video/test.h264
Al mostrar video, toda la pantalla se utilizará como salida. Puede especificar en qué
parte de la pantalla desea que aparezca el video usando la opción de ventana.
omxplayer --win 0,0,640,480 /opt/vc/src/hello_pi/hello_video/test.h264
También puede especificar qué parte del video desea que se muestre: esto se
denomina ventana de recorte. Esta parte del video se ampliará para que coincida con
la pantalla, a menos que también use la opción de ventana.
omxplayer --crop 100,100,300,300 /opt/vc/src/hello_pi/hello_video/test.h264
Si está usando la pantalla táctil de Raspberry Pi Foundation y desea usarla para la
salida de video, use la opción de pantalla para especificar qué pantalla usar. n es 5
para HDMI, 4 para la pantalla táctil. Con la Raspberry Pi 4 tienes dos opciones para
salida HDMI. n es 2 para HDMI0 y 7 para HDMI1.
57
MANUAL RASPBERRY
PI 4

omxplayer --display n /opt/vc/src/hello_pi/hello_video/test.h264


Cómo reproducir audio
Para reproducir un archivo MP3, navegue hasta la ubicación del .mp3 archivo en el
terminal usando cd y luego escriba el siguiente comando:
omxplayer example.mp3
Esto reproducirá el archivo de audio a example.mp3 través de los altavoces
integrados de su monitor o sus auriculares, conectados a través de la toma de
auriculares.
Si necesita un archivo de ejemplo, puede descargar uno desde aquí usando el
siguiente comando:
wget__https://raw.githubusercontent.com/raspberrypilearning/burping-jelly-baby/
master/data/la.mp3 -O example.mp3 --no-check-certificate
Si no puede oír nada, asegúrese de que sus auriculares o altavoces estén
conectados correctamente. Tenga en cuenta que omxplayer no usa ALSA y, por lo
tanto, ignora la configuración de audio establecida por raspi-config o amixer.
Si falla la detección automática de omxplayer del dispositivo de salida de audio
correcto, puede forzar la salida a través de HDMI con:
omxplayer -o hdmi example.mp3
Alternativamente, puede forzar la salida a través de la toma de auriculares con:

omxplayer -o local example.mp3


Incluso puede forzar la salida a través de la toma de auriculares y HDMI con:

omxplayer -o both example.mp3


Cómo reproducir el video
Para reproducir un video, navegue hasta la ubicación de su archivo de video en la
terminal usando cd, luego escriba el siguiente comando:
omxplayer example.mp4
Esto se reproducirá example.mp4 en pantalla completa. Presiona Ctrl + C para salir.
En el Pi 4, se ha eliminado el soporte de hardware para los códecs MPEG2 y VC-1,
por lo que recomendamos el uso de la aplicación VLC, que admite estos formatos en

58
MANUAL RASPBERRY
PI 4

software. Además, VLC tiene soporte de hardware para H264 y el nuevo códec
HEVC.
Un video de ejemplo
Una muestra de video de la película animada Big Buck Bunny está disponible en su
Raspberry Pi. Para jugar, ingrese el siguiente comando en una ventana de terminal:
omxplayer /opt/vc/src/hello_pi/hello_video/test.h264
En un Pi 4, use el siguiente comando para archivos H264:
omxplayer /opt/vc/src/hello_pi/hello_video/test.h264
o para H264, VC1 o MPEG2
vlc /opt/vc/src/hello_pi/hello_video/test.h264
Al usar VLC, puede mejorar el rendimiento de reproducción encapsulando la
transmisión H264 sin procesar, por ejemplo, desde el módulo de cámara Raspberry
Pi. Esto se hace fácilmente usando ffmpeg. La reproducción también se mejora si
VLC se ejecuta en pantalla completa; seleccione pantalla completa en la interfaz de
usuario o puede agregar las –fullscreen opciones a la vlc línea de comandos.
Este comando de ejemplo se convierte video.h264 en un contenedor video.mp4 a 30
fps:
ffmpeg -r 30 -i video.h264 -c:v copy video.mp4
Opciones durante la reproducción
Hay varias opciones disponibles durante la reproducción, que se activan presionando
la tecla correspondiente. No todas las opciones estarán disponibles en todos los
archivos. La lista de combinaciones de teclas se puede mostrar mediante omxplayer
--keys:
1 disminución de velocidad
2 aumentar la velocidad
<rebobinar
> avance rápido
z mostrar información
j flujo de audio anterior
k siguiente flujo de audio
i capítulo anterior
59
MANUAL RASPBERRY
PI 4

o próximo capítulo
n flujo de subtítulos anterior
m siguiente flujo de subtítulos
s alternar subtítulos
w mostrar subtítulos
x ocultar subtítulos
d reducir el retardo de los subtítulos (- 250 ms)
f aumentar el retardo de los subtítulos (+ 250 ms)
q salir de omxplayer
p / espacio pausa / reanudar
- disminuir el volumen
+ / = aumentar el volumen
búsqueda de flecha izquierda -30 segundos
flecha derecha buscar +30 segundos
buscar flecha abajo -600 segundos
buscar flecha arriba +600 segundos
Jugando en segundo plano
omxplayer se cerrará inmediatamente si se ejecuta en segundo plano sin tty (entrada
del usuario), por lo que para ejecutar correctamente, debe indicar que omxplayer no
se requiera ninguna entrada del usuario mediante la --no-keys opción.
omxplayer --no-keys example.mp3 &
Agregar & al final del comando ejecuta el trabajo en segundo plano. Luego puede
verificar el estado de este trabajo en segundo plano usando el Jobs comando. De
forma predeterminada, el trabajo se completará cuando omxplayer termine de
reproducirse, pero si es necesario, puede detenerlo en cualquier momento mediante
el kill comando.
$ jobs
[1]- Running omxplayer --no-keys example.mp3 &
$ kill %1
$
[1]- Terminated omxplayer --no-keys example.mp3 &
60
MANUAL RASPBERRY
PI 4

Usando una cámara web USB


En lugar de usar el módulo de cámara Raspberry Pi , puede usar una cámara web
USB estándar para tomar fotografías y videos en su Raspberry Pi.
NOTA
La calidad y la capacidad de configuración del módulo de la cámara son muy
superiores a las de una cámara web USB estándar.
Primero, instale el fswebcam paquete:
sudo apt install fswebcam
Si no está utilizando la pi cuenta de usuario predeterminada, debe agregar su
nombre de usuario al video grupo; de lo contrario, verá errores de "permiso
denegado".
sudo usermod -a -G video <username>
Para verificar que el usuario se haya agregado al grupo correctamente, use el groups
comando.
Uso básico
Ingrese el comando fswebcam seguido de un nombre de archivo y se tomará una
foto con la cámara web y se guardará con el nombre de archivo especificado:
fswebcam image.jpg
Este comando mostrará la siguiente información:
--- Abriendo / dev / video0 ...
Intentando el módulo fuente v4l2 ...
/ dev / video0 abierto.
No se especificó ninguna entrada, utilizando la primera.
Ajustando la resolución de 384x288 a 352x288.
--- Capturando fotograma ...
Datos JPEG corruptos: 2 bytes extraños antes del marcador 0xd4
Fotograma capturado en 0.00 segundos.
--- Procesando la imagen capturada ...
Escribiendo una imagen JPEG en 'image.jpg'.

61
MANUAL RASPBERRY
PI 4

Ilustración 0-33 imagen de la cámara

NOTA
La pequeña resolución predeterminada utilizada y la presencia de un banner que
muestra la marca de tiempo.
La cámara web utilizada en este ejemplo tiene una resolución de, 1280 x 720 por lo
que para especificar la resolución a la que quiero que se tome la imagen, use la –r
bandera:
fswebcam -r 1280x720 image2.jpg
Este comando mostrará la siguiente información:
--- Abriendo / dev / video0 ...
Intentando el módulo fuente v4l2 ...
/ dev / video0 abierto.
No se especificó ninguna entrada, utilizando la primera.
--- Capturando fotograma ...
Datos JPEG corruptos: 1 bytes extraños antes del marcador 0xd5
Fotograma capturado en 0.00 segundos.
--- Procesando la imagen capturada ...
Escribiendo una imagen JPEG en 'image2.jpg'.

62
MANUAL RASPBERRY
PI 4

Ilustración 0-34 imagen de la cámara

La imagen ahora se toma con la resolución completa de la cámara web, con el


banner presente.
Retirar la pancarta
Ahora agregue la --no-banner bandera:
fswebcam -r 1280x720 --no-banner image3.jpg
que muestra la siguiente información:
--- Abriendo / dev / video0 ...
Intentando el módulo fuente v4l2 ...
/ dev / video0 abierto.
No se especificó ninguna entrada, utilizando la primera.
--- Capturando fotograma ...
Datos JPEG corruptos: 2 bytes extraños antes del marcador 0xd6
Fotograma capturado en 0.00 segundos.
--- Procesando la imagen capturada ...
Deshabilitar banner.

63
MANUAL RASPBERRY
PI 4

Escribiendo una imagen JPEG en 'image3.jpg'.

Ilustración 0-35 imagen de la cámara

Ahora la imagen se toma a resolución completa sin banner.


Automatización de la captura de imágenes
Puede escribir un script Bash que tome una foto con la cámara web. El siguiente
script guarda las imágenes en el /home/pi/webcam directorio, así que cree la
webcam subdirectorio primero con:
mkdir webcam
Para crear un script, abra el editor de su elección y escriba el siguiente código de
ejemplo:
#!/bin/bash

DATE=$(date +"%Y-%m-%d_%H%M")

fswebcam -r 1280x720 --no-banner /home/pi/webcam/$DATE.jpg


Este script tomará una foto y nombrará el archivo con una marca de tiempo. Digamos
que lo guardamos como webcam.sh, primero haríamos el archivo ejecutable:
64
MANUAL RASPBERRY
PI 4

chmod +x webcam.sh
Entonces corre con:
./webcam.sh
Lo que ejecutaría los comandos en el archivo y daría la salida habitual:
--- Abriendo / dev / video0 ...
Intentando el módulo fuente v4l2 ...
/ dev / video0 abierto.
No se especificó ninguna entrada, utilizando la primera.
--- Capturando fotograma ...
Datos JPEG corruptos: 2 bytes extraños antes del marcador 0xd6
Fotograma capturado en 0.00 segundos.
--- Procesando la imagen capturada ...
Deshabilitar banner.
Escribiendo una imagen JPEG en '/home/pi/webcam/2013-06-07_2338.jpg'.
Capturas de lapso de tiempo
Puede usar cron para programar la toma de una foto en un intervalo determinado,
como cada minuto para capturar un lapso de tiempo.
Primero abra la tabla cron para editar:
crontab -e
Esto le preguntará qué editor le gustaría usar o lo abrirá en su editor predeterminado.
Una vez que tenga el archivo abierto en un editor, agregue la siguiente línea para
programar la toma de una foto cada minuto (refiriéndose al script Bash de arriba):
* * * * * /home/pi/webcam.sh 2>&1
Guarde y salga y debería ver el mensaje:
crontab: installing new crontab
Asegúrese de que su secuencia de comandos no guarde todas las fotografías
tomadas con el mismo nombre de archivo. Esto sobrescribirá la imagen cada vez.
Utilidades útiles
Hay varias líneas de comando útiles

65
MANUAL RASPBERRY
PI 4

servicio de tv
tvservice es una aplicación de línea de comandos que se utiliza para obtener y
configurar información sobre la pantalla, dirigida principalmente a video y audio
HDMI.

Al escribir tvservice por sí solo, se mostrará una lista de opciones de línea de


comandos disponibles.
 -p, --preferido
Encienda la salida HDMI con la configuración preferida.
 -o, --apagado
Apaga la salida de la pantalla.
NOTA

Apagar la salida usando este comando también destruirá cualquier capa de


framebuffers / dispmanx asociada con la pantalla. Estos NO se restablecen con un
encendido posterior, por lo que darán como resultado una pantalla en blanco.

Una mejor opción es usar la opción vcgencmd display_power , ya que esto retendrá
los framebuffers, por lo que cuando se vuelva a encender la pantalla volverá al
estado de encendido anterior.

 -e, --explicit = "Unidad en modo de grupo"


Encienda el HDMI con la configuración especificada
Grupo puede ser uno de CEA, DMT, CEA_3D_SBS, CEA_3D_TB,
CEA_3D_FP, CEA_3D_FS.
El modo es uno de los modos devueltos por la -m, --modes opción.
Drive puede ser uno de HDMI, DVI.
 -t, --ntsc
Utilice 59,94 Hz (frecuencia NTSC) en lugar de 60 Hz para el modo HDMI.
 -c, --sdtvon = "Modo Aspecto [P]"

66
MANUAL RASPBERRY
PI 4

Encienda el SDTV (salida compuesta) con el modo especificado, PAL o


NTSC, y el aspecto especificado, 4:3, 14:9, 16:9. El Pparámetro opcional se
puede utilizar para especificar el modo progresivo.
 -m, --modes = Grupo
donde Grupo es CEA o DMT.
Muestra una lista de modos de visualización disponibles en el grupo
especificado.
 -M, --monitor
Monitorea cualquier evento HDMI, por ejemplo, desconectando o conectando.
 -s, --status
Muestra la configuración actual del modo de visualización, incluido el modo, la
resolución y la frecuencia.
 -a, --audio
Muestra la configuración actual del modo de audio, incluidos los canales, la
frecuencia de muestreo y el tamaño de la muestra.
 -d, --dumpid = nombre de archivo
Guarde el EDID actual con el nombre de archivo especificado. A continuación,
puede utilizar edidparser <filename> para mostrar los datos en una forma
legible por humanos.
 -j, --json
Cuando se usa en combinación con las –modes opciones, muestra la
información del modo en formato JSON.
 -n, --nombre
Extrae el nombre para mostrar de los datos EDID y lo muestra.
 -l, --list
Enumera todas las pantallas adjuntas y su ID de pantalla.
 -v, --device = display
Especifica la ID del dispositivo que se utilizará; consulte la salida de –list para
ver los ID disponibles.

67
MANUAL RASPBERRY
PI 4

vcgencmd
La vcgencmd herramienta se utiliza para generar información desde la GPU
VideoCore en la Raspberry Pi. Puede encontrar el código fuente de la vcgencmd
utilidad en Github .

Para obtener una lista de todos los comandos vcgencmd compatibles, utilice
vcgencmd commands. A continuación se enumeran algunos comandos útiles y sus
parámetros necesarios.

vcos
El vcos comando tiene dos subcomandos útiles:
 version muestra la fecha de construcción y la versión del firmware en
VideoCore
 log status muestra el estado del registro de errores de las diversas áreas de
firmware de VideoCore
versión
Muestra la fecha de compilación y la versión del firmware VideoCore.
get_camera
Muestra el estado habilitado y detectado de la cámara Raspberry Pi: 1significa sí,
0significa no. Si bien todo el firmware, excepto las versiones recortadas, admite la
cámara, esta compatibilidad debe habilitarse mediante raspi-config .
get_throttled
Devuelve el estado acelerado del sistema. Este es un patrón de bits: un bit que se
establece indica los siguientes significados:
Poco Valor hexadecimal Sentido
0 0x1 Detección de subtensión
1 0x2 Frecuencia de brazo limitada
2 0x4 Actualmente estrangulado
3 0x8 Límite de temperatura suave activo
16 0x10000 Ha ocurrido subtensión

68
MANUAL RASPBERRY
PI 4

17 0x20000 Se ha producido un límite de frecuencia del brazo


18 0x40000 Ha ocurrido estrangulamiento
19 0x80000 Se ha producido un límite de temperatura suave
Tabla 0-4 Patrón de bits

medir_temp
Devuelve la temperatura del SoC medida por su sensor de temperatura interno; en
Raspberry Pi 4, measure_temp pmic devuelve la temperatura del PMIC.
medir_clock [reloj]
Esto devuelve la frecuencia actual del reloj especificado. Las opciones son:
Reloj Descripción
brazo Núcleo (s) ARM
centro Núcleo de la GPU
H264 Bloque H.264
isp Canalización del sensor de imagen
v3d Bloque 3D
uart UART
pwm Bloque PWM (salida de audio analógica)
emmc Interfaz de tarjeta SD
pixel Válvulas de píxel
vec Codificador de video analógico
hdmi HDMI
dpi Mostrar interfaz paralela
Tabla 0-5 Respuesta de la frecuencia actual del reloj especificado

p.ej vcgencmd measure_clock arm


medir_voltios [bloque]
Muestra los voltajes actuales utilizados por el bloque específico.

cuadra Descripción

centro Voltaje del núcleo VC4

69
MANUAL RASPBERRY
PI 4

cuadra Descripción

sdram_c Voltaje del núcleo de SDRAM

sdram_i Voltaje de E / S de SDRAM

sdram_
Voltaje Phy SDRAM
p
Tabla 0-6 voltajes

otp_dump
Muestra el contenido de la memoria OTP (programable una vez) dentro del SoC.
Estos son valores de 32 bits, indexados de 8 a 64. Consulte la página de bits OTP
para obtener más detalles.
get_config [elemento de configuración | int | str]
Mostrar el valor de la configuración especificada: como alternativa, especifique int
(entero) o str (cadena) para ver todos los elementos de configuración del tipo dado.
Por ejemplo:
vcgencmd get_config total_mem
devuelve la memoria total del dispositivo en megabytes.
tipo get_mem
Informa sobre la cantidad de memoria direccionable por ARM y GPU. Para mostrar la
cantidad de uso de memoria direccionable ARM vcgencmd get_mem arm; para
mostrar la cantidad de uso de memoria direccionable por GPU vcgencmd get_mem
gpu. Tenga en cuenta que en dispositivos con más de 1 GB de memoria, el arm
parámetro siempre devolverá 1 GB menos el gpu valor de la memoria, ya que el
firmware de la GPU solo reconoce el primer 1 GB de memoria. Para obtener un
informe preciso de la memoria total del dispositivo, consulte el total_mem elemento
de configuración; consulte la get_configsección anterior.
codec_enabled [tipo]
Informa si el tipo de CODEC especificado está habilitado. Las posibles opciones de
tipo son AGIF, FLAC, H263, H264, MJPA, MJPB, MJPG, MPG2 , MPG4, MVC0,
PCM, THRA, VORB, VP6, VP8, WMV9 , WVC1 . Los resaltados actualmente
70
MANUAL RASPBERRY
PI 4

requieren una licencia de pago (consulte la sección de este config.txt para obtener
más información), excepto en Pi 4 y 400, donde estos códecs de hardware están
deshabilitados en lugar de la decodificación de software, que no requiere licencia.
Tenga en cuenta que debido a que el bloque H.265 HW en Raspberry Pi 4 y 400 no
es parte de la GPU VideoCore, no se accede a su estado a través de este comando.
get_lcd_info
Muestra la resolución y la profundidad de color de cualquier pantalla adjunta.
mem_oom
Muestra estadísticas sobre cualquier evento OOM (memoria insuficiente) que ocurra
en el espacio de memoria de VideoCore.
mem_reloc_stats
Muestra estadísticas del asignador de memoria reubicable en VideoCore.
read_ring_osc
Devuelve el voltaje de velocidad actual y la temperatura del oscilador de anillo.
hdmi_timings
Muestra los tiempos de la configuración HDMI actual. Consulte Video Config para
obtener detalles de los valores devueltos.
dispmanx_list
Volcar una lista de todos los elementos dispmanx que se muestran actualmente.
display_power [0 | 1 | -1] [mostrar]
Muestra el estado de energía de la pantalla actual o configura el estado de energía
de la pantalla. vcgencmd display_power 0 apagará la energía de la pantalla actual.
vcgencmd display_power 1 encenderá la pantalla. Si no se establece ningún
parámetro, esto mostrará el estado de energía actual. El parámetro final es un ID de
pantalla opcional, según lo devuelto por tvservice –l o desde la tabla a continuación,
que permite encender o apagar una pantalla específica.
Tenga en cuenta que para la pantalla táctil Raspberry Pi de 7 ", esto simplemente
enciende y apaga la luz de fondo. La funcionalidad táctil sigue funcionando con
normalidad.

71
MANUAL RASPBERRY
PI 4

vcgencmd display_power 0 7 apagará la alimentación para mostrar el ID 7, que es


HDMI 1 en una Raspberry Pi 4.

Monitor IDENTIFICACIÓN

LCD principal 0

LCD
1
secundario

HDMI 0 2

Compuesto 3

HDMI 1 7
Tabla 0-7 Identificador que muestra el monitor

Para determinar si una ID de pantalla específica está encendida o apagada, use -1


como primer parámetro.
vcgencmd display_power -1 7 devolverá 0 si la ID de pantalla 7 está apagada, 1 si la
ID de pantalla 7 está encendida, o -1 si la ID de pantalla 7 está en un estado
desconocido, por ejemplo, sin ser detectado.
vcdbg
vcdbg es una aplicación que ayuda a depurar la GPU VideoCore de Linux que se
ejecuta en el ARM. Debe ejecutarse como root. Esta aplicación es más útil para los
ingenieros de Raspberry Pi, aunque hay algunos comandos que los usuarios
generales pueden encontrar útiles.
sudo vcdbg help le dará una lista de comandos disponibles.
NOTA
Solo se han enumerado las opciones de uso para los usuarios finales.
versión
Muestra varios elementos de información de versión de VideoCore.
Iniciar sesión
Vuelca los registros del subsistema especificado. Las posibles opciones son:

72
MANUAL RASPBERRY
PI 4

Iniciar
Descripción
sesión

Msg Imprime el registro de mensajes

Afirmar Imprime el registro de afirmaciones

Ex Imprime el registro de excepciones

Info Imprime información de los encabezados de registro

Establece el nivel de registro de VCOS para la categoría


Nivel
especificada, n | e | w | i | t

Lista Enumere los niveles de registro de VCOS


Tabla 0-8 Registros del subsistema iniciar sesión

Por ejemplo, para imprimir el contenido actual del registro de mensajes:


vcdbg log msg
malloc
Enumere todas las asignaciones de memoria actuales en el montón de VideoCore.
quinielas
Muestra el estado actual del asignador de grupos.
reubicar
Sin más parámetros, muestra el estado actual del asignador reubicable. sudo vcdbg
reloc small También se utiliza para enumerar asignaciones pequeñas.
Utilice el subcomando sudo vcdbg reloc stats para enumerar las estadísticas del
asignador reubicable.
hist
Comandos relacionados con el historial de tareas.
Úselo sudo vcdbg hist gnuplot para volcar el historial de tareas en formato gnuplot a
task.gpt y task.dat

73
MANUAL RASPBERRY
PI 4

Pitón
Python es un poderoso lenguaje de programación que es fácil de usar, fácil de leer y
escribir y, con Raspberry Pi, le permite conectar su proyecto al mundo real. La
sintaxis de Python es limpia, con énfasis en la legibilidad y utiliza palabras clave
estándar en inglés.
Thonny
La introducción más sencilla a Python es a través de Thonny , un entorno de
desarrollo de Python 3. Puede abrir Thonny desde el escritorio o desde el menú de
aplicaciones.

Thonny le da un REPL (Read-Evaluate-Print-Loop), que es un indicador en el que


puede ingresar comandos de Python. Debido a que es un REPL, incluso obtiene la
salida de los comandos impresos en la pantalla sin usar print. En la aplicación
Thonny, esto se llama ventana Shell.
Puede usar variables si lo necesita, pero incluso puede usarlas como una
calculadora. Por ejemplo:
>>> 1 + 2
3
>>> name = "Sarah"
>>> "Hello " + name
'Hello Sarah'
Thonny también tiene resaltado de sintaxis incorporado y algo de soporte para
autocompletar. Puede mirar hacia atrás en el historial de los comandos que ingresó
en el REPL con Alt + P (anterior) y Alt + N (siguiente).
Uso básico de Python
Hola mundo en Python:
print("Hello world")
Sangría
Algunos lenguajes usan llaves {y } para envolver líneas de código que van juntas, y
dejan que el escritor ponga sangría en estas líneas para que aparezcan visualmente

74
MANUAL RASPBERRY
PI 4

anidadas. Sin embargo, Python no usa llaves, sino que requiere una sangría para
anidar. Por ejemplo, un for bucle en Python:
for i in range(10):
print("Hello")
La sangría es necesaria aquí. Una segunda línea con sangría sería parte del ciclo, y
una segunda línea sin sangría estaría fuera del ciclo. Por ejemplo:
for i in range(2):
print("A")
print("B")
imprimiría:
A
B
A
B
mientras que lo siguiente:
for i in range(2):
print("A")
print("B")
imprimiría:
A
A
B
Variables
Para guardar un valor en una variable, asígnelo así:
name = "Bob"
age = 15
Tenga en cuenta que los tipos de datos no se especificaron con estas variables, ya
que los tipos se infieren y se pueden cambiar más adelante.
age = 15
age += 1 # increment age by 1

75
MANUAL RASPBERRY
PI 4

print(age)
Esta vez utilicé comentarios al lado del comando de incremento.
Comentarios
Los comentarios se ignoran en el programa, pero están ahí para que dejes notas y se
indican con el # símbolo de almohadilla . Los comentarios de varias líneas usan
comillas triples así:
"""
This is a very simple Python program that prints "Hello".
That's all it does.
"""

print("Hello")
Liza
Python también tiene listas (llamadas matrices en algunos lenguajes) que son
colecciones de datos de cualquier tipo:
numbers = [1, 2, 3]
Las listas se indican mediante el uso de corchetes [ ] y cada elemento está separado
por una coma.
Iteración
Algunos tipos de datos son iterables, lo que significa que puede recorrer los valores
que contienen. Por ejemplo, una lista:
numbers = [1, 2, 3]

for number in numbers:


print(number)
Esto toma cada elemento de la lista numbers e imprime el elemento:
1
2
3

76
MANUAL RASPBERRY
PI 4

Tenga en cuenta que usé la palabra number para denotar cada elemento. Esta es
simplemente la palabra que elegí para esto; se recomienda que elija palabras
descriptivas para las variables; usar plurales para las listas y singular para cada
elemento tiene sentido. Facilita la comprensión al leer.
Otros tipos de datos son iterables, por ejemplo, la cadena:
dog_name = "BINGO"

for char in dog_name:


print(char)
Esto recorre cada carácter y los imprime:
B
I
norte
GRAMO
O
Distancia
El tipo de datos entero no es iterable e intentar iterar sobre él producirá un error. Por
ejemplo:
for i in 3:
print(i)
Producirá:
TypeError: 'int' object is not iterable

77
MANUAL RASPBERRY
PI 4

Ilustración 0-36 TypeError

Sin embargo, puede hacer un objeto iterable usando la range función:


for i in range(3):
print(i)
range(5) contiene los números 0, 1, 2, 3 y 4 (cinco números en total). Para obtener
los números 1 para 5 usar (inclusive) range(1, 6).
Largo
Puede usar funciones como len encontrar la longitud de una cadena o una lista:
name = "Jamie"
print(len(name)) # 5

names = ["Bob", "Jane", "James", "Alice"]


print(len(names)) # 4
Si declaraciones
Puede utilizar if declaraciones para controlar el flujo:
name = "Joe"

if len(name) > 3:
print("Nice name,")
print(name)
78
MANUAL RASPBERRY
PI 4

else:
print("That's a short name,")
print(name)
Archivos de Python en Thonny
Para crear un archivo Python en Thonny, haga clic File > New y se le dará
unventana. Este es un archivo vacío, no un indicador de Python. Escribe un archivo
de Python en esta ventana, lo guarda, luego lo ejecuta y verá el resultado en la otra
ventana.
Por ejemplo, en la nueva ventana, escriba:
n=0

for i in range(1, 101):


n += i

print("The sum of the numbers 1 to 100 is:")


print(n)
Luego guarde este archivo ( File > Saveo Ctrl + S) y ejecute ( Run > Run Module o
presione F5) y verá el resultado en su ventana original de Python.
Usando la línea de comandos
Puede escribir un archivo de Python en un editor estándar y ejecutarlo como una
secuencia de comandos de Python desde la línea de comandos. Simplemente
navegue hasta el directorio en el que está guardado el archivo (use cdy ls como guía)
y ejecútelo python3, por ejemplo python3 hello.py.

Ilustración 0-37 hello world

Otras formas de usar Python


Se accede al shell estándar integrado de Python escribiendo python3 en la terminal.

79
MANUAL RASPBERRY
PI 4

Este shell es un indicador listo para ingresar los comandos de Python. Puede usar
esto de la misma manera que Thonny, pero no tiene resaltado de sintaxis ni
autocompletado. Puede consultar el historial de los comandos que ingresó en el
REPL utilizando las Up/Downteclas. Use Ctrl + D para salir.
IPython
IPython es un shell de Python interactivo con resaltado de sintaxis, autocompletado,
impresión bonita, documentación incorporada y más. IPython no está instalado de
forma predeterminada. Instalar con:
sudo pip3 install ipython
Luego ejecute con ipython desde la línea de comando. Funciona como el estándar
python3, pero tiene más funciones. Intente escribir len? y presionar Enter. Se le
muestra información, incluida la cadena de documentos de la 1en función:
Type: builtin_function_or_method
String Form:<built-in function len>
Namespace: Python builtin
Docstring:
len(object) -> integer

Return the number of items of a sequence or mapping.


Pruebe la siguiente comprensión del diccionario:
{i: i ** 3 for i in range(12)}
Esto imprimirá bastante lo siguiente:
{0: 0,
1: 1,
2: 8,
3: 27,
4: 64,
5: 125,
6: 216,
7: 343,
8: 512,
80
MANUAL RASPBERRY
PI 4

9: 729,
10: 1000,
11: 1331}
En el shell estándar de Python, esto se habría impreso en una línea:
{0: 0, 1: 1, 2: 8, 3: 27, 4: 64, 5: 125, 6: 216, 7: 343, 8: 512, 9: 729, 10: 1000, 11: 1331}

Ilustración 0-38 Código

Puede mirar hacia atrás en el historial de los comandos que ha ingresado en el REPL
usando las Up/Downteclas como en python. El historial también persiste hasta la
siguiente sesión, por lo que puede salir ipython y regresar (o cambiar entre v2 / 3) y
el historial permanece. Use Ctrl + D para salir.

Instalación de bibliotecas de Python


apt
Algunos paquetes de Python se pueden encontrar en los archivos del sistema
operativo Raspberry Pi y se pueden instalar usando apt, por ejemplo:
sudo apt update
sudo apt install python-picamera
Este es un método de instalación preferible, ya que significa que los módulos que
instale se pueden mantener actualizados fácilmente con los comandos habituales
sudo apt update y sudo apt full-upgrade.
pepita

81
MANUAL RASPBERRY
PI 4

No todos los paquetes de Python están disponibles en los archivos del sistema
operativo Raspberry Pi, y los que lo están a veces pueden estar desactualizados. Si
no puede encontrar una versión adecuada en los archivos del sistema operativo
Raspberry Pi, puede instalar paquetes desde el índice de paquetes de Python
(conocido como PyPI).
Para hacerlo, instale pip:
sudo apt install python3-pip
Luego instale los paquetes de Python (por ejemplo, simplejson) con pip3:
sudo pip3 install simplejson
piwheels
El índice oficial de paquetes de Python (PyPI) aloja archivos cargados por los
encargados del mantenimiento de paquetes. Algunos paquetes requieren
compilación (compilación de C / C ++ o código similar) para instalarlos, lo que puede
ser una tarea que requiere mucho tiempo, especialmente en Raspberry Pi 1 o Pi Zero
de un solo núcleo.
piwheels es un servicio que proporciona paquetes precompilados (llamados Python
wheels ) listos para usar en Raspberry Pi. El sistema operativo Raspberry Pi está
preconfigurado para usar piwheels para pip. Lea más sobre el proyecto piwheels en
www.piwheels.org .
GPIO y el encabezado de 40 pines

Una característica poderosa de Raspberry Pi es la fila de pines GPIO (entrada /


salida de propósito general) a lo largo del borde superior de la placa. Se encuentra
un encabezado GPIO de 40 pines en todas las placas Raspberry Pi actuales (sin
llenar en Pi Zero y Pi Zero W). Antes del Pi 1 Modelo B + (2014), las placas
comprendían un encabezado más corto de 26 pines.

82
MANUAL RASPBERRY
PI 4

Ilustración 0-39 Fila de pines GPIO

Cualquiera de los pines GPIO puede designarse (en el software) como un pin de
entrada o salida y usarse para una amplia gama de propósitos.

Ilustración 0-40 pines GPIO designación

NOTA
la numeración de los pines GPIO no está en orden numérico; Los pines GPIO 0 y 1
están presentes en la placa (pines físicos 27 y 28) pero están reservados para uso
avanzado (ver más abajo).
Voltajes
En la placa hay dos pines de 5V y dos pines de 3V3, así como varios pines de tierra
(0V), que no son configurables. Los pines restantes son todos pines 3V3 de uso
general, lo que significa que las salidas están configuradas en 3V3 y las entradas son
tolerantes a 3V3.

83
MANUAL RASPBERRY
PI 4

Salidas
Un pin GPIO designado como pin de salida se puede configurar en alto (3V3) o bajo
(0V).
Entradas
Un pin GPIO designado como pin de entrada se puede leer como alto (3V3) o bajo
(0V). Esto se hace más fácil con el uso de resistencias internas pull-up o pull-down.
Los pines GPIO2 y GPIO3 tienen resistencias pull-up fijas, pero para otros pines esto
se puede configurar en el software.
Más
Además de los dispositivos de entrada y salida simples, los pines GPIO se pueden
usar con una variedad de funciones alternativas, algunas están disponibles en todos
los pines, otras en pines específicos.
PWM (modulación de ancho de pulso)
 Software PWM disponible en todos los pines
 Hardware PWM disponible en GPIO12, GPIO13, GPIO18, GPIO19
SPI
 SPI0: MOSI (GPIO10); MISO (GPIO9); SCLK (GPIO11); CE0 (GPIO8), CE1
(GPIO7)
 SPI1: MOSI (GPIO20); MISO (GPIO19); SCLK (GPIO21); CE0 (GPIO18); CE1
(GPIO17); CE2 (GPIO16)
I2C
 Datos: (GPIO2); Reloj (GPIO3)
 Datos EEPROM: (GPIO0); Reloj EEPROM (GPIO1)
De serie
 TX (GPIO14); RX (GPIO15)

Pinout GPIO
Se puede acceder a una referencia útil en la Raspberry Pi abriendo una ventana de
terminal y ejecutando el comando pinout. Esta herramienta la proporciona la
biblioteca GPIO Zero Python, que se instala de forma predeterminada en la imagen

84
MANUAL RASPBERRY
PI 4

de escritorio del sistema operativo Raspberry Pi, pero no en el sistema operativo


Raspberry Pi Lite.

Ilustración 0-41 Biblioteca GPIO Zero Python

Para obtener más detalles sobre las capacidades avanzadas de los pines GPIO,
consulte el diagrama de pines interactivo de gadgetoid .

85
MANUAL RASPBERRY
PI 4

ADVERTENCIA
Si bien conectar componentes simples a los pines GPIO es perfectamente seguro, es
importante tener cuidado con la forma en que conecta las cosas. Los LED deben
tener resistencias para limitar la corriente que pasa a través de ellos. No use 5V para
componentes 3V3. No conecte motores directamente a los pines GPIO, en su lugar
use un circuito de puente H o una placa controladora de motor .
Permisos
Para utilizar los puertos GPIO, su usuario debe ser miembro del gpio grupo. El pi
usuario es un miembro de forma predeterminada, otros usuarios deben agregarse
manualmente.
sudo usermod -a -G gpio <username>
GPIO en Python
El uso de la biblioteca GPIO Zero facilita comenzar a controlar dispositivos GPIO con
Python. La biblioteca está ampliamente documentada en gpiozero.readthedocs.io .
DIRIGIÓ
Para controlar un LED conectado a GPIO17, puede usar este código:
from gpiozero import LED
from time import sleep

led = LED(17)

while True:
led.on()
sleep(1)
led.off()
sleep(1)
Ejecute esto en un IDE como Thonny, y el LED parpadeará y se apagará
repetidamente.

Métodos de LED incluyen on(), off(), toggle(), y blink().


Botón
86
MANUAL RASPBERRY
PI 4

Para leer el estado de un botón conectado a GPIO2, puede usar este código:
from gpiozero import Button
from time import sleep

button = Button(2)

while True:
if button.is_pressed:
print("Pressed")
else:
print("Released")
sleep(1)
La funcionalidad del botón incluye las propiedades is_pressedy is_held; devoluciones
de llamada when_pressed, when_releasedy when_held; y métodos wait_for_press()y
wait_for_release.
Botón + LED
Para conectar el LED y el botón juntos, puede usar este código:
from gpiozero import LED, Button

led = LED(17)
button = Button(2)

while True:
if button.is_pressed:
led.on()
else:
led.off()
Alternativamente:
from gpiozero import LED, Button

87
MANUAL RASPBERRY
PI 4

led = LED(17)
button = Button(2)

while True:
button.wait_for_press()
led.on()
button.wait_for_release()
led.off()
o:
from gpiozero import LED, Button

led = LED(17)
button = Button(2)

button.when_pressed = led.on
button.when_released = led.off

3.5 Configuracion.
Herramienta raspi-config
raspi-config es la herramienta de configuración de Raspberry Pi escrita originalmente
por Alex Bradbury . Para abrir la herramienta de configuración, escriba lo siguiente
en la línea de comando:
sudo raspi-config
El sudo es obligatorio porque cambiará archivos que no son de su propiedad como pi
usuario.
NOTA
Si está utilizando el escritorio Raspberry Pi, puede usar la Raspberry Pi Configuration
aplicación gráfica del Preferences menú para configurar su Raspberry Pi.
A continuación, debería ver una pantalla azul con opciones en un cuadro gris

88
MANUAL RASPBERRY
PI 4

Ilustración 0-42 Pantalla de opciones

NOTA
El menú que se muestra puede diferir ligeramente.
Utilice las teclas de flecha up y down para mover la selección resaltada entre las
opciones disponibles. Si presiona la right tecla de flecha, saldrá del menú Opciones y
lo llevará a los botones <Select> y <Finish>. Si presiona left, volverá a las opciones.
Alternativamente, puede usar la Tab tecla para cambiar entre estos.
En términos generales, raspi-config tiene como objetivo proporcionar la funcionalidad
para realizar los cambios de configuración más comunes. Esto puede resultar en
ediciones automatizadas /boot/config.txt y en varios archivos de configuración
estándar de Linux. Algunas opciones requieren reiniciar para que surtan efecto. Si
cambió alguno de ellos, raspi-config le preguntará si desea reiniciar ahora cuando
seleccione el <Finish> botón.
NOTA
En listas largas de valores de opciones (como la lista de ciudades de zona horaria),
también puede escribir una letra para saltar a esa sección de la lista. Por ejemplo,
ingresar Llo saltará a Lisboa, a solo dos opciones de Londres, para evitar que tenga
que desplazarse por todo el alfabeto.
Lista de opciones
NOTA
Debido al desarrollo continuo de la raspi-config herramienta, es posible que la lista de
opciones a continuación no esté completamente actualizada. También tenga en
89
MANUAL RASPBERRY
PI 4

cuenta que los diferentes modelos de Raspberry Pi pueden tener diferentes


opciones disponibles.
Opciones de sistema
El submenú de opciones del sistema le permite realizar cambios de configuración en
varias partes del proceso de inicio, inicio de sesión y red, junto con algunos otros
cambios a nivel del sistema.
LAN inalámbrico
Permite configurar el SSID y la frase de contraseña de la LAN inalámbrica.
Audio
Especifique el destino de la salida de audio.
Contraseña
El usuario predeterminado en el sistema operativo Raspberry Pi tiene pi la
contraseña raspberry. Puedes cambiar eso aquí. Lea sobre otros usuarios.
Nombre de host
Establezca el nombre visible para este Pi en una red.
Inicio / Inicio de sesión automático
Desde este submenú puede seleccionar si desea iniciar en la consola o en el
escritorio y si necesita iniciar sesión o no. Si selecciona el inicio de sesión
automático, iniciará sesión como pi usuario.
Red en el arranque
Utilice esta opción para esperar una conexión de red antes de dejar que continúe el
inicio.
Pantalla de bienvenida
Habilite o deshabilite la pantalla de presentación que se muestra en el momento del
arranque
LED de encendido
Si el modelo de Pi lo permite, puede cambiar el comportamiento del LED de
encendido utilizando esta opción.
Opciones de pantalla
Resolución

90
MANUAL RASPBERRY
PI 4

Defina la resolución de video HDMI / DVI predeterminada que se utilizará cuando el


sistema se inicie sin que se conecte un televisor o monitor. Esto puede tener un
efecto en RealVNC si la opción VNC está habilitada.
Subescaneo
Los televisores antiguos tenían una variación significativa en el tamaño de la imagen
que producían; algunos tenían gabinetes que se superponían a la pantalla. Por lo
tanto, a las imágenes de televisión se les dio un borde negro para que no se perdiera
ninguna imagen; esto se llama sobreexploración. Los televisores y monitores
modernos no necesitan el borde y la señal no lo permite. Si el texto inicial que se
muestra en la pantalla desaparece del borde, debe habilitar la sobreexploración para
recuperar el borde.
Cualquier cambio entrará en vigor después de reiniciar. Puede tener un mayor
control sobre la configuración editando config.txt .
En algunas pantallas, en particular monitores, la desactivación de la
sobreexploración hará que la imagen llene toda la pantalla y corrija la resolución.
Para otras pantallas, puede que sea necesario dejar la sobreexploración habilitada y
ajustar sus valores.
Duplicación de píxeles
Activar / desactivar el mapeo de píxeles 2x2.
Video compuesto
En la Raspberry Pi4, habilite el video compuesto. En los modelos anteriores a la
Raspberry Pi4, el video compuesto está habilitado de forma predeterminada, por lo
que esta opción no se muestra.
Pantalla en blanco
Habilite o deshabilite el borrado de la pantalla.
Opciones de interfaz
En este submenú hay las siguientes opciones para habilitar / deshabilitar: Cámara,
SSH, VNC, SPI, I2C, Serie, 1 cable y GPIO remoto.
Cámara
Habilita / deshabilita la interfaz de la cámara CSI.

91
MANUAL RASPBERRY
PI 4

SSH
Habilite / deshabilite el acceso remoto a la línea de comandos a su Pi usando SSH.
SSH le permite acceder de forma remota a la línea de comando de la Raspberry Pi
desde otra computadora. SSH está deshabilitado de forma predeterminada. Obtenga
más información sobre el uso de SSH en la página de documentación de SSH . Si
conecta su Pi directamente a una red pública, no debe habilitar SSH a menos que
haya configurado contraseñas seguras para todos los usuarios.
VNC
Habilite / deshabilite el servidor de computación de la red virtual RealVNC.
SPI
Habilite / deshabilite las interfaces SPI y la carga automática del módulo del kernel
SPI, necesaria para productos como PiFace.
I2C
Habilita / deshabilita las interfaces I2C y la carga automática del módulo del kernel
I2C.
De serie
Habilite / deshabilite los mensajes de shell y kernel en la conexión en serie.
1 hilo
Habilite / deshabilite la interfaz de 1 cable de Dallas. Esto se usa generalmente para
sensores de temperatura DS18B20.
GPIO remoto
Habilite o deshabilite el acceso remoto a los pines GPIO.
Opciones de desempeño
Overclock
En algunos modelos es posible overclockear la CPU de su Raspberry Pi usando esta
herramienta. El overclocking que puede lograr variará; un overclocking demasiado
alto puede provocar inestabilidad. Al seleccionar esta opción, se muestra la siguiente
advertencia:
Tenga en cuenta que el overclocking puede reducir la vida útil de su Raspberry Pi. Si
el overclocking a un cierto nivel causa inestabilidad en el sistema, pruebe con un

92
MANUAL RASPBERRY
PI 4

overclock más modesto. Mantenga presionada la tecla Shift durante el arranque


para deshabilitar temporalmente el overclocking.
Memoria GPU
Cambie la cantidad de memoria disponible para la GPU.
Sistema de archivos superpuestos
Habilitar o deshabilitar un sistema de archivos de solo lectura
Admirador
Establecer el comportamiento de un ventilador conectado a GPIO
Opciones de localización
El submenú de localización le ofrece estas opciones para elegir: distribución del
teclado, zona horaria, configuración regional y código de país de la LAN inalámbrica.
Lugar
Seleccione una configuración regional, por ejemplo en_GB.UTF-8 UTF-8.
Zona horaria
Seleccione su zona horaria local, comenzando con la región, por ejemplo, Europa,
luego seleccione una ciudad, por ejemplo, Londres. Escriba una letra para saltar la
lista hasta ese punto del alfabeto.
Teclado
Esta opción abre otro menú que le permite seleccionar la distribución de su teclado.
Tardará mucho en mostrarse mientras lee todos los tipos de teclado. Los cambios
suelen tener efecto de inmediato, pero es posible que sea necesario reiniciar el
sistema.
País WLAN
Esta opción establece el código de país para su red inalámbrica.
Opciones avanzadas
Expandir el sistema de archivos
Esta opción ampliará su instalación para llenar toda la tarjeta SD, dándole más
espacio para usar con los archivos. Deberá reiniciar la Raspberry Pi para que esté
disponible.
ADVERTENCIA

93
MANUAL RASPBERRY
PI 4

No hay confirmación: la selección de la opción comienza la expansión de la


partición inmediatamente.
Conductor GL
Habilite / deshabilite los controladores de gráficos de escritorio GL experimentales.
GL (KMS completo)
Habilite / deshabilite el controlador de gráficos de escritorio OpenGL Full KMS
(configuración del modo de kernel) experimental.
GL (KMS falso)
Habilite / deshabilite el controlador de gráficos de escritorio experimental OpenGL
Fake KMS.
Legado
Habilite / deshabilite el controlador de gráficos de escritorio de escritorio original no
GL VideoCore.
Compositor
Habilitar / mostrar el administrador de composición de xcompmgr
Nombres de interfaz de red
Habilite o deshabilite nombres de interfaz de red predecibles.
Configuración de proxy de red
Configure los ajustes de proxy de la red.
Orden de inicio
En la Raspberry Pi4, puede especificar si arrancar desde USB o desde la red si la
tarjeta SD no está insertada. Consulte esta página para obtener más información.
Versión del cargador de arranque
En la Raspberry Pi4, puede decirle al sistema que use el software ROM de arranque
más reciente, o por defecto al valor predeterminado de fábrica si la última versión
causa problemas.
Actualizar
Actualice esta herramienta a la última versión.
Sobre raspi-config
Al seleccionar esta opción, se muestra el siguiente texto:

94
MANUAL RASPBERRY
PI 4

Esta herramienta proporciona una forma sencilla de realizar la configuración inicial


de la Raspberry Pi.
Aunque se puede ejecutar en cualquier momento, algunas de las opciones pueden
tener dificultades si ha personalizado su instalación en gran medida.
Terminar
Utilice este botón cuando haya completado sus cambios. Se le preguntará si desea
reiniciar o no. Cuando se usa por primera vez, es mejor reiniciar. Habrá un retraso en
el reinicio si ha elegido cambiar el tamaño de su tarjeta SD.
Configuración de redes
Se proporciona una GUI para configurar conexiones inalámbricas en el sistema
operativo Raspberry Pi dentro del escritorio Raspberry Pi. Sin embargo, si no está
utilizando el escritorio Raspberry Pi, puede configurar una red inalámbrica desde la
línea de comandos.
Usando el escritorio
Las conexiones inalámbricas se pueden realizar a través del icono de red en el
extremo derecho de la barra de menú. Si está utilizando un Pi con conectividad
inalámbrica incorporada, o si hay un dongle inalámbrico enchufado, al hacer clic con
el botón izquierdo en este icono aparecerá una lista de redes inalámbricas
disponibles, como se muestra a continuación. Si no se encuentran redes, mostrará el
mensaje 'No se encontraron APs - escaneando…'. Espere unos segundos sin cerrar
el menú y debería encontrar su red.
Tenga en cuenta que en los dispositivos Raspberry Pi que admiten la banda de 5
GHz (Pi3B +, Pi4, CM4, Pi400), la red inalámbrica está deshabilitada por razones
reglamentarias, hasta que se haya establecido el código de país. Para configurar el
código de país, abra la Raspberry Pi Configuration aplicación desde el menú
Preferencias, seleccione Localización y configure el código apropiado.

95
MANUAL RASPBERRY
PI 4

Ilustración 0-43 Configuración de código de pais

Los iconos de la derecha muestran si una red está protegida o no y dan una
indicación de la intensidad de la señal. Haga clic en la red a la que desea conectarse.
Si está protegido, un cuadro de diálogo le pedirá que ingrese la clave de red:

Ilustración 0-44 Clave de red protejida

Ingrese la clave y haga clic en Aceptar , luego espere un par de segundos. El icono
de red parpadeará brevemente para mostrar que se está estableciendo una
conexión. Cuando esté listo, el icono dejará de parpadear y mostrará la intensidad de
la señal.
Usando la línea de comandos
Este método es adecuado si no tiene acceso a la interfaz gráfica de usuario que se
usa normalmente para configurar una LAN inalámbrica en la Raspberry Pi. Es
particularmente adecuado para usar con un cable de consola en serie si no tiene
acceso a una pantalla o red Ethernet cableada. Tenga en cuenta también que no se
requiere software adicional; todo lo que necesita ya está incluido en la Raspberry Pi.
Usando raspi-config
96
MANUAL RASPBERRY
PI 4

La forma más rápida de habilitar las redes inalámbricas es utilizar la raspi-config


herramienta de línea de comandos.
sudo raspi-config
Seleccione el elemento Opciones de localización del menú, luego la opción Cambiar
país inalámbrico . En una instalación nueva, para fines reglamentarios, deberá
especificar el país en el que se está utilizando el dispositivo. Luego, configure el
SSID de la red y la frase de contraseña para la red. Si no conoce el SSID de la red a
la que desea conectarse, consulte la siguiente sección sobre cómo enumerar las
redes disponibles antes de la ejecución raspi-config.
Tenga en cuenta que raspi-config no proporciona un conjunto completo de opciones
para configurar una red inalámbrica; es posible que deba consultar las secciones
adicionales a continuación para obtener más detalles si raspi-config no puede
conectar el Pi a la red solicitada.
Obtener detalles de la red LAN inalámbrica
Para buscar redes inalámbricas, use el comando sudo iwlist wlan0 scan. Esto
mostrará una lista de todas las redes inalámbricas disponibles, junto con otra
información útil. Tener cuidado de:
1. 'ESSID: "testing"' es el nombre de la red inalámbrica.
2. 'IE: IEEE 802.11i / WPA2 Versión 1' es la autenticación utilizada. En este caso
es WPA2, el estándar inalámbrico más nuevo y seguro que reemplaza a WPA.
Esta guía debería funcionar para WPA o WPA2, pero es posible que no
funcione para empresas WPA2. También necesitará la contraseña de la red
inalámbrica. Para la mayoría de los enrutadores domésticos, esto se
encuentra en una etiqueta en la parte posterior del enrutador. El ESSID (ssid)
de los ejemplos siguientes es testing y la contraseña (psk) es
testingPassword.
Agregar los detalles de la red a su Raspberry Pi
Abra el wpa-supplicant archivo de configuración en nano:
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Vaya al final del archivo y agregue lo siguiente:

97
MANUAL RASPBERRY
PI 4

red = {
ssid = "prueba"
psk = "testingPassword"
}
La contraseña se puede configurar como representación ASCII, entre comillas como
en el ejemplo anterior, o como un número hexadecimal de 32 bytes preencriptado.
Puede utilizar la wpa_passphrase utilidad para generar una PSK cifrada. Esto toma
el SSID y la contraseña y genera el PSK encriptado. Con el ejemplo anterior, puede
generar el PSK con wpa_passphrase "testing". Luego se le pedirá la contraseña de la
red inalámbrica (en este caso testingPassword). El resultado es el siguiente:
red = {
ssid = "prueba"
# psk = "testingPassword"
psk =
131e1e221f6e06e3911a2d11ff2fac9182665c004de85300f9cac208a6a80531
}
Tenga en cuenta que la versión de texto sin formato del código está presente, pero
comentada. Debe eliminar esta línea del wpa_supplicant archivo final para mayor
seguridad.
La wpa_passphrase herramienta requiere una contraseña de entre 8 y 63 caracteres.
Para utilizar una contraseña más compleja, puede extraer el contenido de un archivo
de texto y utilizarlo como entrada para wpa_passphrase. Guarde la contraseña en un
archivo de texto e introdúzcala wpa_passphrase llamando wpa_passphrase "testing"
< file_where_password_is_stored. Para mayor seguridad, debe eliminar el
file_where_password_is_stored después, para que no haya una copia de texto sin
formato de la contraseña original en el sistema.
Para usar el wpa_passphrase PSK cifrado, puede copiar y pegar el PSK cifrado en el
wpa_supplicant.conf archivo o redirigir la salida de la herramienta al archivo de
configuración de una de estas dos formas:

98
MANUAL RASPBERRY
PI 4

 Cambie a root ejecutando sudo su, luego llame wpa_passphrase "testing"


>> /etc/wpa_supplicant/wpa_supplicant.conf e ingrese la contraseña de
prueba cuando se le solicite
 O use wpa_passphrase "testing" | sudo tee -a
/etc/wpa_supplicant/wpa_supplicant.conf > /dev/null e ingrese la contraseña
de prueba cuando se le solicite; la redirección a /dev/nullimpide tee de también
la salida a la pantalla (la salida estándar).
Si desea utilizar una de estas dos opciones, asegúrese de usar >>, o el uso -acontee
 - o bien se anexará el texto a un archivo existente. El uso de un solo cheurón >, o la
omisión –a al usarlo tee, borrará todo el contenido y luego agregará la salida al
archivo especificado.
Ahora guarde el archivo presionando Ctrl+X, luego Y, finalmente presione Enter.
Reconfigure la interfaz con wpa_cli -i wlan0 reconfigure.

Puede verificar si se ha conectado correctamente utilizando ifconfig wlan0. Si el inet


addr campo tiene una dirección al lado, la Raspberry Pi se ha conectado a la red. Si
no es así, verifique que su contraseña y ESSID sean correctos.
En Raspberry Pi 3B + y Raspberry Pi 4B, también deberá configurar el código de
país, para que la red de 5 GHz pueda elegir las bandas de frecuencia correctas.
Puede hacer esto usando la raspi-config aplicación: seleccione el menú 'Opciones de
localización', luego 'Cambiar país de Wi-Fi'. Alternativamente, puede editar el
wpa_supplicant.conf archivo y agregar lo siguiente. (Nota: debe reemplazar 'GB' con
el código ISO de 2 letras de su país. Consulte Wikipedia para obtener una lista de
códigos de país ISO 3166-1 de 2 letras).
país = GB
Tenga en cuenta que con la última versión del sistema operativo Buster Raspberry
Pi, debe asegurarse de que el wpa_supplicant.conf archivo contenga la siguiente
información en la parte superior:
ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev
update_config = 1

99
MANUAL RASPBERRY
PI 4

country = <Inserte aquí el código de país ISO 3166-1 de 2 letras>


Uso de redes no seguras
Si la red a la que se está conectando no utiliza una contraseña, la wpa_supplicant
entrada de la red deberá incluir la key_mgmt entrada correcta . p.ej
red = {
ssid = "prueba"
key_mgmt = NINGUNO
}
ADVERTENCIA
Debe tener cuidado al utilizar redes inalámbricas no seguras.
Redes ocultas
Si está utilizando una red oculta, una opción adicional en el wpa_supplicant file,
scan_ssid, puede ayudar a la conexión.
red = {
ssid = "yourHiddenSSID"
scan_ssid = 1
psk = "Your_wireless_network_password"
}
Puede verificar si se ha conectado correctamente utilizando ifconfig wlan0. Si el inet
addr campo tiene una dirección al lado, la Raspberry Pi se ha conectado a la red. Si
no es así, verifique que su contraseña y ESSID sean correctos.
Agregar múltiples configuraciones de red inalámbrica
En las versiones recientes del sistema operativo Raspberry Pi, es posible configurar
múltiples configuraciones para redes inalámbricas. Por ejemplo, puede configurar
uno para el hogar y otro para la escuela.
Por ejemplo
red = {
ssid = "SchoolNetworkSSID"
psk = "contraseñaEscuela"
id_str = "escuela"

100
MANUAL RASPBERRY
PI 4

red = {
ssid = "HomeNetworkSSID"
psk = "passwordHome"
id_str = "casa"
}
Si tiene dos redes dentro del alcance, puede agregar la opción de prioridad para
elegir entre ellas. La red en rango, con mayor prioridad, será la que esté conectada.
red = {
ssid = "HomeOneSSID"
psk = "contraseñaOne"
prioridad = 1
id_str = "homeOne"
}

red = {
ssid = "HomeTwoSSID"
psk = "contraseñaDos"
prioridad = 2
id_str = "homeTwo"
}
El demonio DHCP
La Raspberry Pi utiliza dhcpcd para configurar TCP / IP en todas sus interfaces de
red. El dhcpcd daemon está destinado a ser un cliente ZeroConf todo en uno para
sistemas similares a UNIX. Esto incluye la asignación de una dirección IP a cada
interfaz, la configuración de máscaras de red y la configuración de la resolución de
DNS a través de la función Name Service Switch (NSS).
De forma predeterminada, Raspberry Pi OS intenta configurar automáticamente
todas las interfaces de red por DHCP, recurriendo a direcciones privadas

101
MANUAL RASPBERRY
PI 4

automáticas en el rango 169.254.0.0/16 si DHCP falla. Esto es coherente con el


comportamiento de otras variantes de Linux y de Microsoft Windows.
Direcciones IP estáticas
Si desea deshabilitar la configuración automática para una interfaz y, en su lugar,
configurarla estáticamente, agregue los detalles a /etc/dhcpcd.conf. Por ejemplo:
interfaz eth0
dirección_ip estática = 192.168.0.4 / 24
enrutadores estáticos = 192.168.0.254
static domain_name_servers = 192.168.0.254 8.8.8.8
Puede encontrar los nombres de las interfaces presentes en su sistema usando el ip
link comando.
Tenga en cuenta que si tiene varias Raspberry Pis conectadas a la misma red, puede
que le resulte más fácil establecer reservas de direcciones en su servidor DHCP. De
esta manera, cada Pi mantendrá la misma dirección IP, pero todas se administrarán
en un solo lugar, lo que hará que la reconfiguración de su red en el futuro sea más
sencilla.

En los sistemas Raspberry Pi donde está instalado el escritorio gráfico, lxplug-


network se utiliza una herramienta GUI llamada para permitir al usuario realizar
cambios en la configuración de dhcpcd, incluida la configuración de direcciones IP
estáticas. La lxplug-network herramienta se basa en dhcpcd-ui, que también fue
desarrollada por Roy Marples.
Configuración de una Raspberry Pi sin cabeza
Si no utiliza un monitor o un teclado para ejecutar su Pi (conocido como sin cabeza),
pero aún necesita realizar una configuración inalámbrica, existe una función para
habilitar la red inalámbrica y SSH al crear una imagen.
Una vez que se crea una imagen en una tarjeta SD, al insertarla en un lector de
tarjetas en una máquina Linux o Windows se puede acceder a la carpeta de inicio .
Agregar ciertos archivos a esta carpeta activará ciertas funciones de configuración en
el primer arranque de la Raspberry Pi.

102
MANUAL RASPBERRY
PI 4

Configuración de redes
Deberá definir un wpa_supplicant.conf archivo para su red inalámbrica particular.
Coloque este archivo en la carpeta de inicio de la tarjeta SD. Cuando la Raspberry Pi
se inicia por primera vez, copiará ese archivo en la ubicación correcta en el sistema
de archivos raíz de Linux y usará esa configuración para iniciar la red inalámbrica.
La dirección IP de la Raspberry Pi no será visible inmediatamente después del
encendido, por lo que este paso es crucial para conectarse sin cabeza. Dependiendo
del sistema operativo y el editor en el que esté creando esto, el archivo podría tener
nuevas líneas incorrectas o la extensión de archivo incorrecta, así que asegúrese de
usar un editor que tenga en cuenta esto. Linux espera el carácter de salto de línea
(LF).
ADVERTENCIA
Una vez que su Raspberry Pi esté conectada a la alimentación, asegúrese de
esperar unos minutos (hasta 5) para que se inicie y se registre en la red.
Un wpa_supplicant.confejemplo de archivo:
ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev
country = <Inserte aquí el código de país ISO 3166-1 de 2 letras>
update_config = 1

red = {
ssid = "<Nombre de su LAN inalámbrica>"
psk = "<Contraseña para su LAN inalámbrica>"
}
Donde se debe establecer el código de país, el código ISO / IEC alpha2 de dos letras
para el país en el que está utilizando, p. Ej.
 GB (Reino Unido)
 FR (Francia)
 DE (Alemania)
 EE. UU. (Estados Unidos)
 SE (Suecia)

103
MANUAL RASPBERRY
PI 4

Aquí hay un ejemplo más elaborado que debería funcionar para la mayoría de las
redes personales wpa2 típicas. Esta plantilla a continuación funciona para redes
ocultas o no de 2.4ghz / 5ghz. ¡El uso de comillas alrededor del ssid - psk puede
ayudar a evitar cualquier rareza si su ssid de red o contraseña tiene caracteres
especiales (! @ # $ Etc)
ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev
update_config = 1
country = <Inserte aquí el código de país ISO 3166-1 de 2 letras>

red = {
scan_ssid = 1
ssid = "<Nombre de su LAN inalámbrica>"
psk = "<Contraseña para su LAN inalámbrica>"
proto = RSN
key_mgmt = WPA-PSK
por pares = CCMP
auth_alg = ABRIR
}

NOTA
Algunas placas Raspberry Pi más antiguas y algunos dongles inalámbricos USB no
admiten redes de 5 GHz.
NOTA
Sin teclado ni monitor, necesitará alguna forma de acceder de forma remota a su
Raspberry Pi sin cabeza. Para la configuración sin cabeza, SSH se puede habilitar
colocando un archivo con nombre ssh, sin ninguna extensión, en la carpeta de inicio
de la tarjeta SD. Para obtener más información, consulte la sección sobre la
configuración de un servidor SSH .

104
MANUAL RASPBERRY
PI 4

Configuración de un punto de acceso inalámbrico enrutado


Una Raspberry Pi dentro de una red Ethernet se puede usar como un punto de
acceso inalámbrico, creando una red secundaria. La nueva red inalámbrica
resultante está completamente administrada por Raspberry Pi.
Si desea extender una red Ethernet existente a clientes inalámbricos, considere la
posibilidad de configurar un punto de acceso en puente .
+ - RPi ------- +
+ --- + 10.10.0.2 | + - Computadora portátil ---- +
| | WLAN AP + -))) (((- + WLAN Client |
| | 192.168.4.1 | | 192.168.4.2 |
| + ------------- + + ------------- +
+ - Enrutador ---- + |
| Cortafuegos | | + - PC # 2 ------ +
(Internet) --- WAN- + servidor DHCP + -LAN - + --- + 10.10.0.3 |
| 10.10.0.1 | | + ------------- +
+ ------------- + |
| + - PC # 1 ------ +
+ --- + 10.10.0.4 |
+ ------------- +
Se puede crear un punto de acceso inalámbrico enrutado usando las funciones
inalámbricas incorporadas de Raspberry Pi 4, Raspberry Pi 3 o Raspberry Pi Zero W,
o usando un dispositivo de seguridad inalámbrico USB adecuado que admita el modo
de punto de acceso. Es posible que algunas llaves USB necesiten cambios leves en
su configuración. Si tiene problemas con una llave USB inalámbrica, consulte los
foros
Esta documentación se probó en una Raspberry Pi 3B con una instalación nueva de
Raspberry Pi OS Buster.
Antes de que empieces
 Asegúrese de tener acceso administrativo a su Raspberry Pi. La configuración
de la red se modificará como parte de la instalación: se recomienda el acceso
local, con la pantalla y el teclado conectados a su Raspberry Pi.
105
MANUAL RASPBERRY
PI 4

 Conecte su Raspberry Pi a la red Ethernet e inicie el sistema operativo


Raspberry Pi.
 Asegúrese de que el sistema operativo Raspberry Pi en su Raspberry Pi esté
actualizado y reinicie si se instalaron paquetes en el proceso.
 Tome nota de la configuración IP de la red Ethernet a la que está conectada la
Raspberry Pi:
En este documento, asumimos que la red IP 10.10.0.0/24está configurada en
la LAN Ethernet y la Raspberry Pi administrará la red IP 192.168.4.0/24para
los clientes inalámbricos.
Seleccione otra red IP para inalámbrica, por ejemplo 192.168.10.0/24, si la red
IP 192.168.4.0/24ya está siendo utilizada por su LAN Ethernet.
 Tenga un cliente inalámbrico (computadora portátil, teléfono inteligente,…)
listo para probar su nuevo punto de acceso.
Instalar AP y software de gestión
Para funcionar como un punto de acceso, la Raspberry Pi necesita tener hostapd
instalado el paquete de software del punto de acceso:
sudo apt instalar hostapd
Habilite el servicio de punto de acceso inalámbrico y configúrelo para que se inicie
cuando arranque su Raspberry Pi:
sudo systemctl desenmascarar hostapd
sudo systemctl habilitar hostapd
Para proporcionar servicios de administración de red (DNS, DHCP) a clientes
inalámbricos, la Raspberry Pi debe tener dnsmasq instalado el paquete de software:
sudo apt install dnsmasq
Finalmente, instale netfilter-persistenty su complemento iptables-persistent. Esta
utilidad ayuda al guardar las reglas del firewall y restaurarlas cuando arranca la
Raspberry Pi:
sudo DEBIAN_FRONTEND = instalación apt no interactiva -y netfilter-persistent
iptables-persistent

106
MANUAL RASPBERRY
PI 4

La instalación del software está completa. Configuraremos los paquetes de


software más adelante.
Configurar el enrutador de red
La Raspberry Pi se ejecutará y administrará una red inalámbrica independiente.
También se enrutará entre las redes inalámbricas y Ethernet, proporcionando acceso
a Internet a los clientes inalámbricos. Si lo prefiere, puede optar por omitir el
enrutamiento omitiendo la sección "Habilitar el enrutamiento y el enmascaramiento
de IP" a continuación, y ejecutar la red inalámbrica en completo aislamiento.
Definir la configuración IP de la interfaz inalámbrica
La Raspberry Pi ejecuta un servidor DHCP para la red inalámbrica; esto requiere una
configuración de IP estática para la interfaz inalámbrica ( wlan0) en la Raspberry Pi.
La Raspberry Pi también actúa como el router en la red inalámbrica, y como es
costumbre, vamos a darle la primera dirección IP en la red: 192.168.4.1.
Para configurar la dirección IP estática, edite el archivo de configuración para dhcpcd
con:
sudo nano /etc/dhcpcd.conf
Vaya al final del archivo y agregue lo siguiente:
interfaz wlan0
dirección_ip estática = 192.168.4.1 / 24
nohook wpa_supplicant
Habilitar el enrutamiento y el enmascaramiento de IP
Esta sección configura la Raspberry Pi para permitir que los clientes inalámbricos
accedan a las computadoras en la red principal (Ethernet) y desde allí a Internet.

NOTA
Si desea impedir que los clientes inalámbricos accedan a la red Ethernet e Internet,
omita esta sección.
Para habilitar el enrutamiento, es decir, para permitir que el tráfico fluya de una red a
otra en la Raspberry Pi, cree un archivo usando el siguiente comando, con el
contenido a continuación:
sudo nano /etc/sysctl.d/routed-ap.conf
107
MANUAL RASPBERRY
PI 4

Contenido del archivo:


# Habilitar el enrutamiento IPv4
net.ipv4.ip_forward = 1
Habilitar el enrutamiento permitirá que los hosts de la red 192.168.4.0/24lleguen a la
LAN y al enrutador principal hacia Internet. Para permitir el tráfico entre los clientes
de esta red inalámbrica extranjera e Internet sin cambiar la configuración del
enrutador principal, la Raspberry Pi puede sustituir la dirección IP de los clientes
inalámbricos con su propia dirección IP en la LAN utilizando una regla de firewall
"enmascarada". .
 El enrutador principal verá todo el tráfico saliente de los clientes inalámbricos
como proveniente de la Raspberry Pi, lo que permitirá la comunicación con
Internet.
 La Raspberry Pi recibirá todo el tráfico entrante, sustituirá las direcciones IP y
reenviará el tráfico al cliente inalámbrico original.
Este proceso se configura agregando una sola regla de firewall en la Raspberry Pi:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Ahora guarde las reglas de firewall actuales para IPv4 (incluida la regla anterior) e
IPv6 para que el netfilter-persistent servicio las cargue en el arranque :
sudo netfilter-persistent save
Las reglas de filtrado se guardan en el directorio /etc/iptables/. Si en el futuro cambia
la configuración de su firewall, asegúrese de guardar la configuración antes de
reiniciar.

Configure los servicios DHCP y DNS para la red inalámbrica


Los servicios DHCP y DNS son proporcionados por dnsmasq. El archivo de
configuración predeterminado sirve como plantilla para todas las opciones de
configuración posibles, mientras que solo necesitamos unas pocas. Es más fácil
comenzar desde un archivo vacío.
Cambie el nombre del archivo de configuración predeterminado y edite uno nuevo:
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

108
MANUAL RASPBERRY
PI 4

sudo nano /etc/dnsmasq.conf


Agregue lo siguiente al archivo y guárdelo:
interface = wlan0 # Interfaz de escucha
rango-dhcp = 192.168.4.2,192.168.4.20,255.255.255.0,24h
# Grupo de direcciones IP servidas a través de DHCP
domain = wlan # Dominio DNS inalámbrico local
dirección = / gw.wlan / 192.168.4.1
# Alias para este enrutador
La Raspberry Pi entregará direcciones IP entre 192.168.4.2 y 192.168.4.20, con un
tiempo de arrendamiento de 24 horas, a los clientes DHCP inalámbricos. Debería
poder comunicarse con Raspberry Pi con el nombre gw.wlan de clientes
inalámbricos.
Hay muchas más opciones para dnsmasq; consulte el archivo de configuración
predeterminado ( /etc/dnsmasq.conf) o la documentación en línea para obtener más
detalles.
Asegurar el funcionamiento inalámbrico
Los países de todo el mundo regulan el uso de bandas de radiofrecuencia de
telecomunicaciones para garantizar un funcionamiento sin interferencias. El sistema
operativo Linux ayuda a los usuarios a cumplir con estas reglas al permitir que las
aplicaciones se configuren con un "código de país WiFi" de dos letras, por ejemplo,
US para una computadora utilizada en los Estados Unidos.
En el sistema operativo Raspberry Pi, la red inalámbrica de 5 GHz está deshabilitada
hasta que el usuario haya configurado un código de país WiFi, generalmente como
parte del proceso de instalación inicial (consulte las páginas de configuración
inalámbrica en esta sección para obtener más detalles).

Para asegurarse de que la radio WiFi no esté bloqueada en su Raspberry Pi, ejecute
el siguiente comando:
sudo rfkill desbloquear wlan

109
MANUAL RASPBERRY
PI 4

Esta configuración se restaurará automáticamente en el momento del arranque. A


continuación, definiremos un código de país apropiado en la configuración del
software del punto de acceso.
Configurar el software AP
Cree el hostapd archivo de configuración, ubicado en /etc/hostapd/hostapd.conf, para
agregar los diversos parámetros para su nueva red inalámbrica.
sudo nano /etc/hostapd/hostapd.conf
Agregue la siguiente información al archivo de configuración. Esta configuración
asume que estamos usando el canal 7, con un nombre de red NameOfNetworky una
contraseña AardvarkBadgerHedgehog. Tenga en cuenta que el nombre y la
contraseña no deben tener comillas. La frase de contraseña debe tener entre 8 y 64
caracteres de longitud.
country_code = GB
interfaz = wlan0
ssid = NameOfNetwork
hw_mode = g
canal = 7
macaddr_acl = 0
auth_algs = 1
ignore_broadcast_ssid = 0
wpa = 2
wpa_passphrase = AardvarkBadgerHedgehog
wpa_key_mgmt = WPA-PSK
wpa_pairwise = TKIP
rsn_pairwise = CCMP
Tenga en cuenta la línea country_code=GB: configura la computadora para usar las
frecuencias inalámbricas correctas en el Reino Unido. Adapte esta línea y
especifique el código ISO de dos letras de su país. Consulte Wikipedia para obtener
una lista de códigos de país ISO 3166-1 de dos letras.
Para usar la banda de 5 GHz, puede cambiar el modo de operaciones de
hw_mode=g a hw_mode=a. Los valores posibles para hw_mode son:
110
MANUAL RASPBERRY
PI 4

 a = IEEE 802.11a (5 GHz) (Raspberry Pi 3B + en adelante)


 b = IEEE 802.11b (2,4 GHz)
 g = IEEE 802.11g (2,4 GHz)
Tenga en cuenta que al cambiar el hw_mode, es posible que también deba cambiar
el channel; consulte Wikipedia para obtener una lista de combinaciones permitidas.
Ejecutando el nuevo AP inalámbrico
Ahora reinicie su Raspberry Pi y verifique que el punto de acceso inalámbrico esté
disponible automáticamente.
sudo systemctl reiniciar
Una vez que su Raspberry Pi se haya reiniciado, busque redes inalámbricas con su
cliente inalámbrico.
El SSID de red que especificó en el archivo /etc/hostapd/hostapd.conf ahora debería
estar presente y debería ser accesible con la contraseña especificada.
Si SSH está habilitado en la Raspberry Pi, debería ser posible conectarse a él desde
su cliente inalámbrico de la siguiente manera, asumiendo que la pi cuenta está
presente: ssh pi@192.168.4.1ossh pi@gw.wlan
Si su cliente inalámbrico tiene acceso a su Raspberry Pi (e Internet, si configuró el
enrutamiento), ¡felicidades por configurar su nuevo punto de acceso!
Si encuentra dificultades, comuníquese con los foros para obtener ayuda. Consulte
esta página en su mensaje.
Configuración de un punto de acceso inalámbrico con puente
La Raspberry Pi se puede utilizar como un punto de acceso inalámbrico en puente
dentro de una red Ethernet existente. Esto extenderá la red a computadoras y
dispositivos inalámbricos.
Si desea crear una red inalámbrica independiente, considere configurar un punto de
acceso enrutado .
+ - RPi ------- +
+ --- + 10.10.0.2 | + - Computadora portátil ---- +
| | WLAN AP + -))) (((- + WLAN Client |
| | Puente | | 10.10.0.5 |
| + ------------- + + ------------- +
111
MANUAL RASPBERRY
PI 4

+ - Enrutador ---- + |
| Cortafuegos | | + - PC # 2 ------ +
(Internet) --- WAN- + servidor DHCP + -LAN - + --- + 10.10.0.3 |
| 10.10.0.1 | | + ------------- +
+ ------------- + |
| + - PC # 1 ------ +
+ --- + 10.10.0.4 |
+ ------------- +
Se puede crear un punto de acceso inalámbrico en puente usando las funciones
inalámbricas incorporadas de Raspberry Pi 4, Raspberry Pi 3 o Raspberry Pi Zero W,
o usando un dongle inalámbrico USB adecuado que admita el modo de punto de
acceso. Es posible que algunas llaves USB necesiten cambios leves en su
configuración. Si tiene problemas con una llave USB inalámbrica, consulte los foros .
Esta documentación se probó en una Raspberry Pi 3B con una instalación nueva de
Raspberry Pi OS Buster.
Antes de que empieces
 Asegúrese de tener acceso administrativo a su Raspberry Pi. La configuración
de la red se restablecerá por completo como parte de la instalación: se
recomienda el acceso local, con la pantalla y el teclado conectados a su
Raspberry Pi.
NOTA
Si instala de forma remota a través de SSH, conéctese a su Raspberry Pi por
nombre en lugar de por dirección IP, por ejemplo , ya que la dirección de su
Raspberry Pi en la red probablemente cambiará después de la instalación.
También debe estar listo para agregar pantalla y teclado si es necesario en
caso de que pierda el contacto con su Raspberry Pi después de la
instalación.ssh pi@raspberrypi.local
 Conecte su Raspberry Pi a la red Ethernet e inicie el sistema operativo
Raspberry Pi.

112
MANUAL RASPBERRY
PI 4

 Asegúrese de que el sistema operativo Raspberry Pi en su Raspberry Pi esté


actualizado y reinicie si se instalaron paquetes en el proceso.
 Tenga un cliente inalámbrico (computadora portátil, teléfono inteligente,…)
listo para probar su nuevo punto de acceso.
Instalar AP y software de gestión
Para funcionar como un punto de acceso en puente, la Raspberry Pi necesita tener
hostapd instalado el paquete de software del punto de acceso:
sudo apt instalar hostapd
Habilite el servicio de punto de acceso inalámbrico y configúrelo para que se inicie
cuando arranque su Raspberry Pi:
sudo systemctl desenmascarar hostapd
sudo systemctl habilitar hostapd
La instalación del software está completa. Configuraremos el software del punto de
acceso más adelante.
Configurar el puente de red
Un dispositivo de red puente que se ejecuta en Raspberry Pi conectará las redes
Ethernet e inalámbricas utilizando sus interfaces integradas.
Crea un dispositivo de puente y completa el puente
Agregue un dispositivo de red puente nombrado br0 creando un archivo usando el
siguiente comando, con el contenido a continuación:
sudo nano /etc/systemd/network/bridge-br0.netdev
Contenido del archivo:
[NetDev]
Nombre = br0
Tipo = puente
Para eth0 crear un puente entre la red Ethernet y la red inalámbrica, primero agregue
la interfaz Ethernet incorporada ( ) como miembro de puente creando el siguiente
archivo:
sudo nano /etc/systemd/network/br0-member-eth0.network
Contenido del archivo:
[Fósforo]
113
MANUAL RASPBERRY
PI 4

Nombre = eth0

[La red]
Puente = br0
NOTA
El software del punto de acceso agregará la interfaz inalámbrica wlan0al puente
cuando se inicie el servicio. No es necesario crear un archivo para esa interfaz. Esta
situación es particular de las interfaces LAN inalámbricas.
Ahora habilite el systemd-networkd servicio para crear y poblar el puente cuando
arranque su Raspberry Pi:
sudo systemctl habilitar systemd-networkd
Definir la configuración de IP del dispositivo puente
A las interfaces de red que son miembros de un dispositivo puente nunca se les
asigna una dirección IP, ya que se comunican a través del puente. El dispositivo
puente en sí necesita una dirección IP para que pueda acceder a su Raspberry Pi en
la red.
dhcpcd, el cliente DHCP en la Raspberry Pi, solicita automáticamente una dirección
IP para cada interfaz activa. Por lo tanto, debemos bloquear el procesamiento de las
interfaces eth0 y wlan0 y dejar que se dhcpcd configuren solo a br0 través de DHCP.
sudo nano /etc/dhcpcd.conf
Agregue la siguiente línea cerca del principio del archivo (arriba de la primera
interface xxx línea, si corresponde):
denyinterfaces wlan0 eth0
Vaya al final del archivo y agregue lo siguiente:
interfaz br0
Con esta línea, la interfaz br0 se configurará de acuerdo con los valores
predeterminados a través de DHCP. Guarde el archivo para completar la
configuración IP de la máquina.
Asegurar el funcionamiento inalámbrico
Los países de todo el mundo regulan el uso de bandas de radiofrecuencia de
telecomunicaciones para garantizar un funcionamiento sin interferencias. El sistema
114
MANUAL RASPBERRY
PI 4

operativo Linux ayuda a los usuarios a cumplir con estas reglas al permitir que las
aplicaciones se configuren con un "código de país WiFi" de dos letras, por ejemplo,
US para una computadora utilizada en los Estados Unidos.
En el sistema operativo Raspberry Pi, la red inalámbrica de 5 GHz está deshabilitada
hasta que el usuario haya configurado un código de país WiFi, generalmente como
parte del proceso de instalación inicial (consulte las páginas de configuración
inalámbrica en esta sección para obtener más detalles).
Para asegurarse de que la radio WiFi no esté bloqueada en su Raspberry Pi, ejecute
el siguiente comando:
sudo rfkill desbloquear wlan
Esta configuración se restaurará automáticamente en el momento del arranque. A
continuación, definiremos un código de país apropiado en la configuración del
software del punto de acceso.
Configurar el software AP
Cree el hostapd archivo de configuración, ubicado en /etc/hostapd/hostapd.conf, para
agregar los diversos parámetros para su nueva red inalámbrica.
sudo nano /etc/hostapd/hostapd.conf
Agregue la siguiente información al archivo de configuración. Esta configuración
asume que estamos usando el canal 7, con un nombre de red NameOfNetwork y una
contraseña AardvarkBadgerHedgehog. Tenga en cuenta que el nombre y la
contraseña no deben tener comillas. La frase de contraseña debe tener entre 8 y 64
caracteres de longitud.
country_code = GB
interfaz = wlan0
puente = br0
ssid = NameOfNetwork
hw_mode = g
canal = 7
macaddr_acl = 0
auth_algs = 1
ignore_broadcast_ssid = 0
115
MANUAL RASPBERRY
PI 4

wpa = 2
wpa_passphrase = AardvarkBadgerHedgehog
wpa_key_mgmt = WPA-PSK
wpa_pairwise = TKIP
rsn_pairwise = CCMP
Tenga en cuenta las líneas interface=wlan0y bridge=br0: estos dirigen hostapda
agregar la wlan0interfaz como miembro del puente br0cuando se inicia el punto de
acceso, completando el puente entre Ethernet e inalámbrico.
Tenga en cuenta la línea country_code=GB: configura la computadora para usar las
frecuencias inalámbricas correctas en el Reino Unido. Adapte esta línea y
especifique el código ISO de dos letras de su país. Consulte Wikipedia para obtener
una lista de códigos de país ISO 3166-1 de dos letras.
Para usar la banda de 5 GHz, puede cambiar el modo de operaciones de
hw_mode=ga hw_mode=a. Los valores posibles para hw_modeson:
 a = IEEE 802.11a (5 GHz) (Raspberry Pi 3B + en adelante)
 b = IEEE 802.11b (2,4 GHz)
 g = IEEE 802.11g (2,4 GHz)
Tenga en cuenta que al cambiar el hw_mode, es posible que también deba cambiar
el channel; consulte Wikipedia para obtener una lista de combinaciones permitidas.
Ejecute el nuevo AP inalámbrico
Ahora reinicie su Raspberry Pi y verifique que el punto de acceso inalámbrico esté
disponible automáticamente.
sudo systemctl reiniciar
Una vez que su Raspberry Pi se haya reiniciado, busque redes inalámbricas con su
cliente inalámbrico. El SSID de red que especificó en el archivo
/etc/hostapd/hostapd.conf ahora debería estar presente y debería ser accesible con
la contraseña especificada.

Si su cliente inalámbrico tiene acceso a la red local e Internet, ¡enhorabuena por


configurar su nuevo punto de acceso!

116
MANUAL RASPBERRY
PI 4

Si encuentra dificultades, comuníquese con los foros para obtener ayuda. Consulte
esta página en su mensaje.
Usando un servidor proxy
Si desea que su Raspberry Pi acceda a Internet a través de un servidor proxy (tal vez
de una escuela u otro lugar de trabajo), deberá configurar su Pi para usar el servidor
antes de poder conectarse.
Necesitará:
 La dirección IP o el nombre de host y el puerto de su servidor proxy.
 Un nombre de usuario y contraseña para su proxy (si es necesario)
Configurando su Raspberry Pi
Tendrá que establecer tres variables de entorno ( http_proxy, https_proxyy no_proxy)
por lo que su Frambuesa Pi sabe cómo acceder al servidor proxy.
Abra una ventana de terminal y abra el archivo /etc/environment usando nano:
sudo nano / etc / environment
Agregue lo siguiente al /etc/environment archivo para crear la http_proxy variable:
exportar http_proxy = "http: // proxyipaddress: proxyport"
Reemplace proxyipaddressy proxyportcon la dirección IP y el puerto de su proxy.
NOTA
si su proxy requiere un nombre de usuario y contraseña, agréguelos usando el
siguiente formato:
exportar http_proxy = "http: // nombre de usuario: contraseña @ proxyipaddress:
proxyport"
Ingrese la misma información para la variable de entorno https_proxy:
exportar https_proxy = "http: // nombre de usuario: contraseña @ proxyipaddress:
proxyport"
Cree la no_proxy variable de entorno, que es una lista separada por comas de
direcciones para las que su Pi no debería usar el proxy:
exportar no_proxy = "localhost, 127.0.0.1"
Su /etc/environment archivo ahora debería verse así:
exportar http_proxy = "http: // nombre de usuario: contraseña @ proxyipaddress:
proxyport"
117
MANUAL RASPBERRY
PI 4

exportar https_proxy = "http: // nombre de usuario: contraseña @ proxyipaddress:


proxyport"
exportar no_proxy = "localhost, 127.0.0.1"

Ilustración 0-45 /etc/environment archivo

Presione Ctrl + Xpara guardar y salir.


Actualizar el sudoers archivo
Para que las operaciones que se ejecutan como sudo (por ejemplo, descarga e
instalación de software) utilicen las nuevas variables de entorno, deberá actualizar
sudoers.
Utilice el siguiente comando para abrir sudoers:
sudo visudo
Agregue la siguiente línea al archivo para sudousar las variables de entorno que
acaba de crear:
Valores predeterminados env_keep + = "http_proxy https_proxy no_proxy"

118
MANUAL RASPBERRY
PI 4

Ilustración 0-46 Línea al archivo para sudousar

Presione Ctrl + Xpara guardar y salir.


Reinicia tu Raspberry Pi
Reinicie su Raspberry Pi para que los cambios surtan efecto. Ahora debería poder
acceder a Internet a través de su servidor proxy.
Configuración HDMI
En la gran mayoría de los casos, el simple hecho de conectar su monitor equipado
con HDMI a la Raspberry Pi con un cable HDMI estándar conducirá automáticamente
a la Pi con la mejor resolución que admita el monitor. La Raspberry Pi Zero utiliza un
puerto mini HDMI, por lo que necesitará un cable o adaptador mini-HDMI a HDMI de
tamaño completo. En la Raspberry Pi 4 hay dos puertos micro HDMI, por lo que
necesitará uno o dos cables o adaptadores micro HDMI a HDMI de tamaño completo,
según la cantidad de pantallas que desee conectar. Debe conectar cualquier cable
HDMI antes de encender la Raspberry Pi.

119
MANUAL RASPBERRY
PI 4

La Raspberry Pi 4 puede manejar hasta dos pantallas, con una resolución de hasta
1080p a una frecuencia de actualización de 60Hz. Con una resolución de 4K, si
conecta dos pantallas, está limitado a una frecuencia de actualización de 30Hz.
También puede manejar una sola pantalla a 4K con una frecuencia de actualización
de 60Hz: esto requiere que la pantalla esté conectada al puerto HDMI adyacente a la
entrada de alimentación USB-C (etiquetada como HDMI0). También debe habilitar la
salida 4Kp60 configurando el hdmi_enable_4kp60=1 indicador en config.txt. Esta
bandera también se puede configurar utilizando la herramienta 'Configuración de
Raspberry Pi' dentro del entorno de escritorio.
Si está ejecutando el controlador de gráficos 3D (también conocido como controlador
FKMS), en el menú Preferencias encontrará una aplicación gráfica para configurar
pantallas estándar, incluidas configuraciones de múltiples pantallas.
NOTA
La herramienta de configuración de pantalla ( arandr) es una herramienta gráfica
para seleccionar modos de visualización y configurar varias pantallas. Puede
encontrar esta herramienta en el menú de Preferencias del escritorio, pero solo si se
está utilizando el controlador de gráficos 3D, ya que es este controlador el que
proporciona la funcionalidad de configuración de modo requerida. Utilice la opción de
menú Configurar para seleccionar la pantalla, la resolución y la orientación. Si está
utilizando una configuración de múltiples pantallas, arrastre alrededor de las
pantallas a la posición que desee. Cuando tenga la configuración requerida, haga clic
en el botón Marcar para aplicar la configuración.
Si está utilizando controladores de gráficos heredados o se encuentra en
circunstancias en las que la Raspberry Pi puede no ser capaz de determinar el mejor
modo, o tal vez desee específicamente establecer una resolución no predeterminada,
el resto de esta página puede ser útil.
NOTA
Todos los comandos están completamente documentados en la sección config.txt de
la documentación.

120
MANUAL RASPBERRY
PI 4

Grupos y modo HDMI


HDMI tiene dos grupos comunes: CEA (Consumer Electronics Association, el
estándar que suelen utilizar los televisores) y DMT (Display Monitor Timings, el
estándar que suelen utilizar los monitores). Cada grupo anuncia un conjunto
particular de modos, donde un modo describe la resolución, la frecuencia de cuadros,
la frecuencia de reloj y la relación de aspecto de la salida.
¿Qué modos admite mi dispositivo?
Puede usar la tvservice aplicación en la línea de comando para determinar qué
modos son compatibles con su dispositivo, junto con otros datos útiles:
 tvservice -s muestra el estado actual de HDMI, incluido el modo y la resolución
 tvservice -m CEA enumera todos los modos CEA compatibles
 tvservice -m DMT enumera todos los modos DMT compatibles
Si está utilizando un Pi 4 con más de una pantalla adjunta, es tvservice necesario
que le digan a qué dispositivo pedir información. Puede obtener ID de pantalla para
todos los dispositivos conectados mediante:
tvservice -l
Puede especificar qué pantalla tvservice utiliza agregando -v <display id> al tvservice
comando, por ejemplo:
 tvservice -v 7 -m CEA, enumera todos los modos CEA compatibles para la ID
de pantalla 7
Configuración de un modo HDMI específico
La configuración de un modo específico se realiza mediante las entradas hdmi_group
y hdmi_mode config.txt. La entrada de grupo selecciona entre CEA o DMT, y el modo
selecciona la resolución y la velocidad de fotogramas. Puede encontrar tablas de
modos en la página de configuración de video config.txt , pero debe usar el tvservice
comando descrito anteriormente para averiguar exactamente qué modos admite su
dispositivo.
En el Pi 4, para especificar el puerto HDMI, agregue un identificador de índice a la
entrada hdmi_groupo hdmi_mode en config.txt, por ejemplo hdmi_mode:0 o
hdmi_group:1.

121
MANUAL RASPBERRY
PI 4

Configuración de un modo HDMI personalizado


Hay dos opciones para configurar un modo personalizado: hdmi_cvt y hdmi_timings.
hdmi_cvt establece una entrada personalizada de sincronización de video
coordinada, que se describe completamente aquí: Configuración de video
En algunos casos excepcionales, puede ser necesario definir los requisitos de reloj
exactos de la señal HDMI. Este es un modo totalmente personalizado y se activa
configurando hdmi_group=2 y hdmi_mode=87. Luego puede usar el hdmi_timings
comando config.txt para establecer los parámetros específicos para su pantalla.
hdmi_timings especifica todos los tiempos que necesita usar una señal HDMI. Estos
tiempos se encuentran generalmente en la hoja de datos de la pantalla que se está
utilizando.
hdmi_timings=<h_active_pixels> <h_sync_polarity> <h_front_porch>
<h_sync_pulse> <h_back_porch> <v_active_pixels> <h_sync_polarity>
<h_front_porch> <h_sync_pulse> <h_back_porch> <v_active_lines>
<v_sync_polarity> v_front_porch> <v_sync_pulse> <v_back_porch>
<v_sync_offset_a> <v_sync_offset_b> <pixel_rep> <frame_rate> <interlaced>
<pixel_freq> <aspect_ratio>
Momento Objetivo

h_active_pixels La resolución horizontal


0 o 1 para definir la polaridad de
h_sync_polarity
sincronización horizontal
Número de píxeles horizontales del
h_front_porch
porche delantero
Ancho del pulso de sincronización
h_sync_pulse
horizontal
Número de píxeles horizontales del
h_back_porch
porche trasero
v_active_lines La resolución vertical
0 o 1 para definir la polaridad de
v_sync_polarity
sincronización vertical
Número de píxeles verticales del
v_front_porch
porche delantero
122
MANUAL RASPBERRY
PI 4

Ancho del pulso de sincronización


v_sync_pulse
vertical
Número de píxeles verticales del
v_back_porch
porche trasero
v_sync_offset_a Dejar a las 0
v_sync_offset_b Dejar a las 0
pixel_rep Dejar a las 0
frame_rate Velocidad de fotogramas del modo
0 para no entrelazado, 1 para
interlaced
entrelazado
pixel_freq El modo de frecuencia de píxeles
aspect_ratio La relación de aspecto requerida
Tabla 0-9 Configuración HDMI

aspect_ratio debe ser uno de los siguientes:


Proporción aspect_ratio IDENTIFICACIÓN

4:3 1
14:9 2
16:9 3
5:4 4
16:10 5
15:9 6
21:9 7
64:27 8
Tabla 0-10 aspect_ratio identificación

Para el Pi4, para especificar el puerto HDMI, puede agregar un identificador de índice
al config.txt. p . ej . hdmi_cvt:0=... o hdmi_timings:1=.... Si no se especifica ningún
identificador de puerto, la configuración se aplica al puerto 0.
Solución de problemas de su HDMI
En algunos casos excepcionales, es posible que deba aumentar la potencia de la
unidad HDMI, por ejemplo, cuando hay manchas en la pantalla o cuando utiliza

123
MANUAL RASPBERRY
PI 4

cables muy largos. Hay un elemento config.txt para hacer esto config_hdmi_boost,
que está documentado en la página de video config.txt .
NOTA
La Raspberry Pi 4B aún no es compatible config_hdmi_boost, la compatibilidad con
esta opción se agregará en una futura actualización de software.
Rotar su pantalla
Las opciones para rotar la pantalla de su Raspberry Pi dependen del software de
controlador de pantalla que esté ejecutando, que también puede depender de la
Raspberry Pi que esté utilizando.
Controlador de gráficos KMS completo o falso
NOTA
Este es el valor predeterminado para Raspberry Pi 4 Modelo B.
Si está ejecutando el escritorio Raspberry Pi, la rotación se logra mediante el uso del
menú del Screen Configuration Utility escritorio Preferences. Esto mostrará una
representación gráfica de la pantalla o pantallas conectadas a la Raspberry Pi. Haga
clic con el botón derecho en la pantalla que desea rotar y seleccione la opción
requerida.
También es posible cambiar esta configuración usando la xrandr opción de línea de
comando . Los siguientes comandos dan rotaciones de 0 °, -90 °, + 90 ° y 180 °
respectivamente.
xrandr --output HDMI-1 --rotate normal
xrandr --output HDMI-1 --rotate left
xrandr --output HDMI-1 --rotate right
xrandr --output HDMI-1 --rotate inverted
Tenga en cuenta que la –output entrada específica a qué dispositivo se aplica la
rotación. Puede determinar el nombre del dispositivo simplemente escribiendo xrandr
en la línea de comando que mostrará información, incluido el nombre, de todos los
dispositivos conectados.
También puede usar la línea de comando para reflejar la pantalla usando la –reflect
opción. La reflexión puede ser una de "x", "y" "normales" o "xy". Esto hace que el
contenido de salida se refleje en los ejes especificados. Por ejemplo:
124
MANUAL RASPBERRY
PI 4

xrandr --output HDMI-1 --reflect x


Si está utilizando solo la consola (sin escritorio gráfico), deberá configurar los
indicadores de línea de comandos del kernel adecuados. Cambie la configuración de
la consola como se describe en esta página .
Controlador de gráficos heredados
NOTA
Este es el valor predeterminado para los modelos anteriores a la Raspberry Pi 4
Modelo B.
Hay config.txt opciones para rotar cuando se utilizan los controladores de pantalla
heredados.
display_hdmi_rotate se usa para rotar la pantalla HDMI, display_lcd_rotate se usa
para rotar cualquier panel LCD adjunto (usando la interfaz DSI o DPI). Estas
opciones rotan tanto el escritorio como la consola. Cada opción toma uno de los
siguientes parámetros:
mostrar _ * _ rotar resultado

0 sin rotación
girar 90 grados en el sentido de las
1
agujas del reloj
girar 180 grados en el sentido de las
2
agujas del reloj
girar 270 grados en el sentido de las
3
agujas del reloj
0x10000 volteo horizontal
0x20000 volteo vertical
Tabla 0-11 Opciones config.txt

Tenga en cuenta que las opciones de rotación de 90 y 270 grados requieren


memoria adicional en la GPU, por lo que no funcionarán con la división de GPU de
16 MB.
Puede combinar la configuración de rotación con los giros agregándolos. También
puede tener giros horizontales y verticales de la misma manera. Por ejemplo, una

125
MANUAL RASPBERRY
PI 4

rotación de 180 grados con un giro vertical y horizontal será 0x20000 + 0x10000 + 2
= 0x30002.

Configuración de audio
La Raspberry Pi tiene hasta tres modos de salida de audio: HDMI 1 y 2, si están
presentes, y un conector para auriculares. Puede cambiar entre estos modos en
cualquier momento.
Si su monitor HDMI o TV tiene altavoces integrados, el audio se puede reproducir a
través del cable HDMI, pero puede cambiarlo a unos auriculares u otros altavoces
conectados a la toma de auriculares. Si su pantalla dice tener altavoces, el sonido se
emite a través de HDMI de forma predeterminada; de lo contrario, se emite a través
de la toma de auriculares. Es posible que esta no sea la configuración de salida
deseada o que la detección automática no sea precisa, en cuyo caso puede cambiar
manualmente la salida.
Cambio de la salida de audio
Hay dos formas de configurar la salida de audio; usando el control de volumen del
escritorio, o usando la raspi-config herramienta de línea de comandos.
Usando el escritorio
Al hacer clic con el botón derecho en el icono de volumen en la barra de tareas del
escritorio, aparece el selector de salida de audio; esto le permite seleccionar entre
las salidas de audio internas. También le permite seleccionar cualquier dispositivo de
audio externo, como tarjetas de sonido USB y dispositivos de audio Bluetooth. Se
muestra una marca verde contra el dispositivo de salida de audio actualmente
seleccionado; simplemente haga clic con el botón izquierdo en la salida deseada en
el menú emergente para cambiar esto. El control de volumen y el silencio funcionan
en el dispositivo seleccionado actualmente.
Usando raspi-config
Abra raspi-config ingresando lo siguiente en la línea de comando:
sudo raspi-config
Esto abrirá la pantalla de configuración:

126
MANUAL RASPBERRY
PI 4

Selecciona System Options (Actualmente la opción 1, pero la tuya puede ser


diferente) y presiona Enter.

Ahora seleccione la opción nombrada, Audio (actualmente la opción S2, pero la suya
puede ser diferente) y presione Enter:
Seleccione el modo requerido, presione Enter y presione la tecla de flecha derecha
para salir de la lista de opciones, luego seleccione Finish para salir de la herramienta
de configuración.
Una vez que haya terminado de modificar la configuración de audio, debe reiniciar su
Raspberry Pi para que los cambios surtan efecto.
Solución de problemas de su HDMI
En algunos casos raros, es necesario editar config.txt para forzar el modo HDMI (a
diferencia del modo DVI, que no envía sonido). Puede hacer esto editando
/boot/config.txt y configurando hdmi_drive=2, luego reiniciando para que el cambio
surta efecto.
Configuración de almacenamiento externo
Puede conectar su disco duro externo, SSD o memoria USB a cualquiera de los
puertos USB de la Raspberry Pi y montar el sistema de archivos para acceder a los
datos almacenados en él.
De forma predeterminada, su Raspberry Pi monta automáticamente algunos de los
sistemas de archivos populares como FAT, NTFS y HFS + en la /media/pi/<HARD-
DRIVE-LABEL> ubicación.
NOTA
Raspberry Pi OS Lite no implementa el montaje automático.
Para configurar su dispositivo de almacenamiento de modo que siempre se monte en
una ubicación específica de su elección, debe montarlo manualmente.
Montaje de un dispositivo de almacenamiento
Puede montar su dispositivo de almacenamiento en una ubicación de carpeta
específica. Es convencional hacer esto dentro de la /mnt carpeta, por ejemplo
/mnt/mydisk. Tenga en cuenta que la carpeta debe estar vacía.

127
MANUAL RASPBERRY
PI 4

1. Conecte el dispositivo de almacenamiento a un puerto USB en la Raspberry


Pi.
2. Enumere todas las particiones del disco en la Pi usando el siguiente comando:
sudo lsblk -o UUID, NAME, FSTYPE, SIZE, MOUNTPOINT, LABEL, MODEL
La Raspberry Pi usa puntos de montaje /y /boot. Su dispositivo de
almacenamiento aparecerá en esta lista, junto con cualquier otro
almacenamiento conectado.
3. Utilice las columnas TAMAÑO, ETIQUETA y MODELO para identificar el
nombre de la partición del disco que apunta a su dispositivo de
almacenamiento. Por ejemplo sda1,.
4. La columna FSTYPE contiene el tipo de sistema de archivos. Si su dispositivo
de almacenamiento utiliza un sistema de archivos exFAT, instale el
controlador exFAT:
actualización de sudo apt
sudo apt instalar exfat-fuse
5. Si su dispositivo de almacenamiento utiliza un sistema de archivos NTFS,
tendrá acceso de solo lectura. Si desea escribir en el dispositivo, puede
instalar el controlador ntfs-3g:
actualización de sudo apt
sudo apt install ntfs-3g
6. Ejecute el siguiente comando para obtener la ubicación de la partición del
disco:
sudo blkid
Por ejemplo /dev/sda1,.
7. Cree una carpeta de destino para que sea el punto de montaje del dispositivo
de almacenamiento. El nombre del punto de montaje utilizado en este caso es
mydisk. Puede especificar un nombre de su elección:
sudo mkdir / mnt / mydisk
8. Monte el dispositivo de almacenamiento en el punto de montaje que creó:
sudo mount / dev / sda1 / mnt / mydisk

128
MANUAL RASPBERRY
PI 4

9. Verifique que el dispositivo de almacenamiento esté montado correctamente


enumerando el contenido:
ls / mnt / mydisk
Configuración del montaje automático
Puede modificar el fstabarchivo para definir la ubicación donde el dispositivo de
almacenamiento se montará automáticamente cuando se inicie Raspberry Pi. En el
fstabarchivo, la partición del disco se identifica mediante el identificador único
universal (UUID).
1. Obtenga el UUID de la partición del disco:
sudo blkid
2. Busque la partición del disco en la lista y anote el UUID. Por ejemplo,
5C24-1453.
3. Abra el archivo fstab con un editor de línea de comandos como nano:
sudo nano / etc / fstab
4. Agregue la siguiente línea en el fstab archivo:
UUID = 5C24-1453 / mnt / mydisk fstype defaults, auto, users, rw, nofail 0 0
Reemplazar fstype con el tipo de sistema de archivos, que encontró en el
paso 2 de 'Montaje de un dispositivo de almacenamiento' por encima, por
ejemplo: ntfs.
5. Si el tipo de sistema de archivos es FAT o NTFS, agréguelo ,umask=000
inmediatamente después nofail; esto permitirá a todos los usuarios acceso
completo de lectura / escritura a todos los archivos del dispositivo de
almacenamiento.
Ahora que ha configurado una entrada fstab, puede iniciar su Raspberry Pi con o sin
el dispositivo de almacenamiento adjunto. Antes de desconectar el dispositivo, debe
apagar el Pi o desmontarlo manualmente siguiendo los pasos de 'Desmontaje de un
dispositivo de almacenamiento' a continuación.
NOTA
Si no tiene el dispositivo de almacenamiento conectado cuando se inicia la Pi, la Pi
tardará 90 segundos adicionales en iniciarse. Puede acortarlo agregando ,x-
systemd.device-timeout=30 inmediatamente después nofail en el paso 4. Esto
129
MANUAL RASPBERRY
PI 4

cambiará el tiempo de espera a 30 segundos, lo que significa que el sistema solo


esperará 30 segundos antes de dejar de intentar montar el disco.
Para obtener más información sobre cada comando de Linux, consulte la página de
manual específica utilizando el man comando. Por ejemplo man fstab,.
Desmontaje de un dispositivo de almacenamiento
Cuando la Raspberry Pi se apaga, el sistema se encarga de desmontar el dispositivo
de almacenamiento para que sea seguro desenchufarlo. Si desea desmontar
manualmente un dispositivo, puede usar el siguiente comando:
sudo umount / mnt / mydisk
Si recibe un error que indica que el "destino está ocupado", significa que el
dispositivo de almacenamiento no se ha desmontado. Si no se mostró ningún error,
ahora puede desconectar el dispositivo de forma segura.
Lidiar con 'el objetivo está ocupado'
El mensaje 'el destino está ocupado' significa que hay archivos en el dispositivo de
almacenamiento que están siendo utilizados por un programa. Para cerrar los
archivos, utilice el siguiente procedimiento.
1. Cierre cualquier programa que tenga archivos abiertos en el dispositivo de
almacenamiento.
2. Si tiene una terminal abierta, asegúrese de que no se encuentra en la carpeta
donde está montado el dispositivo de almacenamiento, o en una subcarpeta
del mismo.
3. Si aún no puede desmontar el dispositivo de almacenamiento, puede usar la
lsof herramienta para verificar qué programa tiene archivos abiertos en el
dispositivo. Primero debe instalar lsof usando apt:
actualización de sudo apt
sudo apt install lsof
Para usar lsof:
lsof / mnt / mydisk
Localización de su Raspberry Pi
Puede configurar su Raspberry Pi para que coincida con su configuración regional.

130
MANUAL RASPBERRY
PI 4

Cambiar el idioma
Si desea seleccionar un idioma diferente, use raspi-config .
Configurar el teclado
Si desea seleccionar un teclado diferente, use raspi-config .
Cambiar la zona horaria
Una vez más, esto es algo que puede cambiar usando la herramienta raspi-config .

Cambiar la configuración de pines predeterminada


ADVERTENCIA
Esta función está destinada a usuarios avanzados.
A partir de julio de 2014, el firmware de Raspberry Pi admite configuraciones de
pines predeterminadas personalizadas a través de un archivo de blob de árbol de
dispositivos proporcionado por el usuario. Para saber si su firmware es lo
suficientemente reciente, ejecute vcgencmd version.
Pines del dispositivo durante la secuencia de inicio
Durante la secuencia de arranque, los pines GPIO pasan por varias acciones.
1. Encendido: pines predeterminados para entradas con tirones
predeterminados; los tirones predeterminados para cada pin se describen en
la hoja de datos
2. Configuración por el bootrom
3. Ajuste por bootcode.bin
4. Configuración por dt-blob.bin (esta página)
5. Configuración mediante el comando GPIO en config.txt
6. Pines de firmware adicionales (por ejemplo, UARTS)
7. Árbol de kernel / dispositivo
En un reinicio por software, se aplica el mismo procedimiento, excepto para las
extracciones predeterminadas, que solo se aplican en un reinicio de encendido.
Tenga en cuenta que puede llevar unos segundos pasar de la etapa 1 a la etapa 4.
Durante ese tiempo, los pines GPIO pueden no estar en el estado esperado por los
periféricos conectados (como se define en dtblob.bin o config.txt). Dado que los

131
MANUAL RASPBERRY
PI 4

diferentes pines GPIO tienen diferentes tirones predeterminados, debe realizar una
de las siguientes acciones para su periférico:
 Elija pines GPIO que por defecto se extraigan según lo requiera el periférico
en el reinicio
 Retrasar el inicio del periférico hasta que se alcance la etapa 4/5
 Agregue una resistencia pull-up / -down adecuada
Proporcionar un blob de árbol de dispositivos personalizado
Para compilar un .dts archivo fuente ( ) del árbol de dispositivos en un archivo blob
( .dtb) del árbol de dispositivos, el compilador del árbol de dispositivos debe
instalarse ejecutando sudo apt install device-tree-compiler. El dtc comando se puede
utilizar de la siguiente manera:
sudo dtc -I dts -O dtb -o /boot/dt-blob.bin dt-blob.dts
Del mismo modo, un .dtb archivo se puede volver a convertir en un .dts archivo, si es
necesario.
dtc -I dtb -O dts -o dt-blob.dts /boot/dt-blob.bin
Secciones del dt-blob
Se dt-blob.bin utiliza para configurar el blob binario (VideoCore) en el momento del
arranque. Actualmente no lo usa el kernel de Linux, pero se agregará una sección de
kernel en una etapa posterior, cuando reconfiguremos el kernel de Raspberry Pi para
usar un dt-blob para la configuración. El dt-blob puede configurar todas las versiones
de Raspberry Pi, incluido el módulo Compute, para usar la configuración alternativa.
Las siguientes secciones son válidas en dt-blob:
1. Videocore
Esta sección contiene toda la información del blob de VideoCore. Todas las
secciones posteriores deben incluirse dentro de esta sección.
2. pins_*
Hay una serie de pins_* secciones separadas, basadas en modelos
particulares de Raspberry Pi, a saber:
 pins_rev1 Configuración de pines Rev1. Hay algunas diferencias debido
a los pines I2C movidos.

132
MANUAL RASPBERRY
PI 4

 Configuración de pin pins_rev2 Rev2. Esto incluye los pines de códec


adicionales en P5.
 pins_bplus1 Modelo B + rev 1.1, incluido el conector completo de 40
pines.
 pins_bplus2 Modelo B + rev 1.2, intercambiando los pines de baja
potencia y lan-run.
 pins_aplus Modelo A +, sin Ethernet.
 pins_2b1 Pi 2 Modelo B rev 1.0; controla el SMPS a través de I2C0.
 pins_2b2 Pi 2 Modelo B rev 1.1; controla el SMPS a través del software
I2C en 42 y 43.
 pins_3b1 Pi 3 Modelo B rev 1.0
 pins_3b2 Pi 3 Modelo B rev 1.2
 pins_3bplus Pi 3 Modelo B +
 pins_3aplus Pi 3 Modelo A +
 pins_pi0 El Pi Zero
 pins_pi0w El Pi Zero W
 pins_cm El módulo de cálculo. El valor predeterminado para esto es el
predeterminado para el chip, por lo que es una fuente útil de
información sobre los pull ups / downs predeterminados en el chip.
 pins_cm3 El módulo de cómputo versión 3
Cada pins_*sección puede contener pin_configy pin_definessecciones.
3. pin_config
La pin_config sección se utiliza para configurar los pines individuales. Cada
elemento de esta sección debe ser una sección de pin con nombre, como, por
ejemplo pin@p32, GPIO32. Hay una sección especial pin@default, que
contiene la configuración predeterminada para cualquier cosa que no se
mencione específicamente en la sección pin_config.
4. pin@pinname
Esta sección puede contener cualquier combinación de los siguientes
elementos:
133
MANUAL RASPBERRY
PI 4

a. polarity
 active_high
 active_low
b. termination
 pull_up
 pull_down
 no_pulling
c. startup_state
 active
 inactive
d. function
 input
 output
 sdcard
 i2c0
 i2c1
 spi
 spi1
 spi2
 smi
 dpi
 pcm
 pwm
 uart0
 uart1
 gp_clk
 emmc
 arm_jtag

134
MANUAL RASPBERRY
PI 4

e. drive_strength_mA La fuerza de la unidad se usa para establecer una


fuerza para los pines. Tenga en cuenta que solo puede especificar una
potencia de unidad para el banco. <8> y <16> son valores válidos.
5. pin_defines
Esta sección se utiliza para configurar funciones específicas de VideoCore en
pines particulares. Esto permite al usuario mover la clavija de activación de
alimentación de la cámara a un lugar diferente, o mover la posición de
conexión en caliente HDMI: cosas que Linux no controla. Consulte el archivo
DTS de ejemplo a continuación.

Configuración del reloj


Es posible cambiar la configuración de los relojes a través de esta interfaz, ¡aunque
puede ser difícil predecir los resultados! La configuración del sistema de reloj es muy
compleja. Hay cinco PLL separados, y cada uno tiene su propia frecuencia VCO fija
(o variable, en el caso de PLLC). Cada VCO tiene varios canales diferentes que se
pueden configurar con una división diferente de la frecuencia del VCO. Cada uno de
los destinos de reloj se puede configurar para que provenga de uno de los canales
de reloj, aunque existe una asignación restringida de origen a destino, por lo que no
todos los canales se pueden enrutar a todos los destinos de reloj.
Aquí hay un par de configuraciones de ejemplo que puede usar para alterar relojes
específicos. Agregaremos a este recurso cuando se realicen solicitudes de
configuraciones de reloj.
clock_routing {
vco @ PLLA {frecuencia = <1966080000>; };
chan @ APER {div = <4>; };
reloj @ GPCLK0 {pll = "PLLA"; chan = "APER"; };
};

clock_setup {
reloj @ PWM {freq = <2400000>; };
reloj @ GPCLK0 {frecuencia = <12288000>; };
135
MANUAL RASPBERRY
PI 4

reloj @ GPCLK1 {freq = <25000000>; };


};
Lo anterior establecerá el PLLA en un VCO de origen que se ejecute en 1.96608GHz
(los límites para este VCO son 600MHz - 2.4GHz), cambiará el canal APER a / 4 y
configurará GPCLK0 para que se obtenga de PLLA a través de APER. Se utiliza para
dar a un códec de audio los 12288000Hz que necesita para producir el rango de
frecuencias de 48000.
Ejemplo de archivo de origen del árbol de dispositivos
El archivo de ejemplo proviene del repositorio de firmware,
https://github.com/raspberrypi/firmware/blob/master/extra/dt-blob.dts . Este es el blob
maestro de Raspberry Pi, del que generalmente se derivan otros.
Árboles de dispositivos, superposiciones y parámetros
Los kernels y el firmware de Raspberry Pi utilizan un árbol de dispositivos (DT) para
describir el hardware presente en el Pi. Estos árboles de dispositivos pueden incluir
parámetros DT que proporcionan cierto grado de control sobre algunas funciones
integradas. Las superposiciones DT permiten describir y configurar hardware externo
opcional y también admiten parámetros para un mayor control.
El cargador de firmware ( start.elf y sus variantes) es responsable de cargar el DTB
(Device Tree Blob, un archivo DT legible por máquina). Elige cuál cargar según el
número de revisión de la placa y realiza ciertas modificaciones para adaptarlo aún
más (tamaño de la memoria, direcciones Ethernet, etc.). Esta personalización del
tiempo de ejecución evita la necesidad de muchos DTB con solo pequeñas
diferencias.
config.txt se escanea en busca de parámetros proporcionados por el usuario, junto
con las superposiciones y sus parámetros, que luego se aplican. El cargador
examina el resultado para saber (por ejemplo) qué UART, si lo hay, se utilizará para
la consola. Finalmente lanza el kernel, pasando un puntero al DTB fusionado.
Árboles de dispositivos
Un árbol de dispositivos (DT) es una descripción del hardware de un sistema. Debe
incluir el nombre de la CPU base, su configuración de memoria y cualquier periférico
(interno y externo). Un DT no debe usarse para describir el software, aunque al

136
MANUAL RASPBERRY
PI 4

enumerar los módulos de hardware, generalmente hace que se carguen los


módulos del controlador. Es útil recordar que se supone que los DT son neutrales
para el sistema operativo, por lo que cualquier cosa que sea específica de Linux
probablemente no debería estar allí.
Un árbol de dispositivos representa la configuración de hardware como una jerarquía
de nodos. Cada nodo puede contener propiedades y subnodos. Las propiedades se
denominan matrices de bytes, que pueden contener cadenas, números (big-endian),
secuencias arbitrarias de bytes y cualquier combinación de los mismos. Por analogía
con un sistema de archivos, los nodos son directorios y las propiedades son
archivos. Las ubicaciones de los nodos y las propiedades dentro del árbol se pueden
describir mediante una ruta, con barras como separadores y una sola barra ( /) para
indicar la raíz.
Sintaxis básica de DTS
Los árboles de dispositivos generalmente se escriben en una forma textual conocida
como fuente de árbol de dispositivos (DTS) y se almacenan en archivos con un .dts
sufijo. La sintaxis DTS es similar a C, con llaves para agrupar y punto y coma al final
de cada línea. Tenga en cuenta que DTS requiere punto y coma después de las
llaves de cierre: piense en C struct s en lugar de funciones. El formato binario
compilado se conoce como árbol de dispositivos planos (FDT) o Blob de árbol de
dispositivos (DTB) y se almacena en .dtb archivos.
El siguiente es un árbol simple en el .dts formato:
/ dts-v1 /;
/ include / "common.dtsi";

/{
nodo1 {
a-string-property = "Una cadena";
a-string-list-property = "primera cadena", "segunda cadena";
a-byte-data-property = [0x01 0x23 0x34 0x56];
primo: child-node1 {

137
MANUAL RASPBERRY
PI 4

propiedad del primer hijo;


propiedad-segundo-hijo = <1>;
a-string-property = "Hola, mundo";
};
child-node2 {
};
};
node2 {
una-propiedad-vacía;
propiedad-a-celda = <1 2 3 4>; / * cada número (celda) es un uint32 * /
child-node1 {
mi-primo = <& primo>;
};
};
};

/ node2 {
otra-propiedad-para-nodo2;
};
Este árbol contiene:
 una cabecera requerido: /dts-v1/.
 La inclusión de otro archivo DTS, convencionalmente nombrado *.dtsi y
análogo a un .h archivo de encabezado en C - vea un aparte sobre / incluir / a
continuación.
 un solo nodo raíz: /
 un par de nodos secundarios: node1 y node2
 algunos hijos para el nodo1: child-node1 y child-node2
 una etiqueta (cousin) y una referencia a esa etiqueta (&cousin): consulte
Etiquetas y referencias a continuación.
 varias propiedades esparcidas por el árbol

138
MANUAL RASPBERRY
PI 4

 un nodo repetido (/node2) - vea un aparte sobre / incluir / a continuación.


Las propiedades son pares clave-valor simples donde el valor puede estar vacío o
contener un flujo de bytes arbitrario. Si bien los tipos de datos no están codificados
en la estructura de datos, existen algunas representaciones de datos fundamentales
que se pueden expresar en un archivo de origen de árbol de dispositivos.
Las cadenas de texto (terminadas en NUL) se indican con comillas dobles:
string-property = "una cadena";
Las celdas son enteros sin signo de 32 bits delimitados por corchetes angulares:
propiedad-celda = <0xbeef 123 0xabcd1234>;
Los datos de bytes arbitrarios se delimitan con corchetes y se ingresan en
hexadecimal:
propiedad-binaria = [01 23 45 67 89 ab cd ef];
Los datos de diferentes representaciones se pueden concatenar usando una coma:
propiedad-mixta = "una cadena", [01 23 45 67], <0x12345678>;
Las comas también se utilizan para crear listas de cadenas:
string-list = "pez rojo", "pez azul";
Un aparte sobre /include/
La /include/ directiva da como resultado una inclusión textual simple, muy parecida a
la #include directiva de C , pero una característica del compilador del árbol de
dispositivos conduce a diferentes patrones de uso. Dado que los nodos se nombran,
potencialmente con rutas absolutas, es posible que el mismo nodo aparezca dos
veces en un archivo DTS (y sus inclusiones). Cuando esto sucede, los nodos y las
propiedades se combinan, intercalando y sobrescribiendo las propiedades según sea
necesario (los valores posteriores anulan los anteriores).
En el ejemplo anterior, la segunda aparición de /node2 hace que se agregue una
nueva propiedad al original:
/ node2 {
una-propiedad-vacía;
propiedad-a-celda = <1 2 3 4>; / * cada número (celda) es un uint32 * /
otra-propiedad-para-nodo2;

139
MANUAL RASPBERRY
PI 4

child-node1 {
mi-primo = <& primo>;
};
};
Por lo tanto, es posible .dtsi sobrescribir o proporcionar valores predeterminados
para varios lugares en un árbol.
Etiquetas y referencias
A menudo es necesario que una parte del árbol se refiera a otra, y hay cuatro formas
de hacerlo:

1. Cadenas de ruta
Las rutas deben ser autoexplicativas, por analogía con un sistema de
archivos: /soc/i2s@7e203000 es la ruta completa al dispositivo I2S en
BCM2835 y BCM2836. Tenga en cuenta que, aunque es fácil construir una
ruta a una propiedad (por ejemplo, /soc/i2s@7e203000/status), las API
estándar no lo hacen; primero encuentra un nodo, luego elige las propiedades
de ese nodo.
2. Phandles
Un phandle es un entero único de 32 bits asignado a un nodo en su phandle
propiedad. Por razones históricas, es posible que también vea una
coincidencia redundante linux,phandle. los faros se numeran secuencialmente,
comenzando desde 1; 0 no es un phandle válido. Por lo general, el compilador
DT los asigna cuando encuentra una referencia a un nodo en un contexto
entero, generalmente en forma de etiqueta (ver más abajo). Las referencias a
los nodos que utilizan phandles simplemente se codifican como los valores
enteros correspondientes (celda); no hay un marcado que indique que deben
interpretarse como phandles, ya que está definido por la aplicación.
3. Etiquetas
Así como una etiqueta en C da un nombre a un lugar en el código, una
etiqueta DT asigna un nombre a un nodo en la jerarquía. El compilador toma

140
MANUAL RASPBERRY
PI 4

referencias a etiquetas y las convierte en rutas cuando se usa en el contexto


de cadena ( &node) y phandles en el contexto entero ( <&node>); las etiquetas
originales no aparecen en la salida compilada. Tenga en cuenta que las
etiquetas no contienen estructura; son solo tokens en un espacio de nombres
global plano.
4. Alias
Los alias son similares a las etiquetas, excepto que aparecen en la salida FDT
como una forma de índice. Se almacenan como propiedades del /aliases
nodo, y cada propiedad asigna un nombre de alias a una cadena de ruta.
Aunque el nodo de alias aparece en la fuente, las cadenas de ruta suelen
aparecer como referencias a etiquetas ( &node), en lugar de escribirse en su
totalidad. Las API de DT que resuelven una cadena de ruta a un nodo
normalmente miran el primer carácter de la ruta, tratando las rutas que no
comienzan con una barra como alias que primero deben convertirse en una
ruta usando la /aliases tabla.
Semántica del árbol de dispositivos
Cómo construir un árbol de dispositivos y cuál es la mejor manera de utilizarlo para
capturar la configuración de algún hardware es un tema extenso y complejo. Hay
muchos recursos disponibles, algunos de los cuales se enumeran a continuación,
pero varios puntos merecen ser mencionados en este documento:
Compatible Las propiedades son el vínculo entre la descripción del hardware y el
software del controlador. Cuando un sistema operativo encuentra un nodo con una
compatible propiedad, lo busca en su base de datos de controladores de dispositivos
para encontrar la mejor coincidencia. En Linux, esto generalmente da como resultado
que el módulo del controlador se cargue automáticamente, siempre que se haya
etiquetado adecuadamente y no se haya incluido en la lista negra.
La status propiedad indica si un dispositivo está habilitado o deshabilitado. Si el
status es ok, okay o está ausente, entonces el dispositivo está activado. De lo
contrario, status debería estarlo disabled, de modo que el dispositivo esté
desactivado. Puede resultar útil colocar los dispositivos en un .dtsi archivo con el

141
MANUAL RASPBERRY
PI 4

estado establecido en disabled. Una configuración derivada puede incluir eso .dtsi y
establecer el estado de los dispositivos que se necesitan okay.
Superposiciones de árbol de dispositivos
Un SoC (System on a Chip) moderno es un dispositivo muy complicado; un árbol de
dispositivos completo puede tener cientos de líneas. Dar un paso más y colocar el
SoC en una placa con otros componentes solo empeora las cosas. Para mantener
eso manejable, particularmente si hay dispositivos relacionados que comparten
componentes, tiene sentido poner los elementos comunes en .dtsi archivos, para que
se incluyan posiblemente desde varios .dts archivos.
Cuando un sistema como Raspberry Pi también admite accesorios enchufables
opcionales como HAT, el problema crece. En última instancia, cada configuración
posible requiere un árbol de dispositivos para describirla, pero una vez que se tienen
en cuenta todos los diferentes modelos básicos y la gran cantidad de accesorios
disponibles, la cantidad de combinaciones comienza a multiplicarse rápidamente.

Lo que se necesita es una forma de describir estos componentes opcionales


utilizando un árbol de dispositivos parcial, y luego poder construir un árbol completo
tomando un DT base y agregando una cantidad de elementos opcionales. Puede
hacer esto, y estos elementos opcionales se denominan "superposiciones".
A menos que desee aprender a escribir superposiciones para Raspberry Pis, es
posible que prefiera pasar a la Parte 3: Uso de árboles de dispositivos en Raspberry
Pi .
Fragmentos
Una superposición de DT comprende varios fragmentos, cada uno de los cuales se
dirige a un nodo y sus subnodos. Aunque el concepto suena bastante simple, la
sintaxis parece bastante extraña al principio:
// Habilita la interfaz i2s
/ dts-v1 /;
/enchufar/;

/{
142
MANUAL RASPBERRY
PI 4

compatible = "brcm, bcm2835";

fragmento @ 0 {
target = <& i2s>;
__overlay__ {
status = "ok";
test_ref = <& test_label>;
test_label: test_subnode {
ficticio;
};
};
};
};
La compatible cadena identifica esto como para BCM2835, que es la arquitectura
base para los SoC de Raspberry Pi; si la superposición hace uso de las
características de un Pi 4, entonces brcm,bcm2711 es el valor correcto para usar; de
lo contrario, se brcm,bcm2835 puede usar para todas las superposiciones de Pi.
Luego viene el primer (y en este caso único) fragmento. Los fragmentos deben
numerarse secuencialmente desde cero. No cumplir con esto puede hacer que se
pierdan algunos o todos sus fragmentos.
Cada fragmento consta de dos partes: una target propiedad, que identifica el nodo al
que aplicar la superposición; y el __overlay__mismo, cuyo cuerpo se agrega al nodo
de destino. El ejemplo anterior se puede interpretar como si estuviera escrito así:
/ dts-v1 /;
/enchufar/;

/{
compatible = "brcm, bcm2835";
};

143
MANUAL RASPBERRY
PI 4

& i2s {
status = "ok";
test_ref = <& test_label>;
test_label: test_subnode {
ficticio;
};
};
(De hecho, con una versión suficientemente nueva de dtc usted puede escribirlo
exactamente así y obtener un resultado idéntico, pero algunas herramientas de
cosecha propia aún no entienden este formato, por lo que cualquier superposición
que desee incluir en el kernel estándar del sistema operativo Raspberry Pi debería
estar escrito en el formato antiguo por ahora).

El efecto de fusionar esa superposición con un árbol de dispositivos base de


Raspberry Pi estándar (por ejemplo bcm2708-rpi-b-plus.dtb), siempre que la
superposición se cargue después, sería habilitar la interfaz I2S cambiando su estado
a okay. Pero si intentas compilar esta superposición usando:
dtc -I dts -O dtb -o 2nd.dtbo 2nd-overlay.dts
obtendrá un error:
Etiqueta o ruta i2s no encontrada
Esto no debería ser demasiado inesperado, ya que no hay ninguna referencia a la
base .dtb o al .dts archivo para permitir que el compilador encuentre la i2s etiqueta.
Intentando de nuevo, esta vez usando el ejemplo original y agregando la -@opción
para permitir referencias no resueltas (y –Hepapr eliminar algo de desorden):
dtc - @ -Hepapr -I dts -O dtb -o 1st.dtbo 1st-overlay.dts
Si dtc devuelve un error sobre la tercera línea, no tiene las extensiones necesarias
para el trabajo de superposición. Ejecute sudo apt install device-tree-compiler y
vuelva a intentarlo; esta vez, la compilación debería completarse correctamente.
Tenga en cuenta que un compilador adecuado también está disponible en el árbol
del kernel como scripts/dtc/dtc, construido cuando dtbs se usa el destino make:

144
MANUAL RASPBERRY
PI 4

hacer ARCH = arm dtbs


Es interesante volcar el contenido del archivo DTB para ver qué ha generado el
compilador:
fdtdump 1st.dtbo
/dts-v1/;
// magic: 0xd00dfeed
// totalsize: 0x207 (519)
// off_dt_struct: 0x38
// off_dt_strings: 0x1c8
// off_mem_rsvmap:0x28
// version: 17
// last_comp_version: 16
// boot_cpuid_phys: 0x0
// size_dt_strings: 0x3f
// size_dt_struct: 0x190

/{
compatible = "brcm,bcm2835";
fragment@0 {
target = <0xffffffff>;
__overlay__ {
status = "okay";
test_ref = <0x00000001>;
test_subnode {
dummy;
phandle = <0x00000001>;
};
};
};
__symbols__ {

145
MANUAL RASPBERRY
PI 4

test_label = "/fragment@0/__overlay__/test_subnode";
};
__fixups__ {
i2s = "/fragment@0:target:0";
};
__local_fixups__ {
fragment@0 {
__overlay__ {
test_ref = <0x00000000>;
};
};
};
};
Después de la descripción detallada de la estructura del archivo, está nuestro
fragmento. Pero mire con cuidado: donde lo escribimos &i2s ahora dice 0xffffffff, una
pista de que ha sucedido algo extraño (las versiones anteriores de dtc podrían decir
en su 0xdeadbeef lugar). El compilador también ha agregado una phandle propiedad
que contiene un entero pequeño único (para esta superposición) para indicar que el
nodo tiene una etiqueta, y reemplazó todas las referencias a la etiqueta con el mismo
entero pequeño.
Después del fragmento hay tres nuevos nodos:
 __symbols__enumera las etiquetas utilizadas en la superposición
( test_labelaquí) y la ruta al nodo etiquetado. Este nodo es la clave de cómo
se tratan los símbolos no resueltos.
 __fixups__contiene una lista de propiedades que mapean los nombres de los
símbolos no resueltos con listas de rutas a las celdas dentro de los fragmentos
que necesitan parchearse con el fandle del nodo objetivo, una vez que se ha
localizado el objetivo. En este caso, la ruta es el 0xffffffffvalor de target, pero
los fragmentos pueden contener otras referencias no resueltas que requerirían
arreglos adicionales.

146
MANUAL RASPBERRY
PI 4

 __local_fixups__contiene las ubicaciones de las referencias a etiquetas que


existen dentro de la superposición: la test_refpropiedad. Esto es necesario
porque el programa que realiza la fusión deberá asegurarse de que los
números de phandle sean secuenciales y únicos.
En la sección 1.3 dice que "las etiquetas originales no aparecen en la salida
compilada", pero esto no es cierto cuando se usa el -@ modificador. En cambio,
cada etiqueta da como resultado una propiedad en el __symbols__nodo, asignando
una etiqueta a una ruta, exactamente como el aliases nodo. De hecho, el mecanismo
es tan similar que al resolver símbolos, el cargador Raspberry Pi buscará el nodo
"alias" en ausencia de un __symbols__nodo. Esto fue útil en un momento porque
proporcionar suficientes alias permitía dtc que se usaran versiones muy antiguas de
para construir los archivos DTB base, pero afortunadamente eso es historia antigua
ahora.
Parámetros del árbol de dispositivos
Para evitar la necesidad de muchas superposiciones del árbol de dispositivos y
reducir la necesidad de que los usuarios de periféricos modifiquen los archivos DTS,
el cargador Raspberry Pi admite una nueva función: los parámetros del árbol de
dispositivos. Esto permite pequeños cambios en el DT usando parámetros con
nombre, similar a la forma en que los módulos del kernel reciben parámetros desde
modprobe la línea de comandos del kernel. Los parámetros pueden ser expuestos
por los DTB base y por superposiciones, incluidas las superposiciones de HAT.
Los parámetros se definen en el DTS agregando un __overrides__nodo a la raíz.
Contiene propiedades cuyos nombres son los nombres de los parámetros elegidos y
cuyos valores son una secuencia que comprende un phandle (referencia a una
etiqueta) para el nodo objetivo y una cadena que indica la propiedad objetivo; Se
admiten las propiedades de cadena, entero (celda) y booleanas.
Parámetros de cadena
Los parámetros de cadena se declaran así:
nombre = <& etiqueta>, "propiedad";

147
MANUAL RASPBERRY
PI 4

donde label y property se reemplazan por valores adecuados. Los parámetros de


cadena pueden hacer que sus propiedades de destino crezcan, se reduzcan o se
creen.
Tenga en cuenta que las propiedades llamadas status se tratan de forma especial;
los valores distintos de cero / verdadero / sí / activado se convierten en la cadena
"okay", mientras que cero / falso / no / desactivado se convierte en "disabled".
Parámetros enteros
Los parámetros enteros se declaran así:
nombre = <& etiqueta>, "propiedad.desplazamiento"; // 8 bits
nombre = <& etiqueta>, "propiedad; desplazamiento"; // 16 bits
nombre = <& etiqueta>, "propiedad: desplazamiento"; // 32 bits
nombre = <& etiqueta>, "propiedad # compensación"; // 64 bits
donde label, property y offset se reemplazan por valores adecuados; el
desplazamiento se especifica en bytes en relación con el inicio de la propiedad (en
decimal de forma predeterminada), y el separador anterior dicta el tamaño del
parámetro. En un cambio con respecto a implementaciones anteriores, los
parámetros enteros pueden referirse a propiedades inexistentes o compensaciones
más allá del final de una propiedad existente.
Parámetros booleanos
El árbol de dispositivos codifica valores booleanos como propiedades de longitud
cero; si está presente, la propiedad es verdadera; de lo contrario, es falsa. Se definen
así:
boolean_property; // Establecer 'boolean_property' en verdadero
Tenga en cuenta que a una propiedad se le asigna el valor falseal no definirla. Los
parámetros booleanos se declaran así:
nombre = <& etiqueta>, "propiedad?";
donde label y property se reemplazan por valores adecuados.
Los booleanos invertidos invierten el valor de entrada antes de aplicarlo de la misma
manera que un booleano regular; se declaran de manera similar, pero se usan !para
indicar la inversión:

148
MANUAL RASPBERRY
PI 4

nombre = <& etiqueta>, "propiedad!";


Los parámetros booleanos pueden hacer que se creen o eliminen propiedades, pero
no pueden eliminar una propiedad que ya existe en la DTB base.
Parámetros de cadena de bytes
Las propiedades de la cadena de bytes son secuencias arbitrarias de bytes, por
ejemplo, direcciones MAC. Aceptan cadenas de bytes hexadecimales, con o sin dos
puntos entre los bytes.
mac_address = <& ethernet0>, "local_mac_address [";
Se [eligió para que coincida con la sintaxis DT para declarar una cadena de bytes:
local_mac_address = [aa bb cc dd ee ff];
Parámetros con múltiples objetivos
Hay algunas situaciones en las que es conveniente poder establecer el mismo valor
en varias ubicaciones dentro del árbol de dispositivos. En lugar del enfoque
desgarbado de crear múltiples parámetros, es posible agregar múltiples objetivos a
un solo parámetro concateándolos, así:
__overrides__ {
gpiopin = <& w1>, "gpios: 4",
<& w1_pins>, "brcm, pins: 0";
...
};
(ejemplo tomado de la w1-gpio superposición)
NOTA
Incluso es posible apuntar a propiedades de diferentes tipos con un solo parámetro.
Podría conectar razonablemente un parámetro "enable" a una statuscadena, celdas
que contengan cero o uno, y una propiedad booleana adecuada.
Asignaciones literales
Como se vio en 2.2.5 , el mecanismo de parámetro DT permite parchear múltiples
destinos desde el mismo parámetro, pero la utilidad está limitada por el hecho de que
el mismo valor debe escribirse en todas las ubicaciones (excepto para la conversión
de formato y la negación disponible de booleanos invertidos). La adición de

149
MANUAL RASPBERRY
PI 4

asignaciones literales incrustadas permite que un parámetro escriba valores


arbitrarios, independientemente del valor del parámetro proporcionado por el usuario.
Las asignaciones aparecen al final de una declaración y se indican con =:
str_val = <& target>, "strprop = value"; // 1
int_val = <& target>, "intprop: 0 = 42 // 2
int_val2 = <& target>, "intprop: 0 =", <42>; // 3
bytes = <& destino>, "bytestr [= b8: 27: eb: 01: 23: 45"; // 4
Las líneas 1, 2 y 4 son bastante obvias, pero la línea 3 es más interesante porque el
valor aparece como un valor entero (celda). El compilador DT evalúa expresiones
enteras en tiempo de compilación, lo que puede ser conveniente (especialmente si
se utilizan valores macro), pero la celda también puede contener una referencia a
una etiqueta:
// Obligar a un LED a utilizar un GPIO en el controlador GPIO interno.
exp_led = <& led1>, "gpios: 0 =", <& gpio>,
<& led1>, "gpios: 4";
Cuando se aplica la superposición, la etiqueta se resolverá contra el DTB base de la
forma habitual. Tenga en cuenta que es una buena idea dividir los parámetros de
varias partes en varias líneas como esta para que sean más fáciles de leer, algo que
se vuelve más necesario con la adición de asignaciones de valores de celda como
esta.

Tenga en cuenta que los parámetros no hacen nada a menos que se apliquen; un
valor predeterminado en una tabla de búsqueda se ignora a menos que el nombre
del parámetro se use sin asignar un valor.
Tablas de búsqueda
Las tablas de búsqueda permiten transformar los valores de entrada de los
parámetros antes de utilizarlos. Actúan como matrices asociativas, más bien como
declaraciones switch / case:
fonético = <& nodo>, "letra {a = alfa, b = bravo, c = charlie, d, e, = 'uniforme de
tango'}";

150
MANUAL RASPBERRY
PI 4

bus = <& fragment>, "target: 0 {0 =", <& i2c0>, "1 =", <& i2c1>, "}";
Una clave sin =value medios para usar la clave como valor, una =sin clave antes es
el valor predeterminado en el caso de que no coincida, y comenzar o terminar la lista
con una coma (o un par clave = valor vacío en cualquier lugar) indica que el valor de
entrada no coincidente debe utilizarse inalterado; de lo contrario, no encontrar una
coincidencia es un error.
NOTA
El separador de coma dentro de la cadena de la tabla después de un valor entero de
celda está implícito; agregar uno explícitamente crea un par vacío (ver arriba).
NOTA
Como las tablas de búsqueda operan con valores de entrada y las asignaciones
literales las ignoran, no es posible combinar los dos; los caracteres después del
cierre } de la declaración de búsqueda se tratan como un error.
Parámetros de superposición / fragmento
El mecanismo de parámetro de DT como se describe tiene una serie de limitaciones,
incluida la falta de una forma fácil de crear matrices de números enteros y la
imposibilidad de crear nuevos nodos. Una forma de superar algunas de estas
limitaciones es incluir o excluir condicionalmente ciertos fragmentos.
Un fragmento se puede excluir del proceso de fusión final (deshabilitado) cambiando
el nombre del __overlay__nodo a __dormant__. La sintaxis de declaración de
parámetros se ha ampliado para permitir que el phandle de destino cero, que de otro
modo sería ilegal, indique que la siguiente cadena contiene operaciones en el ámbito
de fragmento o superposición. Hasta el momento se han implementado cuatro
operaciones:
+ <n> // Habilitar fragmento <n>
- <n> // Deshabilitar fragmento <n>
= <n> // Habilite el fragmento <n> si el valor del parámetro asignado es verdadero, de
lo contrario deshabilítelo
! <n> // Habilite el fragmento <n> si el valor del parámetro asignado es falso, de lo
contrario deshabilítelo

151
MANUAL RASPBERRY
PI 4

Ejemplos:
solo_uno = <0>, "+ 1-2"; // Activar 1, desactivar 2
condicional = <0>, "= 3! 4"; // Habilita 3, deshabilita 4 si el valor es verdadero,
// de lo contrario, deshabilite 3, habilite 4.
La i2c-rtc superposición utiliza esta técnica.
Propiedades especiales
Algunos nombres de propiedades, cuando se dirigen a un parámetro, obtienen un
tratamiento especial. Uno que ya habrás notado status, que convertirá un booleano
en okay verdadero o disabled falso.

La asignación a la bootargs propiedad se agrega a ella en lugar de sobrescribirla; así


es como se pueden agregar configuraciones a la línea de comandos del kernel.

La reg propiedad se usa para especificar direcciones de dispositivos: la ubicación de


un bloque de hardware mapeado en memoria, la dirección en un bus I2C, etc. Los
nombres de los nodos secundarios deben calificarse con sus direcciones en
hexadecimal, utilizando @ como separador:
bmp280 @ 76 {
reg = <0x77>;
...
};
Al asignar a la reg propiedad, la parte de la dirección del nombre del nodo principal
se reemplazará con el valor asignado. Esto se puede usar para evitar un conflicto de
nombres de nodo cuando se usa la misma superposición varias veces, una técnica
utilizada por la i2c-gpio superposición.
La name propiedad es una pseudopropiedad: no debería aparecer en un DT, pero
asignarle hace que el nombre de su nodo padre cambie al valor asignado. Al igual
que la reg propiedad, esto se puede utilizar para dar nombres únicos a los nodos.
El archivo de mapa de superposición

152
MANUAL RASPBERRY
PI 4

La introducción del Pi 4, construido alrededor del SoC BCM2711, trajo consigo


muchos cambios; algunos de estos cambios son interfaces adicionales y algunos son
modificaciones (o eliminaciones) de interfaces existentes. Hay nuevas
superposiciones diseñadas específicamente para Pi 4 que no tienen sentido en
hardware antiguo, por ejemplo, superposiciones que habilitan las nuevas interfaces
SPI, I2C y UART, pero otras superposiciones no se aplican correctamente a pesar de
que controlan características que aún son relevantes. en el nuevo dispositivo.
Por lo tanto, existe la necesidad de un método para adaptar una superposición a
múltiples plataformas con hardware diferente. Soportarlos todos en un solo
archivo .dtbo requeriría un uso intensivo de fragmentos ocultos ("inactivos") y un
cambio a un mecanismo de resolución de símbolos bajo demanda para que un
símbolo faltante que no sea necesario no cause una falla. Una solución más simple
es agregar una función para asignar un nombre de superposición a uno de los varios
archivos de implementación, según la plataforma actual.
El mapa de superposición, que se está implementando con el cambio a Linux 5.4, es
un archivo que el firmware carga durante el arranque. Está escrito en formato fuente
DTS overlay_map.dts, compilado overlay_map.dtb y almacenado en el directorio de
superposiciones.
Esta es una versión editada del archivo de mapa actual (ver la versión completa ):
/{
vc4-kms-v3d {
bcm2835;
bcm2711 = "vc4-kms-v3d-pi4";
};

vc4-kms-v3d-pi4 {
bcm2711;
};

uart5 {

153
MANUAL RASPBERRY
PI 4

bcm2711;
};

pi3-disable-bt {
renombrado = "disable-bt";
};

lirc-rpi {
deprecated = "use gpio-ir";
};
};
Cada nodo tiene el nombre de una superposición que requiere un manejo especial.
Las propiedades de cada nodo son nombres de plataforma o una de una pequeña
cantidad de directivas especiales. Las plataformas compatibles actuales son
bcm2835, que incluye todos los Pis construidos en torno a los SoC BCM2835,
BCM2836 y BCM2837, y bcm2711 para Pi 4B.
Un nombre de plataforma sin valor (una propiedad vacía) indica que la superposición
actual es compatible con la plataforma; por ejemplo, vc4-kms-v3d es compatible con
la bcm2835 plataforma. Un valor no vacío para una plataforma es el nombre de una
superposición alternativa para usar en lugar de la solicitada; solicitar vc4-kms-v3d en
BCM2711 da como resultado que vc4-kms-v3d-pi4 se cargue en su lugar. Cualquier
plataforma no incluida en el nodo de una superposición no es compatible con esa
superposición.

El segundo nodo de ejemplo - vc4-kms-v3d-pi4- podría inferirse del contenido de vc4-


kms-v3d, pero esa inteligencia entra en la construcción del archivo, no en su
interpretación.
En el caso de que una plataforma no esté listada para una superposición, se puede
aplicar una de las directivas especiales:

154
MANUAL RASPBERRY
PI 4

 La renamed directiva indica el nuevo nombre de la superposición (que debería


ser en gran medida compatible con el original), pero también registra una
advertencia sobre el cambio de nombre.
 La deprecated directiva contiene un breve mensaje de error explicativo que se
registrará después del prefijo común overlay '...' is deprecated:.
Recuerde: solo se deben enumerar las excepciones: la ausencia de un nodo para
una superposición significa que el archivo predeterminado debe usarse para todas
las plataformas.
El acceso a los mensajes de diagnóstico desde el firmware se trata en Depuración .
Las utilidades dtoverlay y dtmerge se han ampliado para admitir el archivo de mapa:
 dtmerge extrae el nombre de la plataforma de la cadena compatible en el DTB
base.
 dtoverlay lee la cadena compatible del árbol de dispositivos en vivo en
/proc/device-tree, pero puede usar la –p opción para proporcionar un nombre
de plataforma alternativo (útil para simulacros en una plataforma diferente).
Ambos envían errores, advertencias y cualquier salida de depuración a STDERR.
Ejemplos de
A continuación, se muestran algunos ejemplos de diferentes tipos de propiedades,
con parámetros para modificarlas:
/{
fragmento @ 0 {
ruta-destino = "/";
__overlay__ {

prueba: test_node {
cadena = "hola";
status = "desactivado";
bytes = / bits / 8 <0x67 0x89>;
u16s = / bits / 16 <0xabcd 0xef01>;
u32s = / bits / 32 <0xfedcba98 0x76543210>;

155
MANUAL RASPBERRY
PI 4

u64s = / bits / 64 <0xaaaaa5a55a5a5555 0x0000111122223333>;


bool1; // Por defecto es verdadero
// bool2 por defecto es falso
mac = [01 23 45 67 89 ab];
spi = <& spi0>;
};
};
};

fragment @ 1 {
ruta-destino = "/";
__overlay__ {
frag1;
};
};

fragment @ 2 {
ruta-destino = "/";
__dormant__ {
frag2;
};
};

__overrides__ {
cadena = <& prueba>, "cadena";
enable = <& test>, "status";
byte_0 = <& prueba>, "bytes.0";
byte_1 = <& prueba>, "bytes.1";
u16_0 = <& prueba>, "u16s; 0";
u16_1 = <& prueba>, "u16s; 2";

156
MANUAL RASPBERRY
PI 4

u32_0 = <& prueba>, "u32s: 0";


u32_1 = <& prueba>, "u32s: 4";
u64_0 = <& prueba>, "u64s # 0";
u64_1 = <& prueba>, "u64s # 8";
bool1 = <& prueba>, "bool1!";
bool2 = <& prueba>, "bool2?";
entofr = <& test>, "inglés",
<& test>, "francés {hola = bonjour, adiós = 'au revoir', fin de semana}";
pi_mac = <& test>, "mac [{1 = b8273bfedcba, 2 = b8273b987654}";
spibus = <& test>, "spi: 0 [0 =", <& spi0>, "1 =", <& spi1>, "2 =", <& spi2>;

solo1 = <0>, "+ 1-2";


solo2 = <0>, "- 1 + 2";
enable1 = <0>, "= 1";
deshabilitar2 = <0>, "! 2";
};
};
Para obtener más ejemplos, hay una gran colección de archivos fuente de
superposición alojados en el repositorio GitHub de Raspberry Pi Linux.
Exportación de etiquetas
El manejo de superposición en el firmware y la aplicación de superposición en tiempo
de ejecución que utiliza la dtoverlay utilidad tratan las etiquetas definidas en una
superposición como privadas para esa superposición. Esto evita la necesidad de
inventar nombres únicos a nivel mundial para las etiquetas (lo que los mantiene
cortos) y permite que se use la misma superposición varias veces sin que entren en
conflicto (siempre que se utilicen algunos trucos, consulte Propiedades especiales).

A veces, sin embargo, es muy útil poder crear una etiqueta con una superposición y
usarla a partir de otra. El firmware lanzado desde el 14 de febrero de 2020 tiene la
capacidad de declarar algunas etiquetas como globales: el __exports__nodo:

157
MANUAL RASPBERRY
PI 4

...
público: ...

__exports__ {
público; // Exportar la etiqueta 'public' al DT base
};
};
Cuando se aplica esta superposición, el cargador elimina todos los símbolos, excepto
los que se han exportado, en este caso public, y reescribe la ruta para que sea
relativa al destino del fragmento que contiene la etiqueta. Las superposiciones
cargadas después de esta pueden consultar &public.
Orden de aplicación de superposición
En la mayoría de las circunstancias, no debería importar el orden en que se apliquen
los fragmentos, pero para las superposiciones que se parchean en sí mismas (donde
el objetivo de un fragmento es una etiqueta en la superposición, conocida como
fragmento intrauperposición) se vuelve importante. En firmware más antiguo, los
fragmentos se aplican estrictamente en orden, de arriba hacia abajo. Con el firmware
lanzado desde el 14 de febrero de 2020, los fragmentos se aplican en dos pasos:
1. Primero se aplican y ocultan los fragmentos que se dirigen a otros fragmentos.
2. Luego se aplican los fragmentos regulares.
Esta división es particularmente importante para las superposiciones en tiempo de
ejecución, ya que el paso (i) ocurre en la dtoverlay utilidad y el paso (ii) lo realiza el
kernel (que no puede manejar fragmentos intra-superpuestos).
Uso de árboles de dispositivos en Raspberry Pi
DTB, superposiciones y config.txt
En una Raspberry Pi, el trabajo del cargador (una de las start.elf imágenes) es
combinar superposiciones con un árbol de dispositivos base apropiado y luego pasar
un árbol de dispositivos completamente resuelto al kernel. Los árboles de
dispositivos base se encuentran junto start.elf a la partición FAT (/ boot desde Linux),
nombrados bcm2711-rpi-4-b.dtb, bcm2710-rpi-3-b-plus.dtb etc. Tenga en cuenta que
algunos modelos (3A +, A, A +) usarán los equivalentes "b" (3B +, B, B +),
158
MANUAL RASPBERRY
PI 4

respectivamente. Esta selección es automática y permite utilizar la misma imagen


de la tarjeta SD en una variedad de dispositivos.
NOTA
DT y ATAG son mutuamente excluyentes, y pasar un blob DT a un kernel que no lo
entiende provocará un error de arranque. El firmware siempre intentará cargar el DT
y pasarlo al kernel, ya que todos los kernels desde rpi-4.4.y no funcionarán sin DTB.
Puede anular esto agregando device_tree= config.txt, lo que fuerza el uso de ATAG,
que pueden ser útiles para núcleos simples "bare-metal".
[El firmware solía buscar un avance adjunto a los kernels por la mkknlimg utilidad,
pero se ha retirado el soporte para esto. ]
El cargador ahora admite compilaciones mediante bcm2835_defconfig, que
selecciona la compatibilidad con BCM2835 de flujo ascendente. Esta configuración
provocará bcm2835-rpi-b.dtb y bcm2835-rpi-b-plus.dtbse construirá. Si estos
archivos se copian con el kernel, el cargador intentará cargar uno de esos DTB de
forma predeterminada.
Para administrar el árbol de dispositivos y las superposiciones, el cargador admite
una serie de config.txt directivas:
dtoverlay = acme-board
dtparam = foo = bar, nivel = 42
Esto hará que el cargador busque overlays/acme-board.dtbo en la partición del
firmware, en la que se monta el sistema operativo Raspberry Pi /boot. A
continuación, buscará los parámetros foo y level, y les asignará los valores indicados.
El cargador también buscará un HAT adjunto con una EEPROM programada y
cargará la superposición de soporte desde allí, ya sea directamente o por nombre
desde el directorio "superposiciones"; esto sucede sin la intervención del usuario.
Hay varias formas de saber que el kernel está usando el árbol de dispositivos:
1. El mensaje del kernel "Modelo de máquina:" durante el arranque tiene un valor
específico de la placa, como "Raspberry Pi 2 Modelo B", en lugar de
"BCM2709".

159
MANUAL RASPBERRY
PI 4

2. /proc/device-tree existe y contiene subdirectorios y archivos que reflejan


exactamente los nodos y las propiedades del DT.
Con un árbol de dispositivos, el kernel buscará y cargará automáticamente módulos
que admitan los dispositivos habilitados indicados. Como resultado, al crear una
superposición DT adecuada para un dispositivo, evita que los usuarios del dispositivo
tengan que editar /etc/modules; toda la configuración entra config.txt y, en el caso de
un HAT, incluso ese paso es innecesario. Sin embargo, i2c-dev tenga en cuenta que
los módulos en capas como, por ejemplo, aún deben cargarse explícitamente.
La otra cara es que debido a que los dispositivos de plataforma no se crean a menos
que lo solicite la DTB, ya no debería ser necesario incluir en la lista negra los
módulos que solían cargarse como resultado de los dispositivos de plataforma
definidos en el código de soporte de la placa. De hecho, las imágenes actuales del
sistema operativo Raspberry Pi se envían sin archivos de lista negra (a excepción de
algunos dispositivos WLAN donde hay varios controladores disponibles).
Parámetros DT
Como se describió anteriormente, los parámetros DT son una forma conveniente de
realizar pequeños cambios en la configuración de un dispositivo. Los DTB base
actuales admiten parámetros para habilitar y controlar las interfaces de audio
integrado, I2C, I2S y SPI sin utilizar superposiciones dedicadas. En uso, los
parámetros se ven así:
dtparam = audio = activado, i2c_arm = activado, i2c_arm_baudrate = 400000, spi =
activado
NOTA
Se pueden colocar varias asignaciones en la misma línea, pero asegúrese de no
exceder el límite de 80 caracteres.
Si tiene una superposición que define algunos parámetros, se pueden especificar en
líneas posteriores como esta:
dtoverlay = lirc-rpi
dtparam = gpio_out_pin = 16
dtparam = gpio_in_pin = 17

160
MANUAL RASPBERRY
PI 4

dtparam = gpio_in_pull = abajo


o agregado a la línea de superposición de esta manera:
dtoverlay = lirc-rpi, gpio_out_pin = 16, gpio_in_pin = 17, gpio_in_pull = abajo
Los parámetros de superposición solo están dentro del alcance hasta que se cargue
la siguiente superposición. En el caso de que tanto la superposición como la base
exporten un parámetro con el mismo nombre, el parámetro de la superposición tiene
prioridad; para mayor claridad, se recomienda que evite hacer esto. Para exponer el
parámetro exportado por el DTB base en su lugar, finalice el alcance de
superposición actual usando:
dtoverlay =
Etiquetas y parámetros específicos de la placa
Las placas Raspberry Pi tienen dos interfaces I2C. Estos están divididos
nominalmente: uno para ARM y otro para VideoCore (la "GPU"). En casi todos los
modelos, i2c1 pertenece al ARM y i2c0al VC, donde se usa para controlar la cámara
y leer el HAT EEPROM. Sin embargo, hay dos revisiones tempranas del Modelo B
que tienen esos roles invertidos.
Para que sea posible utilizar un conjunto de superposiciones y parámetros con todos
los Pis, el firmware crea algunos parámetros DT específicos de la placa. Estos son:
i2c / i2c_arm
i2c_vc
i2c_baudrate / i2c_arm_baudrate
i2c_vc_baudrate
Estos son los alias de i2c0, i2c1, i2c0_baudrate, y i2c1_baudrate. Se recomienda que
solo use i2c_vc y i2c_vc_baudrate si realmente lo necesita, por ejemplo, si está
programando una EEPROM HAT (que se hace mejor usando un bus I2C de software
usando la i2c-gpio superposición). La habilitación i2c_vc puede detener el
funcionamiento correcto de la cámara Pi o la pantalla DSI de 7 ".
Para las personas que escriben superposiciones, se ha aplicado el mismo alias a las
etiquetas de los nodos I2C DT. Por lo tanto, debe escribir:
fragmento @ 0 {

161
MANUAL RASPBERRY
PI 4

target = <& i2c_arm>;


__overlay__ {
status = "ok";
};
};
Cualquier superposición que utilice las variantes numéricas se modificará para utilizar
los nuevos alias.
HAT y árbol de dispositivos
Una Raspberry Pi HAT es una placa complementaria con una EEPROM integrada
diseñada para una Raspberry Pi con un encabezado de 40 pines. La EEPROM
incluye cualquier superposición DT necesaria para habilitar la placa (o el nombre de
una superposición para cargar desde el sistema de archivo), y esta superposición
también puede exponer parámetros.
El firmware carga automáticamente la superposición HAT después de la DTB base,
por lo que se puede acceder a sus parámetros hasta que se carguen otras
superposiciones o hasta que finalice el uso de la superposición dtoverlay=. Si por
alguna razón desea suprimir la carga de la superposición HAT, poner dtoverlay=
antes que cualquier otro dtoverlay o dtparam directiva.
Árbol de dispositivos dinámicos
A partir de Linux 4.4, los kernels RPi admiten la carga dinámica de superposiciones y
parámetros. Los núcleos compatibles administran una pila de superposiciones que se
aplican sobre la DTB base. Los cambios se reflejan inmediatamente /proc/device-tree
y pueden provocar la carga de módulos y la creación y destrucción de dispositivos de
plataforma.
El uso de la palabra "pila" arriba es importante - las superposiciones solo se pueden
agregar y quitar en la parte superior de la pila; cambiar algo más abajo en la pila
requiere que todo lo que esté encima se debe quitar primero.
Hay algunos comandos nuevos para administrar superposiciones:
El dtoverlaycomando

162
MANUAL RASPBERRY
PI 4

Dtoverlay es una utilidad de línea de comandos que carga y elimina


superposiciones mientras el sistema se está ejecutando, además de enumerar las
superposiciones disponibles y mostrar su información de ayuda. Úselo dtoverlay –h
para obtener información de uso:
Uso:
dtoverlay <overlay> [<param> = <val> ...]
Agregar una superposición (con parámetros)
dtoverlay -D [<idx>] Ejecución en seco (preparar superposición, pero no aplicar -
guárdelo como dry-run.dtbo)
dtoverlay -r [<overlay>] Elimina una superposición (por nombre, índice o la última)
dtoverlay -R [<overlay>] Eliminar de una superposición (por nombre, índice o todo)
dtoverlay -l Lista de superposiciones / parámetros activos
dtoverlay -a Lista todas las superposiciones (marcando el activo)
dtoverlay -h Muestra este mensaje de uso
dtoverlay -h <superposición> Mostrar ayuda en una superposición
dtoverlay -h <overlay> <param> .. O sus parámetros
donde <overlay> es el nombre de una superposición o 'dtparam' para dtparams
Opciones aplicables a la mayoría de variantes:
-d <dir> Especifica una ubicación alternativa para las superposiciones
(por defecto es / boot / superposiciones o / flash / superposiciones)
-v Operación detallada
A diferencia del config.txt equivalente, todos los parámetros de una superposición
deben incluirse en la misma línea de comando; el comando dtparam es solo para los
parámetros de la DTB base.
Dos puntos a tener en cuenta:
1. Las variantes de comandos que cambian el estado del kernel (agregar y
eliminar elementos) requieren privilegios de root, por lo que es posible que
deba anteponer el comando con sudo.
2. Solo se pueden descargar las superposiciones y los parámetros aplicados en
tiempo de ejecución: una superposición o un parámetro aplicado por el

163
MANUAL RASPBERRY
PI 4

firmware se "integra" de manera que no se incluirá en la lista dtoverlayy no se


podrá eliminar.
El dtparamcomando
dtparam crea y carga una superposición que tiene en gran parte el mismo efecto que
usar una directiva dtparam en config.txt. En su uso, es en gran medida equivalente a
dtoverlay un nombre de superposición de -, pero hay algunas diferencias:
1. dtparammostrará la información de ayuda para todos los parámetros
conocidos del DTB base. La ayuda sobre el comando dtparam todavía está
disponible usando dtparam -h.
2. Cuando se indica un parámetro para su eliminación, solo se pueden usar
números de índice (no nombres).
3. No todos los subsistemas de Linux responden a la adición de dispositivos en
tiempo de ejecución; los dispositivos I2C, SPI y de sonido funcionan, pero
algunos no.
Directrices para escribir superposiciones con capacidad de ejecución
Esta área está mal documentada, pero aquí hay algunos consejos acumulados:
 La creación o eliminación de un objeto de dispositivo se desencadena por la
adición o eliminación de un nodo, o por el estado de un nodo que cambia de
deshabilitado a habilitado o viceversa. Tenga cuidado: la ausencia de una
propiedad de "estado" significa que el nodo está habilitado.
 No cree un nodo dentro de un fragmento que sobrescribirá un nodo existente
en la DTB base; el kernel cambiará el nombre del nuevo nodo para hacerlo
único. Si desea cambiar las propiedades de un nodo existente, cree un
fragmento que se dirija a él.
 ALSA no evita que sus códecs y otros componentes se descarguen mientras
están en uso. Eliminar una superposición puede causar una excepción del
kernel si elimina un códec que todavía está siendo utilizado por una tarjeta de
sonido. La experimentación encontró que los dispositivos se eliminan en el
orden inverso de los fragmentos en la superposición, por lo que colocar el

164
MANUAL RASPBERRY
PI 4

nodo de la tarjeta después de los nodos de los componentes permite un


apagado ordenado.
Advertencias
La carga de superposiciones en tiempo de ejecución es una adición reciente al
kernel, y hasta ahora no existe una forma aceptada de hacerlo desde el espacio de
usuario. Al ocultar los detalles de este mecanismo detrás de los comandos, el
objetivo es proteger a los usuarios de los cambios en caso de que se estandarice
una interfaz de kernel diferente.
 Algunas superposiciones funcionan mejor en tiempo de ejecución que otras.
Partes del árbol de dispositivos solo se utilizan en el momento del arranque;
cambiarlas mediante una superposición no tendrá ningún efecto.
 La aplicación o eliminación de algunas superposiciones puede provocar un
comportamiento inesperado, por lo que debe hacerse con precaución. Ésta es
una de las razones por las que lo requiere sudo.
 La descarga de la superposición de una tarjeta ALSA puede bloquearse si
algo está usando ALSA de forma activa; el complemento de control deslizante
de volumen LXPanel demuestra este efecto. Para permitir que se eliminen las
superposiciones de las tarjetas de sonido, lxpanelctl se le han dado a la
utilidad dos nuevas opciones – alsastop y alsastart- y estas se llaman desde
los scripts auxiliares dtoverlay-pre y dtoverlay-post antes y después de que las
superposiciones se carguen o descarguen, respectivamente.
 La eliminación de una superposición no hará que se descargue un módulo
cargado, pero puede hacer que el recuento de referencias de algunos
módulos caiga a cero. La ejecución rmmod –a dos veces hará que se
descarguen los módulos no utilizados.
 Las superposiciones deben eliminarse en orden inverso. Los comandos le
permitirán eliminar uno anterior, pero todos los intermedios se eliminarán y
volverán a aplicar, lo que puede tener consecuencias no deseadas.
 Solo se probarán los nodos del árbol de dispositivos en el nivel superior del
árbol y los hijos de un nodo de bus. Para los nodos agregados en tiempo de

165
MANUAL RASPBERRY
PI 4

ejecución, existe la limitación adicional de que el bus debe registrarse para


recibir notificaciones de la adición y eliminación de elementos secundarios. Sin
embargo, hay excepciones que rompen esta regla y causan confusión: el
kernel escanea explícitamente todo el árbol en busca de algunos tipos de
dispositivos (los relojes y el controlador de interrupciones son los dos
principales) para (para relojes) inicializarlos antes y / o (para interruptores de
control) en un orden particular. Este mecanismo de búsqueda solo ocurre
durante el arranque y, por lo tanto, no funciona para los nodos agregados por
una superposición en tiempo de ejecución. Por lo tanto, se recomienda que las
superposiciones coloquen nodos de reloj fijo en la raíz del árbol, a menos que
se garantice que la superposición no se utilizará en tiempo de ejecución.
Superposiciones y parámetros compatibles
Dado que es demasiado lento documentar las superposiciones individuales aquí,
consulte el archivo README que se encuentra junto a los .dtbo archivos de
superposición en formato /boot/overlays. Se mantiene actualizado con adiciones y
cambios.
Solución de problemas
Depuración
El cargador omitirá las superposiciones que faltan y los parámetros incorrectos, pero
si hay errores graves, como un DTB base faltante o dañado o una fusión de
superposición fallida, el cargador recurrirá a un arranque que no sea de DT. Si esto
sucede, o si su configuración no se comporta como esperaba, vale la pena buscar
advertencias o errores del cargador:
sudo vcdbg log msg
La depuración adicional se puede habilitar agregando dtdebug=1a config.txt.
Puede crear una representación legible por humanos del estado actual de DT de esta
manera:
dtc -I fs / proc / árbol de dispositivos
Esto puede resultar útil para ver el efecto de fusionar superposiciones en el árbol
subyacente.

166
MANUAL RASPBERRY
PI 4

Si los módulos del kernel no se cargan como se esperaba, verifique que no estén
incluidos en la lista negra /etc/modprobe.d/raspi-blacklist.conf; La lista negra no
debería ser necesaria cuando se utiliza el árbol de dispositivos. Si eso no muestra
nada adverso, también puede verificar que el módulo esté exportando los alias
correctos buscando /lib/modules/<version>/modules.alias el compatible valor. De lo
contrario, probablemente falte su controlador:
.of_match_table = xxx_of_match,
o:
MODULE_DEVICE_TABLE (de, xxx_of_match);
De lo contrario, depmod ha fallado o los módulos actualizados no se han instalado en
el sistema de archivos de destino.
Prueba de superposiciones con dtmerge, dtdiff y ovmerge
Junto a los comandos dtoverlay y dtparam hay una utilidad para aplicar una
superposición a un DTB - dtmerge. Para usarlo, primero debe obtener su DTB base,
que se puede obtener de una de dos maneras:
a) generarlo desde el estado de DT en vivo en /proc/device-tree:
dtc -I fs -O dtb -o base.dtb / proc / device-tree
Esto incluirá las superposiciones y los parámetros que haya aplicado hasta
ahora, ya sea config.txt cargándolos o cargándolos en tiempo de ejecución,
que puede ser o no lo que desea. Alternativamente ...
b) cópielo de los DTB de origen en / boot. Esto no incluirá superposiciones ni
parámetros, pero tampoco incluirá ninguna otra modificación del firmware.
Para permitir la prueba de todas las superposiciones, la dtmerge utilidad
creará algunos de los alias específicos de la placa ("i2c_arm", etc.), pero esto
significa que el resultado de una fusión incluirá más diferencias con el DTB
original de lo que cabría esperar. La solución a esto es usar dtmerge para
hacer la copia:
dtmerge /boot/bcm2710-rpi-3-b.dtb base.dtb -
( - indica un nombre de superposición ausente).
Ahora puede intentar aplicar una superposición o un parámetro:

167
MANUAL RASPBERRY
PI 4

dtmerge base.dtb merged.dtb - sd_overclock = 62


dtdiff base.dtb merged.dtb
que volverá:
--- / dev / fd / 63 2016-05-16 14: 48: 26.396024813 +0100
+++ / dev / fd / 62 2016-05-16 14: 48: 26.396024813 +0100
@@ -594,7 +594,7 @@
};

sdhost @ 7e202000 {
- brcm, overclock-50 = <0x0>;
+ brcm, overclock-50 = <0x3e>;
brcm, pio-limit = <0x1>;
ancho de bus = <0x4>;
relojes = <0x8>;
También puede comparar diferentes superposiciones o parámetros.
dtmerge base.dtb merged1.dtb /boot/overlays/spi1-1cs.dtbo
dtmerge base.dtb merged2.dtb /boot/overlays/spi1-2cs.dtbo
dtdiff merged1.dtb merged2.dtb
Llegar:
--- / dev / fd / 63 2016-05-16 14: 18: 56.189634286 +0100
+++ / dev / fd / 62 2016-05-16 14: 18: 56.189634286 +0100
@@ -453,7 +453,7 @@

spi1_cs_pins {
brcm, función = <0x1>;
- brcm, pines = <0x12>;
+ brcm, pines = <0x12 0x11>;
phandle = <0x3e>;
};

168
MANUAL RASPBERRY
PI 4

@@ -725,7 +725,7 @@
# tamaño-celdas = <0x0>;
relojes = <0x13 0x1>;
compatible = "brcm, bcm2835-aux-spi";
- cs-gpios = <0xc 0x12 0x1>;
+ cs-gpios = <0xc 0x12 0x1 0xc 0x11 0x1>;
interrupciones = <0x1 0x1d>;
linux, phandle = <0x30>;
phandle = <0x30>;
@@ -743,6 +743,16 @@
frecuencia-spi-max = <0x7a120>;
status = "ok";
};
+
+ spidev @ 1 {
+ # direcciones-celdas = <0x1>;
+ # tamaño-celdas = <0x0>;
+ compatible = "spidev";
+ phandle = <0x41>;
+ reg = <0x1>;
+ frecuencia-spi-max = <0x7a120>;
+ estado = "bien";
+};
};

spi @ 7e2150C0 {
El Utilidades de recompra incluye otra utilidad DT - ovmerge. A diferencia dtmerge,
ovmerge combina archivos y aplica superposiciones en forma de fuente. Debido a
que la superposición nunca se compila, las etiquetas se conservan y el resultado

169
MANUAL RASPBERRY
PI 4

suele ser más legible. También tiene una serie de otros trucos, como la capacidad
de enumerar el orden de inclusión de archivos.
Forzar un árbol de dispositivos específico
Si tiene necesidades muy específicas que no son compatibles con los DTB
predeterminados, o si solo desea experimentar con la escritura de sus propios DT,
puede decirle al cargador que cargue un archivo DTB alternativo como este:
árbol_dispositivo = my-pi.dtb
Deshabilitar el uso del árbol de dispositivos
Desde el cambio al kernel 4.4 y el uso de más controladores ascendentes, se
requiere el uso del árbol de dispositivos en los kernels Pi Linux. Sin embargo, para
bare metal y otros sistemas operativos, el método para deshabilitar el uso de DT es
agregar:
device_tree =
a config.txt.
Atajos y variantes de sintaxis
El cargador comprende algunos atajos:
dtparam = i2c_arm = encendido
dtparam = i2s = encendido
se puede abreviar a:
dtparam = i2c, i2s
( i2c es un alias de i2c_arm y =onse asume). También acepta las versiones de
formato largo: device_tree_overlay y device_tree_param.
Otros comandos DT disponibles en config.txt
device_tree_address Esto se usa para anular la dirección donde el firmware carga el
árbol de dispositivos (no dt-blob). Por defecto, el firmware elegirá un lugar adecuado.
device_tree_end Esto establece un límite (exclusivo) para el árbol de dispositivos
cargado. De forma predeterminada, el árbol de dispositivos puede crecer hasta el
final de la memoria utilizable, que es casi con certeza lo que se requiere.
dtdebug Si es distinto de cero, active algunos registros adicionales para el
procesamiento del árbol de dispositivos del firmware.

170
MANUAL RASPBERRY
PI 4

enable_uart Habilite la UART principal / de la consola (ttyS0 en un Pi 3, ttyAMA0 de


lo contrario, a menos que se cambie con una superposición como miniuart-bt). Si el
UART principal es ttyAMA0, enable_uart tiene el valor predeterminado 1 (habilitado);
de lo contrario, el valor predeterminado es 0 (inhabilitado). Esto se debe a que es
necesario evitar que la frecuencia del núcleo cambie, lo que inutilizaría ttyS0, por
enable_uart=1 lo que implica core_freq = 250 (a menos que force_turbo = 1). En
algunos casos, se trata de un impacto de rendimiento, por lo que está desactivado de
forma predeterminada.

overlay_prefix Especifica un subdirectorio / prefijo desde el que cargar


superposiciones; el valor predeterminado es "superposiciones /". Tenga en cuenta la
"/" final. Si lo desea, puede agregar algo después de la "/" final para agregar un
prefijo a cada archivo, aunque es probable que no sea necesario.
El DT puede controlar otros puertos; para obtener más detalles, consulte la sección
3.
Ayuda adicional
Si ha leído este documento y no ha encontrado la respuesta a un problema del árbol
de dispositivos, hay ayuda disponible. Por lo general, se puede encontrar al autor en
los foros de Raspberry Pi, particularmente en el foro Device Tree.
La línea de comandos del kernel
El kernel de Linux acepta una línea de comandos de parámetros durante el arranque.
En Raspberry Pi, esta línea de comando se define en un archivo en la partición de
arranque, llamado cmdline.txt. Este es un archivo de texto simple que se puede
editar con cualquier editor de texto, por ejemplo, Nano.
sudo nano /boot/cmdline.txt
NOTA
Tenemos que usar sudo para editar cualquier cosa en la partición de arranque, y
todos los parámetros cmdline.txt deben estar en la misma línea (sin retornos de
carro).

171
MANUAL RASPBERRY
PI 4

La línea de comando que se pasó al kernel en el momento del arranque se puede


mostrar usando cat /proc/cmdline. No será exactamente igual a eso, ya que
cmdline.txt el firmware puede realizar cambios antes de iniciar el kernel.
Opciones de línea de comando
Hay muchos parámetros de línea de comandos del kernel, algunos de los cuales
están definidos por el kernel. Otros están definidos por el código que puede estar
usando el kernel, como el sistema de pantalla de presentación de Plymouth.
Entradas estándar
 consola: define la consola serie. Suele haber dos entradas:
console=serial0,115200
console=tty1
 root: define la ubicación del sistema de archivos raíz, por ejemplo,
root=/dev/mmcblk0p2significa bloque de tarjeta multimedia 0 partición 2.
 rootfstype: define qué tipo de sistema de archivos utiliza rootfs, p. ej.
rootfstype=ext4
 ascensor: especifica el planificador de E / S que se utilizará.
elevator=deadlinesignifica que el kernel impone una fecha límite a todas las
operaciones de E / S para evitar la falta de solicitudes.
 quiet: establece el nivel de registro del kernel predeterminado en
KERN_WARNING, que suprime todos los mensajes de registro, excepto los
muy graves, durante el arranque.
Mostrar entradas en los modos FKMS y KMS
El firmware agrega automáticamente una resolución preferida y configuraciones de
sobre exploración a través de una entrada como:
video=HDMI-A-1:1920x1080M@60,margin_left=0,margin_right=0,margin_top=0
,margin_bottom=0
Esta entrada predeterminada se puede modificar duplicando la entrada anterior
manualmente en /boot/cmdline.txt y realizando los cambios necesarios en los
parámetros de margen. Además, es posible agregar rotación y reflejar parámetros
como se documenta en la documentación estándar de framebuffer de Linux . De

172
MANUAL RASPBERRY
PI 4

forma predeterminada, las margin_* opciones se establecen a partir de las


overscan entradas en config.txt, si están presentes. Se puede evitar que el firmware
realice cambios específicos de KMS en la línea de comandos agregando
disable_fw_kms_setup=1aconfig.txt
Una entrada de ejemplo puede ser la siguiente:
video=HDMI-A-
1:1920x1080M@60,margin_left=0,margin_right=0,margin_top=0,margin_bottom=0,ro
tate=90,reflect_x`
Las posibles opciones para el tipo de visualización, la primera parte de la video=
entrada, son las siguientes:
opción de video Monitor

HDMI 1 (HDMI 0 en serigrafía de Pi4B,


HDMI-A-1
HDMI en placas HDMI individuales)
HDMI-A-2 HDMI 2 (HDMI 1 en serigrafía de Pi4B)
DSI-1 DSI o DPI
Compuesto-1 Compuesto
Tabla 0-12 Opciones tipo de visualización

Otras entradas (no exhaustivas)


 splash: le dice al boot que use una pantalla de bienvenida a través del módulo
Plymouth.
 plymouth.ignore-serial-consoles: normalmente, si el módulo Plymouth está
habilitado, evitará que aparezcan mensajes de arranque en cualquier consola
serial que pueda estar presente. Esta bandera le dice a Plymouth que ignore
todas las consolas en serie, haciendo que los mensajes de arranque sean
visibles nuevamente, como lo serían si Plymouth no se estuviera ejecutando.
 dwc_otg.lpm_enable = 0: desactiva Link Power Management (LPM) en el
controlador dwc_otg; el controlador dwc_otg es el controlador del controlador
USB integrado en el procesador utilizado en las computadoras Raspberry Pi.
NOTA

173
MANUAL RASPBERRY
PI 4

En Raspberry Pi 4, este controlador está desactivado de forma predeterminada y


solo está conectado al conector de entrada de alimentación tipo C; los puertos USB
de tipo A en Pi 4 son controlados por un controlador USB separado que no se ve
afectado por esta configuración.
 dwc_otg.speed: establece la velocidad del controlador USB integrado en el
procesador en las computadoras Raspberry Pi. dwc_otg.speed=1lo
configurará en la velocidad máxima (USB 1.0), que es más lenta que la
velocidad alta (USB 2.0). Esta opción no debe configurarse excepto durante la
resolución de problemas con dispositivos USB.
NOTA
En Raspberry Pi 4, este controlador está desactivado de forma predeterminada y
solo está conectado al conector de entrada de alimentación tipo C; los puertos USB
de tipo A en Pi 4 son controlados por un controlador USB separado que no se ve
afectado por esta configuración.
 smsc95xx.turbo_mode: habilita / deshabilita el modo turbo del controlador de
red cableada. smsc95xx.turbo_mode=Napaga el modo turbo.
 usbhid.mousepoll: especifica el intervalo de sondeo del mouse. Si tiene
problemas con un ratón inalámbrico lento o irregular, este valor está a 0 ayuda
podría: usbhid.mousepoll=0.
Configuración de UART
Hay dos tipos de UART disponibles en Raspberry Pi: PL011 y mini UART. El PL011
es un UART capaz y ampliamente compatible con 16550, mientras que el mini UART
tiene un conjunto de funciones reducido.
Todos los UART en la Raspberry Pi son solo de 3.3V; se producirán daños si están
conectados a sistemas de 5V. Se puede utilizar un adaptador para conectarse a
sistemas de 5V. Alternativamente, varios terceros ofrecen adaptadores seriales de
USB a 3.3V de bajo costo.
Raspberry Pi Zero, 1, 2 y 3
La Raspberry Pi Zero, 1, 2 y 3 contienen cada una dos UART de la siguiente manera:
 UART0 - PL011 y UART1 miniUART

174
MANUAL RASPBERRY
PI 4

Raspberry Pi 4 y 400
Raspberry Pi 4B y 400 tienen cuatro PL011 adicionales, que están deshabilitados de
forma predeterminada:
 UART0 - PL011
 UART1 - mini UART
 UART2 - PL011
 UART3 - PL011
 UART4 - PL011
 UART5 - PL011
CM, CM 3, CM 3+ y CM 4
El módulo de cómputo de primera generación, junto con el módulo de cómputo 3 y el
módulo de cómputo 3+, tienen cada uno dos UART, mientras que el módulo de
cómputo 4 tiene seis UART como se describió anteriormente.

En todos los modelos de módulo informático, las UART están deshabilitadas de


forma predeterminada y deben habilitarse explícitamente mediante una
superposición de árbol de dispositivos. También debe especificar qué pines GPIO
usar, por ejemplo:
dtoverlay = uart1, txd1_pin = 32, rxd1_pin = 33
UART primario
En la Raspberry Pi, se selecciona un UART para estar presente en GPIO 14
(transmitir) y 15 (recibir); este es el UART principal. De forma predeterminada,
también será la UART en la que puede estar presente una consola Linux. Tenga en
cuenta que GPIO 14 es el pin 8 en el encabezado GPIO, mientras que GPIO 15 es el
pin 10.
UART secundario
El UART secundario normalmente no está presente en el conector GPIO. De forma
predeterminada, el UART secundario está conectado al lado de Bluetooth del
controlador combinado de LAN / Bluetooth inalámbrico, en los modelos que
contienen este controlador.

175
MANUAL RASPBERRY
PI 4

UART primario y secundario


La siguiente tabla resume la asignación de los dos primeros UART:
primer PL011
Modelo mini UART Modelo
(UART0)

Raspberry Pi Zero primario secundario Raspberry Pi Zero


Raspberry Pi Zero secundario Raspberry Pi Zero
primario
W (Bluetooth) W
Frambuesa pi 1 primario secundario Frambuesa pi 1
Frambuesa pi 2 primario secundario Frambuesa pi 2
secundario
Frambuesa pi 3 primario Frambuesa pi 3
(Bluetooth)
secundario
Frambuesa pi 4 primario Frambuesa pi 4
(Bluetooth)
Tabla 0-13 Asignación de los dos primeros UART:

NOTA
El mini UART está deshabilitado de forma predeterminada, ya sea que se designe
como UART primario o secundario. Dispositivos Linux en el sistema operativo
Raspberry Pi:
Dispositivo Linux Descripción

/dev/ttyS0 mini UART


/dev/ttyAMA0 primer PL011 (UART0)
/dev/serial0 UART primario
/dev/serial1 UART secundario
Tabla 0-14 Dispositivos Linux en SO Raspberry Pi:

NOTA
/dev/serial0 y /dev/serial1 son enlaces simbólicos que apuntan a /dev/ttyS0 o
/dev/ttyAMA0.
Mini-UART y frecuencia del núcleo de la CPU
Para usar el mini UART, debe configurar la Raspberry Pi para usar una frecuencia de
reloj de núcleo de VPU fija. Esto se debe a que el reloj mini UART está vinculado al
reloj del núcleo de la VPU, de modo que cuando cambia la frecuencia del reloj del

176
MANUAL RASPBERRY
PI 4

núcleo, también cambiará la velocidad en baudios del UART. Se pueden agregar


las configuraciones enable_uart y para cambiar el comportamiento del mini UART. La
siguiente tabla resume las posibles combinaciones: core_freqconfig.txt
Mini UART configurado Reloj de núcleo Resultado
en

UART primario variable mini UART deshabilitado


Mini UART habilitado,
reloj central fijado en
fijado por 250MHz, o
UART primario
ajuste enable_uart=1 si force_turbo=1 está
configurado, la frecuencia
turbo de la VPU
UART secundario variable mini UART deshabilitado
fijado por
UART secundario mini UART habilitado
ajuste core_freq=250
Tabla 0-15 Combinaciones: core_freqconfig.txt

El estado predeterminado de la enable_uartbandera depende de qué UART es el


UART principal:
Estado predeterminado de la bandera
UART primario
enable_uart

mini UART 0
primer PL011 (UART0) 1
Tabla 0-16 UART principal

Desactivación de la consola serie de Linux


De forma predeterminada, el UART principal se asigna a la consola de Linux. Si
desea utilizar el UART principal para otros fines, debe volver a configurar el sistema
operativo Raspberry Pi. Esto se puede hacer usando raspi-config :
 Inicio Raspi-config: sudo raspi-config.
 Seleccione la opción 3 - Opciones de interfaz.
 Seleccione la opción P6 - Puerto serie.

177
MANUAL RASPBERRY
PI 4

 A la pronta Would you like a login shell to be accessible over serial? respuesta
'No'
 A la pronta Would you like the serial port hardware to be enabled? respuesta
'Sí'
 Salga de raspi-config y reinicie la Pi para que los cambios surtan efecto.
Habilitación de Early Console para Linux
Aunque el kernel de Linux inicia las UART relativamente temprano en el proceso de
arranque, todavía es mucho tiempo después de que se hayan configurado algunos
bits críticos de la infraestructura. Una falla en esas primeras etapas puede ser difícil
de diagnosticar sin acceso a los mensajes de registro del kernel de ese momento.
Para habilitar la earlycon compatibilidad con uno de los UART, agregue una de las
siguientes opciones a cmdline.txt, según el UART que sea el principal:
Para Pi 4, 400 y Compute Module 4:
earlycon = uart8250, mmio32,0xfe215040
earlycon = pl011, mmio32,0xfe201000
Para Pi 2, Pi 3 y Compute Module 3:
earlycon = uart8250, mmio32,0x3f215040
earlycon = pl011, mmio32,0x3f201000
Para Pi 1, Pi Zero y Compute Module:
earlycon = uart8250, mmio32,0x20215040
earlycon = pl011, mmio32,0x20201000
La velocidad en baudios predeterminada es 115200bps.
NOTA
La selección de la primera consola incorrecta puede evitar que la Pi se inicie.
UART y árbol de dispositivos
Se pueden encontrar varias definiciones de superposición del árbol de dispositivos
de UART en el árbol de GitHub del kernel. Las dos superposiciones más útiles son
disable-bty miniuart-bt.
disable-bt desactiva el dispositivo Bluetooth y convierte el primer PL011 (UART0) en
el UART principal. También debe deshabilitar el servicio del sistema que inicializa el
módem, para que no se conecte a la UART, utilizando sudo systemctl disable hciuart.
178
MANUAL RASPBERRY
PI 4

miniuart-btcambia la función Bluetooth para usar el mini UART y convierte el primer


PL011 (UART0) en el UART principal. Tenga en cuenta que esto puede reducir la
velocidad máxima en baudios utilizable (consulte las limitaciones de mini UART a
continuación). También debe configurar el reloj del núcleo de la VPU a una
frecuencia fija utilizando force_turbo=1o core_freq=250.
Las superposiciones uart2, uart3, uart4, y uart5 se utilizan para habilitar las cuatro
UART adicionales en el Pi 4. Hay otras superposiciones UART-específicos en la
carpeta. Consulte para /boot/overlays/README obtener detalles sobre las
superposiciones del árbol de dispositivos o ejecute dtoverlay -h overlay-name para
obtener descripciones e información de uso.
Agrega una línea al config.txt archivo para aplicar una superposición del árbol de
dispositivos. Tenga en cuenta que -overlay.dts se elimina la parte del nombre del
archivo. Por ejemplo:
dtoverlay = deshabilitar-bt
PL011 y mini-UART
Existen algunas diferencias entre PL011 UART y mini-UART.

El mini-UART tiene FIFO más pequeños. Combinado con la falta de control de flujo,
esto lo hace más propenso a perder caracteres a velocidades en baudios más altas.
También es generalmente menos capaz que un PL011, principalmente debido a su
vínculo de velocidad en baudios con la velocidad del reloj de la VPU.
Las deficiencias particulares del mini UART en comparación con un PL011 son:
 Sin detección de rotura
 Sin detección de errores de encuadre
 Sin bit de paridad
 Sin interrupción de tiempo de espera de recepción
 Sin señales DCD, DSR, DTR o RI
Puede encontrar más documentación sobre el mini UART en el documento de
periféricos de SoC .

179
MANUAL RASPBERRY
PI 4

Iconos de advertencia de firmware


En determinadas circunstancias, el firmware de la Raspberry Pi mostrará un icono de
advertencia en la pantalla para indicar un problema. Actualmente hay tres iconos que
se pueden mostrar.
Advertencia de subtensión
Si la fuente de alimentación de la Raspberry Pi cae por debajo de 4,63 V (± 5%), se
muestra el siguiente icono.

Ilustración 0-47 Advertencia subtención

Advertencia de exceso de temperatura (80-85 ° C)


Si la temperatura del SoC está entre 80 ° C y 85 ° C, se muestra el siguiente icono.
El (los) núcleo (s) del ARM se reducirán en un intento de reducir la temperatura del
núcleo.

Ilustración 0-48 Sobretemperatura (80-85 ° C)

Advertencia de temperatura excesiva (más de 85 ° C)


Si la temperatura del SoC es superior a 85 ° C, se muestra el siguiente icono. El (los)
núcleo (s) ARM y la GPU se reducirán en un intento de reducir la temperatura del
núcleo.

180
MANUAL RASPBERRY
PI 4

Ilustración 0-49 Sobretemperatura (85 ° C +)

Códigos de parpadeo de advertencia LED


Si un Pi no arranca por alguna razón, o tiene que apagarse, en muchos casos se
encenderá un LED una cantidad específica de veces para indicar lo que sucedió. El
LED parpadeará durante varios destellos largos (0 o más), luego destellos cortos,
para indicar el estado exacto. En la mayoría de los casos, el patrón se repetirá
después de un intervalo de 2 segundos.
Destellos largos Destellos cortos Estado

Error genérico al
0 3
arrancar
0 4 inicio * .elf no encontrado
No se encontró la
0 7
imagen del kernel
0 8 Fallo de SDRAM
0 9 SDRAM insuficiente
0 10 En estado HALT
2 1 Partición no FAT
No se pudo leer de la
2 2
partición
Partición extendida no
2 3
FAT
Error de coincidencia de
2 4 firma / hash de archivo -
Pi 4
3 1 Error de SPI EEPROM -
181
MANUAL RASPBERRY
PI 4

Pi 4
SPI EEPROM está
3 2 protegido contra
escritura - Pi 4
3 3 Error I2C - Pi 4
Tipo de placa no
4 4
admitida
4 5 Error fatal de firmware
4 6 Corte de energía tipo A
4 7 Corte de energía tipo B
Tabla 0-17 Códigos de parpadeo de advertencia LED

Asegurar su Raspberry Pi
La seguridad de su Raspberry Pi es importante. Las brechas en la seguridad dejan
su Raspberry Pi abierta a los piratas informáticos que luego pueden usarla sin su
permiso.

El nivel de seguridad que necesita depende de cómo desee utilizar su Raspberry Pi.
Por ejemplo, si simplemente está usando su Raspberry Pi en su red doméstica,
detrás de un enrutador con un firewall, entonces ya es bastante seguro por defecto.
Sin embargo, si desea exponer su Raspberry Pi directamente a Internet, ya sea con
una conexión directa (poco probable) o permitiendo que ciertos protocolos atraviesen
el firewall de su enrutador (por ejemplo, SSH), entonces debe realizar algunos
cambios de seguridad básicos.
Incluso si está escondido detrás de un firewall, es sensato tomarse la seguridad en
serio. Esta documentación describirá algunas formas de mejorar la seguridad de su
Raspberry Pi. Sin embargo, tenga en cuenta que no es exhaustivo.
Cambiar la contraseña predeterminada
El nombre de usuario y la contraseña predeterminados se utilizan para cada
Raspberry Pi que ejecuta Raspberry Pi OS. Entonces, si puede obtener acceso a una
Raspberry Pi, y esta configuración no se ha cambiado, tiene root acceso a esa
Raspberry Pi.

182
MANUAL RASPBERRY
PI 4

Entonces, lo primero que debe hacer es cambiar la contraseña. Esto se puede


hacer a través de la raspi-config aplicación o desde la línea de comandos.
sudo raspi-config
Seleccione la opción 2 y siga las instrucciones para cambiar la contraseña.
Sin embargo, todo lo que raspi-config hace es iniciar la passwd aplicación de línea de
comandos , lo que puede hacer desde la línea de comandos. Entonces, en su lugar,
puede escribir su nueva contraseña y confirmarla.
passwd
Cambiar su nombre de usuario
Por supuesto, puede hacer que su Raspberry Pi sea aún más segura cambiando
también su nombre de usuario. Todas las Raspberry Pis vienen con el nombre de
usuario predeterminado pi, por lo que cambiarlo hará que su Raspberry Pi sea más
segura de inmediato.
Para agregar un nuevo usuario, ingrese:
sudo adduser alice
Se le pedirá que cree una contraseña para el nuevo usuario.
El nuevo usuario tendrá un directorio de inicio en /home/alice/.
Para agregarlos al sudo grupo para otorgarles sudo permisos, así como todos los
demás permisos necesarios:
sudo usermod -a -G
adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,gpio,i2c,spi
alice
Puede verificar que sus permisos estén en su lugar (es decir, que puede usar sudo)
al intentar lo siguiente:
sudo su - alice
Si se ejecuta correctamente, puede estar seguro de que la nueva cuenta está en el
sudo grupo.
Una vez que haya confirmado que la nueva cuenta está funcionando, puede eliminar
el pi usuario. Para hacer esto, primero deberá cambiar el usuario de inicio de sesión
automático a su nuevo usuario alice, con lo siguiente:
sudo raspi-config
183
MANUAL RASPBERRY
PI 4

Seleccione la opción 1, S5 Boot / Auto login, y diga sí para reiniciar. Tenga en


cuenta que con la distribución actual del sistema operativo Raspberry Pi, hay algunos
aspectos que requieren que el pi usuario esté presente. Si no está seguro de si se
verá afectado por esto, deje al pi usuario en su lugar. Se está trabajando para reducir
la dependencia del pi usuario.
Para eliminar el pi usuario, escriba lo siguiente:
sudo deluser pi
Este comando eliminará al pi usuario pero abandonará la /home/pi carpeta. Si es
necesario, puede utilizar el siguiente comando para eliminar la carpeta de inicio del pi
usuario al mismo tiempo. Tenga en cuenta que los datos de esta carpeta se
eliminarán de forma permanente, así que asegúrese de que todos los datos
necesarios estén almacenados en otro lugar.
sudo deluser -remove-home pi
Este comando dará como resultado una advertencia de que el grupo pi no tiene más
miembros. Sin embargo, el deluser comando elimina tanto al pi usuario como al pi
grupo, por lo que la advertencia se puede ignorar de forma segura.

Hacer sudo requerir una contraseña


Colocarlo sudo delante de un comando lo ejecuta como superusuario y, por defecto,
no necesita contraseña. En general, esto no es un problema. Sin embargo, si su Pi
está expuesto a Internet y de alguna manera se explota (tal vez a través de un exploit
de una página web, por ejemplo), el atacante podrá cambiar las cosas que requieren
credenciales de superusuario, a menos que haya configurado sudo para requerir una
contraseña.
Para forzar sudo a solicitar una contraseña, ingrese:
sudo visudo /etc/sudoers.d/010_pi-nopasswd
y cambie la pi entrada (o cualquier nombre de usuario que tenga derechos de
superusuario) a:
pi ALL=(ALL) PASSWD: ALL
Luego guarde el archivo: se verificará si hay errores de sintaxis. Si no se detectaron
errores, el archivo se guardará y volverá a la línea de comandos. Si se detectaron
184
MANUAL RASPBERRY
PI 4

errores, se le preguntará "¿y ahora qué?" Presione la tecla 'enter' en su teclado:


esto mostrará una lista de opciones. Probablemente desee usar 'e' para '(e) dit
sudoers file again', para poder editar el archivo y solucionar el problema.
NOTA
Elegir la opción 'Q' guardará el archivo con cualquier error de sintaxis aún en su
lugar, lo que hace imposible que cualquier usuario use el comando sudo.
Actualización del sistema operativo Raspberry Pi
Una distribución actualizada contiene las últimas correcciones de seguridad, por lo
que debe continuar y actualizar su versión de Raspberry Pi OS a la última versión.
Si está utilizando SSH para conectarse a su Raspberry Pi, puede valer la pena
agregar un trabajo cron que actualice específicamente el servidor ssh. El siguiente
comando, tal vez como un trabajo cron diario, asegurará que tenga las últimas
correcciones de seguridad SSH de inmediato, independientemente de su proceso de
actualización normal.
apt install openssh-server
Mejora de la seguridad SSH
SSH es una forma común de acceder a una Raspberry Pi de forma remota. De forma
predeterminada, iniciar sesión con SSH requiere un par de nombre de usuario /
contraseña, y hay formas de hacerlo más seguro. Un método aún más seguro es
utilizar la autenticación basada en claves.
Mejora de la seguridad del nombre de usuario / contraseña
Lo más importante que debe hacer es asegurarse de tener una contraseña muy
sólida. Si su Raspberry Pi está expuesta a Internet, la contraseña debe ser muy
segura. Esto ayudará a evitar ataques de diccionario o similares.
También puede permitir o denegar usuarios específicos modificando la sshd
configuración.
sudo nano /etc/ssh/sshd_config
Agregue, edite o agregue al final del archivo la siguiente línea, que contiene los
nombres de usuario a los que desea permitir el inicio de sesión:
AllowUsers alice bob

185
MANUAL RASPBERRY
PI 4

También puede utilizar DenyUsers para evitar específicamente que algunos


nombres de usuario inicien sesión:
DenyUsers Jane John
Después del cambio, deberá reiniciar el sshd servicio usando sudo systemctl restart
ssh o reiniciar para que los cambios surtan efecto.
Usando autenticación basada en claves.
Los pares de claves son dos claves criptográficamente seguras. Uno es privado y el
otro es público. Se pueden usar para autenticar a un cliente en un servidor SSH (en
este caso, la Raspberry Pi).
El cliente genera dos claves, que están vinculadas criptográficamente entre sí. La
clave privada nunca debe liberarse, pero la clave pública se puede compartir
libremente. El servidor SSH toma una copia de la clave pública y, cuando se solicita
un enlace, utiliza esta clave para enviar al cliente un mensaje de desafío, que el
cliente cifrará con la clave privada. Si el servidor puede usar la clave pública para
descifrar este mensaje de nuevo al mensaje de desafío original, entonces se puede
confirmar la identidad del cliente.

La generación de un par de claves en Linux se realiza mediante el ssh-keygen


comando en el cliente ; las claves se almacenan de forma predeterminada en la .ssh
carpeta del directorio de inicio del usuario. Se llamará a la clave privada y se llamará
a id_rsa la clave pública asociada id_rsa.pub. La clave tendrá una longitud de 2048
bits: romper el cifrado de una clave de esa longitud llevaría mucho tiempo, por lo que
es muy seguro. Puede hacer claves más largas si la situación lo requiere. Tenga en
cuenta que solo debe realizar el proceso de generación una vez: si se repite,
sobrescribirá las claves generadas anteriormente. Todo lo que dependa de esas
claves antiguas deberá actualizarse a las claves nuevas.
Se le pedirá una frase de contraseña durante la generación de la clave: este es un
nivel adicional de seguridad. Por el momento, déjelo en blanco.
La clave pública ahora debe trasladarse al servidor: consulte Copiar su clave pública
en su Raspberry Pi .

186
MANUAL RASPBERRY
PI 4

Finalmente, necesitamos deshabilitar los inicios de sesión con contraseña, de modo


que toda la autenticación se realice mediante los pares de claves.
sudo nano /etc/ssh/sshd_config
Hay tres líneas a las que se debe cambiar no, si aún no están configuradas de esa
manera:
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
Guarde el archivo y reinicie el sistema ssh con sudo service ssh reload o reinicie.
Instalar un cortafuegos
Hay muchas soluciones de firewall disponibles para Linux. La mayoría usa el
proyecto iptables subyacente para proporcionar filtrado de paquetes. Este proyecto
se asienta sobre el sistema de filtrado de red de Linux. Iptables está instalado de
forma predeterminada en el sistema operativo Raspberry Pi, pero no está
configurado. Su puesta en marcha puede ser una tarea complicada, y un proyecto
que proporciona una interfaz simple que iptables es UFW , siglas de 'sin
complicaciones fuego Wall'. Esta es la herramienta de firewall predeterminada en
Ubuntu y se puede instalar fácilmente en su Raspberry Pi:
sudo apt install ufw
ufw es una herramienta de línea de comandos bastante sencilla, aunque hay algunas
GUI disponibles para ella. Este documento describirá algunas de las opciones
básicas de la línea de comandos. Tenga en cuenta que ufw debe ejecutarse con
privilegios de superusuario, por lo que todos los comandos van precedidos de sudo.
También es posible utilizar la opción --dry-run cualquier ufw comando, que indica los
resultados del comando sin realizar ningún cambio.
Para habilitar el firewall, que también asegurará que se inicie en el arranque, use:
sudo ufw enable
Para deshabilitar el firewall y deshabilitar el inicio en el arranque, use:
sudo ufw disable
Permita que un puerto en particular tenga acceso (hemos usado el puerto 22 como
ejemplo):
187
MANUAL RASPBERRY
PI 4

sudo ufw allow 22


Negar el acceso a un puerto también es muy simple (nuevamente, hemos usado el
puerto 22 como ejemplo):
sudo ufw deny 22
También puede especificar qué servicio está permitiendo o denegando en un puerto.
En este ejemplo, negamos tcp en el puerto 22:
sudo ufw deny 22/tcp
Puede especificar el servicio incluso si no sabe qué puerto utiliza. Este ejemplo
permite el acceso del servicio ssh a través del firewall:
sudo ufw allow ssh
El comando de estado enumera todas las configuraciones actuales para el firewall:
sudo ufw status
Las reglas pueden ser bastante complicadas, ya que permiten bloquear direcciones
IP específicas, especificar en qué dirección se permite el tráfico o limitar el número
de intentos de conexión, por ejemplo, para ayudar a derrotar un ataque de
denegación de servicio (DoS). También puede especificar las reglas del dispositivo a
las que se aplicarán (por ejemplo, eth0, wlan0). Consulte la ufwpágina de manual
( man ufw) para obtener detalles completos, pero aquí hay algunos ejemplos de
comandos más sofisticados.
Limite los intentos de inicio de sesión en el puerto ssh usando tcp: esto niega la
conexión si una dirección IP ha intentado conectarse seis o más veces en los últimos
30 segundos:
sudo ufw limit ssh/tcp
Denegar el acceso al puerto 30 desde la dirección IP 192.168.2.1
sudo ufw deny from 192.168.2.1 port 30
Instalando fail2ban
Si está utilizando su Raspberry Pi como algún tipo de servidor, por ejemplo, un ssh
servidor web o un servidor web, su firewall tendrá "agujeros" deliberados para
permitir el paso del tráfico del servidor. En estos casos, Fail2ban puede resultar útil.
Fail2ban, escrito en Python, es un escáner que examina los archivos de registro
producidos por Raspberry Pi y los comprueba en busca de actividad sospechosa.
188
MANUAL RASPBERRY
PI 4

Detecta cosas como múltiples intentos de inicio de sesión por fuerza bruta y puede
informar a cualquier firewall instalado para detener más intentos de inicio de sesión
de direcciones IP sospechosas. Le ahorra tener que verificar manualmente los
archivos de registro para detectar intentos de intrusión y luego actualizar el firewall (a
través de iptables) para evitarlos.
Instale fail2ban usando el siguiente comando:
sudo apt install fail2ban
Durante la instalación, Fail2ban crea una carpeta /etc/fail2ban en la que hay un
archivo de configuración llamado jail.conf. Esto debe copiarse jail.local para
habilitarlo. Dentro de este archivo de configuración hay un conjunto de opciones
predeterminadas, junto con opciones para verificar servicios específicos en busca de
anomalías. Haga lo siguiente para examinar / cambiar las reglas que se utilizan para
ssh:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
Agregue la siguiente sección al jail.local archivo. En algunas versiones de fail2ban,
es posible que esta sección ya exista, así que actualice esta sección preexistente si
está allí.
[ssh]
habilitado = verdadero
puerto = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
Como puede ver, esta sección se llama ssh, está habilitada, examina el puerto ssh,
filtra usando los sshd parámetros, analiza la /var/log/auth.log actividad maliciosa y
permite seis reintentos antes de que se alcance el umbral de detección. Al verificar la
sección predeterminada, podemos ver que la acción de prohibición predeterminada
es:
# Default banning action (e.g. iptables, iptables-new,

189
MANUAL RASPBERRY
PI 4

# iptables-multiport, shorewall, etc) It is used to define


# action_* variables. Can be overridden globally or per
# section within jail.local file
banaction = iptables-multiport
iptables-multiport significa que el sistema Fail2ban ejecutará el
/etc/fail2ban/action.d/iptables-multiport.conf archivo cuando se alcance el umbral de
detección. Hay varios archivos de configuración de acciones diferentes que se
pueden utilizar. El multipuerto prohíbe todo acceso en todos los puertos.
Si desea prohibir permanentemente una dirección IP después de tres intentos
fallidos, puede cambiar el valor de maxretry en la [ssh] sección y establecer el
bantime en un número negativo:
[ssh]
habilitado = verdadero
puerto = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = -1
Configurar pantalla en blanco
Puede configurar su Raspberry Pi para usar un protector de pantalla o dejar la
pantalla en blanco.
En la consola
Cuando se ejecuta sin un escritorio gráfico, Raspberry Pi OS dejará la pantalla en
blanco después de 10 minutos sin que el usuario ingrese, por ejemplo, movimiento
del mouse o pulsaciones de teclas.
La configuración actual, en segundos, se puede mostrar usando:
cat /sys/module/kernel/parameters/consoleblank
Para cambiar la consoleblank configuración, edite la línea de comando del kernel:
sudo nano /boot/cmdline.txt
El archivo /boot/cmdline.txt contiene una sola línea de texto. Agregue consoleblank=n
para tener la consola en blanco después de n segundos de inactividad. Por ejemplo,
190
MANUAL RASPBERRY
PI 4

consoleblank=300 hará que la consola se quede en blanco después de 300


segundos, 5 minutos, de inactividad. Asegúrese de agregar su consoleblank opción a
la única línea de texto que ya está en el cmdline.txt archivo. Para deshabilitar la
pantalla en blanco, configure consoleblank=0.
También puede utilizar la raspi-config herramienta para deshabilitar la pantalla en
blanco. Tenga en cuenta que la configuración de pantalla en blanco raspi-config
también controla la pantalla en blanco cuando se está ejecutando el escritorio
gráfico.
En el escritorio
Raspberry Pi OS dejará en blanco el escritorio gráfico después de 10 minutos sin
intervención del usuario. Puede desactivar esto cambiando la opción 'Pantalla en
blanco' en la herramienta de configuración de Raspberry Pi, que está disponible en el
menú Preferencias. Tenga en cuenta que la opción 'Pantalla en blanco' también
controla la pantalla en blanco cuando el escritorio gráfico no se está ejecutando.
También hay un protector de pantalla gráfico disponible, que se puede instalar de la
siguiente manera:
sudo apt install xscreensaver
Esto puede tomar unos pocos minutos.
Una vez que se ha instalado, puede encontrar la aplicación Salvapantallas en el
menú Preferencias: proporciona muchas opciones para configurar el salvapantallas,
incluida su desactivación por completo.
Apagar HDMI
Si desea apagar la pantalla de video por completo, puede usar el comando
vcgencmd,
vcgencmd display_power 0
El video no volverá a encenderse hasta que reinicie o vuelva a encenderlo:
vcgencmd display_power 1
La bootcarpeta
En una instalación básica del sistema operativo Raspberry Pi , los archivos de
arranque se almacenan en la primera partición de la tarjeta SD, que está formateada

191
MANUAL RASPBERRY
PI 4

con el sistema de archivos FAT. Esto significa que se puede leer en dispositivos
Windows, macOS y Linux.
Cuando la Raspberry Pi está encendida, carga varios archivos desde la partición /
carpeta de arranque para iniciar los distintos procesadores, luego inicia el kernel de
Linux.
Una vez que Linux ha arrancado, la partición de arranque se monta como /boot.
Contenido de la carpeta de inicio
bootcode.bin
Este es el cargador de arranque, que el SoC carga al arrancar, realiza una
configuración muy básica y luego carga uno de los start*.elf archivos. bootcode.bin
no se usa en la Raspberry Pi 4, porque ha sido reemplazado por el código de
arranque en la EEPROM integrada.
start.elf, start_x.elf, start_db.elf, start_cd.elf, start4.elf, start4x.elf, start4cd.elf,
start4db.elf
Estos son blobs binarios (firmware) que se cargan en VideoCore en el SoC, que
luego se encargan del proceso de arranque. start.elf es el firmware básico, start_x.elf
incluye controladores de cámara y códec, start_db.elf es una versión de depuración
del firmware y start_cd.elf es una versión reducida sin bloques de hardware de
soporte como códecs y 3D, y para usar cuando gpu_mem=16 se especifica en
config.txt. Puede encontrar más información sobre cómo utilizarlos en la
config.txtsección .
start4.elf, start4x.elf, start4cd.elf, Y start4db.elf son archivos firmware específico a la
Pi 4.
 reparación * .dat
Estos son archivos vinculadores y se emparejan con los start*.elfarchivos
enumerados en la sección anterior.
 cmdline.txt
La línea de comando del kernel pasó al kernel cuando arranca.
 config.txt

192
MANUAL RASPBERRY
PI 4

Contiene muchos parámetros de configuración para configurar el Pi. Vea la


config.txtsección .
 problema.txt
Alguna información de limpieza basada en texto que contiene la fecha y el ID
de confirmación de git de la distribución.
 ssh o ssh.txt
Cuando este archivo está presente, SSH se habilitará en el arranque. El
contenido no importa, puede estar vacío. De lo contrario, SSH está
deshabilitado de forma predeterminada.
 wpa_supplicant.conf
Este es el archivo para configurar los ajustes de la red inalámbrica (si el
hardware es capaz de hacerlo). Edite el código del país y la parte de la red
para que se adapten a su caso. Puede encontrar más información sobre cómo
utilizar este archivo en la wireless/headlesssección .
Archivos de árbol de dispositivos
Hay varios archivos blob del árbol de dispositivos, que tienen la extensión .dtb. Estos
contienen las definiciones de hardware de los distintos modelos de Raspberry Pi y se
utilizan en el arranque para configurar el kernel de acuerdo con el modelo de Pi que
se detecta .
Archivos de kernel
La carpeta de arranque contendrá varios archivos de imagen del kernel, utilizados
para los diferentes modelos de Raspberry Pi:
Nombre del Modelo Raspberry
Procesador Notas
archivo Pi

kernel.img BCM2835 Pi Zero, Pi 1


BCM2836, Más tarde, Pi 2
kernel7.img Pi 2, Pi 3
BCM2837 usa el BCM2837
Ampliación de
kernel7l.img BCM2711 Pi 4 dirección física
grande (LPAE)

193
MANUAL RASPBERRY
PI 4

Kernel Beta de 64
bits . Raspberry Pi
BCM2837,
kernel8.img Pi 2, Pi 3, Pi 4 2 con BCM2836
BCM2711
no es compatible
con 64 bits.
Tabla 0-18 Archivos de kernel

NOTA
La arquitectura informada por lscpues armv7lpara sistemas de 32 bits (es decir, todo
excepto kernel8.img) y aarch64para sistemas de 64 bits. El len el armv7lcaso se
refiere a que la arquitectura es little-endian, no LPAEcomo se indica len el
kernel7l.imgnombre del archivo.
La carpeta de superposiciones
La overlayssubcarpeta contiene superposiciones del árbol de dispositivos. Se utilizan
para configurar varios dispositivos de hardware que pueden estar conectados al
sistema, por ejemplo, la pantalla táctil Raspberry Pi o placas de sonido de terceros.
Estas superposiciones se seleccionan utilizando entradas en config.txt - consulte
'Árboles de dispositivos, superposiciones y parámetros, parte 2' para obtener más
información.

3.6 Archivo config.txt


¿Qué es config.txt?
La Raspberry Pi usa un archivo de configuración en lugar del BIOS que esperaría
encontrar en una PC convencional. Los parámetros de configuración del sistema,
que tradicionalmente se editarían y almacenarían usando un BIOS, se almacenan en
su lugar en un archivo de texto opcional llamado config.txt. La GPU lee esto antes de
que se inicialicen la CPU ARM y Linux. Por lo tanto, debe ubicarse en la primera
partición (de inicio) de su tarjeta SD, junto con bootcode.biny start.elf. Este archivo es
normalmente accesible /boot/config.txt desde Linux y debe editarse como root.
Desde Windows u OS X es visible como un archivo en la única parte accesible de la
tarjeta. Si necesita aplicar algunas de las configuraciones a continuación, pero aún

194
MANUAL RASPBERRY
PI 4

no tiene una config.txt en su partición de arranque, simplemente créelo como un


nuevo archivo de texto.
Cualquier cambio solo tendrá efecto después de que haya reiniciado su Raspberry
Pi. Después de que Linux se haya iniciado, puede ver la configuración activa actual
usando los siguientes comandos:
 vcgencmd get_config <config>: esto muestra un valor de configuración
específico, por ejemplo vcgencmd get_config arm_freq.
 vcgencmd get_config int: esto enumera todas las opciones de configuración
de enteros que están configuradas (distintas de cero).
 vcgencmd get_config str: esto enumera todas las opciones de configuración
de cadenas que están establecidas (no nulas).
NOTA
Hay algunos ajustes de configuración que no se pueden recuperar con vcgencmd.
Formato de archivo
El config.txt archivo es leído por el firmware de inicio de la etapa inicial, por lo que
tiene un formato de archivo muy simple. El formato es una sola property=value
declaración en cada línea, donde value es un número entero o una cadena. Se
pueden agregar comentarios, o los valores de configuración existentes se pueden
comentar y deshabilitar, comenzando una línea con el #carácter.
Hay un límite de longitud de línea de 98 caracteres (anteriormente 78) para las
entradas; se ignorará cualquier carácter que supere este límite.
Archivo de ejemplo:
# Habilitar audio (carga snd_bcm2835)
dtparam = audio = activado

# Cargar superposiciones automáticamente para las cámaras detectadas


camera_auto_detect = 1

# Cargar superposiciones automáticamente para pantallas DSI detectadas


display_auto_detect = 1

195
MANUAL RASPBERRY
PI 4

# Habilite el controlador DRM VC4 V3D


dtoverlay = vc4-kms-v3d
max_framebuffers = 2

# Deshabilitar la compensación para pantallas con sobrebarrido


disable_overscan = 1
Características avanzadas
include
Hace que el contenido del archivo especificado se inserte en el archivo actual.
Por ejemplo, agregar la línea include extraconfig.txt a config.txt incluirá el contenido
del extraconfig.txt archivo en el config.txt archivo.
Las directivas de inclusión no son compatibles con bootcode.bin o el cargador de
arranque EEPROM
Opciones comunes
Opciones de visualización comunes
disable_overscan
El valor predeterminado para disable_overscan es el 0 que proporciona valores
predeterminados de sobreexploración para los bordes izquierdo, derecho, superior e
inferior de 48 para los modos HD CEA, 32 para los modos SD CEA y 0 para los
modos DMT.
Configúrelo disable_overscan en 1 para deshabilitar los valores predeterminados de
sobreexploración establecidos por el firmware.
hdmi_enable_4kp60 (Solo Raspberry Pi 4)
De forma predeterminada, cuando se conecta a un monitor 4K, Raspberry Pi 4B, 400
y CM4 seleccionarán una frecuencia de actualización de 30Hz. Utilice esta opción
para permitir la selección de frecuencias de actualización de 60 Hz.
IMPORTANTE
No es posible emitir 4Kp60 en ambos puertos micro HDMI simultáneamente.
ADVERTENCIA

196
MANUAL RASPBERRY
PI 4

La configuración hdmi_enable_4kp60 aumentará el consumo de energía y la


temperatura de su Raspberry Pi.
Opciones de configuración de hardware comunes
camera_auto_detect
Con esta configuración habilitada (establecida en 1), el firmware cargará
automáticamente superposiciones para las cámaras que reconoce.
IMPORTANTE
Las nuevas imágenes del sistema operativo Raspberry Pi de Bullseye en adelante
vienen con esta configuración de forma predeterminada.
display_auto_detect
Con esta configuración habilitada (establecida en 1), el firmware cargará
automáticamente superposiciones para las pantallas que reconoce.
IMPORTANTE
Las nuevas imágenes del sistema operativo Raspberry Pi de Bullseye en adelante
vienen con esta configuración de forma predeterminada.
dtoverlay
La dtoverlay opción solicita al firmware que cargue una superposición de árbol de
dispositivos con nombre, un archivo de configuración que puede habilitar el soporte
del kernel para hardware integrado y externo. Por ejemplo, dtoverlay=vc4-kms-v3d
carga una superposición que habilita el controlador de gráficos del kernel.
Como caso especial, si se llama sin valor, dtoverlay= marca el final de una lista de
parámetros de superposición. Si se usa antes que cualquier otro dtoverlay, o dtparam
la configuración que evita que la carga de cualquier superposición HAT.
Para obtener más detalles, consulte DTB, superposiciones y config.txt .
dtparam
Los archivos de configuración del árbol de dispositivos para Raspberry Pis admiten
una serie de parámetros para cosas como habilitar las interfaces I2C y SPI. Muchas
superposiciones DT se pueden configurar mediante el uso de parámetros. Ambos
tipos de parámetros se pueden suministrar usando el dtparam ajuste. Además, los
parámetros de superposición se pueden agregar a la dtoverlay opción, separados por

197
MANUAL RASPBERRY
PI 4

comas, pero tenga cuidado con el límite de longitud de línea: antes 78 caracteres,
ahora 98 caracteres.
Para obtener más detalles, consulte DTB, superposiciones y config.txt .
arm_boost (Solo Raspberry Pi 4)
Todos los Pi 400 y las revisiones más recientes del Pi 4B están equipados con una
segunda fuente de alimentación de modo de conmutación para el riel de voltaje del
SoC, y esto permite que el reloj en modo turbo predeterminado se aumente de 1,5
GHz a 1,8 GHz. Este cambio debería ser seguro para todas estas placas, pero para
evitar cambios no solicitados para las instalaciones existentes, este cambio debe
aceptarse mediante la configuración arm_boost=1.
IMPORTANTE
Las nuevas imágenes del sistema operativo Raspberry Pi de Bullseye en adelante
vienen con esta configuración de forma predeterminada.
Audio analógico integrado (conector de 3,5 mm)
La salida de audio incorporada usa opciones de configuración para cambiar la forma
en que se maneja el audio analógico y si algunas funciones de firmware están
habilitadas o no.
audio_pwm_mode
audio_pwm_mode=1 selecciona audio analógico de baja calidad heredado del
conector AV de 3,5 mm.
audio_pwm_mode=2 (predeterminado) selecciona audio analógico de alta calidad
mediante un esquema de modulación avanzado.
NOTA
Esta opción utiliza más recursos informáticos de GPU y puede interferir con algunos
casos de uso.
disable_audio_dither
De forma predeterminada, se aplica un tramado de 1.0LSB al flujo de audio si se
enruta a la salida de audio analógica. Esto puede crear un "siseo" audible de fondo
en algunas situaciones, por ejemplo, cuando el volumen de ALSA está ajustado a un
nivel bajo. Configúrelo disable_audio_dither en 1 para deshabilitar la aplicación de
tramado.

198
MANUAL RASPBERRY
PI 4

enable_audio_dither
El tramado de audio (ver disable_audio_dither arriba) normalmente está
deshabilitado cuando las muestras de audio tienen más de 16 bits. Establezca esta
opción en 1para forzar el uso de difuminado para todas las profundidades de bits.
pwm_sample_bits
El pwm_sample_bits comando ajusta la profundidad de bits de la salida de audio
analógica. La profundidad de bits predeterminada es 11. La selección de
profundidades de bits a continuación 8 resultará en un audio no funcional, ya que las
configuraciones a continuación 8 dan como resultado una frecuencia PLL demasiado
baja para admitirla. Esto generalmente solo es útil como demostración de cómo la
profundidad de bits afecta el ruido de cuantificación.
Opciones de arranque
start_file, fixup_file
Estas opciones especifican los archivos de firmware transferidos a la GPU VideoCore
antes del inicio.
start_file especifica el archivo de firmware VideoCore que se utilizará. fixup_file
especifica el archivo utilizado para arreglar las ubicaciones de memoria utilizadas en
el start_file para que coincida con la división de memoria de la GPU. Tenga en
cuenta que el start_file y el fixup_file son un par coincidente: el uso de archivos no
coincidentes evitará que la placa se inicie. Esta es una opción avanzada, por lo que
le recomendamos que utilice start_xy en start_debug lugar de esta opción.
start_x, start_debug
Estos proporcionan un acceso directo a algunas alternativas start_filey fixup_file
configuraciones, y son los métodos recomendados para seleccionar configuraciones
de firmware.
start_x=1 implica
start_file = start_x.elf
fixup_file = fixup_x.dat
En el Pi 4, si los archivos start4x.elf y fixup4x.datestán presentes, estos archivos se
utilizarán en su lugar.
start_debug=1 implica

199
MANUAL RASPBERRY
PI 4

start_file = start_db.elf
fixup_file = fixup_db.dat
start_x=1 debe especificarse al utilizar el módulo de la cámara. Habilitar la cámara a
través de raspi-config establecerá esto automáticamente.
disable_commandline_tags
Configure el disable_commandline_tags comando en 1para dejar start.elf de
completar ATAGS (memoria desde 0x100) antes de iniciar el kernel.
cmdline
cmdline es el nombre de archivo alternativo en la partición de arranque desde el cual
leer la cadena de línea de comando del kernel; el valor predeterminado es
cmdline.txt.
kernel
kernel es el nombre de archivo alternativo en la partición de arranque que se utilizará
al cargar el kernel. El valor predeterminado en Pi 1, Pi Zero y Compute Module es
kernel.img, y en Pi 2, Pi 3 y Compute Module 3 es kernel7.img. En el Pi4, lo es
kernel7l.img.
arm_64bit
Si se establece en un valor distinto de cero, obliga al sistema de carga del kernel a
asumir un kernel de 64 bits, inicia los procesadores en modo de 64 bits y se
configura kernel8.img para que se cargue la imagen del kernel, a menos que haya
una kernel opción explícita definida, en cuyo caso eso se utiliza en su lugar. El valor
predeterminado es 0 en todas las plataformas. NOTA : Los núcleos de 64 bits
pueden ser archivos de imagen sin comprimir o un archivo gzip de una imagen (que
aún se puede llamar kernel8.img; el gestor de arranque reconocerá el archivo a partir
de los bytes de firma al principio).
Tenga en cuenta que el kernel de 64 bits solo funcionará en las placas Pi4, Pi3 y
Pi2B rev1.2 con el firmware más reciente.
arm_control
ADVERTENCIA
Esta configuración está DESAPARECIDA , utilícela arm_64bit en su lugar para
habilitar núcleos de 64 bits.

200
MANUAL RASPBERRY
PI 4

Establece bits de control específicos de la placa.


armstub
armstub es el nombre de archivo de la partición de arranque desde la que se cargará
el código auxiliar de ARM. El talón ARM predeterminado se almacena en el firmware
y se selecciona automáticamente en función del modelo Pi y varias configuraciones.
El stub es un pequeño fragmento de código ARM que se ejecuta antes del kernel. Su
trabajo es configurar hardware de bajo nivel como el controlador de interrupciones
antes de pasar el control al kernel.
arm_peri_high
Configúrelo arm_peri_high en 1 para habilitar el modo "High Peripheral" en el Pi 4.
Se configura automáticamente si se carga un DTB adecuado.
NOTA
Habilitar el modo "High Peripheral" sin un árbol de dispositivos compatible hará que
su sistema no arranque. Actualmente falta el soporte de código auxiliar ARM, por lo
que también deberá cargar un archivo adecuado usando armstub.
kernel_address
kernel_address es la dirección de memoria en la que se debe cargar la imagen del
kernel. Los núcleos de 32 bits se cargan a la dirección 0x8000 de forma
predeterminada y los núcleos de 64 bits a la dirección 0x200000. Si kernel_old está
configurado, los núcleos se cargan en la dirección 0x0.
kernel_old
Configure kernel_old en 1 para cargar el kernel en la dirección de memoria 0x0.
ramfsfile
ramfsfile es el nombre de archivo opcional en la partición de arranque de a ramfs
para cargar.
NOTA
El firmware más nuevo admite la carga de varios ramfs archivos. Debe separar los
nombres de varios archivos con comas, teniendo cuidado de no exceder el límite de
longitud de línea de 80 caracteres. Todos los archivos cargados se concatenan en la
memoria y se tratan como un solo ramfs blob. Más información está disponible en los
foros.

201
MANUAL RASPBERRY
PI 4

ramfsaddr
ramfsaddr es la dirección de memoria en la que se ramfsfile debe cargar.
initramfs
El initramfs comando especifica tanto el nombre de archivo ramfs como la dirección
de memoria en la que cargarlo. Realiza las acciones de ambos ramfsfile y ramfsaddr
en un parámetro. La dirección también puede ser followkernel (o 0) colocarla en la
memoria después de la imagen del kernel. Los valores de ejemplo son: initramfs
initramf.gz 0x00800000 o initramfs init.gz followkernel. Al igual que con ramfsfile, los
firmwares más nuevos permiten la carga de varios archivos separando sus nombres
por comas.
NOTA
Esta opción usa una sintaxis diferente de todas las demás opciones y no debe usar
un = carácter aquí.
init_uart_baud
init_uart_baud es la velocidad en baudios inicial de UART. El valor predeterminado
es 115200.
init_uart_clock
init_uart_clock es la frecuencia de reloj UART inicial. El valor predeterminado es
48000000 (48 MHz). Tenga en cuenta que este reloj solo se aplica a UART0
(ttyAMA0 en Linux) y que la velocidad máxima en baudios para UART está limitada a
1/16 del reloj. El UART predeterminado en Pi 3 y Pi Zero es UART1 (ttyS0 en Linux),
y su reloj es el reloj de la VPU central, al menos 250MHz.
bootcode_delay
El bootcode_delay comando se demora una cantidad determinada de segundos
bootcode.bin antes de cargarse start.elf: el valor predeterminado es 0.
Esto es particularmente útil para insertar un retraso antes de leer el EDID del
monitor, por ejemplo, si el Pi y el monitor se alimentan desde la misma fuente, pero el
monitor tarda más en iniciarse que el Pi. Intente establecer este valor si la detección
de pantalla es incorrecta en el arranque inicial, pero es correcta si reinicia
suavemente el Pi sin desconectar la alimentación del monitor.

202
MANUAL RASPBERRY
PI 4

boot_delay
El boot_delay comando indica que espere un número determinado de segundos
start.elf antes de cargar el kernel: el valor predeterminado es 1. El retraso total en
milisegundos se calcula como (1000 x boot_delay) + boot_delay_ms. Esto puede ser
útil si su tarjeta SD necesita un tiempo para prepararse antes de que Linux pueda
arrancar desde ella.
boot_delay_ms
El boot_delay_ms comando significa esperar una cantidad determinada de
milisegundos start.elf, junto con boot_delay, antes de cargar el kernel. El valor
predeterminado es 0.
disable_poe_fan
De forma predeterminada, se activará una sonda en el bus I2C al inicio, incluso
cuando no se conecte un PoE HAT. Establecer esta opción en 1 deshabilita el control
de un ventilador PoE HAT a través de I2C (en los pines ID_SD e ID_SC). Si no tiene
la intención de utilizar un PoE HAT, hacerlo es útil si necesita minimizar el tiempo de
arranque.
disable_splash
Si disable_splash está configurado en 1, la pantalla de bienvenida del arco iris no se
mostrará al arrancar. El valor predeterminado es 0.
enable_gic (Solo Raspberry Pi 4)
En Raspberry Pi 4B, si este valor se establece en 0, las interrupciones se enrutarán a
los núcleos ARM utilizando el controlador de interrupciones heredado, en lugar de a
través del GIC-400. El valor predeterminado es 1.
enable_uart
enable_uart=1 (junto con console=serial0 in cmdline.txt) solicita que el kernel cree
una consola en serie, accesible mediante los GPIO 14 y 15 (pines 8 y 10 en el
encabezado de 40 pines). Editar cmdline.txt para eliminar la línea quiet permite que
los mensajes de arranque del kernel también aparezcan allí. Vea también
uart_2ndstage.

203
MANUAL RASPBERRY
PI 4

force_eeprom_read
Configure esta opción para 0 evitar que el firmware intente leer una EEPROM I2C
HAT (conectada a los pines ID_SD e ID_SC) en el momento del encendido. Vea
también disable_poe_fan.
os_prefix
os_prefix es una configuración opcional que le permite elegir entre varias versiones
del kernel y los archivos del árbol de dispositivos instalados en la misma tarjeta.
Cualquier valor en os_prefix se antepone al nombre de cualquier archivo del sistema
operativo cargado por el firmware, donde "archivos del sistema operativo" se define
como kernels, initramfs, cmdline.txt, .dtbs y superposiciones. El prefijo normalmente
sería un nombre de directorio, pero también podría ser parte del nombre de archivo,
como "prueba-". Por esta razón, los prefijos de directorio deben incluir el /carácter
final.
En un intento por reducir la posibilidad de un sistema no arrancable, el firmware
primero prueba el valor del prefijo proporcionado para la viabilidad - a menos que el
kernel esperado y .dtb se puedan encontrar en la nueva ubicación / nombre, el prefijo
se ignora (establecido en " "). Un caso especial de esta prueba de viabilidad se aplica
a las superposiciones, que solo se cargarán desde ${os_prefix}${overlay_prefix}
(donde el valor predeterminado de overlay_prefixes "superposiciones /") si $
{os_prefix}${overlay_prefix}README existe; de lo contrario, ignora os_prefix y trata
las superposiciones como compartidas.
(La razón por la que el firmware verifica la existencia de archivos clave en lugar de
directorios cuando verifica los prefijos es doble: es posible que el prefijo no sea un
directorio y no todos los métodos de arranque admiten la prueba de la existencia de
un directorio).
NOTA
Cualquier archivo de sistema operativo especificado por el usuario puede omitir todos
los prefijos utilizando una ruta absoluta (con respecto a la partición de inicio);
simplemente inicie la ruta del archivo con /, por ejemplo
kernel=/my_common_kernel.img.
Consulte también overlay_prefixy upstream_kernel.
204
MANUAL RASPBERRY
PI 4

otg_mode (Solo Raspberry Pi 4)


USB On-The-Go (a menudo abreviado como OTG) es una función que permite
admitir dispositivos USB con un cable OTG adecuado para configurarse como hosts
USB. En las Raspberry Pis más antiguas, se usó un solo controlador USB 2 tanto en
el modo de dispositivo como de host USB.
Pi 4B y Pi 400 (no CM4 o CM4IO) agregan un controlador USB 3 de alto rendimiento,
conectado a través de PCIe, para controlar los puertos USB principales. El
controlador USB 2 heredado todavía está disponible en el conector de alimentación
USB-C para su uso como dispositivo ( otg_mode=0 predeterminado).
otg_mode=1 solicita que se utilice un controlador XHCI USB 2 más capaz como otro
controlador de host en ese conector USB-C.
NOTA
Porque CM4 y CM4IO no incluyen las imágenes del sistema operativo RaspberryPi
del controlador USB 3 externo configuradas otg_mode=1 en CM4 para un mejor
rendimiento.
overlay_prefix
Especifica un subdirectorio / prefijo desde el que cargar las superposiciones; el valor
predeterminado es overlays/ (observe el final /). Si se usa junto con os_prefix, el
os_prefix viene antes del overlay_prefix, es decir dtoverlay=disable-bt, intentará
cargar ${os_prefix}${overlay_prefix}disable-bt.dtbo.
NOTA
A menos que ${os_prefix}${overlay_prefix}README exista, las superposiciones se
comparten con el sistema operativo principal ( os_prefix es decir, se ignoran).
uart_2ndstage
La configuración uart_2ndstage=1 hace que el cargador de segunda etapa
( bootcode.bin en dispositivos anteriores a Raspberry Pi 4, o el código de arranque
en la EEPROM para dispositivos Raspberry Pi 4) y el firmware principal ( start*.elf)
envíen información de diagnóstico a UART0.
Tenga en cuenta que es probable que la salida interfiera con el funcionamiento de
Bluetooth a menos que esté deshabilitada ( dtoverlay=disable-bt) o se cambie a la
otra UART ( dtoverlay=miniuart-bt), y si se accede a la UART simultáneamente para
205
MANUAL RASPBERRY
PI 4

la salida desde Linux, entonces puede producirse una pérdida de datos y provocar
una salida dañada. Esta función solo debería ser necesaria cuando se intenta
diagnosticar un problema de carga de inicio temprano.
upstream_kernel
Si upstream_kernel=1 se usa, el firmware se establece os_prefixen "upstream /", a
menos que se haya establecido explícitamente en otra cosa, pero al igual que otros
os_prefix valores, se ignorará si el kernel requerido y el archivo .dtb no se pueden
encontrar al usar el prefijo.
El firmware también preferirá nombres de Linux ascendentes para DTB (en
bcm2837-rpi-3-b.dtb lugar de bcm2710-rpi-3-b.dtb, por ejemplo). Si no se encuentra
el archivo ascendente, el firmware cargará la variante descendente en su lugar y
aplicará automáticamente la superposición "ascendente" para realizar algunos
ajustes. Tenga en cuenta que este proceso ocurre después de la os_prefix ha sido
finalizado.
Control GPIO
gpio
La gpio directiva permite que los pines GPIO se establezcan en modos y valores
específicos en el momento del arranque de una manera que antes hubiera
necesitado un dt-blob.bin archivo personalizado . Cada línea aplica la misma
configuración (o al menos hace los mismos cambios) a un conjunto de pines, ya sea
un solo pin ( 3), un rango de pines ( 3-4) o una lista separada por comas de ( 3-
4,6,8). El conjunto de pines va seguido de =uno o más atributos separados por
comas de esta lista:
 ip - Aporte
 op - Producción
 a0-a5 - Alt0-Alt5
 dh - Conducir alto (para salidas)
 dl - Conducir bajo (para salidas)
 pu - Levantar
 pd - Derribar
 pn/np - Sin tirón
206
MANUAL RASPBERRY
PI 4

gpio Los ajustes se aplican en orden, por lo que los que aparecen más tarde anulan
los que aparecen antes.
Ejemplos:
# Seleccione Alt2 para los pines GPIO 0 a 27 (para DPI24)
gpio = 0-27 = a2

# Configure GPIO12 para que sea una salida configurada en 1


gpio = 12 = op, dh

# Cambie los pines 18 y 20 de tracción (entrada)


gpio = 18,20 = pu

# Hacer pines 17 a 21 entradas


gpio = 17-21 = ip
La gpio directiva respeta los encabezados de la sección "[…]" config.txt, por lo que es
posible utilizar diferentes configuraciones según el modelo, el número de serie y el
EDID.
Los cambios de GPIO realizados a través de este mecanismo no tienen ningún
efecto directo en el kernel; no hacen que los pines GPIO se exporten a la interfaz
sysfs, y pueden ser anulados por entradas pinctrl en el árbol de dispositivos y
utilidades como raspi-gpio.
Tenga en cuenta también que hay una demora de unos segundos entre que se aplica
la energía y los cambios entran en vigencia, más si se inicia a través de la red o
desde un dispositivo de almacenamiento masivo USB.
enable_jtag_gpio
La configuración enable_jtag_gpio=1 selecciona el modo Alt4 para los pines GPIO
22-27 y configura algunas conexiones internas de SoC, lo que habilita la interfaz
JTAG para la CPU ARM. Funciona en todos los modelos de Raspberry Pi.
Alfiler # Función

GPIO22 ARM_TRST

207
MANUAL RASPBERRY
PI 4

GPIO23 ARM_RTCK
GPIO24 ARM_TDO
GPIO25 ARM_TCK
GPIO26 ARM_TDI
GPIO27 ARM_TMS
Tabla 0-19 Configuración enable_jtag_gpio=1

Opciones de overclocking
El kernel tiene un controlador CPUFreq con el gobernador "powersave" habilitado por
defecto, cambiado a "ondemand" durante el arranque, cuando raspi-config está
instalado. Con el gobernador "bajo demanda", la frecuencia de la CPU variará con la
carga del procesador. Puede ajustar los valores mínimos con las *_min opciones de
configuración o deshabilitar el reloj dinámico aplicando un regulador de escala
estático ("ahorro de energía" o "rendimiento") o con force_turbo=1.
El overclocking y la sobretensión se desactivarán en tiempo de ejecución cuando el
SoC alcance temp_limit (ver más abajo), que por defecto es 85 ° C, para enfriar el
SoC. No debe alcanzar este límite con los modelos 1 y 2 de Raspberry Pi, pero es
más probable que lo haga con Raspberry Pi 3 y Raspberry Pi 4B. El overclocking y la
sobretensión también se desactivan cuando se detecta una situación de subtensión.
NOTA
Para obtener más información, consulte la sección sobre gestión de frecuencia y
control térmico .
ADVERTENCIA
Establecer cualquier parámetro de overclocking en valores distintos a los utilizados
por raspi-config puede establecer un bit permanente dentro del SoC, lo que hace
posible detectar que su Raspberry Pi ha sido overclockeado. Las circunstancias
específicas en las que se establece el bit de overclock son si force_turbose establece
en 1 y cualquiera de las over_voltage_* opciones se establece en un valor> 0.
Consulte la publicación del blog sobre el modo Turbo para obtener más información.
Overclocking
Opción Descripción

208
MANUAL RASPBERRY
PI 4

arm_freq Frecuencia de la CPU ARM en MHz.


Conjuntos core_freq, h264_freq, isp_freq, v3d_freqy hevc_freqju
gpu_freq
ntas
La frecuencia del núcleo del procesador de la GPU en MHz
influye en el rendimiento de la CPU porque controla la caché L2
core_freq y el bus de memoria; la caché L2 solo beneficia a Pi Zero / Pi
Zero W / Pi 1, hay un pequeño beneficio para SDRAM en Pi 2 /
Pi 3. Consulte la sección a continuación para su uso en Pi 4.
Frecuencia del bloque de video de hardware en MHz; anulación
h264_freq
individual del gpu_freqajuste
Frecuencia del bloque de canalización del sensor de imagen en
isp_freq
MHz; anulación individual del gpu_freqajuste
Frecuencia del bloque 3D en MHz; anulación individual
v3d_freq
del gpu_freqajuste
Frecuencia del bloque de códec de video de alta eficiencia en
hevc_freq
MHz; anulación individual del gpu_freqajuste. Pi 4 solamente.
Frecuencia de la SDRAM en MHz. Actualmente no se admite el
sdram_freq
overclocking de SDRAM en Pi 4B
Límite superior de voltaje del núcleo de CPU / GPU. El valor
debe estar en el rango [-16,8] que equivale al rango [0.95V,
1.55V] ([0.8,1.4V] en RPi 1) con pasos de 0.025V. En otras
palabras, especificar -16 dará 0,95 V (0,8 V en RPi 1) como
voltaje máximo de núcleo de CPU / GPU, y especificar 8
sobretensión
permitirá hasta 1,55 V (1,4 V en RPi 1). Para conocer los
valores predeterminados, consulte la tabla a continuación. Los
valores superiores a 6 solo se permiten cuando force_turbo=1se
especifica: esto establece el bit de garantía
si over_voltage_*> 0también está establecido.
over_voltage_sd Conjuntos over_voltage_sdram_c, over_voltage_sdram_iy over_
ram voltage_sdram_pjuntos.
over_voltage_sd Ajuste de voltaje del controlador SDRAM. [-16,8] equivale a
ram_c [0.8V, 1.4V] con pasos de 0.025V.
over_voltage_sd Ajuste de voltaje de E / S de SDRAM. [-16,8] equivale a [0.8V,
ram_i 1.4V] con pasos de 0.025V.
209
MANUAL RASPBERRY
PI 4

over_voltage_sd Ajuste de voltaje phy SDRAM. [-16,8] equivale a [0.8V, 1.4V]


ram_p con pasos de 0.025V.
Fuerza las frecuencias del modo turbo incluso cuando los
núcleos ARM no están ocupados. Habilitar esto puede
force_turbo
establecer el bit de garantía si over_voltage_*también está
establecido.
Habilita el modo turbo desde el arranque para el valor dado en
initial_turbo segundos, o hasta que cpufreq establezca una frecuencia. El
valor máximo es 60.
Valor mínimo de arm_frequtilizado para el reloj de frecuencia
dinámico. Tenga en cuenta que reducir este valor por debajo del
arm_freq_min
valor predeterminado no genera ahorros de energía
significativos y actualmente no es compatible.
Valor mínimo de core_frequtilizado para el reloj de frecuencia
core_freq_min
dinámico.
Valor mínimo de gpu_frequtilizado para el reloj de frecuencia
gpu_freq_min
dinámico.
Valor mínimo de h264_frequtilizado para el reloj de frecuencia
h264_freq_min
dinámico.
Valor mínimo de isp_frequtilizado para el reloj de frecuencia
isp_freq_min
dinámico.
Valor mínimo de v3d_frequtilizado para el reloj de frecuencia
v3d_freq_min
dinámico.
Valor mínimo de hevc_frequtilizado para el reloj de frecuencia
hevc_freq_min
dinámico.
Valor mínimo de sdram_frequtilizado para el reloj de frecuencia
sdram_freq_min
dinámico.
Valor mínimo de over_voltageutilizado para el reloj de
frecuencia dinámico. El valor debe estar en el rango [-16,8] que
over_voltage_mi equivale al rango [0.8V, 1.4V] con pasos de 0.025V. En otras
n palabras, especificar -16 dará 0,8 V como voltaje inactivo del
núcleo de la CPU / GPU, y especificar 8 dará un mínimo de 1,4
V.
temp_limit Protección contra el sobrecalentamiento. Esto configura los
210
MANUAL RASPBERRY
PI 4

relojes y voltajes por defecto cuando el SoC alcanza este valor


en grados Celsius. Los valores superiores a 85 se limitan a 85.
3A + / 3B + solamente . Control del acelerador de velocidad de
la CPU. Esto establece la temperatura a la que se activa el
sistema de aceleración de la velocidad del reloj de la CPU. A
temp_soft_limit
esta temperatura, la velocidad del reloj se reduce de 1400 MHz
a 1200 MHz. El valor predeterminado es 60, se puede aumentar
a un máximo de 70, pero esto puede causar inestabilidad.
Tabla 0-20 Overclocking

Esta tabla proporciona los valores predeterminados para las opciones en varios
modelos de Raspberry Pi, todas las frecuencias se expresan en MHz.
Pi3A
Pi
+/ Pi4 / Pi
Opción 0/ Pi1 Pi2 Pi3
Pi3B CM4 400
W
+

arm_freq 1000 700 900 1200 1400 1500 1800


core_freq 400 250 250 400 400 500 500
h264_freq 300 250 250 400 400 500 500
isp_freq 300 250 250 400 400 500 500
v3d_freq 300 250 250 400 400 500 500
N/ N/
hevc_freq N/A N/A N/A 500 500
A A
sdram_freq 450 400 450 450 500 3200 3200
arm_freq_min 700 700 600 600 600 600 600
core_freq_min 250 250 250 250 250 200 200
gpu_freq_min 250 250 250 250 250 250 250
h264_freq_min 250 250 250 250 250 250 250
isp_freq_min 250 250 250 250 250 250 250
Tabla 0-21 Valores predeterminados de frecuencias en MHz

Esta tabla proporciona valores predeterminados para las opciones que son iguales
en todos los modelos.
Opción Defecto
211
MANUAL RASPBERRY
PI 4

initial_turbo 0 (segundos)
temp_limit 85 (° C)
sobretensión 0 (1,35 V, 1,2 V en RPi 1)
over_voltage_min 0 (1,2 V)
over_voltage_sdram 0 (1,2 V)
over_voltage_sdram_c 0 (1,2 V)
over_voltage_sdram_i 0 (1,2 V)
over_voltage_sdram_p 0 (1,2 V)
Tabla 0-22 Valores predeterminados en todos los modelos

El firmware usa Adaptive Voltage Scaling (AVS) para determinar el voltaje de núcleo
de CPU / GPU óptimo en el rango definido por over_voltagey over_voltage_min.
Defect
Modelo Voltaje resultante
o

Pi 1 0 1,2 V
Pi 2 0 1.2-1.3125V
Pi 3 0 1.2-1.3125V
Pi 4, Pi400, CM4 0 0,88 V
Pi cero 6 1,35 V
Tabla 0-23 Voltaje de núcleo de CPU / GPU óptimo

Específico para Raspberry Pi 4, Raspberry Pi 400 y CM4


La frecuencia mínima del núcleo cuando el sistema está inactivo debe ser lo
suficientemente rápida para admitir el reloj de píxeles más alto (ignorando el borrado)
de la (s) pantalla (s). En consecuencia, se core_freq elevará por encima de 500 MHz
si el modo de visualización es 4Kp60.
Opción de Max core_freq
visualización

Defecto 500
hdmi_enable_4kp60 550
Tabla 0-24 Frecuencia específica para Raspberry Pi 4, Raspberry Pi 400 y CM4

212
MANUAL RASPBERRY
PI 4

 El overclocking requiere la última versión de firmware.


 El último firmware aumenta automáticamente el voltaje si el sistema está
overclockeado. La configuración manual over_voltagedesactiva el escalado
automático de voltaje para el overclocking.
 Se recomienda al realizar overclocking utilizar la configuración de frecuencia
individual ( isp_freq, v3d_freqetc.) en lugar de gpu_freqporque la frecuencia
estable máxima será diferente para ISP, V3D, HEVC, etc.
 La frecuencia SDRAM no se puede configurar en Raspberry Pi 4.
force_turbo
Por defecto ( force_turbo=0), el controlador de frecuencia de CPU "On Demand"
elevará los relojes a sus frecuencias máximas cuando los núcleos ARM estén
ocupados y los bajará a las frecuencias mínimas cuando los núcleos ARM estén
inactivos.
force_turbo=1 anula este comportamiento y fuerza las frecuencias máximas incluso
cuando los núcleos ARM no están ocupados.
never_over_voltage
Establece un bit en la memoria OTP (programable una vez) que evita que el
dispositivo sufra una sobrevoltajes. Esto está destinado a bloquear el dispositivo para
que el bit de garantía no se pueda establecer de forma inadvertida o maliciosa
mediante el uso de una sobretensión no válida.
disable_auto_turbo
En Pi 2 / Pi 3, configurar este indicador impedirá que la GPU se mueva al modo
turbo, lo que puede hacer en casos de carga particulares.
Relación de relojes
El núcleo de la GPU, la CPU, la SDRAM y la GPU tienen sus propios PLL y pueden
tener frecuencias no relacionadas . Los bloques h264, v3d e ISP comparten un PLL.

Para ver la frecuencia actual del Pi en KHz, escriba: cat


/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq. Divida el resultado por 1000
para encontrar el valor en MHz. Tenga en cuenta que esta frecuencia es la

213
MANUAL RASPBERRY
PI 4

frecuencia solicitada por el kernel y es posible que cualquier limitación (por ejemplo,
a altas temperaturas) pueda significar que la CPU está funcionando más lentamente
de lo informado. Se puede recuperar una medición instantánea de la frecuencia real
de la CPU ARM utilizando vcgencmd vcgencmd measure_clock arm. Esto se
muestra en hercios.
Supervisión de la temperatura central
Para ver la temperatura de la Raspberry Pi, escriba cat
/sys/class/thermal/thermal_zone0/temp. Divida el resultado por 1000 para encontrar
el valor en grados Celsius. Alternativamente, hay un vcgencmd, vcgencmd
measure_temp que interroga a la GPU directamente por su temperatura.
Si bien alcanzar el límite de temperatura no es perjudicial para el SoC, provocará un
estrangulamiento de la CPU. Un disipador de calor puede ayudar a controlar la
temperatura central y, por lo tanto, el rendimiento. Esto es especialmente útil si el Pi
se ejecuta dentro de una carcasa. El flujo de aire sobre el disipador de calor hará que
el enfriamiento sea más eficiente.
Con firmware del 12 de septiembre de 2016 o posterior, cuando la temperatura
central esté entre 80 ° C y 85 ° C, se mostrará un icono de advertencia que muestra
un termómetro rojo medio lleno y los núcleos ARM se reducirán. Si la temperatura
excede los 85 ° C, se mostrará un ícono que muestra un termómetro completamente
lleno, y tanto los núcleos ARM como la GPU se reducirán.
Para la Raspberry Pi 3 Modelo B +, la tecnología de PCB se ha cambiado para
proporcionar una mejor disipación de calor y una mayor masa térmica. Además, se
ha introducido un límite de temperatura suave, con el objetivo de maximizar el tiempo
durante el cual un dispositivo puede "correr" antes de alcanzar el límite estricto a 85 °
C. Cuando se alcanza el límite suave, la velocidad del reloj se reduce de 1,4 GHz a
1,2 GHz y el voltaje de funcionamiento se reduce ligeramente. Esto reduce la tasa de
aumento de temperatura: negociamos un período corto a 1.4GHz por un período más
largo a 1.2GHz. De forma predeterminada, el límite suave es 60 ° C, y esto se puede
cambiar a través de la temp_soft_limit configuración en config.txt.

214
MANUAL RASPBERRY
PI 4

Voltaje de monitoreo
Es esencial mantener la tensión de alimentación por encima de 4,8 V para un
rendimiento fiable. Tenga en cuenta que el voltaje de algunos cargadores / fuentes
de alimentación USB puede descender hasta 4,2 V. Esto se debe a que
generalmente están diseñados para cargar una batería LiPo de 3,7 V, no para
suministrar 5 V a una computadora.
Para monitorear el voltaje de la PSU de Pi, necesitará usar un multímetro para medir
entre los pines VCC y GND en el GPIO. Más información está disponible en power .
Si el voltaje cae por debajo de 4.63V (+ -5%), las versiones recientes del firmware
mostrarán un símbolo de rayo amarillo en la pantalla para indicar una falta de
energía, y se agregará al kernel un mensaje que indica el estado de bajo voltaje
Iniciar sesión.
Problemas de overclocking
La mayoría de los problemas de overclocking aparecen inmediatamente con una falla
al arrancar. Si esto ocurre, mantenga presionada la shift tecla durante el próximo
arranque. Esto desactivará temporalmente todo el overclocking, lo que le permitirá
arrancar correctamente y luego editar su configuración.
Filtros condicionales
Cuando se usa una sola tarjeta SD (o imagen de tarjeta) con una Raspberry Pi y un
monitor, es fácil configurarla config.txt según sea necesario para esa combinación
específica y mantenerla así, modificándola solo cuando algo cambia.
Sin embargo, si se intercambia una Raspberry Pi entre diferentes monitores, o si la
tarjeta SD (o la imagen de la tarjeta) se intercambia entre varias placas, es posible
que un solo conjunto de configuraciones ya no sea suficiente. Los filtros
condicionales le permiten definir ciertas secciones del archivo de configuración para
que se usen solo en casos específicos, lo que permite que uno solo config.txt cree
configuraciones diferentes cuando lo lee un hardware diferente.
El [all] filtro
El [all] filtro es el filtro más básico. Restablece todos los filtros establecidos
previamente y permite que las configuraciones enumeradas a continuación se
apliquen a todo el hardware. Por lo general, es una buena idea agregar un [all] filtro

215
MANUAL RASPBERRY
PI 4

al final de los grupos de configuraciones filtradas para evitar la combinación de


filtros involuntariamente (ver más abajo).
Filtros de modelo
Los filtros de modelos condicionales se aplican de acuerdo con la siguiente tabla.
Filtrar Modelo (s) aplicable (s)

[pi1] Modelo A, Modelo B, Módulo de cálculo


[pi2] Modelo 2B (basado en BCM2836 o BCM2837)
Modelo 3B, Modelo 3B +, Modelo 3A +, Módulo de cálculo 3,
[pi3]
Módulo de cálculo 3+
[pi3 +] Modelo 3A +, Modelo 3B +
[pi4] Modelo 4B, Pi 400, módulo de cálculo 4
[pi400] Pi 400
[cm4] Módulo de cálculo 4
[pi0] Cero, cero W, cero WH, cero 2 W
[pi0w] Cero W, cero WH
[pi02] Cero 2 W
[board-type Filtrar por Typenúmero: consulte Códigos de revisión de Raspberry
= Type] Pi. Por ejemplo [board-type=0x14], coincidiría con CM4.
Tabla 0-25 Filtros de modelo

Estos son particularmente útiles para definir diferentes kernel, initramfs y cmdlinela
configuración, como el Pi 1 y Pi 2 requieren diferentes granos. También pueden ser
útiles para definir diferentes configuraciones de overclocking, ya que Pi 1 y Pi 2
tienen diferentes velocidades predeterminadas. Por ejemplo, para definir initramfs
imágenes separadas para cada uno:
[pi1]
initramfs initrd.img-3.18.7 + followkernel
[pi2]
initramfs initrd.img-3.18.7-v7 + followkernel
[todos]
Recuerde usar el [all] filtro al final, para que cualquier configuración posterior no se
limite solo al hardware Pi 2.

216
MANUAL RASPBERRY
PI 4

Es importante tener en cuenta que la Raspberry Pi Zero W verá el contenido de


[pi0w] AND [pi0]. Del mismo modo, un Frambuesa Pi 3B Plus ve [pi3+] Y [pi3], y una
Frambuesa Pi 400 ve [pi400]Y [pi4]. Si desea que una configuración se aplique solo a
Pi Zero, Pi 3B o Pi 4B, debe seguirla (el orden es importante) con una configuración
en la sección [pi0w], [pi3+] o [pi400] que la revierte.
El [none] filtro
El [none] filtro evita que las configuraciones siguientes se apliquen a cualquier
hardware. Aunque no hay nada de lo que no pueda prescindir [none], puede ser una
forma útil de mantener grupos de configuraciones no utilizadas en config.txt sin tener
que comentar cada línea.
El [EDID=*] filtro
Al cambiar entre varios monitores mientras usa una sola tarjeta SD en su Pi, y
cuando una configuración en blanco no es suficiente para seleccionar
automáticamente la resolución deseada para cada uno, esto permite elegir
configuraciones específicas en función de los nombres EDID de los monitores.
Para ver el nombre EDID de un monitor adjunto, ejecute el siguiente comando:
tvservice -n
Esto imprimirá algo como esto:
device_name=VSC-TD2220
A continuación, puede especificar la configuración que se aplique solo a este
monitor:
[EDID=VSC-TD2220]
hdmi_group=2
hdmi_mode=82
[all]
Esto fuerza el modo DVT de 1920 x 1080 para el monitor especificado, sin afectar a
ningún otro monitor.
Tenga en cuenta que esta configuración se aplica solo al inicio, por lo que el monitor
debe estar conectado en el momento del inicio y el Pi debe poder leer su información
EDID para encontrar el nombre correcto. La conexión en caliente de un monitor
diferente al Pi después del arranque no seleccionará configuraciones diferentes.
217
MANUAL RASPBERRY
PI 4

En la Raspberry Pi 4, si ambos puertos HDMI están en uso, entonces el EDID se


comparará con ambos y la configuración posterior se aplicará solo al primer
dispositivo coincidente. Puede determinar los nombres de EDID para ambos puertos
ejecutando primero tvservice –l en una ventana de terminal para enumerar todos los
dispositivos conectados y luego utilizando las ID numéricas devueltas tvservice -v
<id> -n para encontrar el nombre de EDID para una ID de pantalla específica.
El filtro de número de serie
A veces, la configuración solo debe aplicarse a una única Pi específica, incluso si
cambia la tarjeta SD por una diferente. Los ejemplos incluyen claves de licencia y
configuraciones de overclocking (aunque las claves de licencia ya admiten el
intercambio de tarjetas SD de una manera diferente). También puede usar esto para
seleccionar diferentes configuraciones de pantalla, incluso si la identificación EDID
anterior no es posible, siempre que no intercambie monitores entre sus Pis. Por
ejemplo, si su monitor no proporciona un nombre EDID utilizable, o si está utilizando
una salida compuesta (para la que no se puede leer EDID).
Para ver el número de serie de su Pi, ejecute el siguiente comando:
cat /proc/cpuinfo
La serie se mostrará como un valor hexadecimal de 16 dígitos en la parte inferior.
Por ejemplo, si ve:
Serial : 0000000012345678
luego puede definir configuraciones que solo se aplicarán a este Pi específico:
[0x12345678]
# settings here are applied only to the Pi with this serial
[all]
# settings here are applied to all hardware
El filtro GPIO
También puede filtrar según el estado de un GPIO. Por ejemplo
[gpio4=1]
# Settings here are applied if GPIO 4 is high

[gpio2=0]
218
MANUAL RASPBERRY
PI 4

# Settings here are applied if GPIO 2 is low

[all]
# settings here are applied to all hardware
El [HDMI:*] filtro
NOTA
Este filtro es solo para Raspberry Pi 4.
La Raspberry Pi 4 tiene dos puertos HDMI y, para muchos config.txt comandos
relacionados con HDMI, es necesario especificar a qué puerto HDMI se hace
referencia. El condicional HDMI filtra las configuraciones HDMI posteriores al puerto
específico.
[HDMI:0]
hdmi_group=2
hdmi_mode=45
[HDMI:1]
hdmi_group=2
hdmi_mode=67
Una variable:index sintaxis alternativa está disponible en todos los comandos HDMI
específicos del puerto. Puede usar lo siguiente, que es el mismo que el ejemplo
anterior:
hdmi_group:0=2
hdmi_mode:0=45
hdmi_group:1=2
hdmi_mode:1=67
Combinar filtros condicionales
Los filtros del mismo tipo se reemplazan entre sí, por lo que se [pi2]anula [pi1],
porque no es posible que ambos sean verdaderos a la vez.
Los filtros de diferentes tipos se pueden combinar simplemente enumerándolos uno
tras otro, por ejemplo:
# settings here are applied to all hardware
[EDID=VSC-TD2220]
219
MANUAL RASPBERRY
PI 4

# settings here are applied only if monitor VSC-TD2220 is connected


[pi2]
# settings here are applied only if monitor VSC-TD2220 is connected *and* on a Pi 2
[all]
# settings here are applied to all hardware
Utilice el [all] filtro para restablecer todos los filtros anteriores y evite combinar
involuntariamente diferentes tipos de filtros.
Opciones heredadas
Los grupos restantes de config.txt opciones se consideran configuraciones
heredadas, ya sea porque se relacionan con software más antiguo, como el
controlador de gráficos de firmware, o porque se han desaprobado o eliminado por
completo.
Opciones de memoria
gpu_mem
Especifica cuánta memoria, en megabytes, reservar para el uso exclusivo de la GPU:
la memoria restante se asigna a la CPU ARM para que la utilice el sistema operativo.
Para Pis con menos de 1 GB de memoria, el valor predeterminado es 64; para Pis
con 1 GB o más de memoria, el valor predeterminado es 76.
IMPORTANTE
A diferencia de las GPU que se encuentran en las máquinas x86, donde el aumento
de la memoria puede mejorar el rendimiento 3D, la arquitectura de VideoCore
significa que no hay ninguna ventaja de rendimiento al especificar valores más
grandes de lo necesario y, de hecho, puede dañar el rendimiento.
Para garantizar el mejor rendimiento de Linux, debe establecer gpu_mem el valor
más bajo posible. Si una característica gráfica en particular no funciona
correctamente, intente aumentar el valor de gpu_mem, teniendo en cuenta los
valores máximos recomendados que se muestran a continuación.
En la Raspberry Pi 4, el componente 3D de la GPU tiene su propia unidad de
administración de memoria (MMU) y no usa la memoria de la gpu_mem asignación.
En cambio, la memoria se asigna dinámicamente dentro de Linux. Esto permite

220
MANUAL RASPBERRY
PI 4

especificar un valor más pequeño gpu_mem en el Pi 4, en comparación con los


modelos anteriores.
En los núcleos heredados, la memoria asignada a la GPU se utiliza para fines de
visualización, 3D, códec y cámara, así como para algunas tareas básicas de
mantenimiento del firmware. Los máximos especificados a continuación asumen que
está utilizando todas estas funciones. Si no es así, se deben usar valores más
pequeños de gpu_mem.
Los valores máximos recomendados son los siguientes:
RAM total gpu_mem máximo recomendado

256 MB 128
512 MB 384
1 GB o más 512, 256en el Pi4
Tabla 0-26 Valores máximos recomendados

Es posible establecer gpu_mem valores más altos, sin embargo, esto debe evitarse
ya que puede causar problemas, como evitar que Linux se inicie. El valor mínimo es
16, sin embargo, esto deshabilita ciertas funciones de la GPU.
También puede usar gpu_mem_256, gpu_mem_512 y gpu_mem_1024 para permitir
intercambiar la misma tarjeta SD entre Pis con diferentes cantidades de RAM sin
tener que editar config.txt cada vez:
gpu_mem_256
El gpu_mem_256 comando establece la memoria de la GPU en megabytes para
Raspberry Pis con 256 MB de memoria. (Se ignora si el tamaño de la memoria no es
de 256 MB). Esto anula gpu_mem.
gpu_mem_512
El gpu_mem_512 comando establece la memoria de la GPU en megabytes para
Raspberry Pis con 512 MB de memoria. (Se ignora si el tamaño de la memoria no es
de 512 MB). Esto anula gpu_mem.

221
MANUAL RASPBERRY
PI 4

gpu_mem_1024
El gpu_mem_1024 comando establece la memoria de la GPU en megabytes para
Raspberry Pis con 1 GB o más de memoria. (Se ignora si el tamaño de la memoria
es inferior a 1 GB). Esto anula gpu_mem.
total_mem
Este parámetro se puede usar para forzar a una Raspberry Pi a limitar su capacidad
de memoria: especifique la cantidad total de RAM, en megabytes, que desea que use
la Raspberry Pi. Por ejemplo, para hacer que una Raspberry Pi 4B de 4GB se
comporte como si fuera un modelo de 1GB, use lo siguiente:
total_mem = 1024
Este valor se fijará entre un mínimo de 128 MB y un máximo de la memoria total
instalada en la placa.
disable_l2cache
Establecer esto en 1deshabilita el acceso de las CPU a la caché L2 de las GPU y
requiere un kernel deshabilitado L2 correspondiente. El valor predeterminado en
BCM2835 es 0. En BCM2836, BCM2837 y BCM2711, los ARM tienen su propia
caché L2 y, por lo tanto, el valor predeterminado es 1. El Pi kernel.img y las
kernel7.img compilaciones estándar reflejan esta diferencia en la configuración de la
caché.
Opciones de clave de licencia y códec
La decodificación de hardware de códecs adicionales en Pi 3 y modelos anteriores se
puede habilitar comprando una licencia que esté bloqueada en el número de serie de
la CPU de su Raspberry Pi.
En Raspberry Pi 4, los códecs de hardware para MPEG2 o VC1 están desactivados
permanentemente y no se pueden activar ni siquiera con una clave de licencia; en el
Pi 4, gracias a su mayor potencia de procesamiento en comparación con los modelos
anteriores, MPEG2 y VC1 se pueden decodificar en software a través de
aplicaciones como VLC. Por lo tanto, no se necesita una clave de licencia de códec
de hardware si está utilizando un Pi 4.

222
MANUAL RASPBERRY
PI 4

decode_MPG2
decode_MPG2 es una clave de licencia para permitir la decodificación MPEG-2 por
hardware, por ejemplo decode_MPG2=0x12345678.
decode_WVC1
decode_WVC1 es una clave de licencia para permitir la decodificación de hardware
VC-1, por ejemplo decode_WVC1=0x12345678.
Si tiene varias Raspberry Pis y compró una licencia de códec para cada una de ellas,
puede enumerar hasta ocho claves de licencia en una sola config.txt, por ejemplo,
decode_MPG2=0x12345678,0xabcdabcd,0x87654321. Esto le permite intercambiar
la misma tarjeta SD entre los diferentes Pis sin tener que editar config.txt cada vez.
Opciones de video
Modo de video compuesto
sdtv_mode
El sdtv_mode comando define el estándar de TV utilizado para la salida de video
compuesto. En la Raspberry Pi original, el video compuesto se emite en el conector
RCA. En otras Raspberry Pi, a excepción de Pi Zero y Compute Module, el video
compuesto se emite junto con el sonido en la toma TRRS ("auriculares") de 4 polos.
En el Pi Zero, hay un encabezado vacío con la etiqueta "TV" que emite video
compuesto. En el módulo de cómputo, el video compuesto está disponible a través
del pin TVDAC. El valor predeterminado de sdtv_mode es 0.
sdtv_mode resultado

0 NTSC normal
1 Versión japonesa de NTSC - sin pedestal
2 PAL normal
Versión brasileña de PAL - 525/60 en lugar de 625/50,
3
subportadora diferente
dieciséis Escaneo progresivo NTSC
18 PAL de barrido progresivo
Tabla 0-27 Modo de video compuesto

sdtv_aspect

223
MANUAL RASPBERRY
PI 4

El sdtv_aspect comando define la relación de aspecto para la salida de video


compuesto. El valor predeterminado es 1.
sdtv_aspec resultado
t

1 4: 3
2 14: 9
3 16: 9
Tabla 0-28 sdtv_aspect comando

sdtv_disable_colourburst
Si se establece sdtv_disable_colourburst en, se 1 deshabilita la explosión de color
en la salida de video compuesto. La imagen se mostrará en monocromo, pero puede
parecer más nítida.
enable_tvout (Solo Raspberry Pi 4, modelo B)
En Raspberry Pi 4, la salida compuesta está deshabilitada de forma predeterminada,
debido a la forma en que los relojes internos están interrelacionados y asignados.
Debido a que el video compuesto requiere un reloj muy específico, configurar ese
reloj a la velocidad requerida en el Pi 4 significa que otros relojes conectados a él se
ven afectados negativamente, lo que ralentiza ligeramente todo el sistema. Dado que
el vídeo compuesto es una función que se utiliza con menos frecuencia, decidimos
desactivarlo de forma predeterminada para evitar la ralentización del sistema.
Para habilitar la salida compuesta, use la enable_tvout=1 opción. Como se describió
anteriormente, esto afectará negativamente al rendimiento en un pequeño grado.
En modelos Pi más antiguos, el comportamiento compuesto sigue siendo el mismo.
Modo HDMI
NOTA
Debido a que la Raspberry Pi 4B tiene dos puertos HDMI, algunos comandos HDMI
se pueden aplicar a cualquiera de los puertos. Puede usar la sintaxis
<command>:<port>, donde el puerto es 0 o 1, para especificar a qué puerto se debe
aplicar la configuración. Si no se especifica ningún puerto, el valor predeterminado es
0. Si especifica un número de puerto en un comando que no requiere un número de
puerto, el puerto se ignora. Se pueden encontrar más detalles sobre la sintaxis y los
224
MANUAL RASPBERRY
PI 4

mecanismos alternativos en la subsección HDMI de la sección de condicionales de


la documentación.
Para admitir pantallas duales de 4k, Raspberrry Pi 4 ha actualizado el hardware de
video , lo que impone restricciones menores en los modos admitidos.

hdmi_safe
Ajuste hdmi_safe a 1 dará lugar a la configuración de "modo seguro" se utiliza para
tratar de arranque con la máxima compatibilidad HDMI. Es lo mismo que configurar
los siguientes parámetros:
hdmi_force_hotplug = 1
hdmi_ignore_edid = 0xa5000080
config_hdmi_boost = 4
hdmi_group = 2
hdmi_mode = 4
disable_overscan = 0
overscan_left = 24
overscan_right = 24
overscan_top = 24
overscan_bottom = 24
hdmi_ignore_edid
Si se establece hdmi_ignore_edid en 0xa5000080, se pueden ignorar los datos de
pantalla / EDID si su pantalla no tiene un EDID preciso . Requiere este valor inusual
para garantizar que no se active accidentalmente.
hdmi_edid_file
La configuración hdmi_edid_file en 1 hará que la GPU lea los datos EDID del
edid.dat archivo, ubicado en la partición de arranque, en lugar de leerlos desde el
monitor. Más información está disponible en los foros .
hdmi_edid_filename
En la Raspberry Pi 4B, puede usar el hdmi_edid_filename comando para especificar
el nombre de archivo del archivo EDID a usar y también para especificar a qué

225
MANUAL RASPBERRY
PI 4

puerto se aplicará el archivo. Esto también requiere hdmi_edid_file=1 habilitar


archivos EDID.
Por ejemplo:
hdmi_edid_file = 1
hdmi_edid_filename: 0 = FileForPortZero.edid
hdmi_edid_filename: 1 = FileForPortOne.edid
hdmi_force_edid_audio
La configuración hdmi_force_edid_audio en 1 simula que todos los formatos de audio
son compatibles con la pantalla, lo que permite el paso de DTS / AC3 incluso cuando
no se informa como compatible.
hdmi_ignore_edid_audio
La configuración hdmi_ignore_edid_audio en 1 simula que la pantalla no admite
todos los formatos de audio. Esto significa que ALSA utilizará de forma
predeterminada el conector de audio analógico (auriculares).
hdmi_force_edid_3d
La configuración hdmi_force_edid_3d en 1 simula que todos los modos CEA admiten
3D, incluso cuando el EDID no indica soporte para esto.
hdmi_ignore_cec_init
Si se establece hdmi_ignore_cec_init en, 1 se detendrá el envío del mensaje de
origen activo inicial durante el arranque. Esto evita que un televisor compatible con
CEC salga del modo de espera y cambie de canal cuando reinicia su Raspberry Pi.
hdmi_ignore_cec
La configuración hdmi_ignore_cec en 1 simula que CEC no es compatible en
absoluto con el televisor. No se admitirán funciones de CEC.
cec_osd_name
El cec_osd_name comando establece el nombre CEC inicial del dispositivo. El
predeterminado es Raspberry Pi.
hdmi_pixel_encoding

226
MANUAL RASPBERRY
PI 4

El hdmi_pixel_encoding comando fuerza el modo de codificación de píxeles. De


forma predeterminada, utilizará el modo solicitado desde el EDID, por lo que no
debería necesitar cambiarlo.
hdmi_pixel_encoding resultado

predeterminado (RGB limitado para CEA, RGB completo


0
para DMT)
1 RGB limitado (16-235)
2 RGB completo (0-255)
3 YCbCr limitada (16-235)
4 YCbCr completo (0-255)
Tabla 0-29 hdmi_pixel_encoding comando

hdmi_max_pixel_freq
El firmware y KMS utilizan la frecuencia de píxeles para filtrar los modos HDMI.
Tenga en cuenta que esto no es lo mismo que la velocidad de fotogramas. Especifica
la frecuencia máxima que puede tener un modo válido, eliminando así los modos de
frecuencia más alta. Entonces, por ejemplo, si desea deshabilitar todos los modos
4K, puede especificar una frecuencia máxima de 200000000, ya que todos los
modos 4K tienen frecuencias mayores que esto.
hdmi_blanking
El hdmi_blanking comando controla lo que sucede cuando el sistema operativo
solicita que la pantalla se ponga en modo de espera, utilizando DPMS, para ahorrar
energía. Si esta opción no está configurada o configurada en 0, la salida HDMI se
pone en blanco pero no se apaga. Para imitar el comportamiento de otras
computadoras, también puede configurar la salida HDMI para que se apague
configurando esta opción en 1: la pantalla adjunta entrará en un modo de espera de
bajo consumo.
NOTA
En la Raspberry Pi 4, la configuración hdmi_blanking=1 no hará que la salida HDMI
se apague, ya que esta función aún no se ha implementado. Esta característica

227
MANUAL RASPBERRY
PI 4

puede causar problemas al usar aplicaciones que no usan el framebuffer, como


omxplayer.
hdmi_blankin resultado
g

0 La salida HDMI quedará en blanco


1 La salida HDMI se apagará y se borrará
Tabla 0-30 hdmi_blanking comando

hdmi_drive
El hdmi_drive comando le permite elegir entre los modos de salida HDMI y DVI.
hdmi_drive resultado

1 Modo DVI normal (sin sonido)


Modo HDMI normal (el sonido se enviará si es compatible y
2
habilitado)
Tabla 0-31 hdmi_drive comando

config_hdmi_boost
Configura la intensidad de la señal de la interfaz HDMI. El valor mínimo es 0 y el
máximo es 11.
El valor predeterminado para los modelos B y A originales es 2. El valor
predeterminado para el Modelo B + y todos los modelos posteriores es 5.
Si observa problemas con HDMI (manchas, interferencias), inténtelo 7. Los cables
HDMI muy largos pueden necesitar hasta 11, pero valores tan altos no deben usarse
a menos que sea absolutamente necesario.
Esta opción se ignora en Raspberry Pi 4.
hdmi_group
El hdmi_group comando define el grupo de salida HDMI como CEA (Consumer
Electronics Association, el estándar que suelen utilizar los televisores) o DMT
(Display Monitor Timings, el estándar que suelen utilizar los monitores). Esta
configuración debe usarse junto con hdmi_mode.
hdmi_grou resultado
p

228
MANUAL RASPBERRY
PI 4

0 Detectar automáticamente desde EDID


1 CEA
2 DMT
Tabla 0-32 hdmi_group comando

hdmi_mode
Junto con hdmi_group, hdmi_mode define el formato de salida HDMI. Los números
de modo de formato se derivan de la especificación de CTA .
Para configurar un modo de visualización personalizado que no se enumera aquí,
consulte más información en los foros.
NOTA
No todos los modos están disponibles en todos los modelos.
Estos valores son válidos si hdmi_group=1 (CEA):
Aspecto de la
hdmi_mode Resolución Frecuencia Notas
pantalla

VGA
1 60 Hz 4: 3
(640x480)
2 480p 60 Hz 4: 3

3 480p 60 Hz 16: 9

4 720p 60 Hz 16: 9

5 1080i 60 Hz 16: 9

6 480i 60 Hz 4: 3

7 480i 60 Hz 16: 9

8 240p 60 Hz 4: 3

9 240p 60 Hz 16: 9
cuadriplicado
10 480i 60 Hz 4: 3
de píxeles
cuadriplicado
11 480i 60 Hz 16: 9
de píxeles

229
MANUAL RASPBERRY
PI 4

cuadriplicado
12 240p 60 Hz 4: 3
de píxeles
cuadriplicado
13 240p 60 Hz 16: 9
de píxeles
duplicación de
14 480p 60 Hz 4: 3
píxeles
duplicación de
15 480p 60 Hz 16: 9
píxeles
dieciséis 1080p 60 Hz 16: 9

17 576p 50 Hz 4: 3

18 576p 50 Hz 16: 9

19 720p 50 Hz 16: 9

20 1080i 50 Hz 16: 9

21 576i 50 Hz 4: 3

22 576i 50 Hz 16: 9

23 288p 50 Hz 4: 3

24 288p 50 Hz 16: 9
cuadriplicado
25 576i 50 Hz 4: 3
de píxeles
cuadriplicado
26 576i 50 Hz 16: 9
de píxeles
cuadriplicado
27 288p 50 Hz 4: 3
de píxeles
cuadriplicado
28 288p 50 Hz 16: 9
de píxeles
duplicación de
29 576p 50 Hz 4: 3
píxeles
duplicación de
30 576p 50 Hz 16: 9
píxeles
230
MANUAL RASPBERRY
PI 4

31 1080p 50 Hz 16: 9

32 1080p 24 Hz 16: 9

33 1080p 25 Hz 16: 9

34 1080p 30 Hz 16: 9
cuadriplicado
35 480p 60 Hz 4: 3
de píxeles
cuadriplicado
36 480p 60 Hz 16: 9
de píxeles
cuadriplicado
37 576p 50 Hz 4: 3
de píxeles
cuadriplicado
38 576p 50 Hz 16: 9
de píxeles
blanking
39 1080i 50 Hz 16: 9
reducido
40 1080i 100 Hz 16: 9

41 720p 100 Hz 16: 9

42 576p 100 Hz 4: 3

43 576p 100 Hz 16: 9

44 576i 100 Hz 4: 3

45 576i 100 Hz 16: 9

46 1080i 120 Hz 16: 9

47 720p 120 Hz 16: 9

48 480p 120 Hz 4: 3

49 480p 120 Hz 16: 9

50 480i 120 Hz 4: 3

51 480i 120 Hz 16: 9


231
MANUAL RASPBERRY
PI 4

52 576p 200 Hz 4: 3

53 576p 200 Hz 16: 9

54 576i 200 Hz 4: 3

55 576i 200 Hz 16: 9

56 480p 240 Hz 4: 3

57 480p 240 Hz 16: 9

58 480i 240 Hz 4: 3

59 480i 240 Hz 16: 9

60 720p 24 Hz 16: 9

61 720p 25 Hz 16: 9

62 720p 30 Hz 16: 9

63 1080p 120 Hz 16: 9

64 1080p 100 Hz 16: 9


sesenta y
Personalizado
cinco
66 720p 25 Hz 64:27 Pi 4
67 720p 30 Hz 64:27 Pi 4
68 720p 50 Hz 64:27 Pi 4
69 720p 60 Hz 64:27 Pi 4
70 720p 100 Hz 64:27 Pi 4
71 720p 120 Hz 64:27 Pi 4
72 1080p 24 Hz 64:27 Pi 4
73 1080p 25 Hz 64:27 Pi 4
74 1080p 30 Hz 64:27 Pi 4
75 1080p 50 Hz 64:27 Pi 4
76 1080p 60 Hz 64:27 Pi 4
77 1080p 100 Hz 64:27 Pi 4
232
MANUAL RASPBERRY
PI 4

78 1080p 120 Hz 64:27 Pi 4


79 1680x720 24 Hz 64:27 Pi 4
80 1680x720 25z 64:27 Pi 4
81 1680x720 30 Hz 64:27 Pi 4
82 1680x720 50 Hz 64:27 Pi 4
83 1680x720 60 Hz 64:27 Pi 4
84 1680x720 100 Hz 64:27 Pi 4
85 1680x720 120 Hz 64:27 Pi 4
86 2560x720 24 Hz 64:27 Pi 4
87 2560x720 25 Hz 64:27 Pi 4
88 2560x720 30 Hz 64:27 Pi 4
89 2560x720 50 Hz 64:27 Pi 4
90 2560x720 60 Hz 64:27 Pi 4
91 2560x720 100 Hz 64:27 Pi 4
92 2560x720 120 Hz 64:27 Pi 4
93 2160p 24 Hz 16: 9 Pi 4
94 2160p 25 Hz 16: 9 Pi 4
95 2160p 30 Hz 16: 9 Pi 4
96 2160p 50 Hz 16: 9 Pi 4
97 2160p 60 Hz 16: 9 Pi 4
98 4096x2160 24 Hz 256: 135 Pi 4
99 4096x2160 25 Hz 256: 135 Pi 4
100 4096x2160 30 Hz 256: 135 Pi 4
101 4096x2160 50 Hz 256: 135 Pi 4
102 4096x2160 60 Hz 256: 135 Pi 4
103 2160p 24 Hz 64:27 Pi 4
104 2160p 25 Hz 64:27 Pi 4
105 2160p 30 Hz 64:27 Pi 4
106 2160p 50 Hz 64:27 Pi 4
107 2160p 60 Hz 64:27 Pi 4
Tabla 0-33 Valores válidos si hdmi_group=1(CEA)

233
MANUAL RASPBERRY
PI 4

La duplicación y cuadriplicación de píxeles indica una frecuencia de reloj más alta,


con cada píxel repetido dos o cuatro veces respectivamente.
Estos valores son válidos si hdmi_group=2 (DMT):
Aspecto de la
hdmi_mode Resolución Frecuencia Notas
pantalla

1 640 x 350 85 Hz

2 640x400 85 Hz 16:10

3 720x400 85 Hz

4 640x480 60 Hz 4: 3

5 640x480 72 Hz 4: 3

6 640x480 75 Hz 4: 3

7 640x480 85 Hz 4: 3

8 800 x 600 56 Hz 4: 3

9 800 x 600 60 Hz 4: 3

10 800 x 600 72 Hz 4: 3

11 800 x 600 75 Hz 4: 3

12 800 x 600 85 Hz 4: 3

13 800 x 600 120 Hz 4: 3

14 848x480 60 Hz 16: 9
incompatible con la
15 1024 x 768 43 Hz 4: 3
Raspberry Pi
dieciséis 1024 x 768 60 Hz 4: 3

17 1024 x 768 70 Hz 4: 3

18 1024 x 768 75 Hz 4: 3

19 1024 x 768 85 Hz 4: 3

234
MANUAL RASPBERRY
PI 4

20 1024 x 768 120 Hz 4: 3

21 1152x864 75 Hz 4: 3
22 1280x768 60 Hz 15: 9 blanking reducido
23 1280x768 60 Hz 15: 9

24 1280x768 75 Hz 15: 9

25 1280x768 85 Hz 15: 9
26 1280x768 120 Hz 15: 9 blanking reducido
27 1280 x 800 60 16:10 blanking reducido
28 1280 x 800 60 Hz 16:10

29 1280 x 800 75 Hz 16:10

30 1280 x 800 85 Hz 16:10


31 1280 x 800 120 Hz 16:10 blanking reducido
32 1280 x 960 60 Hz 4: 3

33 1280 x 960 85 Hz 4: 3
34 1280 x 960 120 Hz 4: 3 blanking reducido
35 1280x1024 60 Hz 5: 4

36 1280x1024 75 Hz 5: 4

37 1280x1024 85 Hz 5: 4
38 1280x1024 120 Hz 5: 4 blanking reducido
39 1360 x 768 60 Hz 16: 9
40 1360 x 768 120 Hz 16: 9 blanking reducido
41 1400x1050 60 Hz 4: 3 blanking reducido
42 1400x1050 60 Hz 4: 3

43 1400x1050 75 Hz 4: 3

44 1400x1050 85 Hz 4: 3
45 1400x1050 120 Hz 4: 3 blanking reducido
235
MANUAL RASPBERRY
PI 4

46 1440 x 900 60 Hz 16:10 blanking reducido


47 1440 x 900 60 Hz 16:10

48 1440 x 900 75 Hz 16:10

49 1440 x 900 85 Hz 16:10


50 1440 x 900 120 Hz 16:10 blanking reducido
51 1600x1200 60 Hz 4: 3

52 1600x1200 65 Hz 4: 3

53 1600x1200 70 Hz 4: 3

54 1600x1200 75 Hz 4: 3

55 1600x1200 85 Hz 4: 3
56 1600x1200 120 Hz 4: 3 blanking reducido
57 1680x1050 60 Hz 16:10 blanking reducido
58 1680x1050 60 Hz 16:10

59 1680x1050 75 Hz 16:10

60 1680x1050 85 Hz 16:10
61 1680x1050 120 Hz 16:10 blanking reducido
62 1792x1344 60 Hz 4: 3

63 1792x1344 75 Hz 4: 3
64 1792x1344 120 Hz 4: 3 blanking reducido
sesenta y
1856x1392 60 Hz 4: 3
cinco
66 1856x1392 75 Hz 4: 3
67 1856x1392 120 Hz 4: 3 blanking reducido
68 1920x1200 60 Hz 16:10 blanking reducido
69 1920x1200 60 Hz 16:10

70 1920x1200 75 Hz 16:10

236
MANUAL RASPBERRY
PI 4

71 1920x1200 85 Hz 16:10
72 1920x1200 120 Hz 16:10 blanking reducido
73 1920x1440 60 Hz 4: 3

74 1920x1440 75 Hz 4: 3
75 1920x1440 120 Hz 4: 3 blanking reducido
76 2560x1600 60 Hz 16:10 blanking reducido
77 2560x1600 60 Hz 16:10

78 2560x1600 75 Hz 16:10

79 2560x1600 85 Hz 16:10
80 2560x1600 120 Hz 16:10 blanking reducido
NO en Raspberry Pi
81 1366 x 768 60 Hz 16: 9
4
1920 x
82 60 Hz 16: 9 1080p
1080
83 1600 x 900 60 Hz 16: 9 blanking reducido
84 2048x1152 60 Hz 16: 9 blanking reducido
85 1280 x 720 60 Hz 16: 9 720p
86 1366 x 768 60 Hz 16: 9 blanking reducido
Tabla 0-34 Valores válidos si hdmi_group=2 (DMT)

NOTA Hay un límite de reloj de píxeles . El modo admitido más alto en modelos
anteriores a la Raspberry Pi 4 es 1920x1200 a 60Hz con supresión reducida,
mientras que Raspberry Pi 4 puede admitir hasta 4096x2160 (conocido como 4k) a
60Hz. También tenga en cuenta que si está utilizando ambos puertos HDMI de la
Raspberry Pi 4 para salida 4k, entonces está limitado a 30Hz en ambos.
hdmi_timings
Esto permite configurar valores de sincronización HDMI sin procesar para un modo
personalizado, seleccionado mediante hdmi_group=2 y hdmi_mode=87.
hdmi_timings=<h_active_pixels> <h_sync_polarity> <h_front_porch>
<h_sync_pulse> <h_back_porch> <v_active_lines> <v_sync_polarity>

237
MANUAL RASPBERRY
PI 4

<v_front_porch> <v_sync_pulse> <v_back_porch> <v_sync_offset_a>


<v_sync_offset_b> <pixel_rep> <frame_rate> <interlaced> <pixel_freq>
<aspect_ratio>

<h_active_pixels> = horizontal pixels (width)


<h_sync_polarity> = invert hsync polarity
<h_front_porch> = horizontal forward padding from DE acitve edge
<h_sync_pulse> = hsync pulse width in pixel clocks
<h_back_porch> = vertical back padding from DE active edge
<v_active_lines> = vertical pixels height (lines)
<v_sync_polarity> = invert vsync polarity
<v_front_porch> = vertical forward padding from DE active edge
<v_sync_pulse> = vsync pulse width in pixel clocks
<v_back_porch> = vertical back padding from DE active edge
<v_sync_offset_a> = leave at zero
<v_sync_offset_b> = leave at zero
<pixel_rep> = leave at zero
<frame_rate> = screen refresh rate in Hz
<interlaced> = leave at zero
<pixel_freq> = clock frequency (width*height*framerate)
<aspect_ratio> =*
* La relación de aspecto se puede establecer en uno de ocho valores (elija el más
cercano para su pantalla):
HDMI_ASPECT_4_3 = 1
HDMI_ASPECT_14_9 = 2
HDMI_ASPECT_16_9 = 3
HDMI_ASPECT_5_4 = 4
HDMI_ASPECT_16_10 = 5
HDMI_ASPECT_15_9 = 6
HDMI_ASPECT_21_9 = 7

238
MANUAL RASPBERRY
PI 4

HDMI_ASPECT_64_27 = 8
hdmi_force_mode
Si 1 se establece en, se eliminarán todos los demás modos, excepto los
especificados por hdmi_mode y hdmi_group de la lista interna, lo que significa que no
aparecerán en ninguna lista de modos enumerada. Esta opción puede ayudar si una
pantalla parece ignorar la configuración hdmi_mode y hdmi_group.
edid_content_type
Fuerza el tipo de contenido EDID a un valor específico.
Las opciones son:
 0= EDID_ContentType_NODATA, tipo de contenido ninguno.
 1= EDID_ContentType_Graphics, gráficos de tipo de contenido, ITC debe
establecerse en 1
 2= EDID_ContentType_Photo, foto del tipo de contenido
 3= EDID_ContentType_Cinema, tipo de contenido cine
 4= EDID_ContentType_Game, juego de tipo de contenido
¿Qué valores son válidos para mi monitor?
Es posible que su monitor HDMI solo admita un conjunto limitado de formatos. Para
averiguar qué formatos son compatibles, utilice el siguiente método:
1. Configure el formato de salida en VGA 60Hz ( hdmi_group=1 y hdmi_mode=1)
e inicie su Raspberry Pi
2. Ingrese el siguiente comando para dar una lista de modos compatibles con
CEA: /opt/vc/bin/tvservice -m CEA
3. Ingrese el siguiente comando para obtener una lista de los modos compatibles
con DMT: /opt/vc/bin/tvservice -m DMT
4. Ingrese el siguiente comando para mostrar su estado actual:
/opt/vc/bin/tvservice -s
5. Ingrese los siguientes comandos para descargar información más detallada de
su monitor: /opt/vc/bin/tvservice -d edid.dat; /opt/vc/bin/edidparser edid.dat
El edid.dat también debe proporcionarse la hora de solucionar problemas con el
modo por defecto de HDMI.

239
MANUAL RASPBERRY
PI 4

Modo personalizado
Si su monitor requiere un modo que no está en una de las tablas anteriores,
entonces es posible definir un modo CVT personalizado para él:
hdmi_cvt=<width> <height> <framerate> <aspect> <margins> <interlace> <rb>
Valor Defecto Descripción

ancho (requerido) ancho en píxeles


altura (requerido) altura en píxeles
cuadros por
(requerido) velocidad de fotogramas en Hz
segundo
relación de aspecto 1 = 4: 3, 2 = 14: 9, 3 = 16: 9,
aspecto 3
4 = 5: 4, 5 = 16:10, 6 = 15: 9
0 = márgenes deshabilitados, 1 = márgenes
márgenes 0
habilitados
entrelazar 0 0 = progresivo, 1 = entrelazado
rb 0 0 = normal, 1 = supresión reducida
Tabla 0-35 Modo CVT personalizado

Los campos al final se pueden omitir para usar los valores predeterminados.
Tenga en cuenta que esto simplemente crea el modo (grupo 2 modo 87). Para que Pi
use esto de forma predeterminada, debe agregar algunas configuraciones
adicionales. Por ejemplo, lo siguiente selecciona una resolución de 800 × 480 y
habilita la unidad de audio:
hdmi_cvt = 800 480 60 6
hdmi_group = 2
hdmi_mode = 87
hdmi_drive = 2
Es posible que esto no funcione si su monitor no es compatible con los tiempos CVT
estándar.
Pantallas LCD y pantallas táctiles
ignore_lcd

240
MANUAL RASPBERRY
PI 4

Por defecto, la pantalla LCD Raspberry Pi se utiliza cuando se detecta en el bus


I2C. ignore_lcd=1 omitirá esta fase de detección y, por lo tanto, no se utilizará la
pantalla LCD.
display_default_lcd
Si se detecta una pantalla LCD DSI de Raspberry Pi, se utilizará como pantalla
predeterminada y mostrará el framebuffer. La configuración display_default_lcd=0
garantizará que la pantalla LCD no sea la pantalla predeterminada, lo que
generalmente implica que la salida HDMI será la predeterminada. La pantalla LCD se
puede seguir utilizando eligiendo su número de pantalla entre las aplicaciones
compatibles, por ejemplo, omxplayer.

lcd_framerate
Especifique la velocidad de fotogramas de la pantalla LCD de la Raspberry Pi, en
hercios / fps. El valor predeterminado es 60 Hz.
lcd_rotate
Esto voltea la pantalla usando la funcionalidad de volteo incorporada de la pantalla
LCD, que es una operación más barata que usar la operación de rotación basada en
GPU.
Por ejemplo, lcd_rotate=2 compensará una pantalla al revés.
disable_touchscreen
Activar / desactivar la pantalla táctil.
disable_touchscreen=1 desactivará la pantalla táctil en la pantalla LCD oficial de
Raspberry Pi.
enable_dpi_lcd
Habilite las pantallas LCD conectadas a los GPIO de DPI. Esto es para permitir el
uso de pantallas LCD de terceros mediante la interfaz de pantalla paralela.
dpi_group, dpi_mode,dpi_output_format
Los parámetros dpi_group y dpi_mode config.txt se usan para establecer modos
predeterminados (modos DMT o CEA como los usa HDMI arriba). Un usuario puede

241
MANUAL RASPBERRY
PI 4

generar modos personalizados de la misma manera que para HDMI (consulte la


dpi_timings sección).
dpi_output_format es una máscara de bits que especifica varios parámetros
utilizados para configurar el formato de visualización.
dpi_timings
Esto permite configurar los valores de temporización de DPI sin procesar para un
modo personalizado, seleccionado mediante dpi_group=2 y dpi_mode=87.
dpi_timings=<h_active_pixels> <h_sync_polarity> <h_front_porch> <h_sync_pulse>
<h_back_porch> <v_active_lines> <v_sync_polarity> <v_front_porch>
<v_sync_pulse> <v_back_porch> <v_sync_offset_a> <v_sync_offset_b> <pixel_rep>
<frame_rate> <interlaced> <pixel_freq> <aspect_ratio>

<h_active_pixels> = horizontal pixels (width)


<h_sync_polarity> = invert hsync polarity
<h_front_porch> = horizontal forward padding from DE acitve edge
<h_sync_pulse> = hsync pulse width in pixel clocks
<h_back_porch> = vertical back padding from DE active edge
<v_active_lines> = vertical pixels height (lines)
<v_sync_polarity> = invert vsync polarity
<v_front_porch> = vertical forward padding from DE active edge
<v_sync_pulse> = vsync pulse width in pixel clocks
<v_back_porch> = vertical back padding from DE active edge
<v_sync_offset_a> = leave at zero
<v_sync_offset_b> = leave at zero
<pixel_rep> = leave at zero
<frame_rate> = screen refresh rate in Hz
<interlaced> = leave at zero
<pixel_freq> = clock frequency (width*height*framerate)
<aspect_ratio> =*

242
MANUAL RASPBERRY
PI 4

* La relación de aspecto se puede establecer en uno de ocho valores (elija el más


cercano para su pantalla):
HDMI_ASPECT_4_3 = 1
HDMI_ASPECT_14_9 = 2
HDMI_ASPECT_16_9 = 3
HDMI_ASPECT_5_4 = 4
HDMI_ASPECT_16_10 = 5
HDMI_ASPECT_15_9 = 6
HDMI_ASPECT_21_9 = 7
HDMI_ASPECT_64_27 = 8
Opciones de visualización genéricas
hdmi_force_hotplug
La configuración hdmi_force_hotplug en 1 simula que la señal de conexión en
caliente HDMI se confirma, por lo que parece que hay una pantalla HDMI conectada.
En otras palabras, se utilizará el modo de salida HDMI, incluso si no se detecta
ningún monitor HDMI.
hdmi_ignore_hotplug
El ajuste hdmi_ignore_hotplug en 1 simula que la señal de conexión en caliente
HDMI no se confirma, por lo que parece que no hay una pantalla HDMI conectada.
En otras palabras, se utilizará el modo de salida compuesta, incluso si se detecta un
monitor HDMI.
overscan_left
El overscan_left comando especifica el número de píxeles que se agregarán al valor
predeterminado del firmware de sobreexploración en el borde izquierdo de la
pantalla. El valor predeterminado es 0.
Aumente este valor si el texto fluye por el borde izquierdo de la pantalla; Disminuirlo
si hay un borde negro entre el borde izquierdo de la pantalla y el texto.
overscan_right
El overscan_right comando especifica el número de píxeles que se agregarán al
valor predeterminado del firmware de sobreexploración en el borde derecho de la
pantalla. El valor predeterminado es 0.
243
MANUAL RASPBERRY
PI 4

Aumente este valor si el texto fluye por el borde derecho de la pantalla; Disminuirlo
si hay un borde negro entre el borde derecho de la pantalla y el texto.
overscan_top
El overscan_top comando especifica la cantidad de píxeles que se agregarán al valor
predeterminado del firmware de sobreexploración en el borde superior de la pantalla.
El valor predeterminado es 0.
Aumente este valor si el texto fluye por el borde superior de la pantalla; redúzcalo si
hay un borde negro entre el borde superior de la pantalla y el texto.
overscan_bottom
El overscan_bottom comando especifica la cantidad de píxeles que se agregarán al
valor predeterminado del firmware de sobreexploración en el borde inferior de la
pantalla. El valor predeterminado es 0.
Aumente este valor si el texto fluye por el borde inferior de la pantalla; redúzcalo si
hay un borde negro entre el borde inferior de la pantalla y el texto.
overscan_scale
Configure overscan_scale en 1 para forzar a cualquier capa que no sea framebuffer a
ajustarse a la configuración de sobreexploración. El valor predeterminado es 0.
NOTA: esta función generalmente no se recomienda: puede reducir la calidad de la
imagen porque la GPU escalará todas las capas de la pantalla. La desactivación de
la sobreexploración en la pantalla es la opción recomendada para evitar que las
imágenes se escalen dos veces (por la GPU y la pantalla).
framebuffer_width
El framebuffer_width comando especifica el ancho del framebuffer de la consola en
píxeles. El valor predeterminado es el ancho de la pantalla menos el sobrebarrido
horizontal total.
framebuffer_height
El framebuffer_height comando especifica la altura del framebuffer de la consola en
píxeles. El valor predeterminado es la altura de la pantalla menos la sobreexploración
vertical total.
max_framebuffer_height, max_framebuffer_width

244
MANUAL RASPBERRY
PI 4

Especifica las dimensiones máximas que puede tener el búfer de marco interno.
framebuffer_depth
Se utiliza framebuffer_depth para especificar la profundidad del búfer de fotogramas
de la consola en bits por píxel. El valor predeterminado es 16.
framebuffer_depth resultado notas

Búfer de marco La paleta RGB predeterminada hace que


8
de 8 bits la pantalla sea ilegible
Framebuffer de
dieciséis
16 bits
Búfer de cuadro
24 Puede resultar en una pantalla dañada
de 24 bits
Búfer de trama Puede ser necesario utilizarlo junto
32
de 32 bits con framebuffer_ignore_alpha=1
Tabla 0-36 framebuffer_depth

framebuffer_ignore_alpha
Configure framebuffer_ignore_alpha en 1 para deshabilitar el canal alfa. Puede
ayudar con la visualización de un 32bit framebuffer_depth.
framebuffer_priority
En un sistema con múltiples pantallas, utilizando el controlador de gráficos heredado
(pre-KMS), esto obliga a un dispositivo de pantalla interno específico a ser el primer
framebuffer de Linux (es decir /dev/fb0).
Las opciones que se pueden configurar son:
Monitor IDENTIFICACIÓN

LCD principal 0
LCD secundario 1
HDMI 0 2
Compuesto 3
HDMI 1 7
Tabla 0-37 framebuffer_priority multiples pantallas

max_framebuffers

245
MANUAL RASPBERRY
PI 4

Esta entrada de configuración establece el número máximo de framebuffers de


firmware que se pueden crear. Las opciones válidas son 0, 1 y 2. De forma
predeterminada en los dispositivos anteriores al Pi4, se establece en 1, por lo que
deberá aumentarse a 2 cuando se utilice más de una pantalla, por ejemplo, HDMI y
una pantalla DSI o DPI. La configuración de Raspberry Pi4 establece esto en 2 de
forma predeterminada, ya que tiene dos puertos HDMI.
Generalmente, en la mayoría de los casos, es seguro establecer esto en 2, ya que
los framebuffers solo se crearán cuando se detecte realmente un dispositivo adjunto.

Establecer este valor en 0 se puede usar para reducir los requisitos de memoria
cuando se usa en modo sin cabeza, ya que evitará que se asignen búferes de
fotogramas.
test_mode
El test_mode comando muestra una imagen y un sonido de prueba durante el inicio
(solo a través de las salidas de video compuesto y audio analógico) durante la
cantidad de segundos especificada, antes de continuar iniciando el sistema operativo
con normalidad. Esto se utiliza como prueba de fabricación; el valor predeterminado
es 0.
display_hdmi_rotate
Úselo display_hdmi_rotate para rotar o voltear la orientación de la pantalla HDMI. El
valor predeterminado es 0.
display_hdmi_rotate resultado

0 sin rotación
1 girar 90 grados en el sentido de las agujas del reloj
2 girar 180 grados en el sentido de las agujas del reloj
3 girar 270 grados en el sentido de las agujas del reloj
0x10000 volteo horizontal
0x20000 volteo vertical
Tabla 0-38 display_hdmi_rotate para orientación de la pantalla

246
MANUAL RASPBERRY
PI 4

Tenga en cuenta que las opciones de rotación de 90 y 270 grados requieren


memoria adicional en la GPU, por lo que no funcionarán con la división de GPU de
16 MB.
Si usa el controlador VC4 FKMS V3D (este es el predeterminado en la Raspberry Pi
4), no se admiten rotaciones de 90 y 270 grados. La utilidad de configuración de
pantalla proporciona rotaciones de pantalla para este controlador.
display_lcd_rotate
Para el controlador de gráficos heredado (predeterminado en modelos anteriores al
Pi4), utilícelo display_lcd_rotate para rotar o voltear la orientación de la pantalla LCD.
Los parámetros son los mismos que display_hdmi_rotate. Vea también lcd_rotate.
display_rotate
display_rotate está obsoleto en el último firmware, pero se ha conservado por
compatibilidad con versiones anteriores. Utilice display_lcd_rotate y en su
display_hdmi_rotate lugar.
Úselo display_rotate para rotar o voltear la orientación de la pantalla. Los parámetros
son los mismos que display_hdmi_rotate.
disable_fw_kms_setup
De forma predeterminada, el firmware analiza el EDID de cualquier pantalla
conectada a HDMI, elige un modo de video apropiado y luego pasa la resolución y la
velocidad de fotogramas del modo, junto con los parámetros de sobreexploración, al
kernel de Linux a través de la configuración en la línea de comandos del kernel. En
raras ocasiones, esto puede tener el efecto de elegir un modo que no está en el
EDID y puede ser incompatible con el dispositivo. Puede utilizar
disable_fw_kms_setup=1 para deshabilitar el paso de estos parámetros y evitar este
problema. El sistema de modo de video de Linux (KMS) analizará el EDID y elegirá
un modo apropiado.
Otras opciones
dispmanx_offline
Obliga a que la dispmanx composición se realice sin conexión en dos búferes de
fotogramas fuera de la pantalla. Esto puede permitir la dispmanx composición de

247
MANUAL RASPBERRY
PI 4

más elementos, pero es más lento y puede limitar la velocidad de fotogramas de la


pantalla a 30 fps.
Canalización HDMI Raspberry Pi 4
IMPORTANTE
Cuando se utiliza el controlador de gráficos VC4 KMS, Linux gestiona todo el canal
de visualización, esto incluye las salidas HDMI. Esta configuración solo se aplica al
FKMS heredado y al controlador de gráficos basado en firmware.
Para admitir pantallas duales y modos de hasta 4k60, Raspberry Pi 4 ha actualizado
el hardware de canalización de composición HDMI de varias maneras. Uno de los
principales cambios es que genera 2 píxeles de salida para cada ciclo de reloj.
Cada modo HDMI tiene una lista de tiempos que controlan todos los parámetros
relacionados con la duración de los pulsos de sincronización. Por lo general, se
definen a través de un reloj de píxeles y luego una cantidad de píxeles activos, un
porche delantero, pulso de sincronización y un porche trasero para cada una de las
direcciones horizontal y vertical.
Ejecutar todo a 2 píxeles por reloj significa que el Pi4 no puede admitir un tiempo en
el que ninguno de los tiempos horizontales sea divisible por 2. El firmware y el kernel
de Linux filtrarán cualquier modo que no cumpla con este criterio.
Solo hay un modo en los estándares CEA y DMT que cae en esta categoría: el modo
DMT 81, que es 1366x768 @ 60Hz. Este modo tiene valores impares para la
sincronización horizontal y los tiempos del porche trasero. También es un modo
inusual por tener un ancho que no es divisible por 8.
Si su monitor tiene esta resolución, entonces el Pi4 bajará automáticamente al
siguiente modo anunciado por el monitor; esto suele ser 1280x720.
En algunos monitores es posible configurarlos para usar 1360x768 @ 60Hz. Por lo
general, no anuncian este modo a través de su EDID, por lo que la selección no se
puede realizar automáticamente, pero se puede elegir manualmente agregando
hdmi_group=2
hdmi_mode=87
hdmi_cvt=1360 768 60
a config.txt .
248
MANUAL RASPBERRY
PI 4

Los tiempos especificados manualmente a través de una entrada de hdmi_timings=


línea config.txt también deberán cumplir con la restricción de que todos los
parámetros de tiempo horizontal sean divisibles por 2.
dpi_timings= no están restringidos de la misma manera que esa canalización solo se
ejecuta a un solo píxel por ciclo de reloj.
Ajustes de la cámara
disable_camera_led
El ajuste disable_camera_led a 1 evita que el LED rojo de la cámara se encienda al
grabar un video o tomar una fotografía. Esto es útil para evitar reflejos cuando la
cámara está frente a una ventana, por ejemplo.
awb_auto_is_greyworld
La configuración awb_auto_is_greyworld en 1 permite que las bibliotecas o
aplicaciones que no admiten la opción greyworld internamente capturen imágenes y
videos válidos con cámaras NoIR. Cambia el modo awb "automático" para utilizar el
algoritmo "greyworld". Esto solo debería ser necesario para las cámaras NoIR, o
cuando se haya quitado el filtro de infrarrojos de la cámara de alta calidad .
Opciones misceláneas
avoid_warnings
Los símbolos de advertencia se pueden desactivar con esta opción, aunque no se
recomienda.
avoid_warnings=1 desactiva las superposiciones de advertencia. avoid_warnings=2
desactiva las superposiciones de advertencia, pero además permite el modo turbo
incluso cuando hay baja tensión.
logging_level
Establece el nivel de registro de VideoCore. El valor es una máscara de bits
específica de VideoCore.
max_usb_current
ADVERTENCIA
Este comando ahora está obsoleto y no tiene ningún efecto.
Originalmente, ciertos modelos de Raspberry Pi limitaban los puertos USB a un
máximo de 600 mA. La configuración max_usb_current=1 cambió este valor
predeterminado a 1200 mA. Sin embargo, todo el firmware ahora tiene este indicador
249
MANUAL RASPBERRY
PI 4

configurado de forma predeterminada, por lo que ya no es necesario utilizar esta


opción.

3.7 El nucleo de Linux


Núcleo
El kernel de Raspberry Pi se almacena en GitHub y se puede ver en
github.com/raspberrypi/linux ; sigue detrás del kernel principal de Linux . El núcleo
principal de Linux se actualiza continuamente; tomamos las versiones a largo plazo
del kernel, que se mencionan en la página principal, e integramos los cambios en el
kernel de Raspberry Pi. Luego creamos una rama 'siguiente' que contiene un puerto
inestable del kernel; Después de pruebas y debates exhaustivos, lo enviamos a la
rama principal.
Actualizando su Kernel
Si usa el proceso estándar de actualización y actualización del sistema operativo
Raspberry Pi , esto actualizará automáticamente el kernel a la última versión estable.
Este es el procedimiento recomendado. Sin embargo, en determinadas
circunstancias, es posible que desee actualizar al último kernel de prueba o de última
generación. Solo debe hacer esto si lo recomienda un ingeniero de Raspberry Pi, o si
hay una función específica solo disponible en este último software.
Introducir su código en el kernel
Hay muchas razones por las que puede querer poner algo en el kernel:
 Ha escrito un código específico de Raspberry Pi del que desea que todos se
beneficien
 Ha escrito un controlador de kernel de Linux genérico para un dispositivo y
quiere que todos lo usen
 Has solucionado un error genérico del kernel
 Has solucionado un error del kernel específico de Raspberry Pi
Inicialmente, debe bifurcar el repositorio de Linux y clonarlo en su sistema de
compilación; esto puede ser en la Raspberry Pi o en una máquina Linux que esté
usando para la compilación cruzada. A continuación, puede realizar sus cambios,
probarlos y enviarlos a su bifurcación.

250
MANUAL RASPBERRY
PI 4

A continuación, dependiendo de si el código es específico de Raspberry Pi o no:

 Para cambios específicos de Pi o correcciones de errores, envíe una solicitud


de extracción al kernel.
 Para cambios generales del kernel de Linux (es decir, un nuevo controlador),
estos deben enviarse primero en sentido ascendente. Una vez que se hayan
enviado y aceptado, envíe la solicitud de extracción y la recibiremos.
Construyendo el Kernel
Los compiladores y enlazadores predeterminados que vienen con un sistema
operativo están configurados para crear ejecutables que se ejecuten en ese sistema
operativo, son herramientas nativas, pero ese no tiene por qué ser el caso. Un
compilador cruzado está configurado para compilar código para un destino distinto al
que ejecuta el proceso de compilación, y su uso se denomina compilación cruzada.
La compilación cruzada del kernel de Raspberry Pi es útil por dos razones:
 permite construir un kernel de 64 bits utilizando un sistema operativo de 32
bits, y viceversa, y
 incluso una computadora portátil modesta puede compilar un kernel de Pi
significativamente más rápido que la propia Pi.
Las instrucciones a continuación se dividen en compilaciones nativas y compilación
cruzada; elija la sección apropiada para su situación - aunque hay muchos pasos
comunes entre los dos, también hay algunas diferencias importantes.
Construyendo el núcleo localmente
En una Raspberry Pi, primero instale la última versión del sistema operativo
Raspberry Pi . Luego inicie su Pi, conecte Ethernet para darle acceso a las fuentes e
inicie sesión.
Primero instale Git y las dependencias de compilación:
sudo apt install git bc bison flex libssl-dev make
A continuación, obtenga las fuentes, lo que llevará algún tiempo:
git clone --depth=1 https://github.com/raspberrypi/linux
Elegir fuentes

251
MANUAL RASPBERRY
PI 4

El git clone comando anterior descargará la rama activa actual (desde la que
estamos creando las imágenes del sistema operativo Raspberry Pi) sin ningún
historial. Omitir --depth=1 descargará todo el repositorio, incluido el historial completo
de todas las ramas, pero esto lleva mucho más tiempo y ocupa mucho más espacio
de almacenamiento.
Para descargar una rama diferente (nuevamente sin historial), use la –branch opción:
git clone --depth=1 --branch <branch> https://github.com/raspberrypi/linux
donde <branch> está el nombre de la rama que desea descargar.
Consulte el repositorio de GitHub original para obtener información sobre las ramas
disponibles.
Configuración del kernel
Configure el kernel; además de la configuración predeterminada, es posible que
desee configurar su kernel con más detalle o aplicar parches de otra fuente para
agregar o eliminar la funcionalidad requerida.
Aplicar la configuración predeterminada
Primero, prepare la configuración predeterminada ejecutando los siguientes
comandos, según su versión de Raspberry Pi:
Para la configuración de compilación predeterminada de Raspberry Pi 1, Pi Zero, Pi
Zero W y Compute Module
cd linux
KERNEL=kernel
make bcmrpi_defconfig
Para la configuración de compilación predeterminada de Raspberry Pi 2, Pi 3, Pi 3+ y
Compute Module 3
cd linux
KERNEL=kernel7
make bcm2709_defconfig
Para la configuración de compilación predeterminada de Raspberry Pi 4 (32 bits)
cd linux
KERNEL=kernel7l

252
MANUAL RASPBERRY
PI 4

make bcm2711_defconfig
Para la configuración de compilación predeterminada de Raspberry Pi 4 (64 bits)
cd linux
KERNEL=kernel8
make bcm2711_defconfig
Personalización de la versión del kernel mediante LOCALVERSION
Además de los cambios de configuración de su kernel, es posible que desee ajustar
LOCALVERSION para asegurarse de que su nuevo kernel no reciba la misma
cadena de versión que el kernel ascendente. Esto aclara que está ejecutando su
propio kernel en la salida uname y garantiza que los módulos existentes /lib/modules
no se sobrescriban.
Para hacerlo, cambie la siguiente línea en .config:
CONFIG_LOCALVERSION = "- v7l-MY_CUSTOM_KERNEL"
También puede cambiar esa configuración gráficamente como se muestra en las
instrucciones de configuración del kernel . Se encuentra en "Configuración general"
=> "Versión local - agregar a la versión del kernel".
Construyendo el Kernel
Cree e instale el kernel, los módulos y los blobs del árbol de dispositivos; este paso
puede llevar mucho tiempo dependiendo del modelo de Pi que se utilice. Para el
kernel de 32 bits:
make -j4 zImage modules dtbs
sudo make modules_install
sudo cp arch/arm/boot/dts/*.dtb /boot/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
sudo cp arch/arm/boot/zImage /boot/$KERNEL.img
Para el kernel de 64 bits:
make -j4 Image modules dtbs
sudo make modules_install
sudo cp arch/arm64/boot/dts/broadcom/*.dtb /boot/

253
MANUAL RASPBERRY
PI 4

sudo cp arch/arm64/boot/dts/overlays/*.dtb* /boot/overlays/


sudo cp arch/arm64/boot/dts/overlays/README /boot/overlays/
sudo cp arch/arm64/boot/Image /boot/$KERNEL.img
NOTA
En una Raspberry Pi 2/3/4, la -j4 bandera divide el trabajo entre los cuatro núcleos, lo
que acelera la compilación de manera significativa.
Compilación cruzada del kernel
Primero, necesitará un host adecuado de compilación cruzada de Linux. Solemos
usar Ubuntu; Dado que Raspberry Pi OS también es una distribución de Debian,
significa que muchos aspectos son similares, como las líneas de comando.

Puede hacer esto usando VirtualBox (o VMWare) en Windows, o instalarlo


directamente en su computadora. Como referencia, puede seguir las instrucciones en
línea en Wikihow .
Instalar las dependencias y la cadena de herramientas necesarias
Para crear las fuentes para la compilación cruzada, asegúrese de tener las
dependencias necesarias en su máquina ejecutando:
sudo apt install git bc bison flex libssl-dev make libc6-dev libncurses5-dev
Si encuentra que necesita otras cosas, envíe una solicitud de extracción para
cambiar la documentación.
Instale la cadena de herramientas de 32 bits para un kernel de 32 bits
sudo apt install crossbuild-essential-armhf
Instale la cadena de herramientas de 64 bits para un kernel de 64 bits
sudo apt install crossbuild-essential-arm64
Obtenga las fuentes del kernel
Para descargar el árbol de origen mínimo para la rama actual, ejecute:
git clone --depth=1 https://github.com/raspberrypi/linux
Consulte Elección de fuentes más arriba para obtener instrucciones sobre cómo
elegir una rama diferente.
Construir fuentes

254
MANUAL RASPBERRY
PI 4

Ingrese los siguientes comandos para construir las fuentes y los archivos del árbol
de dispositivos:
Configuraciones de 32 bits
Para Pi 1, Pi Zero, Pi Zero W o Compute Module:

cd linux
KERNEL=kernel
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcmrpi_defconfig
Para Pi 2, Pi 3, Pi 3+ o Compute Module 3:
cd linux
KERNEL=kernel7
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig
Para Raspberry Pi 4:
cd linux
KERNEL=kernel7l
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2711_defconfig
Configuraciones de 64 bits
Para Pi 3, Pi 3+ o Compute Module 3:
cd linux
KERNEL=kernel8
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcmrpi3_defconfig
Para Raspberry Pi 4:
cd linux
KERNEL=kernel8
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig
Construir con configuraciones
NOTA
Para acelerar la compilación en sistemas multiprocesador y obtener algunas mejoras
en los de un solo procesador, use -j n, donde n es el número de procesadores * 1.5.

255
MANUAL RASPBERRY
PI 4

Puede usar el nproc comando para ver cuántos procesadores tiene.


Alternativamente, siéntase libre de experimentar y ver qué funciona.
Para todas las compilaciones de 32 bits
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs
Para todas las compilaciones de 64 bits
NOTA
Tenga en cuenta la diferencia entre el objetivo de imagen entre 32 y 64 bits.
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs
Instalar directamente en la tarjeta SD
Una vez construido el kernel, debe copiarlo en su Raspberry Pi e instalar los
módulos; Esto se hace mejor directamente usando un lector de tarjetas SD.

Primero, utilícelo lsblk antes y después de conectar su tarjeta SD para identificarla.


Deberías terminar con algo muy parecido a esto:
sdb
sdb1
sdb2
con sdb1 ser la partición FAT (arranque), y sdb2 siendo la ext4 partición de sistema
de archivos (raíz).
Monte estos primero, ajustando la letra de partición según sea necesario:
mkdir mnt
mkdir mnt/fat32
mkdir mnt/ext4
sudo mount /dev/sdb1 mnt/fat32
sudo mount /dev/sdb2 mnt/ext4
NOTA
Debe ajustar la letra de la unidad de forma adecuada para su configuración, por
ejemplo, si su tarjeta SD aparece como en /dev/sdc lugar de /dev/sdb.
A continuación, instale los módulos del kernel en la tarjeta SD:
Para 32 bits

256
MANUAL RASPBERRY
PI 4

sudo env PATH=$PATH make ARCH=arm CROSS_COMPILE=arm-linux-


gnueabihf- INSTALL_MOD_PATH=mnt/ext4 modules_install
Para 64 bits
sudo env PATH=$PATH make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
INSTALL_MOD_PATH=mnt/ext4 modules_install
Finalmente, copie los blobs del kernel y del árbol de dispositivos en la tarjeta SD,
asegurándose de hacer una copia de seguridad de su kernel anterior:
Para 32 bits
sudo cp mnt/fat32/$KERNEL.img mnt/fat32/$KERNEL-backup.img
sudo cp arch/arm/boot/zImage mnt/fat32/$KERNEL.img
sudo cp arch/arm/boot/dts/*.dtb mnt/fat32/
sudo cp arch/arm/boot/dts/overlays/*.dtb* mnt/fat32/overlays/
sudo cp arch/arm/boot/dts/overlays/README mnt/fat32/overlays/
sudo umount mnt/fat32
sudo umount mnt/ext4
Para 64 bits
sudo cp mnt/fat32/$KERNEL.img mnt/fat32/$KERNEL-backup.img
sudo cp arch/arm64/boot/Image mnt/fat32/$KERNEL.img
sudo cp arch/arm64/boot/dts/broadcom/*.dtb mnt/fat32/
sudo cp arch/arm64/boot/dts/overlays/*.dtb* mnt/fat32/overlays/
sudo cp arch/arm64/boot/dts/overlays/README mnt/fat32/overlays/
sudo umount mnt/fat32
sudo umount mnt/ext4
Otra opción es copiar el kernel en el mismo lugar, pero con un nombre de archivo
diferente, por ejemplo, kernel-myconfig.img, en lugar de sobrescribir el archivo
kernel.img. Luego puede editar el archivo config.txt para seleccionar el kernel en el
que arrancará la Pi:
kernel = kernel-myconfig.img
Esto tiene la ventaja de mantener su kernel separado de la imagen del kernel
administrada por el sistema y de cualquier herramienta de actualización automática,

257
MANUAL RASPBERRY
PI 4

y le permite volver fácilmente a un kernel estándar en caso de que su kernel no


pueda arrancar.
Finalmente, conecte la tarjeta al Pi y arranque.
Configurando el Kernel
El kernel de Linux es altamente configurable; Los usuarios avanzados pueden desear
modificar la configuración predeterminada para personalizarla según sus
necesidades, como habilitar un protocolo de red nuevo o experimental, o habilitar el
soporte para nuevo hardware.
La configuración se realiza más comúnmente a través de la make menuconfig
interfaz. Alternativamente, puede modificar su .config archivo manualmente, pero
esto puede ser más difícil para los nuevos usuarios.
Preparándose para configurar
La menuconfig herramienta requiere que los ncurses encabezados de desarrollo se
compilen correctamente. Estos se pueden instalar con el siguiente comando:
sudo apt install libncurses5-dev
También deberá descargar y preparar las fuentes del kernel, como se describe en la
guía de compilación. En particular, asegúrese de haber instalado la configuración
predeterminada.
Utilizando menuconfig
Una vez que tenga todo configurado y listo para funcionar, puede compilar y ejecutar
la menuconfig utilidad de la siguiente manera:
make menuconfig
Si está compilando un kernel de 32 bits:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
O, si está compilando un kernel de 64 bits:
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
La menuconfig utilidad tiene una navegación de teclado simple. Después de una
breve compilación, se le presentará una lista de submenús que contiene todas las
opciones que puede configurar; hay muchos, así que tómate tu tiempo para leerlos y
familiarizarte.

258
MANUAL RASPBERRY
PI 4

Use las teclas de flecha para navegar, la tecla Enter para ingresar a un submenú
(indicado por --->), Escape dos veces para subir un nivel o salir, y la barra
espaciadora para cambiar el estado de una opción. Algunas opciones tienen
múltiples opciones, en cuyo caso aparecerán como un submenú y la tecla Enter
seleccionará una opción. Puede presionar hen la mayoría de las entradas para
obtener ayuda sobre esa opción o menú específico.
Resista la tentación de habilitar o deshabilitar muchas cosas en su primer intento; es
relativamente fácil romper su configuración, así que comience poco a poco y siéntase
cómodo con la configuración y el proceso de construcción.
Guardar sus cambios
Una vez que haya terminado de realizar los cambios que desea, presione Escape
hasta que se le solicite que guarde su nueva configuración. De forma
predeterminada, esto se guardará en el .config archivo. Puede guardar y cargar
configuraciones copiando este archivo.
Parcheando el Kernel
Al construir su kernel personalizado, es posible que desee aplicar parches, o
colecciones de parches ('conjuntos de parches'), al kernel de Linux.
Los conjuntos de parches a menudo se proporcionan con hardware más nuevo como
una medida temporal, antes de que los parches se apliquen al kernel de Linux
ascendente ('línea principal') y luego se propaguen a las fuentes del kernel de
Raspberry Pi. Sin embargo, existen conjuntos de parches para otros propósitos, por
ejemplo, para habilitar un kernel totalmente prioritario para uso en tiempo real.
Identificación de la versión
Es importante verificar qué versión del kernel tiene al descargar y aplicar parches. En
un directorio de fuentes del kernel, la ejecución head Makefile -n 3 le mostrará la
versión con la que se relacionan las fuentes:
VERSION = 3
PATCHLEVEL = 10
SUBLEVEL = 25
En este caso, las fuentes son para un kernel 3.10.25. Puede ver qué versión está
ejecutando en su sistema con el uname –r comando.

259
MANUAL RASPBERRY
PI 4

Aplicando parches
La forma de aplicar los parches depende del formato en el que estén disponibles. La
mayoría de los parches son un solo archivo y se aplican con la patch utilidad. Por
ejemplo, descarguemos y parcheemos nuestra versión de kernel de ejemplo con los
parches del kernel en tiempo real:
wget https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/older/patch-3.10.25-
rt23.patch.gz
gunzip patch-3.10.25-rt23.patch.gz
cat patch-3.10.25-rt23.patch | patch -p1
En nuestro ejemplo, simplemente descargamos el archivo, lo descomprimimos y
luego lo pasamos a la patch utilidad usando la cat herramienta y una tubería Unix.

Algunos conjuntos de parches vienen como conjuntos de parches con formato de


buzón, organizados como una carpeta de archivos de parche. Podemos usar Git para
aplicar estos parches a nuestro kernel, pero primero debemos configurar Git para
que sepa quiénes somos cuando hacemos estos cambios:
git config --global user.name "Your name"
git config --global user.email "your email in here"
Una vez hecho esto, podemos aplicar los parches:
git am -3 /path/to/patches/*
En caso de duda, consulte con el distribuidor de los parches, quien deberá indicarle
cómo aplicarlos. Algunos conjuntos de parches requerirán un compromiso específico
para parchear; siga los detalles proporcionados por el distribuidor de parches.
Encabezados de kernel
Si está compilando un módulo del kernel o similar, necesitará los encabezados del
kernel de Linux. Estos proporcionan las diversas definiciones de funciones y
estructuras necesarias al compilar código que interactúa con el kernel.
Si ha clonado todo el kernel de github, los encabezados ya están incluidos en el árbol
de fuentes. Si no necesita todos los archivos adicionales, es posible instalar solo los
encabezados del kernel desde el repositorio del sistema operativo Raspberry Pi.
sudo apt install raspberrypi-kernel-headers

260
MANUAL RASPBERRY
PI 4

NOTA
Este comando puede tardar bastante en completarse, ya que instala muchos
archivos pequeños. No hay indicador de progreso.
Cuando se realiza una nueva versión del kernel, necesitará los encabezados que
coincidan con esa versión del kernel. Pueden pasar varias semanas hasta que el
repositorio se actualice para reflejar la última versión del kernel. Si esto sucede, el
mejor enfoque es clonar el kernel como se describe en la sección de compilación.

3.8 usando Linux


Terminal
La terminal (o 'línea de comandos') en una computadora permite al usuario un gran
control sobre su sistema. Es posible que los usuarios de Windows ya se hayan
encontrado Command Prompt o Powershell, mientras que los usuarios de Mac OS
pueden estar familiarizados Terminal. Todas estas herramientas permiten al usuario
manipular directamente su sistema mediante el uso de comandos. Estos comandos
se pueden encadenar y / o combinar en scripts complejos que potencialmente
pueden completar tareas de manera más eficiente que los paquetes de software
tradicionales mucho más grandes.
Abrir una ventana de Terminal
En el sistema operativo Raspberry Pi, se llama a la aplicación de terminal
predeterminada LXTerminal. Esto se conoce como un 'emulador de terminal', esto
significa que emula los terminales de video de estilo antiguo, desde antes de que se
desarrollaran los sistemas de ventanas, dentro de un entorno gráfico. La aplicación
se puede encontrar en el escritorio de la Raspberry Pi y, cuando se inicie, se verá
así:

261
MANUAL RASPBERRY
PI 4

Ilustración 0-50 Captura de pantalla de la terminal

En la ventana de la terminal, debería poder ver el siguiente mensaje:


pi@raspberrypi ~ $
Esto muestra su nombre de usuario y el nombre de host del Pi. Aquí el nombre de
usuario es pi y el nombre de host raspberrypi.
Navegar y navegar por su Pi
Uno de los aspectos clave del uso de un terminal es poder navegar por su sistema
de archivos. Continúe y escriba ls –la en la ventana de Terminal, y luego presione la
tecla RETORNO. Debería ver algo similar a:

262
MANUAL RASPBERRY
PI 4

Ilustración 0-51 ls resultado

El 1s comando enumera el contenido del directorio en el que se encuentra


actualmente (su directorio de trabajo actual). El –1a componente del comando es lo
que se conoce como 'bandera'. Las banderas modifican el comando que se está
ejecutando. En este caso, 1 muestra el contenido del directorio en una lista,
mostrando datos como sus tamaños y cuándo se editaron por última vez, y a muestra
todos los archivos, incluidos los que comienzan con a .(punto), conocidos como
'dotfiles'. Los archivos Dotfiles suelen actuar como archivos de configuración de
software y, como están escritos en texto, pueden modificarse simplemente
editándolos.
263
MANUAL RASPBERRY
PI 4

Para navegar a otros directorios cd, se puede utilizar el comando de cambio de


directorio,, . Puede especificar el directorio al que desea ir mediante la ruta "absoluta"
o "relativa". Entonces, si desea navegar al python_games directorio, puede hacerlo
cd /home/pi/python_games o simplemente cd python_games (si se encuentra
actualmente /home/pi). Hay algunos casos especiales que pueden ser útiles: ~ actúa
como un alias para su directorio de inicio, por lo que ~/python_games es lo mismo
que /home/pi/python_games; . y ..son alias para el directorio actual y el directorio
principal respectivamente, por ejemplo, si estuviera dentro /home/pi/python_games,
cd .. lo llevaría a /home/pi.
Historial y autocompletar
En lugar de escribir todos los comandos, el terminal le permite desplazarse por los
comandos anteriores que ha ejecutado presionando las teclas up o down en su
teclado. Si está escribiendo el nombre de un archivo o directorio como parte de un
comando, al presionar tab se intentará completar automáticamente el nombre de lo
que está escribiendo. Por ejemplo, si tiene un archivo en un directorio llamado
aLongFileName, presionar tabulador después de escribir ale permitirá elegir entre
todos los nombres de archivos y directorios que comienzan aen el directorio actual, lo
que le permitirá elegir aLongFileName.
El sudocomando
Algunos comandos que realizan cambios permanentes en el estado de su sistema
requieren que tenga privilegios de root para ejecutarse. El comando sudo le da
temporalmente a su cuenta (si aún no ha iniciado sesión como root) la capacidad de
ejecutar estos comandos, siempre que su nombre de usuario esté en una lista de
usuarios ('sudoers'). Cuando agrega sudo al inicio de un comando y presiona enter,
el siguiente comando sudo se ejecutará con privilegios de root. Tenga mucho
cuidado: los comandos que requieren privilegios de root pueden dañar
irreparablemente su sistema. Tenga en cuenta que en algunos sistemas se le pedirá
que ingrese su contraseña cuando ejecute un comando con sudo.

Sudo Puede encontrar más información sobre el usuario root en la página raíz de
Linux.
264
MANUAL RASPBERRY
PI 4

Instalación de software usando apt


Puede usar el apt comando para instalar software en Raspberry Pi OS. Este es el
'administrador de paquetes' que se incluye con cualquier distribución de Linux
basada en Debian, incluido el sistema operativo Raspberry Pi. Le permite instalar y
administrar nuevos paquetes de software en su Raspberry Pi.
Para instalar un nuevo paquete, debe escribir sudo apt install <package-name>
dónde <package-name> está el paquete que desea instalar.
La ejecución sudo apt update actualizará una lista de paquetes de software que
están disponibles en su sistema. Si hay una nueva versión de un paquete disponible,
sudo apt full-upgrade actualizará los paquetes antiguos a la nueva versión.
Finalmente, sudo apt remove <package-name> elimina o desinstala un paquete de
su sistema.
Otros comandos útiles
Hay algunos otros comandos que pueden resultarle útiles; se enumeran a
continuación:
 cp hace una copia de un archivo y lo coloca en la ubicación especificada
(esencialmente haciendo un 'copiar y pegar'), por ejemplo - cp file_a
/home/other_user/ copiaría el archivo file_a de su directorio de inicio al del
usuario other_user (asumiendo que tiene permiso para copiarlo allí) . Tenga
en cuenta que si el destino es una carpeta, el nombre del archivo seguirá
siendo el mismo, pero si el destino es un nombre de archivo, le dará al archivo
el nuevo nombre.
 mv mueve un archivo y lo coloca en la ubicación especificada (por lo tanto,
donde cp realiza un 'copiar y pegar', mv realiza un 'cortar y pegar'). El uso es
similar a cp, por mv file_a /home/other_user/ lo que movería el archivo file_a
de su directorio de inicio al del usuario especificado. mv también se utiliza
para cambiar el nombre de un archivo, es decir, moverlo a una nueva
ubicación, por ejemplo mv hello.txt story.txt.
 rm elimina el archivo especificado (o directorio cuando se usa con -r).
Advertencia: los archivos eliminados de esta manera generalmente no se
pueden restaurar.
265
MANUAL RASPBERRY
PI 4

 mkdir: Esto mkdir new_dir crea un nuevo directorio, por ejemplo , crearía el
directorio new_dir en el directorio de trabajo actual.
 cat enumera el contenido de los archivos, por ejemplo cat some_file, mostrará
el contenido de some_file.
Otros comandos que puede encontrar útiles se pueden encontrar en la página de
comandos .
Descubriendo un comando
Para obtener más información sobre un comando en particular, puede ejecutar man
el comando seguido del comando del que desea obtener más información (por
ejemplo man ls). Se mostrará la página de manual (o página de manual) de ese
comando, incluida la información sobre los indicadores de ese programa y el efecto
que tienen. Algunas páginas de manual darán ejemplos de uso.

El sistema de archivos de Linux


Es importante tener un conocimiento básico de los fundamentos del sistema de
archivos de Linux: dónde se guardan sus archivos, dónde está instalado el software,
dónde están las zonas peligrosas, etc. Para obtener más información, consulte el
Estándar de jerarquía del sistema de archivos de Linux .
Hogar
Cuando inicias sesión en una Pi y abres una ventana de terminal, o inicias desde la
línea de comandos en lugar de la interfaz gráfica de usuario, comienzas en tu
carpeta de inicio; se encuentra en /home/pi, asumiendo que su nombre de usuario es
pi.
Aquí es donde se guardan los archivos propios del usuario. El contenido del
escritorio del usuario está en un directorio llamado aquí Desktop, junto con otros
archivos y carpetas.
Para navegar a su carpeta de inicio en la línea de comando, simplemente escriba cd
y presione Enter. Este es el equivalente a escribir cd /home/pi, donde pi está su
nombre de usuario. También puede usar la tecla de tilde ( ~), por ejemplo cd ~, que
se puede usar para vincular relativamente a su carpeta de inicio. Por ejemplo, cd
~/Desktop/ es lo mismo que cd /home/pi/Desktop.
266
MANUAL RASPBERRY
PI 4

Navegue /home/ y ejecute 1s, y verá las carpetas de inicio de cada uno de los
usuarios en el sistema.
Tenga en cuenta que si ha iniciado sesión como usuario raíz, escribir cd o cd ~ lo
llevará al directorio de inicio del usuario raíz; a diferencia de los usuarios normales,
este se encuentra en /root/ not /home/root/.
Comandos de Linux
A continuación, se muestran algunos comandos de Linux fundamentales y comunes
con ejemplos de uso:
Sistema de archivos
1s
El 1s comando enumera el contenido del directorio actual (o uno especificado). Se
puede usar con la -lbandera para mostrar información adicional (permisos,
propietario, grupo, tamaño, fecha y marca de tiempo de la última edición) sobre cada
archivo y directorio en un formato de lista. La –a bandera le permite ver archivos que
comienzan con . (es decir, dotfiles).
CD
El uso cd cambia el directorio actual al especificado. Puede utilizar rutas relativas (es
decir cd directoryA) o absolutas (es decir cd /home/pi/directoryA).
pwd
El pwd comando muestra el nombre del directorio de trabajo actual: en una
Raspberry Pi, ingresar pwd generará algo como /home/pi.
mkdir
Puede utilizar mkdir para crear un nuevo directorio, por ejemplo mkdir newDir, crearía
el directorio newDir en el directorio de trabajo actual.
rmdir
Para eliminar directorios vacíos, use rmdir. Entonces, por ejemplo, rmdir oldDir
eliminará el directorio oldDir solo si está vacío.
rm
El comando rm elimina el archivo especificado (o de forma recursiva de un directorio
cuando se usa con -r). Tenga cuidado con este comando: ¡los archivos eliminados de
esta manera en su mayoría desaparecen para siempre!
267
MANUAL RASPBERRY
PI 4

cp
El uso cp hace una copia de un archivo y lo coloca en la ubicación especificada (esto
es similar a copiar y pegar). Por ejemplo, cp ~/fileA /home/otherUser/ copiaría el
archivo fileA de su directorio de inicio al del usuario otherUser (asumiendo que tiene
permiso para copiarlo allí). Este comando puede tomar FILE FILE ( cp fileA fileB),
FILE DIR( cp fileA /directoryB/) o -r DIR DIR (que copia recursivamente el contenido
de los directorios) como argumentos.
mv
El mv comando mueve un archivo y lo coloca en la ubicación especificada (por lo
tanto, donde cp realiza un 'copiar y pegar', mv realiza un 'cortar y pegar'). El uso es
similar a cp. Por mv ~/fileA /home/otherUser/ lo tanto, movería el archivo fileA de su
directorio de inicio al del usuario otherUser. Este comando puede tomar FILE FILE
( mv fileA fileB), FILE DIR ( mv fileA /directoryB/) o DIR DIR ( mv /directoryB
/directoryC) como argumentos. Este comando también es útil como método para
cambiar el nombre de archivos y directorios una vez creados.
tocar
El comando touch establece la última marca de tiempo modificada de los archivos
especificados o la crea si aún no existe.
gato
Puede utilizar cat para enumerar el contenido de archivo (s), por ejemplo cat thisFile,
mostrará el contenido de thisFile. Se puede utilizar para enumerar el contenido de
varios archivos, es decir cat *.txt, enumerará el contenido de todos los .txt archivos
en el directorio actual.
cabeza
El head comando muestra el comienzo de un archivo. Se puede usar con –n para
especificar el número de líneas que se mostrarán (por defecto diez), o con –c para
especificar el número de bytes.

cola

268
MANUAL RASPBERRY
PI 4

Lo contrario de head, tail muestra el final de un archivo. El punto de inicio en el


archivo se puede especificar –b para bloques de 512 bytes, -c para bytes o –n para
el número de líneas.
chmod
Normalmente lo usaría chmod para cambiar los permisos de un archivo. El chmod
comando puede usar símbolos u (usuario que posee el archivo), g (el grupo de
archivos) y o (otros usuarios) y los permisos r (leer), w (escribir) y x (ejecutar). El uso
agregará permiso de ejecución para el propietario del archivo .chmod u+x filename
chown
El chown comando cambia el usuario y / o grupo propietario de un archivo.
Normalmente debe ejecutarse como root usando sudo, por ejemplo , cambiará el
propietario a pi y el grupo a root.sudo chown pi:root filename
ssh
ssh denota el caparazón seguro. Conéctese a otra computadora usando una
conexión de red encriptada. Para obtener más detalles, consulte SSH (shell seguro)
scp
El scp comando copia un archivo de una computadora a otra usando ssh. Para
obtener más detalles, consulte SCP (copia segura)
sudo
El sudo comando le permite ejecutar un comando como superusuario u otro usuario.
Úselo sudo –s para un caparazón de superusuario. Para obtener más detalles,
consulte Usuario raíz / sudo
dd
El dd comando copia un archivo convirtiéndolo según lo especificado. A menudo se
utiliza para copiar un disco completo en un solo archivo o volver a hacerlo. Entonces,
por ejemplo, dd if=/dev/sdd of=backup.img creará una imagen de respaldo desde una
tarjeta SD o unidad de disco USB en / dev / sdd. Asegúrese de utilizar la unidad
correcta al copiar una imagen a la tarjeta SD, ya que puede sobrescribir todo el
disco.
df

269
MANUAL RASPBERRY
PI 4

Úselo df para mostrar el espacio en disco disponible y utilizado en los sistemas de


archivos montados. Use df –h para ver la salida en un formato legible por humanos
usando M para MB en lugar de mostrar el número de bytes.
abrir la cremallera
El unzip comando extrae los archivos de un archivo zip comprimido.
alquitrán
Úselo tar para almacenar o extraer archivos de un archivo de cinta. También puede
reducir el espacio requerido comprimiendo el archivo de forma similar a un archivo
zip.
Para crear un archivo comprimido, use Para extraer el contenido de un archivo, use
tar -cvzf filename.tar.gz directory/tar -xvzf filename.tar.gz
tubería
Una tubería permite que la salida de un comando se utilice como entrada para otro
comando. El símbolo de la tubería es una línea vertical |. Por ejemplo, para mostrar
solo las primeras diez entradas del lscomando, se puede canalizar a través del
comando head 1s | head
árbol
Utilice el tree comando para mostrar un directorio y todos los subdirectorios y
archivos con sangría como una estructura de árbol.
Y
Ejecute un comando en segundo plano con &, liberando el shell para futuros
comandos.
wget
Descargue un archivo de la web directamente a la computadora con wget. Así wget
https://datasheets.raspberrypi.com/rpi4/raspberry-pi-4-datasheet.pdf que descargará
la hoja de datos de Raspberry Pi 4 y la guardará como raspberry-pi-4-datasheet.pdf.
rizo
Úselo curl para descargar o cargar un archivo a / desde un servidor. De forma
predeterminada, mostrará el contenido del archivo del archivo en la pantalla.

270
MANUAL RASPBERRY
PI 4

hombre
Muestre la página de manual de un archivo con man. Para obtener más información,
ejecute man man para ver la página del manual del comando man.
Buscar
grep
Utilícelo grep para buscar en archivos determinados patrones de búsqueda. Por
ejemplo, grep "search" *.txt buscará en todos los archivos del directorio actual que
terminan con .txt la búsqueda de cadenas.
El grep comando admite expresiones regulares que permiten incluir combinaciones
especiales de letras en la búsqueda.
awk
awk es un lenguaje de programación útil para buscar y manipular archivos de texto.
encontrar
El find comando busca en un directorio y subdirectorios archivos que coincidan con
ciertos patrones.
dónde está
Úselo whereis para encontrar la ubicación de un comando. Busca en las ubicaciones
de programas estándar hasta que encuentra el comando solicitado.
Redes
silbido
La ping utilidad se usa generalmente para verificar si se puede establecer
comunicación con otro host. Se puede utilizar con la configuración predeterminada
simplemente especificando un nombre de host (p ping raspberrypi.com. Ej. ) O una
dirección IP (p ping 8.8.8.8. Ej .). Puede especificar la cantidad de paquetes a enviar
con la -cbandera.
nmap
nmap es una herramienta de exploración y escaneo de redes. Puede devolver
información sobre el puerto y el sistema operativo sobre un host o una variedad de
hosts. Ejecutar solo nmap mostrará las opciones disponibles, así como el uso de
ejemplo.

271
MANUAL RASPBERRY
PI 4

nombre de host
El hostname comando muestra el nombre de host actual del sistema. Un (super)
usuario privilegiado puede establecer el nombre de host a uno nuevo
proporcionándolo como un argumento (por ejemplo hostname new-host).
ifconfig
Úselo ifconfig para mostrar los detalles de configuración de red para las interfaces en
el sistema actual cuando se ejecuta sin ningún argumento (es decir ifconfig). Al
proporcionar el comando con el nombre de una interfaz (por ejemplo, eth0 o 1o),
puede modificar la configuración: consulte la página del manual para obtener más
detalles.
Editores de texto
En Linux, puede elegir entre editores de texto. Algunos son fáciles de usar pero
tienen una funcionalidad limitada; otros requieren entrenamiento para usarlos y
requieren mucho tiempo para dominarlos, pero ofrecen una funcionalidad increíble.
Editores de texto en el escritorio
Editor de texto
Al usar Raspberry Pi OS Desktop, en el menú de accesorios hay una opción para
ejecutar un Editor de texto. Este es un editor simple que se abre en una ventana
como una aplicación normal. Permite el uso del mouse y el teclado, y tiene pestañas
y resaltado de sintaxis.
Puede utilizar atajos de teclado, como Ctrl + S guardar un archivo y Ctrl + X salir.
Thonny
Thonny es un IDE y REPL de Python, por lo que puede escribir y editar código
Python en una ventana y ejecutarlo directamente desde el editor. Thonny tiene
ventanas independientes y resaltado de sintaxis, y usa Python 3.
Geany
Un IDE rápido y liviano, que admite muchos tipos de archivos diferentes, incluidos C /
C ++ y Python. Se instala de forma predeterminada en el sistema operativo
Raspberry Pi.
Editores de texto en la terminal
Nano

272
MANUAL RASPBERRY
PI 4

GNU Nano está en el extremo fácil de usar de los editores de línea de comandos.
Está instalado de forma predeterminada, así que utilícelo nano somefile.txt para
editar un archivo y los atajos de teclado como Ctrl + O guardar y Ctrl + X salir.
Vi
Vi es un editor de línea de comandos muy antiguo (c. 1976), que está disponible en
la mayoría de los sistemas UNIX y está preinstalado en el sistema operativo
Raspberry Pi. Lo reemplaza Vim (Vi mejorado), que requiere instalación.
A diferencia de la mayoría de los editores, Vi y Vim tienen varios modos diferentes.
Cuando abre Vi con vi somefile.txt, comienza en el modo de comando que no permite
directamente la entrada de texto. Presione i para cambiar al modo de inserción para
editar el archivo y escriba. Para guardar el archivo debe volver al modo de comando,
así que presione la Escape tecla e ingrese :w (seguido de Enter), que es el comando
para escribir el archivo en el disco.
Para buscar la palabra 'frambuesa' en un archivo, asegúrese de estar en el modo de
comando (presione Escape), luego escriba /raspberry seguido de n y N para
desplazarse hacia adelante o hacia atrás a través de los resultados.
Para guardar y salir, ingrese el comando :wq. Para salir sin guardar, ingrese el
comando :q!.
Dependiendo de la configuración de su teclado, es posible que las teclas del cursor
no funcionen. En este caso, puede usar las teclas HJKL (que se mueven hacia la
izquierda, abajo, arriba y derecha respectivamente) para navegar por el archivo en
modo comando.
Empuje
Vim es una extensión de Vi y funciona de la misma manera, con una serie de
mejoras. Solo Vi está instalado de forma predeterminada, por lo que para obtener
todas las funciones de Vim, instálelo con APT:
sudo apt install vim
Puede editar un archivo en Vim con vim somefile.txt.
Emacs

273
MANUAL RASPBERRY
PI 4

Emacs es un editor de texto de línea de comandos GNU; es potente, extensible y


personalizable. Puede instalarlo con APT:
sudo apt instalar emacs
Puede utilizar comandos de combinación de teclado, como Ctrl + X Ctrl + S guardar y
Ctrl + X Ctrl + C cerrar.
Usuarios de Linux
La gestión de usuarios en el sistema operativo Raspberry Pi se realiza en la línea de
comandos. El usuario predeterminado es pi y la contraseña es raspberry. Puede
agregar usuarios y cambiar la contraseña de cada usuario.
Cambiando tu contraseña
Una vez que haya iniciado sesión como pi usuario, es muy recomendable utilizar el
passwd comando para cambiar la contraseña predeterminada para mejorar la
seguridad de su Pi.
Ingrese passwd en la línea de comando y presione Enter. Se le pedirá que ingrese su
contraseña actual para autenticarse y luego se le pedirá una nueva contraseña.
Presione Enter al finalizar y se le pedirá que lo confirme. Tenga en cuenta que no se
mostrarán caracteres al ingresar su contraseña. Una vez que haya confirmado
correctamente su contraseña, se le mostrará un mensaje de éxito ( passwd:
password updated successfully) y la nueva contraseña se aplicará inmediatamente.
Si su usuario tiene sudo permisos, puede cambiar la contraseña de otro usuario
passwd seguida del nombre de usuario del usuario. Por ejemplo, sudo passwd bob le
permitirá establecer la bob contraseña del usuario y luego algunos valores
opcionales adicionales para el usuario, como su nombre. Simplemente presione
Enter para omitir cada una de estas opciones.
Eliminar la contraseña de un usuario
Puede eliminar la contraseña del usuario bob con sudo passwd bob -d. Sin una
contraseña, el usuario no podrá iniciar sesión en una Terminal.
NOTA
Esto es útil para los usuarios que necesitan existir por razones del sistema, pero no
desea que sea posible iniciar sesión en la cuenta por razones de seguridad.

274
MANUAL RASPBERRY
PI 4

Crear un nuevo usuario


Puede crear usuarios adicionales en la instalación de su sistema operativo Raspberry
Pi con el adduser comando.
Ingrese sudo adduser bob y se le pedirá una contraseña para el nuevo usuario bob.
Deje esto en blanco si no desea una contraseña.
Tu carpeta de inicio
Cuando crea un nuevo usuario, tendrá una carpeta de inicio en formato /home/. La pi
carpeta de inicio del usuario está en /home/pi/.
El skelcomando
Al crear un nuevo usuario, el contenido de /etc/skel/ se copiará en la carpeta de inicio
del nuevo usuario. Puede añadir o modificar dot-files como el .bashrc de /etc/skel/ a
sus necesidades, y esta versión se aplicará a los nuevos usuarios.
Eliminar un usuario
Puede eliminar un usuario en su sistema con el comando userde1. Aplique la –r
bandera para eliminar su carpeta de inicio también:
sudo userdel -r bob
Raíz y Sudo
El sistema operativo Linux es un sistema operativo multiusuario que permite que
varios usuarios inicien sesión y utilicen la computadora. Para proteger la
computadora (y la privacidad de otros usuarios), las habilidades de los usuarios
están restringidas.
La mayoría de los usuarios pueden ejecutar la mayoría de los programas y guardar y
editar archivos almacenados en su propia carpeta de inicio. Los usuarios normales
normalmente no pueden editar archivos en las carpetas de otros usuarios o en
cualquiera de los archivos del sistema. Hay un usuario especial en Linux conocido
como superusuario , al que generalmente se le asigna el nombre de usuario root. El
superusuario tiene acceso ilimitado a la computadora y puede hacer casi cualquier
cosa.
El sudocomando
Normalmente no iniciará sesión en la computadora como root, pero puede usar el
sudo comando para proporcionar acceso como superusuario. Si inicia sesión en su

275
MANUAL RASPBERRY
PI 4

Raspberry Pi como pi usuario, entonces está iniciando sesión como usuario normal.
Puede ejecutar comandos como root usuario utilizando el sudo comando antes del
programa que desea ejecutar.
Por ejemplo, si desea instalar software adicional en el sistema operativo Raspberry
Pi, normalmente usa la apt herramienta. Para actualizar la lista de software
disponible, debe anteponer el apt comando con sudo:
sudo apt update
También puede ejecutar un shell de superusuario utilizando sudo su. Al ejecutar
comandos como superusuario, no hay nada que proteger contra errores que podrían
dañar el sistema. Se recomienda que solo ejecute comandos como superusuario
cuando sea necesario y que salga de un shell de superusuario cuando ya no sea
necesario.
La lista de Sudo'ers
El pi usuario predeterminado en Raspberry Pi OS es un miembro del sudo grupo.
Esto le da la capacidad de ejecutar comandos como root cuando está precedido por
sudo y de cambiar al usuario root con sudo su.
Para agregar un nuevo usuario al sudo grupo, use el adduser comando:
sudo adduser bob sudo
Tenga en cuenta que bob se le pedirá al usuario que introduzca su contraseña
cuando se ejecute sudo. Esto difiere del comportamiento del pi usuario, ya pi que no
se le solicita su contraseña. Si desea eliminar la solicitud de contraseña del nuevo
usuario, cree un archivo sudoers personalizado y colóquelo en el /etc/sudoers.d
directorio.
1. Cree el archivo usando sudo visudo /etc/sudoers.d/010_bob-nopasswd.
2. Inserte el siguiente contenido en una sola línea: bob ALL=(ALL) NOPASSWD:
ALL
3. Guarda el archivo y cierra.
Una vez que haya salido del editor, se verificará el archivo en busca de errores de
sintaxis. Si no se detectaron errores, el archivo se guardará y volverá a la línea de
comandos. Si se detectaron errores, se le preguntará "¿y ahora qué?" Presione la
tecla 'enter' en su teclado: esto mostrará una lista de opciones. Probablemente desee
276
MANUAL RASPBERRY
PI 4

usar 'e' para '(e) dit sudoers file again', para poder editar el archivo y solucionar el
problema.

NOTA
Elegir la opción 'Q' guardará el archivo con cualquier error de sintaxis aún en su
lugar, lo que hace imposible que cualquier usuario use el comando sudo.
NOTA
Es una práctica estándar en Linux que el usuario solicite su contraseña cuando se
ejecuta sudo, ya que hace que el sistema sea un poco más seguro.
El archivo `.bashrc`
En su carpeta de inicio encontrará un archivo oculto llamado .bashrc que contiene
algunas opciones de configuración de usuario. Puede editar este archivo para
adaptarlo a sus necesidades. Los cambios realizados en este archivo se aplicarán la
próxima vez que se abra un terminal, ya que es cuando .bashrc se lee el archivo.
Si desea que sus cambios se realicen en su terminal actual, puede usar source
~/.bashrc o exec bash. Estos en realidad hacen cosas ligeramente diferentes: el
primero simplemente vuelve a ejecutar el .bashrc archivo, lo que puede resultar en
cambios no deseados en cosas como la ruta, el último reemplaza el shell actual con
un nuevo shell bash, que restablece el shell al estado al iniciar sesión , desechando
cualquier variable de shell que haya establecido. Elija el que sea más apropiado.
Se le proporcionan algunas adaptaciones útiles; algunos de estos están comentados
con un de forma predeterminada. Para habilitarlos, elimine el y estarán activos la
próxima vez que inicie su Pi o inicie una nueva terminal.
Por ejemplo, algunos 1s alias:
alias ls = 'ls --color = auto'
#alias dir = 'dir --color = auto'
#alias vdir = 'vdir --color = auto'

alias grep = 'grep --color = auto'


alias fgrep = 'fgrep --color = auto'
alias egrep = 'egrep --color = auto'
277
MANUAL RASPBERRY
PI 4

Se proporcionan alias como estos para ayudar a los usuarios de otros sistemas
como Microsoft Windows ( dir es el 1s de DOS / Windows). Otros son para agregar
color a la salida de comandos como 1s y grep por defecto.

1s También se proporcionan más variaciones de:


# algunos alias más de ls
#alias ll = 'ls -l'
#alias la = 'ls -A'
#alias l = 'ls -CF'
Los usuarios de Ubuntu pueden estar familiarizados con estos, ya que se
proporcionan de forma predeterminada en esa distribución. Descomente estas líneas
para tener acceso a estos alias en el futuro.
El .bash_aliases archivo
.bashrc también contiene una referencia a un .bash_aliases archivo, que no existe de
forma predeterminada. Puede agregarlo para proporcionar una forma práctica de
mantener todos sus alias en un archivo separado.
if [-f ~ / .bash_aliases]; luego
. ~ / .bash_aliases
fi
La if declaración aquí verifica que el archivo exista antes de incluirlo.
Luego, simplemente crea el archivo .bash_aliases y agrega más alias así:
alias gs = 'estado de git'
Puede agregar otras cosas directamente a este archivo oa otro e incluir ese archivo
como en el .bash_aliases ejemplo anterior.
Secuencias de comandos de Shell
Los comandos se pueden combinar en un archivo que luego se puede ejecutar.
Como ejemplo, copie lo siguiente en su editor de texto favorito:
#!/usr/bin/bash

while :
do
278
MANUAL RASPBERRY
PI 4

echo Raspberry Pi!


done
Guarda esto con el nombre fun-script.

Antes de poder ejecutarlo, primero debe convertirlo en ejecutable; esto se puede


hacer usando el comando de cambio de modo chmod. Cada archivo y directorio tiene
su propio conjunto de permisos que dictan lo que un usuario puede y no puede hacer
con él. En este caso, al ejecutar el comando chmod +x fun-script, el archivo fun-script
ahora será ejecutable.
Luego puede ejecutarlo escribiendo ./fun-script (asumiendo que está en su directorio
actual).
Este guión se repite y se imprime infinitamente Raspberry Pi!; para detenerlo,
presione Ctrl + C. Esto mata cualquier comando que se esté ejecutando actualmente
en la terminal.
Programación de tareas con Cron
Cron es una herramienta para configurar tareas programadas en sistemas Unix. Se
utiliza para programar comandos o scripts para que se ejecuten periódicamente y a
intervalos fijos. Las tareas van desde realizar copias de seguridad de las carpetas de
inicio del usuario todos los días a la medianoche hasta registrar la información de la
CPU cada hora.
El comando crontab (tabla cron) se utiliza para editar la lista de tareas programadas
en funcionamiento y se realiza por usuario; cada usuario (incluido root) tiene el suyo
crontab.
Editando el crontab Archivo
Ejecutar crontab con la –e bandera para editar la tabla cron:
crontab -e
NOTA
La primera vez que lo ejecutes, crontab se te pedirá que selecciones un editor; si no
está seguro de cuál usar, elija nano presionando Enter.

279
MANUAL RASPBERRY
PI 4

Agregar una tarea programada


El diseño de una entrada cron se compone de seis componentes: minuto, hora, día
del mes, mes del año, día de la semana y el comando que se ejecutará.
# mh dom mon dow command

# * * * * * comando para ejecutar


#┬┬┬┬┬
#│││││
#│││││
# │ │ │ │ └───── día de la semana (0 - 7) (0 a 6 son de domingo a sábado, o use
nombres; 7 es domingo, lo mismo que 0)
# │ │ │ └────────── mes (1 - 12)
# │ │ └─────────────── día del mes (1 - 31)
# │ └──────────────────── hora (0-23)
# └───────────────────────── mín (0 - 59)
Por ejemplo:
0 0 * * * /home/pi/backup.sh
Esta entrada cron ejecutaría el backup.sh script todos los días a la medianoche.
Visualización de tareas programadas
Vea sus tareas programadas guardadas actualmente con:
crontab -1
Borrar tareas programadas
Elimina todas las tareas programadas actualmente:
crontab -r
Ejecutar una tarea al reiniciar
Para ejecutar un comando cada vez que se inicia Raspberry Pi, escriba en @reboot
lugar de la fecha y la hora. Por ejemplo:
@reboot python /home/pi/myscript.py
Esto ejecutará su script de Python cada vez que se reinicie la Raspberry Pi. Si desea
que su comando se ejecute en segundo plano mientras la Raspberry Pi continúa
arrancando, agregue un espacio y &al final de la línea, así:

280
MANUAL RASPBERRY
PI 4

@reboot python /home/pi/myscript.py &


El systemd demonio
Para que se ejecute un comando o programa cuando se inicie el Pi, puede agregarlo
como un servicio. Una vez hecho esto, puede iniciar / detener habilitar / deshabilitar
desde el indicador de linux.
Crear un servicio
En su Pi, cree un .service archivo para su servicio, por ejemplo: myscript.service
[Unidad]
Descripción = Mi servicio
Después = network.target

[Servicio]
ExecStart = / usr / bin / python3 -u main.py
WorkingDirectory = / home / pi / myscript
StandardOutput = heredar
StandardError = heredar
Reiniciar = siempre
Usuario = pi

[Instalar en pc]
WantedBy = multi-user.target
Entonces, en esta instancia, el servicio ejecutaría Python 3 desde nuestro directorio
de trabajo /home/pi/myscript que contiene nuestro programa Python para ejecutar
main.py. Pero no está limitado a los programas de Python: simplemente cambie la
ExecStart línea para que sea el comando para iniciar cualquier programa o
secuencia de comandos que desee ejecutar desde el inicio.
Copie este archivo /etc/systemd/system como root, por ejemplo:
sudo cp myscript.service /etc/systemd/system/myscript.service
Una vez que se haya copiado, debe informar systemdque se ha agregado un nuevo
servicio. Esto se hace con el siguiente comando:
sudo systemctl daemon-reload
281
MANUAL RASPBERRY
PI 4

Ahora puede intentar iniciar el servicio con el siguiente comando:


sudo systemctl start myscript.service
Deténgalo usando el siguiente comando:
sudo systemctl detener myscript.service
Cuando esté satisfecho de que esto inicie y detenga su aplicación, puede hacer que
se inicie automáticamente al reiniciar usando este comando:
sudo systemctl habilitar myscript.service
El systemctl comando también se puede usar para reiniciar el servicio o deshabilitarlo
desde el inicio.
NOTA
El orden en el que se inician las cosas se basa en sus dependencias; este script en
particular debería comenzar bastante tarde en el proceso de arranque, después de
que haya una red disponible (consulte la sección Después). Puede configurar
diferentes dependencias y órdenes según sus requisitos.

3.9 Acceso remoto.


Introducción al acceso remoto
A veces es necesario acceder a una Raspberry Pi sin conectarla a un monitor.
Quizás el Pi esté incrustado en algo como un robot, o es posible que desee ver
alguna información de él desde otro lugar. ¡O quizás simplemente no tiene un
monitor de repuesto!
Puede conectarse a su Raspberry Pi desde otra máquina. Pero para hacerlo,
necesitará conocer su dirección IP.
A cualquier dispositivo conectado a una red de área local se le asigna una dirección
IP. Para conectarse a su Raspberry Pi desde otra máquina usando SSH o VNC ,
necesita conocer la dirección IP de Pi. Esto es fácil si tiene una pantalla conectada y
existen varios métodos para encontrarla de forma remota desde otra máquina en la
red.
Cómo encontrar su dirección IP
Es posible encontrar la dirección IP de su Pi sin conectarse a una pantalla utilizando
uno de los siguientes métodos:

282
MANUAL RASPBERRY
PI 4

NOTA
Si está utilizando una pantalla con su Raspberry Pi y si arranca desde la línea de
comando en lugar del escritorio, su dirección IP debería aparecer en los últimos
mensajes antes del indicador de inicio de sesión. De lo contrario, abra una ventana
de Terminal y escriba, hostname –I lo que revelará la dirección IP de su Raspberry
Pi.
Lista de dispositivos de enrutador
En un navegador web, navegue hasta la dirección IP de su enrutador, por ejemplo
http://192.168.1.1, que generalmente está impresa en una etiqueta en su enrutador;
esto lo llevará a un panel de control. Luego, inicie sesión con sus credenciales, que
generalmente también están impresas en el enrutador o se le envían en la
documentación adjunta. Busque la lista de dispositivos conectados o similar (todos
los enrutadores son diferentes) y debería ver algunos dispositivos que reconoce.
Algunos dispositivos se detectan como PC, tabletas, teléfonos, impresoras, etc., por
lo que debes reconocer algunos y descartarlos para averiguar cuál es tu Raspberry
Pi. También tenga en cuenta el tipo de conexión; si su Pi está conectado con un
cable, debería haber menos dispositivos para elegir.
Resolución raspberrypi.localcon mDNS
En el sistema operativo Raspberry Pi, el servicio Avahi admite DNS de multidifusión
de forma inmediata.
Si su dispositivo es compatible con mDNS, puede acceder a su Raspberry Pi
utilizando su nombre de host y el .local sufijo. El nombre de host predeterminado en
una instalación nueva del sistema operativo Raspberry Pi es raspberrypi, por lo que,
de forma predeterminada, cualquier Raspberry Pi que ejecute el sistema operativo
Raspberry Pi responde a:
ping raspberrypi.local
Si se puede acceder a la Raspberry Pi, pingse mostrará su dirección IP:
PING raspberrypi.local (192.168.1.131): 56 bytes de datos
64 bytes de 192.168.1.131: icmp_seq = 0 ttl = 255 tiempo = 2.618 ms

283
MANUAL RASPBERRY
PI 4

Si cambia el nombre de host del sistema de la Raspberry Pi (por ejemplo,


editando /etc/hostname), Avahi también cambiará la .local dirección mDNS.

Si no recuerda el nombre de host de la Raspberry Pi, pero tiene un sistema con


Avahi instalado, puede explorar todos los hosts y servicios en la LAN con el avahi-
browsecomando.
comando nmap
El nmap comando (Network Mapper) es una herramienta gratuita y de código abierto
para el descubrimiento de redes, disponible para Linux, macOS y Windows.
 Para instalar en Linux , instale el nmap paquete, por ejemplo apt install nmap.
 Para instalar en macOS o Windows , consulte la página de descarga de
nmap.org .
Para usar nmap para escanear los dispositivos en su red, necesita conocer la subred
a la que está conectado. Primero busque su propia dirección IP, en otras palabras, la
de la computadora que está usando para encontrar la dirección IP de su Pi:
 En Linux , escriba hostname –I en una ventana de terminal
 En macOS , vaya a System Preferences entonces Network y seleccione su
conexión de red activa para ver la dirección IP
 En Windows , vaya al Panel de control, luego en Network and Sharing Center,
haga clic en View network connections, seleccione su conexión de red activa y
haga clic View status of this connection para ver la dirección IP
Ahora que tiene la dirección IP de su computadora, buscará otros dispositivos en
toda la subred. Por ejemplo, si su dirección IP es 192.168.1.5, otros dispositivos
estarán en direcciones como 192.168.1.2, 192.168.1.3, 192.168.1.4, etc. La notación
de este rango de subred es 192.168.1.0/24 (comprende 192.168.1.0 a
192.168.1.255).
Ahora use el nmap comando con la –sn bandera (escaneo de ping) en todo el rango
de la subred. Esto puede tardar unos pocos segundos:
nmap -sn 192.168.1.0/24

284
MANUAL RASPBERRY
PI 4

El escaneo de ping solo hace ping a todas las direcciones IP para ver si responden.
Para cada dispositivo que responde al ping, la salida muestra el nombre de host y la
dirección IP así:
A partir de Nmap 6.40 (http://nmap.org) en 2014-03-10 12:46 GMT
Informe de escaneo de Nmap para hpprinter (192.168.1.2)
El host está activo (latencia de 0.00044s).
Informe de escaneo de Nmap para Gordons-MBP (192.168.1.4)
El host está activo (latencia de 0,0010 s).
Informe de escaneo de Nmap para ubuntu (192.168.1.5)
El host está activo (latencia de 0,0010 s).
Informe de escaneo de Nmap para raspberrypi (192.168.1.8)
El host está activo (latencia de 0,0030 s).
Nmap hecho: 256 direcciones IP (4 hosts arriba) escaneadas en 2,41 segundos
Aquí puede ver que un dispositivo con nombre de host raspberrypi tiene una
dirección IP 192.168.1.8. Tenga en cuenta que para ver los nombres de host, debe
ejecutar nmap como root anteponiendo sudo el comando.
Obtener direcciones IPv6 haciendo ping desde un segundo dispositivo
Primero busque su (s) propia (s) dirección (es) IP, en otras palabras, la de la
computadora que está usando para encontrar la dirección IP de su Pi mediante
hostname -I
fd00::ba27:ebff:feb6:f293 2001:db8:494:9d01:ba27:ebff:feb6:f293
El ejemplo muestra dos direcciones IP. La primera es una dirección unicast local
única ( fc00::/7). El segundo es la dirección de unidifusión global ( 2000::/3). También
es posible ver solo uno de ellos dependiendo de la configuración de su red
(enrutador). Ambas direcciones son válidas para acceder a la Raspberry Pi dentro de
su LAN. La dirección de salida 2000::/3 es accesible en todo el mundo, siempre que
el firewall de su enrutador esté abierto.
Ahora use una de las direcciones IP del primer paso para hacer ping a todos los
nodos locales:
ping -c 2 -I 2001: db8: 494: 9d01: ba27: ebff: feb6: f293 ff02 :: 1

285
MANUAL RASPBERRY
PI 4

ping -c 2 -I 2001: db8: 494: 9d01: ba27: ebff: feb6: f293 ff02 :: 1% eth0
-c 2 significa enviar dos solicitudes de eco
-I con la dirección IP, establece la interfaz y la dirección de origen de la solicitud de
eco, es necesario elegir la dirección IP de la interfaz, eth0 no es suficiente, la
respuesta sería la dirección del enlace local ( fe80::/10), necesitamos la dirección
global o local dirección de unidifusión
ff02::1 es una dirección de multidifusión bien conocida para todos los nodos en el
enlace, por lo que se comporta como una transmisión local, por lo general se define
en, /etc/hosts por lo que también puede usar el nombre ( ip6-allnodes o ipv6-
allnodes) en lugar de la dirección literal
Algunos sistemas más nuevos esperan el ID de interfaz detrás de la dirección de
multidifusión.
ping -c 2 -I 2001: db8: 494: 9d01: ba27: ebff: feb6: f293 ip6-allnodes
PING ip6-allnodes (ip6-allnodes (ff02 :: 1)) desde 2001: db8: 494: 9d01: ba27: ebff:
feb6: f293: 56 bytes de datos
64 bytes de 2001: db8: 494: 9d01: ba27: ebff: feb6: f293: icmp_seq = 1 ttl = 64
tiempo = 0,597 ms
64 bytes de witz.fritz.box (2001: db8: 494: 9d01: 728b: cdff: fe7d: a2e): icmp_seq = 1
ttl = 255 tiempo = 1.05 ms (DUP!)
64 bytes de raspberrypi4.fritz.box (2001: db8: 494: 9d01: dea6: 32ff: fe23: 6be1):
icmp_seq = 1 ttl = 64 tiempo = 1.05 ms (DUP!)
64 bytes de 2001: db8: 494: 9d01: da37: beff: fefd: f09d (2001: db8: 494: 9d01: da37:
beff: fefd: f09d): icmp_seq = 1 ttl = 255 tiempo = 1.05 ms (DUP!)
64 bytes de fusion.fritz.box (2001: db8: 494: 9d01: 1e6f: 65ff: fec9: 8746): icmp_seq =
1 ttl = 255 tiempo = 2,12 ms (DUP!)
64 bytes de fritz.box (2001: db8: 494: 9d01: 464e: 6dff: fe72: 8a08): icmp_seq = 1 ttl
= 64 tiempo = 2.62 ms (DUP!)
64 bytes de raspberrypi.fritz.box (2001: db8: 494: 9d01: ba27: ebff: feb6: f293):
icmp_seq = 2 ttl = 64 tiempo = 0,480 ms

286
MANUAL RASPBERRY
PI 4

--- Estadísticas de ping de ip6-allnodes ---


2 paquetes transmitidos, 2 recibidos, +5 duplicados, 0% de pérdida de paquetes,
tiempo 1001ms
rtt mínimo / promedio / máximo / mdev = 0.480 / 1.283 / 2.623 / 0.735 ms
Esto debería resultar en respuestas de todos los nodos en su enlace (W) LAN, con
nombres DNS asociados.
Excluya su propia IP (aquí 2001:db8:494:9d01:ba27:ebff:feb6:f293), luego verifique
las otras tratando de conectarlas a través de SSH.
ssh pi @ 2001: db8: 494: 9d01: dea6: 32ff: fe23: 6be1
No se puede establecer la autenticidad del host '2001: db8: 494: 9d01: dea6: 32ff:
fe23: 6be1 (2001: db8: 494: 9d01: dea6: 32ff: fe23: 6be1)'.
La huella dactilar de la clave ECDSA es SHA256: DAW68oen42TdWDyrOycDZ1 +
y5ZV5D81kaVoi5FnpvoM.
¿Está seguro de que desea continuar conectándose (sí / no)? sí
Advertencia: Se agregó permanentemente '2001: db8: 494: 9d01: dea6: 32ff: fe23:
6be1' (ECDSA) a la lista de hosts conocidos.
pi @ 2001: db8: 494: 9d01: dea6: 32ff: fe23: 6be1 contraseña:
Linux raspberrypi4 4.19.75-v7l + # 1270 SMP Mar 24 de septiembre 18:51:41 BST
2019 armv7l

...

pi @ raspberrypi4: ~ $
Obtener la dirección IP de un Pi usando su teléfono inteligente
La aplicación Fing es un escáner de red gratuito para teléfonos inteligentes. Está
disponible para Android e iOS .
Su teléfono y su Raspberry Pi deben estar en la misma red, así que conecte su
teléfono a la red inalámbrica correcta.
Cuando abra la aplicación Fing, toque el botón de actualización en la esquina
superior derecha de la pantalla. Después de unos segundos obtendrá una lista con

287
MANUAL RASPBERRY
PI 4

todos los dispositivos conectados a su red. Desplácese hacia abajo hasta la


entrada con el fabricante "Raspberry Pi". Verá la dirección IP en la esquina inferior
izquierda y la dirección MAC en la esquina inferior derecha de la entrada.

Configurar un servidor SSH


Puede acceder a la línea de comando de una Raspberry Pi de forma remota desde
otra computadora o dispositivo en la misma red utilizando el protocolo Secure Shell
(SSH).
Solo tendrá acceso a la línea de comandos, no al entorno de escritorio completo.
Para un escritorio remoto completo, consulte VNC .
Configure su red local
Asegúrese de que su Raspberry Pi esté configurada y conectada correctamente. Si
está utilizando una red inalámbrica, esto se puede habilitar a través de la interfaz de
usuario del escritorio o desde la línea de comandos. Si no está utilizando
conectividad inalámbrica, conecte su Raspberry Pi directamente al enrutador.
NOTA
Deberá anotar la dirección IP de su Raspberry Pi para poder conectarse más tarde.
El uso del ifconfig comando mostrará información sobre el estado actual de la red,
incluida la dirección IP, o puede usar hostname –I para mostrar las direcciones IP
asociadas con el dispositivo.
Habilitación del servidor
El sistema operativo Raspberry Pi tiene el servidor SSH deshabilitado de forma
predeterminada. Se puede habilitar manualmente desde el escritorio:
1. Lanzamiento Raspberry Pi Configuration desde el Preferences menú
2. Navega a la Interfaces pestaña
3. Seleccionar Enabled junto a SSH
4. Hacer clic OK
Alternativamente, puede habilitarlo desde la terminal usando la aplicación raspi-
config,

1. Entrar sudo raspi-config en una ventana de terminal


2. Seleccione Interfacing Options
288
MANUAL RASPBERRY
PI 4

3. Navega y selecciona SSH


4. Escoger Yes
5. Seleccione Ok
6. Escoger Finish
NOTA
Para la configuración sin cabeza, SSH se puede habilitar colocando un archivo con
nombre ssh, sin ninguna extensión, en la partición de arranque de la tarjeta SD.
Cuando arranca la Raspberry Pi, busca el ssh archivo. Si se encuentra, SSH está
habilitado y el archivo se elimina. El contenido del archivo no importa; podría
contener texto o nada en absoluto.
ADVERTENCIA
Al habilitar SSH en una Raspberry Pi que puede estar conectada a Internet, debe
cambiar la contraseña predeterminada para asegurarse de que permanezca segura.
Secure Shell desde Linux o Mac OS
Puede usar SSH para conectarse a su Raspberry Pi desde un escritorio Linux, otra
Raspberry Pi o desde una Apple Mac sin instalar software adicional.
Abra una ventana de terminal en su computadora reemplazando <IP> con la
dirección IP de la Raspberry Pi a la que está tratando de conectarse,
ssh pi @ <IP>
Cuando la conexión funcione, verá una advertencia de seguridad / autenticidad.
Escriba yes para continuar. Solo verá esta advertencia la primera vez que se
conecte.
NOTA
Si recibe un connection timed out error, es probable que haya ingresado la dirección
IP incorrecta para la Raspberry Pi.
ADVERTENCIA
En el caso de que su Pi haya tomado la dirección IP de un dispositivo al que su
computadora se ha conectado antes (incluso si esto estaba en otra red), es posible
que reciba una advertencia y le pida que borre el registro de su lista de dispositivos
conocidos. Seguir esta instrucción y ssh volver a intentar el comando debería tener
éxito.
289
MANUAL RASPBERRY
PI 4

A continuación, se le pedirá la contraseña para el pi inicio de sesión: la contraseña


predeterminada en el sistema operativo Raspberry Pi es raspberry.
Por razones de seguridad, se recomienda encarecidamente cambiar la contraseña
predeterminada en la Raspberry Pi (además, no puede iniciar sesión a través de ssh
si la contraseña está en blanco). Ahora debería poder ver el indicador de Raspberry
Pi, que será idéntico al que se encuentra en la propia Raspberry Pi.

Si ha configurado otro usuario en la Raspberry Pi, puede conectarse a él de la misma


manera, reemplazando el nombre de usuario con el suyo, p. Ej. eben@192.168.1.5
pi @ raspberrypi ~ $
Ahora está conectado a la Raspberry Pi de forma remota y puede ejecutar
comandos.
Reenvío X11
También puede reenviar su sesión X a través de SSH, para permitir el uso de
aplicaciones gráficas, usando la -Ybandera:
ssh -Y pi@192.168.1.5
NOTA
X11 ya no está instalado de forma predeterminada en macOS , por lo que tendrá que
descargarlo e instalarlo.
Ahora está en la línea de comandos como antes, pero tiene la capacidad de abrir
ventanas gráficas. Por ejemplo, escribiendo:
geany &
abrirá el editor Geany en una ventana en su escritorio local.
Secure Shell de Windows 10
Puede usar SSH para conectarse a su Raspberry Pi desde una computadora con
Windows 10 que esté usando la Actualización de octubre de 2018 o posterior sin
tener que usar clientes de terceros.
Abra una ventana de terminal en su computadora reemplazando <IP>con la dirección
IP de la Raspberry Pi a la que está tratando de conectarse,
ssh pi @ <IP>

290
MANUAL RASPBERRY
PI 4

Cuando la conexión funcione, verá una advertencia de seguridad / autenticidad.


Escriba yespara continuar. Solo verá esta advertencia la primera vez que se conecte.
NOTA
Si recibe un connection timed out error, es probable que haya ingresado la dirección
IP incorrecta para la Raspberry Pi.
ADVERTENCIA
En el caso de que su Pi haya tomado la dirección IP de un dispositivo al que su
computadora se ha conectado antes (incluso si esto estaba en otra red), es posible
que reciba una advertencia y le pida que borre el registro de su lista de dispositivos
conocidos. Seguir esta instrucción y ssh volver a intentar el comando debería tener
éxito.
A continuación, se le pedirá la contraseña para el pi inicio de sesión: la contraseña
predeterminada en el sistema operativo Raspberry Pi es raspberry.
Por razones de seguridad, se recomienda encarecidamente cambiar la contraseña
predeterminada en la Raspberry Pi (además, no puede iniciar sesión a través de ssh
si la contraseña está en blanco). Ahora debería poder ver el indicador de Raspberry
Pi, que será idéntico al que se encuentra en la propia Raspberry Pi.
Si ha configurado otro usuario en la Raspberry Pi, puede conectarse a él de la misma
manera, reemplazando el nombre de usuario con el suyo, p. Ej. eben@192.168.1.5
pi @ raspberrypi ~ $
Ahora está conectado a la Raspberry Pi de forma remota y puede ejecutar
comandos.
Acceso SSH sin contraseña
Es posible configurar su Raspberry Pi para permitir el acceso desde otra
computadora sin necesidad de proporcionar una contraseña cada vez que se
conecte. Para hacer esto, necesita usar una clave SSH en lugar de una contraseña.
Para generar una clave SSH:
Comprobación de claves SSH existentes
Primero, verifique si ya hay claves en la computadora que está utilizando para
conectarse a la Raspberry Pi:
ls ~/.ssh
291
MANUAL RASPBERRY
PI 4

Si ve archivos con nombre id_rsa.pub o id_dsa.pub si ya tiene las claves


configuradas, puede omitir el paso 'Generar nuevas claves SSH' a continuación.
Genere nuevas claves SSH
Para generar nuevas claves SSH ingrese el siguiente comando:
ssh-keygen
Al ingresar este comando, se le preguntará dónde guardar la clave. Sugerimos
guardarlo en la ubicación predeterminada ( ~/.ssh/id_rsa) presionando Enter.

También se le pedirá que ingrese una frase de contraseña, que es opcional. La frase
de contraseña se utiliza para cifrar la clave SSH privada, de modo que si alguien más
copia la clave, no puede hacerse pasar por usted para obtener acceso. Si elige usar
una frase de contraseña, escríbala aquí y presione Enter, luego escríbala
nuevamente cuando se le solicite. Deje el campo vacío si no hay frase de
contraseña.
Ahora mire dentro de su .ssh directorio:
ls ~/.ssh
y debería ver los archivos id_rsa y id_rsa.pub:
claves_autorizadas id_rsa id_rsa.pub hosts_conocidos
El id_rsa archivo es su clave privada. Guarde esto en su computadora.
El id_rsa.pub archivo es su clave pública. Esto es lo que comparte con las máquinas
a las que se conecta: en este caso, su Raspberry Pi. Cuando la máquina a la que
intenta conectarse coincida con su clave pública y privada, le permitirá conectarse.
Eche un vistazo a su clave pública para ver cómo se ve:
cat ~/.ssh/id_rsa.pub
Debe tener la forma:
ssh-rsa <REALLY LONG STRING OF RANDOM CHARACTERS> user@host
Copia tu clave a tu Raspberry Pi
Usando la computadora desde la que se conectará, agregue la clave pública a su
authorized_keys archivo en la Raspberry Pi enviándola a través de SSH:
ssh-copy-id <USERNAME>@<IP-ADDRESS>
NOTA
292
MANUAL RASPBERRY
PI 4

Durante este paso, deberá autenticarse con su contraseña.


Alternativamente, si ssh-copy-id no está disponible en su sistema, puede copiar el
archivo manualmente a través de SSH:
cat ~/.ssh/id_rsa.pub | ssh <USERNAME>@<IP-ADDRESS> 'mkdir -p ~/.ssh && cat
>> ~/.ssh/authorized_keys'
Si ve el mensaje ssh: connect to host <IP-ADDRESS> port 22: Connection refused y
sabe que IP-ADDRESS es correcto, es posible que no haya habilitado SSH en su
Raspberry Pi. Ejecute sudo raspi-config en la ventana de terminal de Pi, habilite SSH,
luego intente copiar los archivos nuevamente.
Ahora intente ssh <USER>@<IP-ADDRESS> y debería conectarse sin una solicitud
de contraseña.
Si ve un mensaje "El agente admitió que no pudo firmar con la clave", agregue sus
identidades RSA o DSA al agente de autenticación y ssh-agent luego ejecute el
siguiente comando:
ssh-add
NOTA
también puede enviar archivos a través de SSH utilizando el scp comando (copia
segura).
Ajustar los permisos del directorio
Si no puede establecer una conexión después de seguir los pasos anteriores, es
posible que haya un problema con los permisos de su directorio. Primero, desea
verificar los registros en busca de errores:
tail -f /var/log/secure
# might return:
Nov 23 12:31:26 raspberrypi sshd[9146]: Authentication refused: bad ownership or
modes for directory /home/pi
Si el registro dice que Authentication refused: bad ownership or modes for
directory /home/pi hay un problema de permisos con respecto a su directorio
personal. SSH necesita que su hogar y ~/.ssh directorio no tengan acceso de
escritura grupal. Puede ajustar los permisos usando chmod:
chmod g-w $HOME
293
MANUAL RASPBERRY
PI 4

chmod 700 $HOME/.ssh


chmod 600 $HOME/.ssh/authorized_keys
Ahora solo el propio usuario tiene acceso .ssh y .ssh/authorized_keys en el que se
almacenan las claves públicas de sus máquinas remotas.
Almacenamiento de la frase de contraseña en el llavero de macOS
Si está utilizando macOS y después de verificar que su nueva clave le permite
conectarse, tiene la opción de almacenar la frase de contraseña para su clave en el
llavero de macOS. Esto le permite conectarse a su Raspberry Pi sin ingresar la frase
de contraseña.
Ejecute el siguiente comando para almacenarlo en su llavero:
ssh-add -K ~/.ssh/id_rsa
NOTA
Desde macOS Monterey en adelante, la –K bandera ha quedado obsoleta y ha sido
reemplazada por la --apple-use-keychain bandera.
Uso de Copia segura
Secure Copy ( scp) es un comando para enviar archivos a través de SSH. Esto
significa que puede copiar archivos entre computadoras, por ejemplo, desde su
Raspberry Pi a su computadora de escritorio o computadora portátil, o viceversa.
En primer lugar, deberá conocer la dirección IP de su Raspberry Pi .
Copiar archivos a su Raspberry Pi
Copie el archivo myfile.txt de su computadora a la picarpeta de inicio del usuario de
su Raspberry Pi en la dirección IP 192.168.1.3 con el siguiente comando:
scp myfile.txt pi@192.168.1.3:
Copie el archivo en el /home/pi/project/ directorio de su Raspberry Pi (la Project
carpeta ya debe existir):
scp myfile.txt pi@192.168.1.3:project/
Copiar archivos de su Raspberry Pi
Copie el archivo myfile.txt de su Raspberry Pi al directorio actual en su otra
computadora:
scp pi@192.168.1.3:myfile.txt .

294
MANUAL RASPBERRY
PI 4

Copiar varios archivos


Copie varios archivos separándolos con espacios:
scp myfile.txt myfile2.txt pi@192.168.1.3:
Alternativamente, use un comodín para copiar todos los archivos que coincidan con
una búsqueda en particular con:
scp *.txt pi@192.168.1.3:
(todos los archivos terminan en .txt)
scp m* pi@192.168.1.3:
(todos los archivos que comienzan con m)
scp m*.txt pi@192.168.1.3:
(todos los archivos que comienzan con my terminan en .txt)
NOTA
Algunos de los ejemplos anteriores no funcionarán para nombres de archivos que
contengan espacios. Los nombres como este deben ir entre comillas:
scp "my file.txt" pi@192.168.1.3:
Copiar un directorio completo
Copie el directorio project/ de su computadora a la pi carpeta de inicio del usuario de
su Raspberry Pi en la dirección IP 192.168.1.3 con el siguiente comando:
scp -r project/ pi@192.168.1.3:
Utilizando rsync
Puede usar la herramienta rsync para sincronizar carpetas entre computadoras. Es
posible que desee transferir algunos archivos desde su computadora de escritorio o
computadora portátil a su Pi, por ejemplo, y para que se mantengan actualizados, o
puede querer que las imágenes tomadas por su Pi se transfieran automáticamente a
su computadora.
El uso de rsync SSH le permite transferir archivos a su computadora
automáticamente.
Aquí hay un ejemplo de cómo configurar la sincronización de una carpeta de
imágenes en su Pi con su computadora:
En su computadora, cree una carpeta llamada camera:
cámara mkdir

295
MANUAL RASPBERRY
PI 4

Busque la dirección IP de la Raspberry Pi iniciando sesión y ejecutándola hostname


-I. En este ejemplo, el Pi está creando un lapso de tiempo capturando una foto cada
minuto y guardando la imagen con una marca de tiempo en la carpeta local camera
de su tarjeta SD.
Ahora ejecute el siguiente comando (sustituyendo la dirección IP de su propia Pi):
rsync -avz -e ssh pi@192.168.1.10: cámara / cámara /
Esto copiará todos los archivos de la camera carpeta de Pi a la nueva camera
carpeta de su computadora.
Sistema de archivos de red (NFS)
El sistema de archivos de red (NFS) le permite compartir un directorio ubicado en
una computadora en red con otras computadoras o dispositivos en la misma red. La
computadora donde se encuentra el directorio se llama servidor, y las computadoras
o dispositivos que se conectan a ese servidor se denominan clientes. Los clientes
suelen utilizar mount el directorio compartido para que forme parte de su propia
estructura de directorios. El directorio compartido es un ejemplo de recurso
compartido o recurso compartido de red.
Para redes más pequeñas, un NFS es perfecto para crear un NAS (almacenamiento
conectado a la red) simple en un entorno Linux / Unix.
Un NFS quizás sea más adecuado para directorios montados en red más
permanentes, como /home directorios o recursos compartidos a los que se accede
con regularidad. Si desea un recurso compartido de red al que los usuarios invitados
puedan conectarse fácilmente, Samba se adapta mejor a la tarea. Esto se debe a
que las herramientas para montar y desconectar temporalmente de los recursos
compartidos de Samba están más disponibles en los sistemas operativos antiguos y
propietarios.
Antes de implementar un NFS, debe estar familiarizado con:
 Permisos de archivos y directorios de Linux
 montar y desmontar sistemas de archivos
Configuración de un servidor NFS básico
Instale los paquetes necesarios utilizando el siguiente comando:
sudo apt install nfs-kernel-server
296
MANUAL RASPBERRY
PI 4

Para facilitar el mantenimiento, aislaremos todas las exportaciones de NFS en un


solo directorio, en el que se montarán los directorios reales con la –bind opción.
Supongamos que queremos exportar los directorios de inicio de nuestros usuarios,
que están en formato /home/users. Primero creamos el sistema de archivos de
exportación:
sudo mkdir -p /export/users
Tenga en cuenta que /exporty /export/users necesitará 777 permisos, ya que
accederemos al recurso compartido NFS desde el cliente sin autenticación LDAP /
NIS. Esto no se aplicará si usa autenticación (ver más abajo). Ahora monte el users
directorio real con:
sudo mount --bind /home/users /export/users
Para evitar que tengamos que volver a escribir esto después de cada reinicio,
agregamos la siguiente línea a /etc/fstab:
/ home / users / export / users none bind 0 0
Hay tres archivos de configuración relacionados con un servidor NFS:
1. /etc/default/nfs-kernel-server
2. /etc/default/nfs-common
3. /etc/exports
La única opción importante /etc/default/nfs-kernel-server por ahora es
NEED_SVCGSSD. Está configurado "no" de forma predeterminada, lo cual está bien,
porque esta vez no estamos activando la seguridad NFSv4.
Para que los nombres de ID se mapeen automáticamente, el archivo
/etc/idmapd.conf debe existir tanto en el cliente como en el servidor con el mismo
contenido y con los nombres de dominio correctos. Además, este archivo debe tener
las siguientes líneas en la Mapping sección:
[Cartografía]

Nadie-Usuario = nadie
Nobody-Group = nogroup

297
MANUAL RASPBERRY
PI 4

Sin embargo, tenga en cuenta que el cliente puede tener diferentes requisitos para
Nobody-User y Nobody-Group. Por ejemplo, en las variantes de RedHat, es
nfsnobody para ambos. Si no está seguro, verifique a través de los siguientes
comandos para ver si nobody y nogroup están allí:
cat /etc/passwd
cat /etc/group
De esta manera, el servidor y el cliente no necesitan que los usuarios compartan el
mismo UID / GUID. Para aquellos que usan la autenticación basada en LDAP,
agregue las siguientes líneas a la idmapd.conf de sus clientes:
[Traducción]

Método = nsswitch
Esto hará idmapd que sepa mirar nsswitch.conf para determinar dónde debe buscar
información de credenciales. Si ya tiene la autenticación LDAP funcionando, nsswitch
no debería requerir más explicaciones.
Para exportar nuestros directorios a una red local 192.168.1.0/24, agregamos las
siguientes dos líneas a /etc/exports:
/ export 192.168.1.0/24(rw,fsid=0,insecure,no_subtree_check,async)
/ export / users 192.168.1.0/24(rw,nohide,insecure,no_subtree_check,async)
Bloqueo de mapa de puertos (opcional)
Los archivos de su NFS están abiertos para cualquier persona en la red. Como
medida de seguridad, puede restringir el acceso a clientes específicos.
Agregue la siguiente línea a /etc/hosts.deny:
rpcbind mountd nfsd statd lockd rquotad: TODOS
Al bloquear a todos los clientes primero, solo los clientes de /etc/hosts.allow
(agregados a continuación) podrán acceder al servidor.
Ahora agregue la siguiente línea a /etc/hosts.allow:
rpcbind mountd nfsd statd lockd rquotad: <lista de IPv4s>
donde <list of IPv4s> es una lista de las direcciones IP del servidor y todos los
clientes. (Estas tienen que ser direcciones IP debido a una limitación en rpcbind, que

298
MANUAL RASPBERRY
PI 4

no le gustan los nombres de host). Tenga en cuenta que si tiene NIS configurado,
puede agregarlas a la misma línea.
Asegúrese de que la lista de direcciones IP autorizadas incluya la localhost dirección
( 127.0.0.1), ya que los scripts de inicio en las versiones recientes de Ubuntu usan el
rpcinfo comando para descubrir la compatibilidad con NFSv3, y esto se desactivará si
localhost no puede conectarse.
Finalmente, para que sus cambios surtan efecto, reinicie el servicio:
sudo systemctl restart nfs-kernel-server
Configuración de un cliente NFS
Ahora que su servidor se está ejecutando, debe configurar cualquier cliente para
poder acceder a él. Para comenzar, instale los paquetes requeridos:
sudo apt install nfs-common
En el cliente, podemos montar el árbol de exportación completo con un comando:
mount -t nfs -o proto=tcp,port=2049 <nfs-server-IP>:/ /mnt
También puede especificar el nombre de host del servidor NFS en lugar de su
dirección IP, pero en este caso debe asegurarse de que el nombre de host se pueda
resolver en una IP en el lado del cliente. Una forma sólida de asegurarse de que esto
siempre se resolverá es utilizar el /etc/hosts archivo.
Tenga en cuenta que <nfs-server-IP>:/export no es necesario en NFSv4, como lo fue
en NFSv3. La exportación raíz está :/predeterminada para exportar con fsid=0.
También podemos montar un subárbol exportado con:
mount -t nfs -o proto=tcp,port=2049 <nfs-server-IP>:/users /home/users
Para asegurarse de que esté montado en cada reinicio, agregue la siguiente línea
a /etc/fstab:
<nfs-server-IP>: / / mnt nfs auto 0 0
Si, después del montaje, la entrada es /proc/mounts appears como <nfs-server-IP>://
(con dos barras), es posible que deba especificar dos barras /etc/fstab, o de lo
contrario umount podría quejarse de que no puede encontrar el montaje.
Bloqueo de mapa de puertos (opcional)
Agregue la siguiente línea a /etc/hosts.deny:
rpcbind: TODOS
299
MANUAL RASPBERRY
PI 4

Al bloquear a todos los clientes primero, solo los clientes de /etc/hosts.allow


(agregados a continuación) podrán acceder al servidor.
Ahora agregue la siguiente línea a /etc/hosts.allow:
rpcbind: <dirección IP del servidor NFS>
donde <NFS server IP address> es la dirección IP del servidor.
Un servidor NFS más complejo
Los permisos de usuario de NFS se basan en el ID de usuario (UID). Los UID de
cualquier usuario en el cliente deben coincidir con los del servidor para que los
usuarios tengan acceso. Las formas típicas de hacer esto son:
 Sincronización manual de archivos de contraseña
 Uso de LDAP
 Uso de DNS
 Uso de NIS
Tenga en cuenta que debe tener cuidado en los sistemas en los que el usuario
principal tiene acceso de root: ese usuario puede cambiar los UID en el sistema para
permitirse el acceso a los archivos de cualquier persona. Esta página asume que el
equipo administrativo es el único grupo con acceso root y que todos son de
confianza. Cualquier otra cosa representa una configuración más avanzada y no se
abordará aquí.
Permisos de grupo
El acceso a los archivos de un usuario está determinado por su pertenencia a grupos
en el cliente, no en el servidor. Sin embargo, existe una limitación importante: se
pasan un máximo de 16 grupos del cliente al servidor, y si un usuario es miembro de
más de 16 grupos en el cliente, es posible que algunos archivos o directorios sean
inesperadamente inaccesibles.
DNS (opcional, solo si usa DNS)
Agregue cualquier nombre de cliente y direcciones IP a /etc/hosts. (La dirección IP
del servidor ya debería estar allí). Esto asegura que NFS seguirá funcionando incluso
si el DNS deja de funcionar. Alternativamente, puede confiar en DNS si lo desea,
depende de usted.

300
MANUAL RASPBERRY
PI 4

NIS (opcional, solo si usa NIS)


Esto se aplica a los clientes que utilizan NIS. De lo contrario, no puede usar grupos
de red y debe especificar IP individuales o nombres de host en /etc/exports. Lea la
sección de ERRORES man netgroup para obtener más información.
Primero, edite /etc/netgroup y agregue una línea para clasificar a sus clientes (este
paso no es necesario, pero es por conveniencia):
myclients (cliente1 ,,) (cliente2 ,,) ...
donde myclients es el nombre del grupo de red.
A continuación, ejecute este comando para reconstruir la base de datos NIS:
sudo make -C /var/yp
El nombre de archivo se yp refiere a Yellow Pages, el nombre anterior de NIS.
Bloqueo de mapa de puertos (opcional)
Agregue la siguiente línea a /etc/hosts.deny:
rpcbind mountd nfsd statd lockd rquotad: TODOS
Al bloquear a todos los clientes primero, solo los clientes de /etc/hosts.allow
(agregados a continuación) podrán acceder al servidor.
Considere agregar la siguiente línea a /etc/hosts.allow:
rpcbind mountd nfsd statd lockd rquotad: <lista de direcciones IP>
donde <list of IPs> es una lista de las direcciones IP del servidor y todos los clientes.
Deben ser direcciones IP debido a una limitación en rpcbind. Tenga en cuenta que si
ha configurado NIS, puede agregarlos a la misma línea.
Instalación y configuración de paquetes
Instale los paquetes necesarios:
sudo apt install rpcbind nfs-kernel-server
Edite /etc/exports y agregue los recursos compartidos:
/ home @myclients (rw, sync, no_subtree_check)
/ usr / local @myclients (rw, sync, no_subtree_check)
El ejemplo anterior comparte /home y /usr/local para todos los clientes del grupo de
myclients red.

301
MANUAL RASPBERRY
PI 4

/ home 192.168.0.10 (rw, sync, no_subtree_check) 192.168.0.11 (rw, sync,


no_subtree_check)
/ usr / local 192.168.0.10 (rw, sync, no_subtree_check) 192.168.0.11 (rw, sync,
no_subtree_check)
El ejemplo anterior comparte /home y /usr/local para dos clientes con direcciones IP
estáticas. Si, en cambio, desea permitir el acceso a todos los clientes de la red
privada que se encuentran dentro de un rango de direcciones IP designado,
considere lo siguiente:
/ home 192.168.0.0/255.255.255.0(rw,sync,no_subtree_check)
/ usr / local 192.168.0.0/255.255.255.0(rw,sync,no_subtree_check)
Aquí, rw hace que el recurso compartido sea de lectura / escritura y sync requiere
que el servidor solo responda a las solicitudes una vez que los cambios se hayan
descargado en el disco. Ésta es la opción más segura; async es más rápido, pero
peligroso. Se recomienda encarecidamente que lea man exports si está
considerando otras opciones.
Después de la configuración /etc/exports, exporte los recursos compartidos:
sudo exportfs -ra
Querrá ejecutar este comando siempre que /etc/exports se modifique.
Reiniciar servicios
De forma predeterminada, rpcbind solo se une a la interfaz de bucle invertido. Para
habilitar el acceso rpcbind desde máquinas remotas, debe cambiar
/etc/conf.d/rpcbind para deshacerse de –l o -i 127.0.0.1.
Si se realizan cambios, será necesario reiniciar rpcbind y NFS:
sudo systemctl restart rpcbind
sudo systemctl restart nfs-kernel-server
Elementos de seguridad a considerar
Aparte de los problemas de UID discutidos anteriormente, debe tenerse en cuenta
que un atacante podría enmascararse como una máquina a la que se le permite
mapear el recurso compartido, lo que les permite crear UID arbitrarios para acceder a
sus archivos. Una posible solución a esto es IPSec. Puede configurar todos los

302
MANUAL RASPBERRY
PI 4

miembros de su dominio para que se comuniquen entre sí solo a través de IPSec,


lo que autenticará efectivamente que su cliente es quien dice ser.
IPSec funciona cifrando el tráfico al servidor con la clave pública del servidor, y el
servidor devuelve todas las respuestas cifradas con la clave pública del cliente. El
tráfico se descifra con las respectivas claves privadas. Si el cliente no tiene las claves
que se supone que debe tener, no puede enviar ni recibir datos.
Una alternativa a IPSec son las redes físicamente separadas. Esto requiere un
conmutador de red independiente y tarjetas Ethernet independientes y la seguridad
física de esa red.
Solución de problemas
Montar un recurso compartido NFS dentro de un directorio de inicio cifrado solo
funcionará después de que haya iniciado sesión correctamente y su hogar esté
descifrado. Esto significa que el uso de / etc / fstab para montar recursos
compartidos NFS en el arranque no funcionará, porque su hogar no ha sido
descifrado en el momento del montaje. Hay una forma sencilla de evitar esto
mediante enlaces simbólicos:
1. Cree un directorio alternativo para montar los recursos compartidos de NFS
en:
sudo mkdir /nfs
sudo mkdir /nfs/music
1. Edite /etc/fstabpara montar el recurso compartido NFS en ese directorio en su
lugar:
nfsServer: música / nfs / música nfs auto 0 0
1. Cree un enlace simbólico dentro de su hogar, señalando la ubicación real del
montaje. Por ejemplo, y en este caso eliminando el Musicdirectorio que ya
existe allí primero:
rmdir /home/user/Music
ln -s /nfs/music/ /home/user/Music

303
MANUAL RASPBERRY
PI 4

Samba (SMB / CIFS)


Samba es una implementación del protocolo de red SMB / CIFS que utilizan los
dispositivos de Microsoft Windows para proporcionar acceso compartido a archivos,
impresoras y puertos serie.
Puede usar Samba para montar una carpeta compartida desde una máquina con
Windows para que aparezca en su Raspberry Pi, o para compartir una carpeta desde
su Raspberry Pi para que su máquina Windows pueda acceder a ella.
Instalación del soporte de Samba
De forma predeterminada, el sistema operativo Raspberry Pi no incluye
compatibilidad con CIFS / Samba, pero se puede agregar. Los siguientes comandos
instalarán todos los componentes necesarios para usar Samba como servidor o
cliente.
sudo apt update
sudo apt install samba samba-common-bin smbclient cifs-utils
Montar una carpeta compartida desde Windows
Primero, debe compartir una carpeta en su dispositivo Windows. ¡Este es un proceso
bastante complicado!
Activar compartir
1. Abra el Centro de redes y recursos compartidos haciendo clic derecho en la
bandeja del sistema y seleccionándolo

2. Haga clic en Cambiar la configuración de uso compartido avanzado


3. Seleccione Activar descubrimiento de red
4. Seleccione Activar el uso compartido de archivos e impresoras
5. Guardar cambios
Compartir la carpeta
Puede compartir cualquier carpeta que desee, pero para este ejemplo, simplemente
cree una carpeta llamada share.
1. Crea la carpeta share en tu escritorio.
2. Haga clic con el botón derecho en la nueva carpeta y seleccione
Propiedades .

304
MANUAL RASPBERRY
PI 4

3. Haga clic en la pestaña Compartir y luego en el botón Uso compartido


avanzado
4. Seleccione Compartir esta carpeta ; de forma predeterminada, el nombre del
recurso compartido es el nombre de la carpeta
5. Haga clic en el botón Permisos
6. Para este ejemplo, seleccione Todos y Control total (puede limitar el acceso a
usuarios específicos si es necesario); haga clic en Aceptar cuando haya
terminado, luego en Aceptar nuevamente para salir de la página Uso
compartido avanzado
7. Haga clic en la pestaña Seguridad , ya que ahora necesitamos configurar los
mismos permisos
8. Seleccione la misma configuración que la pestaña Permisos , agregando el
usuario elegido si es necesario
9. Haga clic en Aceptar
La carpeta ahora debería estar compartida.
Asistente para compartir de Windows 10
En Windows 10 hay un Asistente para compartir que ayuda con algunos de estos
pasos.
1. Ejecute la aplicación Administración de equipos desde la barra de inicio
2. Seleccione Carpetas compartidas , luego Recursos compartidos
3. Haga clic con el botón derecho y seleccione Nuevo recurso compartido , que
iniciará el Asistente para compartir; haga clic en Siguiente
4. Seleccione la carpeta que desea compartir y haga clic en Siguiente
5. Haga clic en Siguiente para usar todos los valores predeterminados para
compartir
6. Seleccione Personalizado y establezca los permisos necesarios, haga clic en
Aceptar y luego en Finalizar.
Monte la carpeta en la Raspberry Pi
El montaje en Linux es el proceso de adjuntar una carpeta a una ubicación, por lo
que primero necesitamos esa ubicación.

305
MANUAL RASPBERRY
PI 4

mkdir windowshare
Ahora, necesitamos montar la carpeta remota en esa ubicación. La carpeta remota
es el nombre de host o la dirección IP de la PC con Windows y el nombre del recurso
compartido que se utiliza al compartirlo. También debemos proporcionar el nombre
de usuario de Windows que se utilizará para acceder a la máquina remota.
sudo mount.cifs //<hostname or IP address>/share /home/pi/windowshare -o
user=<name>
Ahora debería poder ver el contenido del recurso compartido de Windows en su
Raspberry Pi.
cd windowshare
ls
Error "El host está inactivo"
Este error se debe a una combinación de dos cosas: una falta de coincidencia de la
versión del protocolo SMB y el cliente CIFS en Linux que devuelve un mensaje de
error engañoso. Para solucionar este problema, es necesario agregar una entrada de
versión al comando de montaje. De forma predeterminada, el sistema operativo
Raspberry Pi solo usará las versiones 2.1 y superiores, que son compatibles con
Windows 7 y versiones posteriores. Los dispositivos más antiguos, incluidos algunos
NAS, pueden requerir la versión 1.0:

sudo mount.cifs // IP / share / mnt / point -o user = <uname>, vers = 1.0


Es posible que deba probar diferentes versiones para que coincidan con la versión
del servidor. Los valores posibles son:
Versió Descripción
n

1.0 Protocolo clásico CIFS / SMBv1


El protocolo SMBv2.002. Windows Vista Service Pack 1 y Windows
2.0
Server 2008
El protocolo SMBv2.1. Microsoft Windows 7 y Windows Server
2.1
2008R2
3,0 El protocolo SMBv3.0. Microsoft Windows 8 y Windows Server 2012
306
MANUAL RASPBERRY
PI 4

El protocolo SMBv3.0.2. Microsoft Windows 8.1 y Windows Server


3,02
2012R2
El protocolo SMBv3.1.1. Microsoft Windows 10 y Windows Server
3.11
2016
3 La versión del protocolo SMBv3.0 y superior
Tabla 0-39 Valores posibles

Compartir una carpeta desde su Raspberry Pi


En primer lugar, cree una carpeta para compartir. Este ejemplo crea una carpeta
llamada shared en la home carpeta del usuario actual y asume que el usuario actual
es pi.
cd ~
mkdir shared
chmod 0740 shared
Ahora tenemos que decirle a Samba que hay un pi usuario al acceder a esa carpeta.
Cuando se le solicite, ingrese la contraseña del pi usuario; esta puede ser la
contraseña predeterminada, pero es bien conocida y debe cambiarse para mayor
seguridad.
sudo smbpasswd -a pi
Ahora necesitamos decirle a Samba que comparta esta carpeta, usando el archivo
de configuración de Samba.
sudo nano /etc/samba/smb.conf
Al final del archivo, agregue lo siguiente para compartir la carpeta, otorgando al
usuario remoto permisos de lectura / escritura:
[Cuota]
ruta = / home / pi / shared
solo lectura = no
public = si
escribible = sí
En el mismo archivo, busque la workgroup línea y, si es necesario, cámbiela por el
nombre del grupo de trabajo de su red local de Windows.

307
MANUAL RASPBERRY
PI 4

workgroup = <your workgroup name here>


Eso debería ser suficiente para compartir la carpeta. En su dispositivo Windows,
cuando navega por la red, debería aparecer la carpeta y debería poder conectarse a
ella.
Computación en red virtual (VNC)
A veces no es conveniente trabajar directamente en la Raspberry Pi. Quizás le
gustaría trabajar en él desde otro dispositivo por control remoto.
VNC es un sistema gráfico de uso compartido de escritorio que le permite controlar
de forma remota la interfaz de escritorio de una computadora (ejecutando VNC
Server) desde otra computadora o dispositivo móvil (ejecutando VNC Viewer). VNC
Viewer transmite el teclado y el mouse o los eventos táctiles al VNC Server y, a
cambio, recibe actualizaciones en la pantalla.
Verá el escritorio de la Raspberry Pi dentro de una ventana en su computadora o
dispositivo móvil. Podrá controlarlo como si estuviera trabajando en la propia
Raspberry Pi.
VNC Connect de RealVNC se incluye con el sistema operativo Raspberry Pi.
Consiste en VNC Server, que le permite controlar su Raspberry Pi de forma remota,
y VNC Viewer, que le permite controlar las computadoras de escritorio de forma
remota desde su Raspberry Pi si así lo desea.
Debe habilitar VNC Server antes de poder usarlo. De forma predeterminada, VNC
Server le brinda acceso remoto al escritorio gráfico que se ejecuta en su Raspberry
Pi, como si estuviera sentado frente a él.
Sin embargo, también puede usar VNC Server para obtener acceso remoto gráfico a
su Raspberry Pi si no tiene cabeza o no ejecuta un escritorio gráfico. Para obtener
más información sobre esto, consulte Creación de un escritorio virtual , más abajo.
Instalación de VNC en Raspberry Pi
VNC ya está instalado en la imagen completa del sistema operativo Raspberry Pi y
se puede instalar a través Recommended Software del Preferences menú en otras
versiones.
Si no está utilizando un escritorio, puede instalarlo desde la línea de comandos de la
siguiente manera:
308
MANUAL RASPBERRY
PI 4

sudo apt update


sudo apt install realvnc-vnc-server realvnc-vnc-viewer
Habilitación del servidor VNC
Puede hacer esto gráficamente o en la línea de comando.
Habilitar el servidor VNC gráficamente
 En su Raspberry Pi, inicie en el escritorio gráfico.
 Seleccione Menú › Preferencias › Configuración de Raspberry Pi ›
Interfaces.
 Asegúrese de que VNC esté habilitado .
Habilitación del servidor VNC en la línea de comandos
Puede habilitar VNC Server en la línea de comando usando raspi-config :
sudo raspi-config
Ahora, habilite VNC Server haciendo lo siguiente:
 Vaya a Opciones de interfaz .
 Desplácese hacia abajo y seleccione VNC › Sí .
Conexión a su Raspberry Pi
Hay dos formas de conectarse a su Raspberry Pi. Puede usar uno o ambos,
dependiendo de lo que funcione mejor para usted.
Establecer una conexión directa
Las conexiones directas son rápidas y sencillas siempre que esté conectado a la
misma red local privada que su Raspberry Pi. Por ejemplo, puede ser una red
cableada o inalámbrica en casa, en la escuela o en la oficina.
 En su Raspberry Pi (usando una ventana de terminal o vía SSH) use estas
instrucciones o ejecute ifconfig para descubrir su dirección IP privada.
 En el dispositivo que usará para tomar el control, descargue VNC Viewer.
Para obtener los mejores resultados, use la aplicación compatible de
RealVNC.
 Ingrese la dirección IP privada de su Raspberry Pi en VNC Viewer:
Establecer una conexión a la nube

309
MANUAL RASPBERRY
PI 4

Tiene derecho a utilizar el servicio en la nube de RealVNC de forma gratuita,


siempre que el acceso remoto sea solo con fines educativos o no comerciales.
Las conexiones en la nube son convenientes y están encriptadas de un extremo a
otro. Son muy recomendables para conectarse a su Raspberry Pi a través de
Internet. No hay reconfiguración de firewall o enrutador, y no necesita saber la
dirección IP de su Raspberry Pi ni proporcionar una estática.
 Regístrese para obtener una cuenta RealVNC aquí: es gratis y solo toma unos
segundos.
 En su Raspberry Pi, inicie sesión en VNC Server con sus nuevas credenciales
de cuenta RealVNC:
 En el dispositivo que usará para tomar el control, descargue VNC Viewer.
Usted debe utilizar la aplicación compatible de RealVNC.
 Inicie sesión en VNC Viewer con las mismas credenciales de cuenta RealVNC
y luego toque o haga clic para conectarse a su Raspberry Pi:
Autenticarse en el servidor VNC
Para completar una conexión directa o en la nube, debe autenticarse en VNC Server.
Si se está conectando desde la aplicación VNC Viewer compatible de RealVNC,
ingrese el nombre de usuario y la contraseña que usa normalmente para iniciar
sesión en su cuenta de usuario en la Raspberry Pi. De forma predeterminada, estas
credenciales son pi y raspberry.
Si se está conectando desde una aplicación que no es de RealVNC Viewer, primero
deberá degradar el esquema de autenticación del servidor VNC, especificar una
contraseña única para el servidor VNC y luego ingresarla en su lugar.
 Si está frente a su Raspberry Pi y puede ver su pantalla, abra el cuadro de
diálogo Servidor VNC en su Raspberry Pi, seleccione Menú › Opciones ›
Seguridad y elija la contraseña de VNC en el menú desplegable
Autenticación .
 si está configurando su Raspberry Pi de forma remota desde la línea de
comando, entonces para realizar los cambios para el Modo de servicio (la
configuración predeterminada para Raspberry Pi):

310
MANUAL RASPBERRY
PI 4

o Abra el /root/.vnc/config.d/vncserver-x11 archivo de configuración.


o Reemplazar Authentication=SystemAuth con Authentication=VncAuth y
guardar el archivo.
o En la línea de comando, ejecute sudo vncpasswd -service. Esto le
pedirá que establezca una contraseña y la insertará por usted en el
archivo de configuración correcto para VNC Server que se ejecuta en
modo de servicio.
o Reinicie el servidor VNC.

Uso de aplicaciones renderizadas directamente


Puede acceder de forma remota a aplicaciones que utilizan una superposición
renderizada directamente, como; la consola de texto, el módulo de cámara
Raspberry Pi y otros.
Para activar esta función:
 En su Raspberry Pi, abra el cuadro de diálogo VNC Server.
 Vaya a Menú › Opciones › Solución de problemas y seleccione Habilitar el
modo de captura directa experimental .
 En el dispositivo que usará para tomar el control, ejecute VNC Viewer y
conéctese.
NOTA
Las conexiones existentes deben reiniciarse para que estos cambios surtan
efecto.
Tenga en cuenta que la captura de pantalla directa es una función experimental. Si
se está conectando desde una computadora de escritorio y los movimientos del
mouse parecen erráticos, intente presionar F8 para abrir el menú de acceso directo
del Visor de VNC y seleccionar Movimiento relativo del puntero .
Crear un escritorio virtual
Si su Raspberry Pi no tiene cabeza (es decir, no está conectada a un monitor) o
controla un robot, es poco probable que esté ejecutando un escritorio gráfico.
VNC Server puede crear un escritorio virtual para usted, brindándole acceso remoto
gráfico a pedido. Este escritorio virtual existe solo en la memoria de su Raspberry Pi:

311
MANUAL RASPBERRY
PI 4

Para crear y conectarse a un escritorio virtual:


 En su Raspberry Pi (usando Terminal o vía SSH), ejecute vncserver. Tome
nota de la dirección IP / número de pantalla que VNC Server imprimirá en su
terminal (por ejemplo 192.167.5.149:1).
 En el dispositivo que usará para tomar el control, ingrese esta información en
VNC Viewer .
Para destruir un escritorio virtual, ejecute el siguiente comando:
vncserver -kill :<display-number>
Esto también detendrá cualquier conexión existente a este escritorio virtual.
Configuración de un servidor web Apache
Apache es una aplicación de servidor web popular que puede instalar en Raspberry
Pi para permitirle servir páginas web.
Por sí solo, Apache puede servir archivos HTML a través de HTTP y, con módulos
adicionales, puede servir páginas web dinámicas utilizando lenguajes de secuencias
de comandos como PHP.
Instalación de Apache
Primero, actualice los paquetes disponibles escribiendo el siguiente comando en la
Terminal:
sudo apt update
Luego, instale el apache2paquete con este comando:
sudo apt install apache2 -y
Pruebe el servidor web
De forma predeterminada, Apache coloca un archivo HTML de prueba en la carpeta
web. Esta página web predeterminada se sirve cuando navega http://localhost/en la
propia Pi, o http://192.168.1.10(cualquiera que sea la dirección IP de la Pi) desde otra
computadora en la red. Para encontrar la dirección IP de Pi, escriba hostname -Ien la
línea de comando (o lea más sobre cómo encontrar su dirección IP ).
Vaya a la página web predeterminada en el Pi o desde otra computadora en la red y
debería ver lo siguiente:

312
MANUAL RASPBERRY
PI 4

Ilustración 0-52 Mensaje de éxito de Apache

¡Esto significa que tienes Apache funcionando!


Cambio de la página web predeterminada
Esta página web predeterminada es solo un archivo HTML en el sistema de archivos.
Está ubicado en /var/www/html/index.html.

Navegue a este directorio en una ventana de terminal y eche un vistazo a lo que hay
dentro:
cd / var / www / html
ls -al
Esto le mostrará:

313
MANUAL RASPBERRY
PI 4

total 12
drwxr-xr-x 2 root root 4096 Jan 8 01:29 .
drwxr-xr-x 12 root root 4096 Jan 8 01:28 ..
-rw-r--r-- 1 root root 177 Jan 8 01:29 index.html
Esto muestra que, de forma predeterminada, hay un archivo /var/www/html/ llamado
index.html y es propiedad del root usuario (al igual que la carpeta adjunta). Para
editar el archivo, debe cambiar su propiedad a su propio nombre de usuario. Cambie
el propietario del archivo ( pi aquí se asume el usuario predeterminado ) usando sudo
chown pi: index.html.
Ahora puede intentar editar este archivo y luego actualizar el navegador para ver el
cambio de la página web. Si conoce HTML, puede poner sus propios archivos HTML
y otros activos en este directorio y servirlos como un sitio web en su red local.
Instalación de PHP para Apache
Para permitir que su servidor Apache procese archivos PHP, deberá instalar la última
versión de PHP y el módulo PHP para Apache. Escriba el siguiente comando para
instalarlos:
sudo apt install php libapache2-mod-php -y
Ahora elimine el index.htmlarchivo:
sudo rm index.html
y crea el archivo index.php:
sudo nano index.php
Pon algo de contenido PHP en él:
<?php echo "hello world"; ?>
Ahora guarde y actualice su navegador. Debería ver "hola mundo". Esto no es
dinámico, pero aún así lo ofrece PHP. Prueba algo dinámico:
<?php echo date('Y-m-d H:i:s'); ?>
o muestra tu información de PHP:
<?php phpinfo(); ?>
Arranque en red su Raspberry Pi
Puede configurar un servidor DHCP / TFTP que le permitirá arrancar una Raspberry
Pi 3 o 4 desde la red.
314
MANUAL RASPBERRY
PI 4

Las instrucciones asumen que tiene una red doméstica existente y que desea usar
una Raspberry Pi para el servidor. También necesitará una Raspberry Pi 3 o 4
adicional como cliente para arrancar. Solo se necesita una tarjeta SD porque el
cliente se iniciará desde el servidor después de la configuración inicial del cliente.
NOTA
Debido a la amplia gama de dispositivos de red y enrutadores disponibles, no
podemos garantizar que el inicio de la red funcione con cualquier dispositivo. Hemos
recibido informes de que, si no puede hacer que el arranque de la red funcione,
deshabilitar los marcos STP en su red puede ayudar.
Configuración del cliente
Raspberry Pi 3, modelo B
NOTA
Esta sección solo se aplica a la Raspberry Pi 3, Modelo B, ya que el arranque de red
está habilitado en la Raspberry Pi 3, Modelo B + en la fábrica.
Antes de la Raspberry Pi 3, el Modelo B arrancará en red, debe arrancarse desde
una tarjeta SD con una opción de configuración para habilitar el modo de arranque
USB. Esto establecerá un bit en la memoria OTP (programable por única vez) en el
SoC de Raspberry Pi que permite el arranque en red. Una vez hecho esto, el Pi 3B
intentará arrancar desde USB y desde la red, si no puede arrancar desde la tarjeta
SD.
Instale Raspberry Pi OS Lite, o Raspberry Pi OS con Raspberry Pi Desktop, en la
tarjeta SD de la forma habitual. A continuación, habilite el modo de arranque USB
con el siguiente comando:
echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
Esto se suma program_usb_boot_mode=1al final de /boot/config.txt. Reinicie la
Raspberry Pi con sudo reboot. Una vez que el cliente Raspberry Pi se haya
reiniciado, verifique que la OTP haya sido programada con:
vcgencmd otp_dump | grep 17:
17:3020000a
Asegúrese de que la salida 0x3020000a sea correcta.

315
MANUAL RASPBERRY
PI 4

La configuración del cliente está casi lista. Lo último que debe hacer es eliminar la
program_usb_boot_mode línea de config.txt. Puede hacer esto con sudo nano
/boot/config.txt, por ejemplo. Finalmente, apague el cliente Raspberry Pi con sudo
poweroff.
Raspberry Pi 4, modelo B
El arranque de red se puede habilitar en el Pi 4 usando la raspi-config herramienta.
Primero, ejecute de la raspi-config siguiente manera:
sudo raspi-config
Dentro raspi-config, elige Advanced Options, luego Boot Order, luego Network Boot.
Luego debe reiniciar el dispositivo para que el cambio en el orden de inicio se
programe en la EEPROM del cargador de inicio. Una vez que la Pi se haya
reiniciado, verifique que el orden de inicio sea ahora 0xf21:
vcgencmd bootloader_config
Para obtener más detalles sobre la configuración del cargador de arranque Pi 4,
consulte Configuración del cargador de arranque Pi 4 .
Dirección MAC Ethernet
Antes de configurar el arranque de red, anote el número de serie y la dirección mac
para que el servidor TFTP / DHCP pueda identificar la placa.
En Raspberry Pi 4, la dirección MAC está programada en la fabricación y no existe
un vínculo entre la dirección MAC y el número de serie. Tanto la dirección MAC como
los números de serie se muestran en la pantalla de diagnóstico HDMI del cargador
de arranque.
Para encontrar la dirección MAC de Ethernet:
ethtool -P eth0
Para encontrar el número de serie:
grep Serial /proc/cpuinfo | cut -d ' ' -f 2 | cut -c 8-16
Configuración del servidor
Conecte la tarjeta SD en el servidor Raspberry Pi y luego inicie el servidor. El cliente
Raspberry Pi necesitará un sistema de archivos raíz para arrancar: usaremos una
copia del sistema de archivos raíz del servidor y la colocaremos en /nfs/client1:
sudo mkdir -p /nfs/client1
316
MANUAL RASPBERRY
PI 4

sudo apt install rsync


sudo rsync -xa --progress --exclude /nfs / /nfs/client1
Regenere las claves de host SSH en el sistema de archivos del cliente mediante
chrooting en él:
cd /nfs/client1
sudo mount --bind /dev dev
sudo mount --bind /sys sys
sudo mount --bind /proc proc
sudo chroot .
rm /etc/ssh/ssh_host_*
dpkg-reconfigure openssh-server
exit
sudo umount dev sys proc
Busque la configuración de su red local. Necesita encontrar la dirección de su
enrutador (o puerta de enlace), que se puede hacer con:
ip route | awk '/default/ {print $3}'
Entonces corre:
ip -4 addr show dev eth0 | grep inet
que debería dar una salida como:
inet 10.42.0.211/24 brd 10.42.0.255 scope global eth0
La primera dirección es la dirección IP de su servidor Raspberry Pi en la red, y la
parte después de la barra es el tamaño de la red. Es muy probable que el tuyo sea
un /24. También tenga en cuenta la brd dirección (de difusión) de la red. Anote la
salida del comando anterior, que contendrá la dirección IP de la Raspberry Pi y la
dirección de transmisión de la red.

Finalmente, anote la dirección de su servidor DNS, que es la misma dirección que su


puerta de enlace. Puedes encontrar esto con:
cat /etc/resolv.conf

317
MANUAL RASPBERRY
PI 4

Configure una dirección de red estática en su servidor Raspberry Pi a través de la


systemdred, que funciona como controlador de red y servidor DHCP.
Para hacer eso, necesitará crear un 10-eth0.netdevy un me 11-eth0.networkgusta
así:
sudo nano /etc/systemd/network/10-eth0.netdev
Agrega las siguientes líneas:
[Fósforo]
Nombre = eth0

[La red]
DHCP = no
Luego crea un archivo de red:
sudo nano /etc/systemd/network/11-eth0.network
Agregue los siguientes contenidos:
[Fósforo]
Nombre = eth0

[La red]
Dirección = 10.42.0.211 / 24
DNS = 10.42.0.1

[Ruta]
Puerta de enlace = 10.42.0.1
En este punto, no tendrá DNS en funcionamiento, por lo que deberá agregar el
servidor que anotó antes systemd/resolved.conf. En este ejemplo, la dirección de la
puerta de enlace es 10.42.0.1.
sudo nano /etc/systemd/resolved.conf
Descomente la línea DNS y agregue la dirección IP DNS allí. Además, si tiene un
servidor DNS alternativo, agréguelo allí también.
[Resolve]

318
MANUAL RASPBERRY
PI 4

DNS=10.42.0.1
#FallbackDNS=
Habilite systemd-networkd y luego reinicie para que los cambios surtan efecto:
sudo systemctl enable systemd-networkd
sudo reboot
Ahora comience tcpdumppara que pueda buscar paquetes DHCP desde el cliente
Raspberry Pi:
sudo apt install tcpdump dnsmasq
sudo systemctl enable dnsmasq
sudo tcpdump -i eth0 port bootpc
Conecte el cliente Raspberry Pi a su red y enciéndalo. Compruebe que los LED se
iluminan en el cliente después de unos 10 segundos, luego debería recibir un
paquete del cliente "DHCP / BOOTP, Solicitud de ..."
IP 0.0.0.0.bootpc> 255.255.255.255.bootps: BOOTP / DHCP, Solicitud de b8: 27:
eb ...
Ahora debe modificar la dnsmasq configuración para permitir que DHCP responda al
dispositivo. Presione CTRL + Cpara salir del tcpdump programa, luego escriba lo
siguiente:
echo | sudo tee /etc/dnsmasq.conf
sudo nano /etc/dnsmasq.conf
Luego reemplace el contenido de dnsmasq.conf con:
# Nota: comente el puerto si desea servicios DNS para sistemas en la red.
puerto = 0
dhcp-range = 10.42.0.255, proxy
log-dhcp
enable-tftp
tftp-root = / tftpboot
pxe-service = 0, "Arranque de Raspberry Pi"
Donde está la primera dirección de la dhcp-range línea, use la dirección de
transmisión que anotó anteriormente.

319
MANUAL RASPBERRY
PI 4

Ahora crea un /tftpboot directorio:


sudo mkdir /tftpboot
sudo chmod 777 /tftpboot
sudo systemctl enable dnsmasq.service
sudo systemctl restart dnsmasq.service
Ahora supervise el dnsmasq registro:
tail -F /var/log/daemon.log
Debería ver algo como esto:
raspberrypi dnsmasq-tftp [1903]: archivo /tftpboot/bootcode.bin no encontrado
A continuación, deberá copiar el contenido de la carpeta de inicio en el /tftpboot
directorio.
Primero, presione CTRL + C para salir del estado de monitoreo. Luego escriba lo
siguiente:
cp -r /boot/* /tftpboot
Dado que la ubicación de tftp ha cambiado, reinicie dnsmasq:
sudo systemctl restart dnsmasq
Configurar raíz NFS
Esto ahora debería permitir que su cliente Raspberry Pi intente arrancar hasta que
intente cargar un sistema de archivos raíz (que no tiene).
En este punto, exporte el /nfs/client1 sistema de archivos creado anteriormente y la
carpeta de inicio TFTP.
sudo apt install nfs-kernel-server
echo "/nfs/client1 *(rw,sync,no_subtree_check,no_root_squash)" | sudo tee -a
/etc/exports
echo "/tftpboot *(rw,sync,no_subtree_check,no_root_squash)" | sudo tee -a
/etc/exports
Reinicie RPC-Bind y el servidor NFS para que detecten los nuevos archivos.

sudo systemctl enable rpcbind


sudo systemctl restart rpcbind

320
MANUAL RASPBERRY
PI 4

sudo systemctl enable nfs-kernel-server


sudo systemctl restart nfs-kernel-server
Edite /tftpboot/cmdline.txt y de en root= adelante, y reemplácelo con:
root = / dev / nfs nfsroot = 10.42.0.211: /nfs/client1,vers=4.1,proto=tcp rw ip = dhcp
rootwait ascensor = fecha límite
Debe sustituir la dirección IP aquí con la dirección IP que anotó. También elimine
cualquier parte de la línea de comando que comience con init =.
Finalmente, edite /nfs/client1/etc/fstab y elimine las líneas /dev/mmcblk0p1 y p2 (solo
proc deben quedar). Luego, vuelva a agregar la partición de arranque en:
echo "10.42.0.211:/tftpboot /boot nfs defaults,vers=4.1,proto=tcp 0 0" | sudo tee -a
/nfs/client1/etc/fstab
¡Buena suerte! Si no arranca en el primer intento, sigue intentándolo. La Raspberry
Pi puede tardar aproximadamente un minuto en arrancar, así que tenga paciencia.
Utilizando pxetools
Hemos creado un script de Python que se usa internamente para configurar
rápidamente Raspberry Pi que arrancará en red.
El script toma un número de serie, que puede encontrar cat /proc/cpuinfo, un nombre
de propietario y el nombre de la Raspberry Pi. Luego crea un sistema de archivos
raíz para esa Pi a partir de una imagen del sistema operativo Raspberry Pi. También
hay una –list opción que imprimirá la dirección IP del Pi y una –remove opción.
NOTA
Las siguientes instrucciones describen cómo configurar el entorno requerido por el
script a partir de una imagen nueva de Raspberry Pi OS lite. Puede ser una buena
idea montar un disco duro o una unidad flash /nfspara que su tarjeta SD no
proporcione sistemas de archivos a múltiples Pi. Esto se deja como ejercicio para el
lector.
actualización de sudo apt
sudo apt full-upgrade -y
sudo reiniciar

wget https://datasheets.raspberrypi.com/soft/prepare_pxetools.sh
321
MANUAL RASPBERRY
PI 4

bash prepare_pxetools
Cuando se le pregunte acerca de cómo guardar las iptables reglas, diga no.
El prepare_pxetools guión debe preparar todo lo que necesita para usar pxetools.
Descubrimos que necesitábamos reiniciar el nfs servidor después de usarlo pxetools
por primera vez. Haz esto con:
sudo systemctl reiniciar nfs-kernel-server
Luego, conecte su Raspberry Pi y debería arrancar.

3.10 Hardware Raspberry Pi.


Cumplimiento y seguridad del producto
Todos los productos Raspberry Pi se han sometido a pruebas de cumplimiento
exhaustivas.
Clasificación de inflamabilidad
Los PCB utilizados en los dispositivos Raspberry Pi se adhieren a UL94-V0.
NOTA
Esto se aplica a los PCB solamente.
El soporte de cumplimiento de Raspberry Pi
El programa de soporte de cumplimiento está diseñado para eliminar la carga de
navegar por los problemas de cumplimiento y facilitar que las empresas traigan
nuevos productos a los consumidores. Brinda acceso a los mismos ingenieros de
prueba que trabajaron en nuestra Raspberry Pis durante sus pruebas de
cumplimiento, conectando al usuario con un equipo dedicado en UL que evalúa y
prueba el producto del usuario, facilitado por su profundo conocimiento de Raspberry
Pi.
Desarrollado por Raspberry Pi
El programa Powered by Raspberry Pi proporciona un proceso para las empresas
que desean utilizar una forma del logotipo de Raspberry Pi y cubre productos con
computadoras Raspberry Pi o silicio en el interior, y servicios proporcionados por una
Raspberry Pi.
Gestión de frecuencia y control térmico
Todos los modelos de Raspberry Pi realizan un cierto grado de gestión térmica para
evitar el sobrecalentamiento con cargas pesadas. Los SoC tienen un sensor de
322
MANUAL RASPBERRY
PI 4

temperatura interno, cuyo software en la GPU sondea para garantizar que las
temperaturas no superen un límite predefinido; esto es 85 ° C en todos los modelos.
Es posible establecer esto en un valor más bajo, pero no en uno más alto. A medida
que el dispositivo se acerca al límite, se reducen varias frecuencias y, a veces, los
voltajes utilizados en el chip (ARM, GPU). Esto reduce la cantidad de calor generado,
manteniendo la temperatura bajo control.
Cuando la temperatura central esté entre 80 ° C y 85 ° C, se mostrará un icono de
advertencia que muestra un termómetro rojo medio lleno y los núcleos ARM se
reducirán progresivamente. Si la temperatura alcanza los 85 ° C, se mostrará un
icono que muestra un termómetro completamente lleno, y tanto los núcleos ARM
como la GPU se reducirán. Consulte la página sobre iconos de advertencia para ver
imágenes de los iconos.
El Raspberry Pi 4 Modelo B, la tecnología de PCB se ha cambiado para proporcionar
una mejor disipación de calor y una mayor masa térmica. Además, se ha introducido
un límite de temperatura suave, con el objetivo de maximizar el tiempo durante el
cual un dispositivo puede "correr" antes de alcanzar el límite estricto a 85 ° C.
Cuando se alcanza el límite suave, la velocidad del reloj se reduce de 1,4 GHz a 1,2
GHz y el voltaje de funcionamiento se reduce ligeramente. Esto reduce la tasa de
aumento de temperatura: negociamos un período corto a 1.4GHz por un período más
largo a 1.2GHz. De forma predeterminada, el límite suave es 60 ° C, y esto se puede
cambiar a través de la temp_soft_limit configuración en config.txt .. Actualmente no
hay un límite flexible definido.
Usando DVFS
NOTA
La discusión de DVFS aplica a Frambuesa Pi Modelo B 4, Raspbery Pi 400, y
calcular el módulo 4 solamente.
Los dispositivos Raspberry Pi 4 implementan escalado dinámico de voltaje y
frecuencia (DVFS). Esta técnica permite que los dispositivos Raspberry Pi 4
funcionen a temperaturas más bajas sin dejar de ofrecer el mismo rendimiento.
Varios relojes (por ejemplo, ARM, Core, V3D, ISP, H264, HEVC) dentro del SoC son
monitoreados por el firmware, y siempre que no estén funcionando a toda velocidad,
323
MANUAL RASPBERRY
PI 4

el voltaje suministrado a la parte particular del chip impulsado por el reloj es


reducido en relación con la reducción de la velocidad máxima. En efecto, solo se
suministra suficiente voltaje para mantener el bloque funcionando correctamente a la
velocidad específica a la que está funcionando. Esto puede resultar en reducciones
significativas en la energía utilizada por el SoC y, por lo tanto, en el calor general que
se produce.
Debido a los posibles problemas de estabilidad del sistema relacionados con la
ejecución de un voltaje bajo, especialmente cuando se utilizan periféricos de reloj fijo
con voltaje insuficiente (por ejemplo, PCIe), hay tres modos DVFS disponibles y se
pueden configurar /boot/config.txt con las siguientes propiedades. La mayoría de los
sistemas deben usar dvfs=3, los sistemas sin cabeza pueden beneficiarse de una
pequeña reducción de energía con dvfs=1 el riesgo de problemas de estabilidad de
PCIe.
propiedad Descripción
= valor

dvfs = 1 permitir subtensión


dvfs = 2 voltaje fijo para frecuencias de operación predeterminadas
escalar el voltaje a pedido para el overclock
(predeterminado). Si over_voltage se especifica
dvfs = 3
en config.txt, el escalado dinámico de voltaje se desactiva,
lo que hace que el sistema vuelva a dvfs=2.
Tabla 0-40 Modos DVFS disponibles

Además, también se usa un regulador de CPU más escalonado para producir un


control más detallado de las frecuencias del núcleo ARM, lo que significa que el
DVFS es más efectivo. Los pasos ahora son 1500MHz, 1000MHz, 750MHz y
600MHz. Estos pasos también pueden ayudar cuando se está acelerando el SoC, y
significan que la aceleración hasta 600MHz es mucho menos probable, dando un
aumento general en el rendimiento a plena carga.
El gobernador de CPU predeterminado es ondemand, el gobernador se puede
cambiar manualmente con el cpufreq-set comando (del cpufrequtils paquete) para
reducir el consumo de energía inactivo:
324
MANUAL RASPBERRY
PI 4

sudo apt install cpufrequtils


sudo cpufreq-set -g powersave
Medición de temperaturas
Debido a la arquitectura de los SoC utilizados en la gama Raspberry Pi y al uso del
código de monitoreo de temperatura ascendente en la distribución del sistema
operativo Raspberry Pi, las mediciones de temperatura basadas en Linux pueden ser
inexactas. Sin embargo, el vcgencmd comando proporciona una lectura precisa e
instantánea de la temperatura actual del SoC, ya que se comunica directamente con
la GPU:
vcgencmd measure_temp
Agregar disipadores de calor
Si bien los disipadores de calor no son necesarios para evitar daños por
sobrecalentamiento en el SoC, el mecanismo de estrangulamiento térmico se
encarga de eso, un disipador de calor o un pequeño ventilador le ayudarán si desea
reducir la cantidad de estrangulamiento térmico que se produce. Dependiendo de las
circunstancias exactas, montar el Pi verticalmente también puede ayudar con la
disipación de calor, ya que hacerlo puede mejorar el flujo de aire.
EEPROM de arranque de Raspberry Pi 4
Las computadoras Raspberry Pi 4, 400 y Compute Module 4 usan una EEPROM
para iniciar el sistema. Todos los demás modelos de computadora Raspberry Pi usan
el bootcode.bin archivo ubicado en el sistema de archivos de arranque.
NOTA
Los scripts y los binarios precompilados utilizados para crear el rpi-eeprom paquete
que se utiliza para actualizar el cargador de arranque Raspberry Pi 4 y las EEPROM
del controlador USB VLI están disponibles en GitHub.
Diagnóstico de arranque
Si ocurre un error durante el arranque, se mostrará un código de error a través del
LED verde. Las versiones más recientes del cargador de arranque mostrarán un
mensaje de diagnóstico que se mostrará en ambas pantallas HDMI.
Actualización del cargador de arranque
Raspberry Pi 4 y Raspberry Pi 400

325
MANUAL RASPBERRY
PI 4

El sistema operativo Raspberry Pi actualiza automáticamente el cargador de


arranque para corregir errores críticos. Los métodos recomendados para actualizar
manualmente el cargador de arranque o cambiar los modos de arranque son
Raspberry Pi Imager y raspi-config.
Usando Raspberry Pi Imager para actualizar el gestor de arranque
IMPORTANTE
Esta es la ruta recomendada para actualizar el gestor de arranque.
Raspberry Pi Imager proporciona una GUI para actualizar el cargador de arranque y
seleccionar el modo de arranque.
1. Descarga Raspberry Pi Imager
2. Seleccione una tarjeta SD de repuesto. ¡El contenido se sobrescribirá!
3. Lanzamiento Raspberry Pi Imager
4. Seleccionar Misc utility images debajo Operating System
5. Seleccione Bootloader
6. Seleccione un modo de arranque, es decir, SD (recomendado) USB o
Network.
7. Seleccione SD card y luego Write
8. Inicie la Raspberry Pi con la nueva imagen y espere al menos 10 segundos.
9. El LED de actividad verde parpadeará con un patrón constante y la pantalla
HDMI se iluminará en verde si se realiza correctamente.
10. Apague la Raspberry Pi y retire la tarjeta SD.
Usando raspi-config para actualizar el gestor de arranque
Para cambiar el modo de arranque o la versión del cargador de arranque desde
Raspberry Pi OS, ejecute raspi-config
1. Actualice el sistema operativo Raspberry Pi para obtener la última versión del
rpi-eeprom paquete.
2. Correr sudo raspi-config
3. Seleccione Advanced Options
4. Seleccione Bootloader Version

326
MANUAL RASPBERRY
PI 4

5. Seleccione la Default configuración predeterminada de fábrica o Latest la


última versión estable del cargador de arranque.
6. Reiniciar
Actualización de la configuración de EEPROM
El comportamiento de arranque (por ejemplo, arranque SD o USB) se controla
mediante un archivo de configuración incrustado en la imagen EEPROM y se puede
modificar a través de la rpi-eeprom-config herramienta.
Leyendo la configuración EEPROM actual
Para ver la configuración utilizada por el cargador de arranque actual durante la
última ejecución de arranque rpi-eeprom-config o vcgencmd bootloader_config.
Leyendo la configuración desde una imagen EEPROM
Para leer la configuración de una imagen EEPROM:
rpi-eeprom-config pieeprom.bin
Editar la configuración actual del cargador de arranque
El siguiente comando carga la configuración EEPROM actual en un editor de texto.
Cuando se cierra el editor, rpi-eeprom-config aplica la configuración actualizada a la
última versión de EEPROM disponible y la usa rpi-eeprom-update para programar
una actualización cuando se reinicia el sistema:
sudo -E rpi-eeprom-config --edit
sudo reboot
Si la configuración actualizada es idéntica o está vacía, no se realizan cambios.
El editor es seleccionado por la EDITOR variable de entorno.
Aplicar una configuración guardada
El siguiente comando se aplica boot.conf a la última imagen EEPROM disponible y
se usa rpi-eeprom-update para programar una actualización cuando se reinicia el
sistema.
sudo rpi-eeprom-config --apply boot.conf
sudo reiniciar

327
MANUAL RASPBERRY
PI 4

Actualizaciones automáticas
El rpi-eeprom-update systemd servicio se ejecuta al inicio y aplica una actualización
si hay una nueva imagen disponible, migrando automáticamente la configuración
actual del cargador de arranque.
Para deshabilitar las actualizaciones automáticas:
sudo systemctl mask rpi-eeprom-update
Para volver a habilitar las actualizaciones automáticas:
sudo systemctl unmask rpi-eeprom-update
NOTA
Si se establece la configuración de EEPROM del cargador de arranque
FREEZE_VERSION , el servicio de actualización de EEPROM omitirá las
actualizaciones automáticas. Esto elimina la necesidad de deshabilitar
individualmente el servicio de actualización de EEPROM si hay varios sistemas
operativos instalados o al intercambiar tarjetas SD.
rpi-eeprom-update
El sistema operativo Raspberry Pi utiliza el rpi-eeprom-update script para
implementar un servicio de actualización automática. La secuencia de comandos
también se puede ejecutar de forma interactiva o encapsulada para crear un servicio
de actualización del cargador de arranque personalizado.
Leyendo la versión actual de EEPROM:
vcgencmd bootloader_version
Compruebe si hay una actualización disponible:
sudo rpi-eeprom-update
Instale la actualización:
sudo rpi-eeprom-update -a
sudo reiniciar
Cancelar la actualización pendiente:
sudo rpi-eeprom-update -r
Instalación de una imagen EEPROM de cargador de arranque específica:
sudo rpi-eeprom-update -d -f pieeprom.bin

328
MANUAL RASPBERRY
PI 4

La –d bandera indica rpi-eeprom-update que se use la configuración en el archivo


de imagen especificado en lugar de migrar automáticamente la configuración actual.
Visualice la documentación incorporada:
rpi-eeprom-update -h
Estado de lanzamiento del cargador de arranque
El estado de la versión del firmware corresponde a un subdirectorio particular de las
imágenes del firmware del cargador de arranque
(/lib/firmware/raspberrypi/bootloader/...) y se puede cambiar para seleccionar una
secuencia de versión diferente.
 default- Actualizado para soporte de nuevo hardware, correcciones de errores
críticos y actualización periódica para nuevas funciones que se han probado a
través de la latest versión.
 latest - Se actualiza cuando las nuevas funciones se han probado con éxito en
la versión beta.
 beta - Las funciones nuevas o experimentales se prueban aquí primero.
Dado que la cadena de estado de la versión es solo un nombre de subdirectorio,
entonces es posible crear sus propios flujos de versiones, por ejemplo, una versión
fija o una configuración de inicio de red personalizada.

NB default y latest son enlaces simbólicos a los nombres de versiones anteriores de


critical y stable.
Cambiar la versión del cargador de arranque
NOTA
Puede cambiar qué flujo de lanzamiento se utilizará durante una actualización
editando el /etc/default/rpi-eeprom-update archivo y cambiando la
FIRMWARE_RELEASE_STATUS entrada al flujo apropiado.
Actualización de la configuración del cargador de arranque en un archivo de imagen
EEPROM
El siguiente comando reemplaza la configuración del cargador de arranque
pieeprom.bin por boot.conf y escribe la nueva imagen en new.bin:

329
MANUAL RASPBERRY
PI 4

rpi-eeprom-config --config boot.conf --out new.bin pieeprom.bin


recovery.bin
Al encender, la ROM BCM2711 busca un archivo llamado recovery.bin en el
directorio raíz de la partición de arranque en la tarjeta SD. Si recovery.bin se
encuentra una válida , la ROM lo ejecuta en lugar del contenido de la EEPROM. Este
mecanismo garantiza que la EEPROM del cargador de arranque siempre se pueda
restablecer a una imagen válida con la configuración predeterminada de fábrica.
Archivos de actualización EEPROM

Nombre del archivo Objetivo


ejecutable de recuperación de
recovery.bin
EEPROM del cargador de arranque
Imagen EEPROM del cargador de
pieeprom.upd
arranque
Imagen EEPROM del cargador de
arranque: igual que pieeprom.upd pero
pieeprom.bin
cambia el comportamiento de
recovery.bin
La suma de comprobación sha256 de
pieeprom.sig la imagen del cargador de arranque
(pieeprom.upd / pieeprom.bin)
La imagen EEPROM del firmware USB
VLI805: ignorada en las revisiones de
vl805.bin
la placa 1.4 y posteriores que no
tienen una EEPROM VLI dedicada
La suma de comprobación sha256 de
vl805.sig
vl805.bin
Tabla 0-41 Archivos de actualización EEPROM

 Si se llama a la imagen de actualización del cargador de arranque y


pieeprom.upd luego recovery.bin se le cambia el nombre a recovery.000 una
vez que se ha completado la actualización, se reinicia el sistema. Dado
recovery.bin que ya no está presente, la ROM carga el cargador de arranque

330
MANUAL RASPBERRY
PI 4

recién actualizado desde EEPROM y el sistema operativo se inicia


normalmente.
 Si se llama a la imagen de actualización del cargador de arranque
pieeprom.bin, recovery.bin se detendrá después de que se complete la
actualización. Si tiene éxito, la salida HDMI será verde y el LED de actividad
verde parpadeará rápidamente. Si la actualización falla, la salida HDMI será
roja y se mostrará un código de error a través del LED de actividad.
 Los .sig archivos contienen la suma de comprobación hexadecimal sha256 del
archivo de imagen correspondiente; Es posible que se agreguen campos
adicionales en el futuro.
 La ROM BCM2711 no admite la carga recovery.bin desde un almacenamiento
masivo USB o TFTP. En cambio, las versiones más nuevas del cargador de
arranque admiten un mecanismo de autoactualización en el que el cargador
de arranque puede actualizar la EEPROM.
 Los archivos temporales de actualización de EEPROM son eliminados
automáticamente por el rpi-eeprom-update servicio al inicio.
Para obtener más información sobre el rpi-eeprom-update archivo de configuración,
consulte rpi-eeprom-update -h.
Protección contra escritura EEPROM
Tanto el cargador de arranque como las EEPROM VLI admiten la protección contra
escritura del hardware.
Diagnóstico de arranque en Raspberry Pi 4
A partir de la versión 2020-04-16 del cargador de arranque Raspberry Pi 4, la
información de diagnóstico se puede mostrar en el momento del arranque en una
pantalla HDMI. Para ver esta información de diagnóstico, apague la Raspberry Pi 4,
retire la tarjeta SD y vuelva a encenderla. Debería aparecer una pantalla de
diagnóstico similar a la siguiente.

331
MANUAL RASPBERRY
PI 4

Ilustración 0-53 Pantalla de diagnóstico de arranque

Esta página de diagnóstico también aparecerá si el cargador de arranque no puede


arrancar desde una tarjeta SD insertada o no puede arrancar desde la red; por
ejemplo, si no hay una imagen de arranque en la tarjeta, está defectuosa o los
parámetros de arranque de la red son incorrectos.
Una vez que se muestra la página de diagnóstico, solo es posible reiniciar apagando
y apagando el dispositivo (es decir, desenchufe y vuelva a enchufar la fuente de
alimentación).
La línea superior describe el modelo de Pi y su capacidad de memoria.
La información de diagnóstico es la siguiente:
Línea: Información

cargador de
Versión del cargador de arranque: fecha de compilación
arranque
Revisión de la placa - Número de serie - Dirección MAC de
tablero
Ethernet
bota modo: (modo de arranque ROM - 6 SPI), orden: EEPROM
332
MANUAL RASPBERRY
PI 4

config BOOT_ORDER , RSTS: registro PM_RSTS


Identificador de tarjeta SD definido por el fabricante de la tarjeta
SD CID
SD
parte Tipo de particiones primarias de Master Boot Record: LBA
Nombre de archivo para start.elf y fixup.dat si está presente (por
fw
ejemplo, start4x.elf, fixup4x.dat)
Arranque de red: - Estado del enlace (arriba / abajo) dirección
neto IP del cliente (ip), subred (sn), puerta de enlace predeterminada
(gw)
tftp Arranque de red: dirección IP del servidor TFTP
Tabla 0-42 Información de diagnóstico

Esta pantalla se puede desactivar mediante la DISABLE_HDMI opció.


NOTA
Esto es puramente para diagnosticar fallas de arranque; no es un cargador de
arranque interactivo. Si necesita un cargador de arranque interactivo, considere usar
una herramienta como U-Boot.
Flujo de arranque de Raspberry Pi 4
La principal diferencia entre este y los productos anteriores es que el cargador de
arranque de la segunda etapa se carga desde una EEPROM flash SPI en lugar del
bootcode.bin archivo de los productos anteriores.
Cargador de arranque de primera etapa
El flujo de arranque de la ROM (primera etapa) es el siguiente: -
 BCM2711 SoC se enciende
 Leer OTP para determinar si el nRPIBOOT GPIO está configurado
 Si nRPIBOOT GPIO es alto o OTP NO define nRPIBOOT GPIO
o Verifique OTP para ver si recovery.bin se puede cargar desde SD /
EMMC
 Si SD recovery.bin está habilitado, verifique el SD / EMMC
primario para recovery.bin
 Éxito: ejecute recovery.bin y actualice la EEPROM de SPI
 Fallar - continuar
333
MANUAL RASPBERRY
PI 4

o Verifique SPI EEPROM para cargador de segunda etapa


 Éxito: ejecutar el gestor de arranque de la segunda etapa
 Fallar - continuar
 Si bien es cierto
o Intente cargar recovery.bin desde el arranque del dispositivo USB
 Éxito: ejecute recovery.bin y actualice SPI EEPROM o cambie al
modo de dispositivo de almacenamiento masivo USB
 Error: reintentar el arranque del dispositivo USB

NOTA
Actualmente solo CM4 reserva un GPIO para nRPIBOOT.
NOTA
recovery.bin es un programa mínimo de segunda etapa que se utiliza para actualizar
la imagen EEPROM del cargador de arranque SPI.
Cargador de arranque de segunda etapa
Esta sección describe el flujo de alto nivel del cargador de arranque de la segunda
etapa.
 Inicializar relojes y SDRAM
 Leer el archivo de configuración de EEPROM
 Verifique el PM_RSTS registro para determinar si se solicita HALT
o Compruebe POWER_OFF_ON_HALT y WAKE_ON_GPIO ajustes de
configuración EEPROM.
o Si POWER_OFF_ON_HALT es 1 y WAKE_ON_GPIO es 0 entonces
 Utilice PMIC para apagar el sistema
o si no WAKE_ON_GPIO es 1
 Habilite las interrupciones de borde de caída en GPIO3 para
despertar si GPIO3 se baja
o dormir
 Si bien es cierto

334
MANUAL RASPBERRY
PI 4

o Lea el siguiente modo de arranque del parámetro BOOT_ORDER en el


archivo de configuración EEPROM.
o Si el modo de arranque == RESTART
 Regrese al primer modo de arranque en el BOOT_ORDER
campo
o si no, modo de arranque == STOP
 Muestre el patrón de error start.elf no encontrado y espere para
siempre.
o si no, modo de arranque == SD CARD
 Intente cargar firmware desde la tarjeta SD
 Éxito: ejecute el firmware
 Fallo - continuar
o de lo contrario, si boot-mode == NETWORK entonces
 Utilice el protocolo DHCP para solicitar la dirección IP
 Cargue el firmware desde el DHCP o el servidor TFTP definido
estáticamente
 Si no se encuentra el firmware o si se agota el tiempo de espera
o se produce un error de red, continúe
o de lo contrario, si boot-mode == USB-MSD o boot-mode == BCM-USB-
MSD entonces
 Mientras que USB Discover no ha agotado el tiempo de espera
 Compruebe si hay dispositivos de almacenamiento
masivo USB
 Si se encuentra un nuevo dispositivo de almacenamiento
masivo,
o Para cada unidad (LUN)
 Intente cargar el firmware
 Éxito: ejecute el firmware
 Fallido: avanzar al siguiente LUN
o de lo contrario, si boot-mode == NVME entonces
335
MANUAL RASPBERRY
PI 4

 Escanee PCIe en busca de un dispositivo NVMe y, si lo


encuentra
 Intente cargar firmware desde el dispositivo NVMe
o Éxito: ejecute el firmware
o Fallo - continuar
o de lo contrario, si boot-mode == RPIBOOT entonces
 Intente cargar el firmware usando el modo de dispositivo USB
desde el puerto USB OTG; consulte usbboot. No hay tiempo de
espera para el RPIBOOT modo.
Actualizaciones del cargador de arranque
El cargador de arranque también puede actualizarse antes de que se inicie el
firmware si pieeprom.upd se encuentra un archivo.
Actualizaciones de SO a prueba de fallos (TRYBOOT)
El cargador de arranque / firmware proporciona un indicador de un disparo que, si se
establece, se borra pero hace tryboot.txt que se cargue en lugar de config.txt. Esta
configuración alternativa especificaría los parámetros de firmware, cmdline, kernel y
os_prefix pendientes de actualización del sistema operativo. Dado que la bandera se
borra antes de iniciar el primer reinicio, un bloqueo o reinicio hará que el config.txt
archivo original se cargue en el próximo reinicio.
Para configurar la tryboot bandera, agregue tryboot después del número de partición
en el reboot comando. Normalmente, el número de partición predeterminado es cero,
pero debe especificarse si se agregan argumentos adicionales.
# Las citas son importantes. Reiniciar solo acepta un único argumento.
sudo reiniciar '0 tryboot'
tryboot es compatible con todos los modelos de Raspberry Pi, sin embargo, en Pi 4
modelo B revisión 1.0 y 1.1 la EEPROM no debe estar protegida contra escritura.
Esto se debe a que los dispositivos Raspberry Pi 4B más antiguos tienen que
restablecer la fuente de alimentación (perdiendo el estado de arranque), por lo que
se almacena dentro de la EEPROM.

336
MANUAL RASPBERRY
PI 4

Configuración del cargador de arranque Raspberry Pi 4


Editar la configuración
Antes de editar la configuración del cargador de arranque, actualice su sistema para
obtener la última versión del rpi-eeprom paquete. Las versiones anteriores a la
versión crítica / predeterminada del 2020-09-03 no admitirán todas las funciones
enumeradas aquí.
Para ver la configuración actual de EEPROM:
rpi-eeprom-config
Para editarlo y aplicar las actualizaciones a la última versión de EEPROM:
sudo -E rpi-eeprom-config --edit
propiedades de configuración
Esta sección describe todos los elementos de configuración disponibles en el gestor
de arranque. La sintaxis es la misma que config.txt pero las propiedades son
específicas del cargador de arranque. Los filtros condicionales también son
compatibles, excepto EDID.
BOOT_UART
Si, 1 entonces habilite la salida de depuración UART en GPIO 14 y 15. Configure el
terminal de depuración de recepción a 115200bps, 8 bits, sin bits de paridad, 1 bit de
parada.
Defecto: 0
WAKE_ON_GPIO
Si 1 a continuación sudo halt se ejecutará en un modo de potencia inferior o hasta
que GPIO3 GLOBAL_EN están en cortocircuito a tierra.
Predeterminado: 1 ( 0 en la versión original del gestor de arranque 2019-05-10)
POWER_OFF_ON_HALT
Si 1 y WAKE_ON_GPIO=0 luego sudo halt apagará todas las salidas PMIC. Este es
el estado de energía más bajo posible para detener, pero puede causar problemas
con algunos HAT porque los 5V todavía estarán encendidos. GLOBAL_EN debe
estar cortocircuitado a tierra para arrancar.
Pi 400 tiene un botón de encendido dedicado que funciona incluso si el procesador
está apagado. Este comportamiento está habilitado de forma predeterminada, sin

337
MANUAL RASPBERRY
PI 4

embargo, WAKE_ON_GPIO=2 se puede configurar para usar un botón de


encendido GPIO externo en lugar del botón de encendido dedicado.
Defecto: 0
ORDEN DE INICIO
La BOOT_ORDER configuración permite una configuración flexible para la prioridad
de diferentes modos de arranque. Se representa como un entero de 32 bits sin signo
donde cada nibble representa un modo de arranque. Los modos de arranque se
intentan desde el nibble significativo más bajo hasta el orden de nibble significativo
más alto.

La versión mínima del cargador de arranque compatible para los modos de arranque
personalizados es 2020-09-03.

BOOT_ORDER los campos


La propiedad BOOT_ORDER define la secuencia para los diferentes modos de
arranque. Se lee de derecha a izquierda y se pueden definir hasta 8 dígitos.
Valor Modo Descripción

DETECCIÓN Pruebe SD y luego espere a que la detección de


0x0 DE TARJETA tarjeta indique que la tarjeta ha cambiado; en desuso
SD ahora que 0xf (RESTART) está disponible.
0x1 TARJETA SD Tarjeta SD (o eMMC en Compute Module 4).
Arranque de red: consulte el tutorial del servidor de
0x2 LA RED
arranque de red
0x3 RPIBOOT RPIBOOT - Ver usbboot
Arranque de almacenamiento masivo USB:
0x4 USB-MSD
consulte Arranque de almacenamiento masivo USB
Arranque USB 2.0 desde el conector USB tipo C
(CM4: conector USB tipo A en la placa CM IO,
0x5 BCM-USB-MSD
utilizando el cargador de arranque EEPROM desde
2020-12-14 en adelante).
0x6 NVME Solo CM4: arranque desde un SSD NVMe conectado

338
MANUAL RASPBERRY
PI 4

a la interfaz PCIe. Consulte Arranque de NVMe para


obtener más detalles.
Deténgase y muestre el patrón de error. Se requiere
0xe PARADA
un ciclo de energía para salir de este estado.
Reinicie desde el primer modo de inicio en el campo
0xf REINICIAR
BOOT_ORDER, es decir, bucle
Tabla 0-43 Propiedad BOOT_ORDER

RPIBOOT está diseñado para usarse con Compute Module 4 para cargar una
imagen de depuración personalizada (por ejemplo, un disco RAM de Linux) en lugar
del inicio normal. Esta debería ser la última opción de inicio porque actualmente no
admite tiempos de espera ni reintentos.
ORDEN DE Descripción
INICIO

Pruebe SD primero, seguido de USB-MSD y luego repita


0xf41
(predeterminado si BOOT_ORDER está vacío)
0xf14 Pruebe primero con USB, seguido de SD y luego repita
0xf21 Pruebe SD primero, seguido de RED y luego repita
Tabla 0-44 BOOT_ORDER ejemplos

MAX_RESTARTS
Si el 0xf modo de inicio RESTART ( ) se encuentra más de MAX_RESTARTS veces,
se activa un reinicio del perro guardián. Esto no se recomienda para uso general,
pero puede ser útil para sistemas de prueba o remotos donde se necesita un reinicio
completo para resolver problemas con el hardware o las interfaces de red.
Por defecto: -1 (infinito)
SD_BOOT_MAX_RETRIES
La cantidad de veces que se reintentará el arranque SD después de un error antes
de pasar al siguiente modo de arranque definido por BOOT_ORDER.
-1 significa reintentos infinitos.
Defecto: 0
NET_BOOT_MAX_RETRIES

339
MANUAL RASPBERRY
PI 4

La cantidad de veces que se reintentará el inicio de la red después de un error


antes de pasar al siguiente modo de inicio definido por BOOT_ORDER.
-1 significa reintentos infinitos.
Defecto: 0
DHCP_TIMEOUT
El tiempo de espera en milisegundos para toda la secuencia DHCP antes de fallar la
iteración actual.
Mínimo: 5000
Predeterminado:45000
DHCP_REQ_TIMEOUT
El tiempo de espera en milisegundos antes de reintentar DHCP DISCOVER o DHCP
REQ.
Mínimo: 500
Predeterminado:4000
TFTP_FILE_TIMEOUT
El tiempo de espera en milisegundos para la descarga de un archivo individual a
través de TFTP.
Mínimo: 5000
Predeterminado:30000
TFTP_IP
Dirección IP decimal con puntos opcional (p 192.168.1.99. Ej. ) Para el servidor TFTP
que anula la IP del servidor de la solicitud DHCP.
Esto puede ser útil en redes domésticas porque se puede usar tftpd-hpa en lugar de
dnsmasq donde el enrutador de banda ancha es el servidor DHCP.
Defecto: ""
TFTP_PREFIX
Para admitir directorios de arranque TFTP únicos para cada Pi, el cargador de
arranque antepone los nombres de archivo con un directorio específico del
dispositivo. Si ni start4.elf ni start.elf se encuentran en el directorio con prefijo, el
prefijo se borra. En modelos anteriores, el número de serie se usa como prefijo, sin

340
MANUAL RASPBERRY
PI 4

embargo, en Pi 4, la dirección MAC ya no se genera a partir del número de serie, lo


que dificulta la creación automática de directorios tftpboot en el servidor mediante la
inspección de paquetes DHCPDISCOVER. Para admitir esto, TFTP_PREFIX se
puede personalizar para que sea la dirección MAC, un valor fijo o el número de serie
(predeterminado).
Valor Descripción

0 Utilice el número de serie, p. Ej. 9ffefdef/


1 Utilice la cadena especificada por TFTP_PREFIX_STR
2 Utilice la dirección MAC, p. Ej. dc-a6-32-01-36-c2/
Tabla 0-45 TFTP_PREFIX

Predeterminado: 0
TFTP_PREFIX_STR
Especifique la cadena de prefijo de directorio personalizado que se utiliza cuando
TFTP_PREFIX se establece en 1. Por ejemplo: -TFTP_PREFIX_STR=tftp_test/
Predeterminado: ""
Longitud máxima: 32 caracteres
PXE_OPTION43
Anula la cadena de coincidencia de PXE Option43 con una cadena diferente.
Normalmente es mejor aplicar personalizaciones al servidor DHCP que cambiar el
comportamiento del cliente, pero esta opción se proporciona en caso de que eso no
sea posible.
Defecto: Raspberry Pi Boot
DHCP_OPTION97
En versiones anteriores, el GUID del cliente (Option97) era solo el número de serie
repetido 4 veces. De forma predeterminada, el nuevo formato GUID es la
concatenación de fourcc para RPi4 (0x34695052 - little endian), la revisión de la
placa (por ejemplo, 0x00c03111) (4 bytes), los 4 bytes menos significativos de la
dirección mac y la serie de 4 bytes. número. Esto pretende ser único, pero también
proporcionar información estructurada al servidor DHCP, lo que permite identificar las
computadoras Raspberry Pi4 sin depender del OUID MAC de Ethernet.

341
MANUAL RASPBERRY
PI 4

Especifique DHCP_OPTION97 = 0 para revertir el comportamiento anterior o un


valor hexadecimal distinto de cero para especificar un prefijo personalizado de 4
bytes.
Defecto: 0x34695052
Configuración de dirección IP estática
Si se configuran TFTP_IP y las siguientes opciones, se omite DHCP y se aplica la
configuración de IP estática. Si el servidor TFTP está en la misma subred que el
cliente, se puede omitir GATEWAY.
CLIENT_IP
La dirección IP del cliente, p. Ej. 192.168.0.32
Defecto: ""
SUBRED
La máscara de dirección de subred, p. Ej. 255.255.255.0
Defecto: ""
PUERTA
La dirección de la puerta de enlace que se utilizará si el servidor TFTP está en una
subred diferente, p. Ej. 192.168.0.1
Defecto: ""
DIRECCIÓN MAC
Anula la dirección MAC de Ethernet con el valor dado. p.ej dc:a6:32:01:36:c2
Defecto: ""
DISABLE_HDMI
La pantalla de diagnóstico de arranque HDMI está deshabilitada si
DISABLE_HDMI=1. Otros valores distintos de cero están reservados para uso futuro.
Defecto: 0
HDMI_DELAY
Omita la reproducción de la pantalla de diagnóstico HDMI hasta por N segundos
(predeterminado 5) a menos que ocurra un error fatal. El comportamiento
predeterminado está diseñado para evitar que la pantalla de diagnóstico del cargador
de arranque aparezca brevemente durante un arranque normal de SD / USB.

342
MANUAL RASPBERRY
PI 4

Defecto: 5
ENABLE_SELF_UPDATE
Permite que el cargador de arranque se actualice a sí mismo desde un sistema de
archivos de arranque TFTP o dispositivo de almacenamiento masivo USB (MSD).
Si la actualización automática está habilitada, el cargador de arranque buscará los
archivos de actualización (.sig / .upd) en el sistema de archivos de arranque. Si la
imagen de actualización difiere de la imagen actual, se aplica la actualización y se
reinicia el sistema. De lo contrario, si las imágenes EEPROM son idénticas byte por
byte, el arranque continúa normalmente.
Notas: -
 La actualización automática no está habilitada en el arranque SD; la ROM ya
puede cargar recovery.bin desde la tarjeta SD.
 Antes de que se pueda utilizar la autoactualización, el gestor de arranque ya
debe haberse actualizado a una versión que admita la autoactualización. El
enfoque recomendado sería usar Raspberry Pi Imager y una tarjeta SD de
repuesto para actualizar a pieeprom-2020-09-03 y luego usar la actualización
automática para actualizaciones posteriores.
 Para el arranque en red, asegúrese de que el boot directorio TFTP se pueda
montar a través de NFS y que rpi-eeprom-update pueda escribir en él.
Predeterminado: 1 (0 en versiones anteriores a 2020-09-03)
FREEZE_VERSION
Anteriormente, esta propiedad solo era verificada por el rpi-eeprom-update script. Sin
embargo, ahora que la actualización automática está habilitada, el cargador de
arranque también verificará esta propiedad. Si se establece en 1, esto se anula
ENABLE_SELF_UPDATE para detener las actualizaciones automáticas. Para
deshabilitar FREEZE_VERSION, tendrá que usar un arranque de tarjeta SD con
recovery.bin.
Los scripts de actualización de EEPROM personalizados también deben marcar este
indicador.
Defecto: 0

343
MANUAL RASPBERRY
PI 4

NETCONSOLE - registro avanzado


NETCONSOLE duplica mensajes de depuración en la interfaz de red. Las
direcciones IP y los puertos están definidos por la NETCONSOLE cadena.
NB NETCONSOLE se bloquea hasta que se establece el enlace ethernet o se agota
el tiempo de espera. El valor de tiempo de espera es DHCP_TIMEOUT aunque no se
intenta DHCP a menos que se solicite el inicio de la red.
Formato
src_port @ src_ip / dev_name, dst_port @ dst_ip / dst_mac
Por ejemplo, 6665 @ 169.254.1.1 /, 6666 @ /
Para simplificar el análisis, el gestor de arranque requiere que estén presentes todos
los separadores de campo. Se debe especificar la dirección IP de origen, pero los
siguientes campos pueden dejarse en blanco y asignárseles valores
predeterminados.
 src_port - 6665
 dev_name - "" (el nombre del dispositivo siempre se ignora)
 puerto_dst - 6666
 dst_ip - 255.255.255.255
 dst_mac - 00: 00: 00: 00: 00
Una forma de ver los datos es conectar el Pi de prueba 4 a otro Pi que ejecute
WireShark y seleccionar “udp.srcport == 6665” como filtro y seleccionar Analyze ->
Follow -> UDP stream ver como un registro ASCII.

NETCONSOLE no debe estar habilitado de forma predeterminada porque puede


causar problemas de red. Se puede habilitar bajo demanda a través de un filtro
GPIO, p. Ej.
# Habilite la depuración si GPIO 7 se baja
[gpio7 = 0]
CONSOLA DE RED = 6665 @ 169.254.1.1 /, 6666 @ /
Valor predeterminado: "" (no habilitado)
Longitud máxima: 32 caracteres

344
MANUAL RASPBERRY
PI 4

USB_MSD_EXCLUDE_VID_PID
Una lista de hasta 4 pares de VID / PID que especifican los dispositivos que el
cargador de arranque debe ignorar. Si coincide con un HUB, el HUB no se
enumerará, lo que provocará que se excluyan todos los dispositivos posteriores. Esto
está destinado a permitir que los dispositivos problemáticos (por ejemplo, muy lentos
para enumerar) sean ignorados durante la enumeración de arranque. Esto es
específico del cargador de arranque y no se transmite al sistema operativo.
El formato es una lista separada por comas de valores hexadecimales con el VID
como mordisco más significativo. No se permiten espacios. P.ej 034700a0,a4231234
Defecto: ""
USB_MSD_DISCOVER_TIMEOUT
Si no se encuentran dispositivos de almacenamiento masivo USB dentro de este
tiempo de espera, USB-MSD se detiene y se selecciona el siguiente modo de inicio.
Predeterminado: 20000 (20 segundos)
Versión: 2020-09-03
USB_MSD_LUN_TIMEOUT
Cuánto tiempo esperar en milisegundos antes de avanzar al siguiente LUN, por
ejemplo, un lector de TARJETA SD de múltiples ranuras. Esto aún se está
modificando, pero puede ayudar a acelerar el arranque si se conectan dispositivos
antiguos / lentos, así como un dispositivo USB-MSD rápido que contiene el sistema
operativo.
Predeterminado: 2000 (2 segundos)
USB_MSD_PWR_OFF_TIME
Durante el arranque del almacenamiento masivo USB, la alimentación de los puertos
USB se apaga durante un breve período de tiempo para garantizar el correcto
funcionamiento de los dispositivos de almacenamiento masivo USB. La mayoría de
los dispositivos funcionan correctamente con la configuración predeterminada:
cámbiela solo si tiene problemas para arrancar desde un dispositivo en particular. La
configuración USB_MSD_PWR_OFF_TIME=0 evitará que se apague la alimentación
de los puertos USB durante el arranque del almacenamiento masivo USB.

345
MANUAL RASPBERRY
PI 4

Mínimo: 250
Máximo: 5000
Predeterminado: 1000 (1 segundo)
XHCI_DEBUG
Esta propiedad es un campo de bits que controla la verbosidad de los mensajes de
depuración USB para el modo de arranque de almacenamiento masivo. Habilitar
todos estos mensajes genera una gran cantidad de datos de registro que ralentizarán
el arranque e incluso pueden provocar que el arranque falle. Para registros
detallados, es mejor usar NETCONSOLE.
Valor Tronco

0x1 Descriptores USB


0x2 Máquina de estado del modo de almacenamiento masivo
0x4 Máquina de estado del modo de almacenamiento masivo: detallado
0x8 Todas las solicitudes de USB
0x10 Máquinas de estado de dispositivo y concentrador
0x20 Todos los TRB xHCI (MUY VERBOSOS)
0x40 Todos los eventos xHCI (MUY VERBOSO)
Tabla 0-46 Valor NETCONSOLE.

Para combinar valores, súmelos. Por ejemplo:


# Habilite el almacenamiento masivo y el registro de descriptores USB
XHCI_DEBUG = 0x3
Predeterminado: 0x0 (no hay mensajes de depuración USB habilitados)
Propiedades de configuración en config.txt
boot_load_flags
Propiedad experimental para firmware personalizado (bare metal).
El bit 0 (0x1) indica que el archivo .elf es un firmware personalizado. Esto deshabilita
cualquier verificación de compatibilidad (por ejemplo, si se admite el arranque USB
MSD) y restablece PCIe antes de iniciar el ejecutable.
Defecto: 0x0
uart_2ndstage

346
MANUAL RASPBERRY
PI 4

Si se establece en 0x1, habilite el registro de depuración en la UART. En las


versiones de firmware más recientes (Raspberry Pi OS 2020-08-20 y posteriores), el
registro UART también se habilita automáticamente en start.elf.
La BOOT_UART propiedad también habilita el registro UART del cargador de
arranque, pero no habilita el registro UART a start.elf menos uart_2ndstage=1 que
también esté configurado.
Defecto: 0
eeprom_write_protect
El 2020-09-03 recovery.bin actualizador de EEPROM proporciona una función para
configurar la EEPROM Write Status Register. Esto se puede configurar para marcar
toda la EEPROM como protegida contra escritura o como protección clara contra
escritura.
Esta opción debe usarse junto con el /WP pin EEPROM que controla las
actualizaciones de EEPROM Write Status Register. Tirar /WP bajo (CM4
EEPROM_nEP o Pi4B TP5) NO protege contra escritura la EEPROM a menos que
Write Status Register también se haya configurado.
eeprom_write_protect ajustes en config.txt para recovery.bin.
Valor Descripción

Configura las regiones de protección contra escritura para cubrir toda la


1
EEPROM.
0 Borra las regiones de protección contra escritura.
-1 Hacer nada.
Tabla 0-47 eeprom_write_protect

NB flashrom no admite la eliminación de las regiones protegidas contra escritura y no


actualizará la EEPROM si se definen regiones protegidas contra escritura.
Defecto: -1
bootloader_update
Esta opción puede establecerse en 0 para bloquear la autoactualización sin
necesidad de actualizar la configuración EEPROM. Esto a veces es útil cuando se
actualizan varios Pis a través del arranque de red porque esta opción se puede

347
MANUAL RASPBERRY
PI 4

controlar por Raspberry Pi (por ejemplo, a través de un filtro de número de serie


config.txt).
Predeterminado: 1 (0 en versiones anteriores a 2020-09-03)
sección config.txt
Desde Raspberry Pi OS 2021-01-11, el firmware ahora lee la configuración del
cargador de arranque de la EEPROM. Si se encuentra una sección llamada
[config.txt], el contenido desde el inicio de esta sección hasta el final del archivo se
agrega en la memoria, al contenido del config.txt archivo leído desde la partición de
arranque. Esto se puede utilizar para aplicar automáticamente la configuración a
cada sistema operativo, por ejemplo, dtoverlays.
Si se especifica una configuración no válida que hace que el arranque falle, se
requerirá una imagen de recuperación EEPROM o RPIBOOT para restaurar la
EEPROM a los valores predeterminados de fábrica.
Arranque SSD NVMe
NVMe (memoria no volátil rápida) es un estándar para acceder a unidades de estado
sólido (SSD) a través de un bus PCIe. Puede conectar estas unidades a través de la
ranura PCIe en una placa de E / S de Compute Module 4 (CM4), lo que permite que
un CM4 se inicie desde SSD.
Hardware requerido
Necesita un SSD NVMe M.2. No puede conectar un SSD M.2 directamente en la
ranura PCIe de la placa de E / S; se necesita un adaptador. Tenga cuidado de
obtener el tipo correcto: puede encontrar un adaptador adecuado en línea buscando
'PCI-E 3.0 x1 Lane to M.2 NGFF M-Key SSD Nvme PCI Express Adapter Card'.
El sistema operativo Raspberry Pi admite el acceso a unidades NVMe, aunque
actualmente solo se admite el arranque desde NVMe mediante software de versión
preliminar (consulte el "software necesario" a continuación). Para comprobar que su
unidad NVMe está conectada correctamente, inicie el sistema operativo Raspberry Pi
desde otra unidad y ejecútelo ls -l /dev/nvme*; Ejemplo de salida.
crw ------- 1 raíz raíz 245, 0 9 de marzo 14:58 / dev / nvme0
brw-rw ---- 1 disco raíz 259, 0 9 de marzo 14:58 / dev / nvme0n1

348
MANUAL RASPBERRY
PI 4

Si necesita conectar la unidad NVMe a una PC o Mac, puede usar un adaptador


USB: busque 'Caja externa de unidad de estado sólido NVME PCI-E M-Key'. El
gabinete debe admitir SSD de clave M.
Software requerido
Para arrancar desde NVMe, necesita una versión reciente del cargador de arranque
(julio de 2021) y versiones preliminares del firmware VideoCore y del kernel de Linux
Raspberry Pi OS.
Cargador de arranque
Necesita usar rpiboot para actualizar el cargador de arranque CM4. Las instrucciones
para construir rpiboot y configurar la placa IO para cambiar la ROM al modo usbboot
se encuentran en el repositorio usbboot Github.
Agregar el modo de arranque NVMe 6a BOOT_ORDER en recovery/boot.conf.
Firmware y kernel
Debe cargar versiones preliminares del firmware VideoCore y el kernel de Linux de
Raspberry Pi OS en el disco NVMe. Cuando este software se lance oficialmente,
simplemente puede escribir el software en el disco NVMe directamente con la
aplicación Raspberry Pi Imager; hasta entonces, la forma más sencilla de realizar la
actualización es:
1. Arranque el CM4 con un SSD en blanco conectado a la ranura PCIe
2. Utilice la SD Card Copier aplicación en el escritorio para copiar la imagen del
sistema operativo en ejecución al disco NVMe, asegurándose de habilitar la
opción "nuevos ID de partición".
3. Actualice el firmware y el kernel del disco NVMe a las últimas versiones
preliminares mediante rpi-update :
mkdir mnt
mkdir mnt / fat32
mkdir mnt / ext4
sudo mount / dev / nvme0n1p1 mnt / fat32
sudo mount / dev / nvme0n1p2 mnt / ext4
sudo ROOT_PATH = mnt / ext4 BOOT_PATH = mnt / fat32 rpi-update

349
MANUAL RASPBERRY
PI 4

Finalmente, si está utilizando CM4 lite, retire la tarjeta SD y la placa se iniciará


desde el disco NVMe. Para las versiones de CM4 con eMMC, asegúrese de haber
configurado NVMe primero en el orden de inicio.
NVMe BOOT_ORDER
Este comportamiento de arranque se controla mediante la BOOT_ORDER
configuración de la EEPROM: hemos agregado un nuevo modo de arranque 6para
NVMe.
Ejemplo de salida UART cuando el cargador de arranque detecta la unidad NVMe:
Modo de arranque: SD (01) orden f64
Modo de arranque: USB-MSD (04) orden f6
Modo de arranque: NVME (06) orden f
VID 0x144d MN Samsung SSD 970 EVO Plus 250 GB
NVME activado
Luego encontrará una partición FAT y cargará start4.elf:
Leer start4.elf bytes 2937840 hnd 0x00050287 hash ''
Luego cargará el kernel y arrancará el sistema operativo:
MESS: 00: 00: 07.096119: 0: brfs: Archivo leído: /mfs/sd/kernel8.img
MESS: 00: 00: 07.098682: 0: Cargando 'kernel8.img' al tamaño 0x80000 0x1441a00
MESS: 00: 00: 07.146055: 0: [0.000000] Arrancando Linux en CPU física
0x0000000000 [0x410fd083]
En Linux, el SSD aparece como /dev/nvme0 y el "espacio de nombres" como
/dev/nvme0n1. Habrá dos particiones /dev/nvme0n1p1 (FAT) y
/dev/nvme0n1p2(EXT4). Úselo lsblk para verificar las asignaciones de partición:
NOMBRE MAJ: TAMAÑO MÍNIMO RM TIPO RO PUNTO DE MONTAJE
nvme0n1 259: 0 0232,9G 0 disco
├─nvme0n1p1 259: 1 0 256M 0 parte / arranque
└─nvme0n1p2 259: 2 0232.6G 0 parte /
Solución de problemas
Si el proceso de arranque falla, presente un problema en el repositorio rpi-eeprom
Github , incluida una copia de la consola y todo lo que se muestre en la pantalla
durante el arranque.
350
MANUAL RASPBERRY
PI 4

Interfaz de visualización paralela (DPI)


Una interfaz RGB paralela de hasta 24 bits está disponible en todas las placas
Raspberry Pi con el encabezado de 40 vías y los módulos de cómputo. Esta interfaz
permite conectar pantallas RGB paralelas a la Raspberry Pi GPIO en RGB24 (8 bits
para rojo, verde y azul) o RGB666 (6 bits por color) o RGB565 (5 bits rojo, 6 verde y
5 azul).
Esta interfaz está controlada por el firmware de la GPU y puede ser programada por
un usuario a través de parámetros especiales config.txt y habilitando la superposición
correcta del árbol de dispositivos de Linux.
Pines GPIO
Una de las funciones alternativas que se pueden seleccionar en el banco 0 de
Raspberry Pi GPIO es DPI (Display Parallel Interface), que es una interfaz paralela
de reloj simple (hasta 8 bits de R, G y B; reloj, habilitación, hsync y vsync). Esta
interfaz está disponible como función alternativa 2 (ALT2) en el banco GPIO 0:

351
MANUAL RASPBERRY
PI 4

Ilustración 0-54 Función GPIO alternativa de DPI

NOTA
Hay varias formas en que los valores de color se pueden presentar en los pines de
salida DPI en los modos 565, 666 o 24 bits.

Ilustración 0-55 Salida de color DPI

352
MANUAL RASPBERRY
PI 4

Deshabilitar otros periféricos GPIO


Tenga en cuenta que todas las demás superposiciones de periféricos que utilizan
pines GPIO en conflicto deben desactivarse. En config.txt, tenga cuidado de
comentar o invertir cualquier dtparams que habilite I2C o SPI:
dtparam = i2c_arm = apagado
dtparam = spi = apagado
Control del formato de salida
El formato de salida (reloj, formato de color, polaridad de sincronización, habilitación)
se puede controlar con un número mágico (entero sin signo o valor hexadecimal con
el prefijo 0x) pasado al dpi_output_format parámetro en config.txt creado a partir de
los siguientes campos:
output_format = (dpi_output_format >> 0) & 0xf;
rgb_order = (dpi_output_format >> 4) & 0xf;

output_enable_mode = (dpi_output_format >> 8) & 0x1;


invert_pixel_clock = (dpi_output_format >> 9) & 0x1;

hsync_disable = (dpi_output_format >> 12) & 0x1;


vsync_disable = (dpi_output_format >> 13) & 0x1;
output_enable_disable = (dpi_output_format >> 14) & 0x1;

hsync_polarity = (dpi_output_format >> 16) & 0x1;


vsync_polarity = (dpi_output_format >> 17) & 0x1;
output_enable_polarity = (dpi_output_format >> 18) & 0x1;

hsync_phase = (dpi_output_format >> 20) & 0x1;


vsync_phase = (dpi_output_format >> 21) & 0x1;
output_enable_phase = (dpi_output_format >> 22) & 0x1;

formato de salida:
1: DPI_OUTPUT_FORMAT_9BIT_666
353
MANUAL RASPBERRY
PI 4

2: DPI_OUTPUT_FORMAT_16BIT_565_CFG1
3: DPI_OUTPUT_FORMAT_16BIT_565_CFG2
4: DPI_OUTPUT_FORMAT_16BIT_565_CFG3
5: DPI_OUTPUT_FORMAT_18BIT_666_CFG1
6: DPI_OUTPUT_FORMAT_18BIT_666_CFG2
7: DPI_OUTPUT_FORMAT_24BIT_888

rgb_order:
1: DPI_RGB_ORDER_RGB
2: DPI_RGB_ORDER_BGR
3: DPI_RGB_ORDER_GRB
4: DPI_RGB_ORDER_BRG

output_enable_mode:
0: DPI_OUTPUT_ENABLE_MODE_DATA_VALID
1: DPI_OUTPUT_ENABLE_MODE_COMBINED_SYNCS

invert_pixel_clock:
0: los datos RGB cambian en el borde ascendente y son estables en el borde
descendente
1: Los datos RGB cambian en el borde descendente y son estables en el borde
ascendente.

hsync / vsync / output_enable_polarity:


0: predeterminado para el modo HDMI
1: invertido

Fases de hsync / vsync / oe:


0: DPI_PHASE_POSEDGE
1: DPI_PHASE_NEGEDGE

354
MANUAL RASPBERRY
PI 4

Nota: todos los campos de un solo bit actúan como un "comportamiento


predeterminado de inversión".
Controlar tiempos y resoluciones
En el firmware con fecha de agosto de 2018 o posterior, la hdmi_timings entrada
config.txt que se usó anteriormente para configurar los tiempos de DPI ha sido
reemplazada por un nuevo dpi_timings parámetro. Si el dpi_timings parámetro no
está presente, el sistema volverá a utilizar el hdmi_timings parámetro para garantizar
la compatibilidad con versiones anteriores. Si ninguno de los dos está presente y se
solicita un modo personalizado, se utiliza un conjunto de parámetros predeterminado
para VGAp60.
Los parámetros dpi_group y dpi_mode config.txt se usan para establecer modos
predeterminados (modos DMT o CEA como los usa HDMI) o un usuario puede
generar modos personalizados .
Si configura un modo DPI personalizado, en config.txt use:
dpi_group = 2
dpi_mode = 87
Esto le indicará al controlador que utilice los tiempos personalizados dpi_timings
(usos de firmware más antiguos hdmi_timings) para el panel DPI.
Los dpi_timings parámetros se especifican como un conjunto de parámetros
delimitados por espacios:
dpi_timings = <h_active_pixels> <h_sync_polarity> <h_front_porch> <h_sync_pulse>
<h_back_porch> <v_active_lines> <v_sync_polarity> <v_front_porch>
<v_sync_pulse> <v_back_pix_aff_sync> <v_sync_pulse> <v_back_pix_aff_sync>
<v_sync_pulse> <v_back_pix_app_off_sync> <p> <aspect_ratio>

<h_active_pixels> = píxeles horizontales (ancho)


<h_sync_polarity> = invertir polaridad hsync
<h_front_porch> = relleno horizontal hacia adelante desde el borde activo DE
<h_sync_pulse> = ancho de pulso hsync en relojes de píxeles
<h_back_porch> = acolchado trasero vertical desde el borde activo DE
<v_active_lines> = altura de píxeles verticales (líneas)
355
MANUAL RASPBERRY
PI 4

<v_sync_polarity> = invertir polaridad vsync


<v_front_porch> = relleno vertical hacia adelante desde el borde activo DE
<v_sync_pulse> = ancho de pulso vsync en relojes de píxeles
<v_back_porch> = acolchado trasero vertical desde el borde activo DE
<v_sync_offset_a> = dejar en cero
<v_sync_offset_b> = dejar en cero
<pixel_rep> = dejar en cero
<frame_rate> = frecuencia de actualización de la pantalla en Hz
<entrelazado> = dejar en cero
<pixel_freq> = frecuencia de reloj (ancho * alto * velocidad de fotogramas)
<aspect_ratio> = *

* La relación de aspecto se puede establecer en uno de ocho valores (elija el más


cercano para su pantalla):

HDMI_ASPECT_4_3 = 1
HDMI_ASPECT_14_9 = 2
HDMI_ASPECT_16_9 = 3
HDMI_ASPECT_5_4 = 4
HDMI_ASPECT_16_10 = 5
HDMI_ASPECT_15_9 = 6
HDMI_ASPECT_21_9 = 7
HDMI_ASPECT_64_27 = 8
Superposiciones
Se utiliza una superposición de árbol de dispositivos de Linux para cambiar los pines
GPIO al modo correcto (función alternativa 2). Como se mencionó anteriormente, la
GPU es responsable de impulsar la pantalla DPI. Por lo tanto, no existe un
controlador de Linux; la superposición simplemente establece las funciones alt GPIO
correctamente.
Se proporciona una superposición de DPI 'completa' (dpi24.dtb) que establece los 28
GPIO en modo ALT2, proporcionando los 24 bits completos de bus de color, así
356
MANUAL RASPBERRY
PI 4

como la sincronización h y v, la habilitación y el reloj de píxeles. Tenga en cuenta


que esto utiliza todos los pines GPIO del banco 0.
Se proporciona una segunda superposición (vga666.dtb) para controlar las señales
del monitor VGA en el modo 666 que no necesita los pines de reloj y DE (GPIO 0 y 1)
y solo requiere GPIO 4-21 para el color (usando el modo 5).
Estas superposiciones son bastante triviales y un usuario puede editarlas para crear
una superposición personalizada para habilitar solo los pines necesarios para su
caso de uso específico. Por ejemplo, si uno estaba usando una pantalla DPI usando
vsync, hsync, pclk y de pero en modo RGB565 (modo 2), entonces la superposición
dpi24.dtb podría editarse para que los GPIO 20-27 no se cambiaran al modo DPI y
por tanto, podría utilizarse para otros fines.
config.txt Configuración de ejemplo
Adaptador Gert VGA666
Las instrucciones están desactualizadas, por lo tanto, se usará la configuración a
continuación.
dtoverlay = vga666
enable_dpi_lcd = 1
display_default_lcd = 1
dpi_group = 2
dpi_mode = 82
Panel LCD de 800x480
NOTA
Esto se probó con la placa complementaria DPI de Adafruit y un panel LCD de
800x480.
dtoverlay = dpi24
overscan_left = 0
overscan_right = 0
overscan_top = 0
overscan_bottom = 0
framebuffer_width = 800
framebuffer_height = 480
357
MANUAL RASPBERRY
PI 4

enable_dpi_lcd = 1
display_default_lcd = 1
dpi_group = 2
dpi_mode = 87
dpi_output_format = 0x6f005
dpi_timings = 800 0 40 48 88480 0 13 3 32 0 0 0 60 0 32000000 6
E / S de uso general (GPIO)
Los pines de E / S de propósito general (GPIO) se pueden configurar como entrada
de propósito general, salida de propósito general o como una de hasta seis
configuraciones alternativas especiales, cuyas funciones dependen de los pines.
Hay tres bancos GPIO en BCM2835. Cada uno de los tres bancos tiene su propio pin
de entrada VDD. En Raspberry Pi, todos los bancos GPIO se alimentan desde 3.3V.
ADVERTENCIA
La conexión de un GPIO a un voltaje superior a 3.3V probablemente destruirá el
bloque GPIO dentro del SoC.
Una selección de pines del Banco 0 está disponible en el encabezado P1 en
Raspberry Pi.
Almohadillas GPIO
Las conexiones GPIO en el paquete BCM2835 a veces se denominan en la hoja de
datos de periféricos "pads", un término de diseño de semiconductores que significa
"conexión de chip al mundo exterior".
Los pads son controladores de salida / búfer de entrada CMOS configurables push-
pull. Los ajustes de control basados en registros están disponibles para:
 Activar / desactivar pull-up / pull-down interno
 Fuerza de transmisión de salida
 Filtrado de disparador Schmitt de entrada
Estados de encendido
Todos los pines GPIO vuelven a las entradas de uso general en el reinicio de
encendido. También se aplican los estados de extracción predeterminados, que se
detallan en la tabla de funciones alternativas en la hoja de datos de periféricos ARM.
La mayoría de los GPIO tienen aplicada una extracción predeterminada.
358
MANUAL RASPBERRY
PI 4

Interrupciones
Cada pin GPIO, cuando se configura como una entrada de propósito general, se
puede configurar como una fuente de interrupción para el ARM. Se pueden
configurar varias fuentes de generación de interrupciones:
 Sensible al nivel (alto / bajo)
 Borde ascendente / descendente
 Flanco ascendente / descendente asincrónico
Las interrupciones de nivel mantienen el estado de interrupción hasta que el software
del sistema borra el nivel (por ejemplo, dando servicio al periférico adjunto que
genera la interrupción).
La detección normal de flanco ascendente / descendente tiene una pequeña cantidad
de sincronización incorporada en la detección. A la frecuencia del reloj del sistema, el
pin se muestrea con el criterio para la generación de una interrupción siendo una
transición estable dentro de una ventana de tres ciclos, es decir, un registro de '1 0 0'
o '0 1 1'. La detección asincrónica evita esta sincronización para permitir la detección
de eventos muy estrechos.
Funciones alternativas
Casi todos los pines GPIO tienen funciones alternativas. Los bloques periféricos
internos de BCM2835 se pueden seleccionar para que aparezcan en uno o más de
un conjunto de pines GPIO, por ejemplo, los buses I2C se pueden configurar en al
menos 3 ubicaciones separadas. El control de almohadilla, como la fuerza de la
unidad o el filtrado de Schmitt, todavía se aplica cuando el pin está configurado como
una función alternativa.
Especificaciones de voltaje
La siguiente tabla proporciona las diversas especificaciones de voltaje para los pines
GPIO.
Condiciones
Símbolo Parámetro Min Típico Max Unidad

Entrada de VDD IO = 1,8


V IL - - 0,6 V
bajo voltaje V

359
MANUAL RASPBERRY
PI 4

VDD IO = 2,7
- - 0,8 V
V
VDD IO = 3,3
- - 0,9 V
V
Entrada de VDD IO = 1,8
V IH 1.0 - - V
alto voltaje a V
VDD IO = 2,7
1.3 - - V
V
VDD IO = 3,3
1,6 - - V
V
Corriente de
Yo IL fuga de TA = + 85 ° C - - 5 µA
entrada
Capacitancia
C EN - - 5 - pF
de entrada
VDD IO =
Salida de baja
V OL 1.8V, LIO = - - - 0,2 V
tensión b
2mA
VDD IO = 2,7
V, LIO = -2 - - 0,15 V
mA
VDD IO = 3,3
V, LIO = -2 - - 0,14 V
mA
VDD IO =
Salida de alto
V OH 1.8V, IOH = 1,6 - - V
voltaje b
2mA
VDD IO = 2,7
V, IOH = 2 2.5 - - V
mA
VDD IO = 3,3
V, IOH = 2 3,0 - - V
mA

360
MANUAL RASPBERRY
PI 4

Salida baja VDD IO = 1,8


Yo OL 12 - - mamá
corriente c V, VO = 0,4 V
VDD IO = 2,7
17 - - mamá
V, VO = 0,4 V
VDD IO = 3,3
18 - - mamá
V, VO = 0,4 V
Salida de alta VDD IO = 1,8
Yo oh 10 - - mamá
corriente c V, VO = 1,4 V
VDD IO = 2,7
dieciséis - - mamá
V, VO = 2,3 V
VDD IO = 3,3
17 - - mamá
V, VO = 2,3 V
Resistencia sesenta
R PU - 50 - kΩ
pullup y cinco
Resistencia sesenta
R PD - 50 - kΩ
pulldown y cinco
Tabla 0-48 Especificaciones de voltaje

 a Histéresis habilitada
 b Intensidad del variador predeterminada (8mA)
 c Intensidad máxima del variador (16mA)
Control de pads GPIO
Las intensidades de la unidad GPIO no indican una corriente máxima, sino una
corriente máxima por debajo de la cual la almohadilla seguirá cumpliendo con la
especificación. Debe configurar las potencias de la unidad GPIO para que coincidan
con el dispositivo que se está conectando para que el dispositivo funcione
correctamente.
Cómo se controla la fuerza de la unidad
Dentro de la almohadilla hay varios controladores en paralelo. Si la fuerza del
variador se establece en un valor bajo (0b000), la mayoría de estos son de tres
estados, por lo que no agregan nada a la corriente de salida. Si se aumenta la fuerza

361
MANUAL RASPBERRY
PI 4

de la unidad, se colocan más y más unidades en paralelo. El siguiente diagrama


muestra ese comportamiento:

Ilustración 0-56 Diagrama de fuerza de la unidad GPIO

¿Qué significa el valor actual?


NOTA
El valor actual especifica la corriente máxima por debajo de la cual la almohadilla
seguirá cumpliendo la especificación.
1. Es no la corriente que la almohadilla entregará
2. Es no un límite de corriente de modo que la almohadilla no va a explotar
La salida de la almohadilla es una fuente de voltaje:
 Si se establece en alto, la almohadilla intentará conducir la salida al voltaje del
riel, que en la Raspberry Pi es 3V3 (3.3 voltios)
 Si se establece bajo, la almohadilla intentará conducir la salida a tierra (0
voltios)

362
MANUAL RASPBERRY
PI 4

La almohadilla intentará impulsar la salida hacia arriba o hacia abajo. El éxito


dependerá de los requisitos de lo que esté conectado. Si la almohadilla está en
cortocircuito a tierra, no podrá conducir alto. En realidad, intentará suministrar tanta
corriente como pueda, y la corriente solo está limitada por la resistencia interna.
Si la almohadilla se conduce alto y tiene un cortocircuito a tierra, a su debido tiempo
fallará. Lo mismo es cierto si lo conecta a 3V3 y lo baja.
El cumplimiento de la especificación está determinado por los niveles de voltaje
garantizados. Debido a que las almohadillas son digitales, hay dos niveles de voltaje,
alto y bajo. Los puertos de E / S tienen dos parámetros que se ocupan del nivel de
salida:
 V OL , el voltaje máximo de bajo nivel (0.14V a 3V3 VDD IO)
 V OH , el voltaje mínimo de alto nivel (3.0V a 3V3 VDD IO)
 V OL = 0.14V significa que si la salida es baja, será <= 0.14V. V OH = 3.0V
significa que si la salida es alta, será> = 3.0V.
Por lo tanto, una fuerza de impulsión de 16 mA significa:
Si configura la almohadilla en alto, puede consumir hasta 16 mA y se garantiza que
el voltaje de salida sea> = V OH . Esto también significa que si establece una
potencia de accionamiento de 2 mA y consume 16 mA, el voltaje no será V OH sino
más bajo. De hecho, es posible que no sea lo suficientemente alto para que un
dispositivo externo lo considere alto.
NOTA
En los dispositivos Compute Module, es posible cambiar el VDD IO del estándar 3V3.
En este caso, V OL y V OH cambiarán de acuerdo con la tabla de la página
vinculada.
¿Por qué no configuro todos mis pads a la corriente máxima?
1. El suministro de Raspberry Pi 3V3 fue diseñado con una corriente máxima de
~ 3mA por pin GPIO. Si carga cada pin con 16 mA, la corriente total es 272
mA. El suministro de 3V3 colapsará bajo ese nivel de carga.
2. Se producirán grandes picos de corriente, especialmente si tiene una carga
capacitiva. Eso "rebotará" alrededor de todos los otros pines cercanos. Es

363
MANUAL RASPBERRY
PI 4

probable que cause interferencia con la tarjeta SD o incluso con el


comportamiento de la SDRAM.
¿Qué es una corriente segura?
Toda la electrónica de las almohadillas está diseñada para 16 mA. Ese es un valor
seguro por debajo del cual no dañará el dispositivo. Incluso si configura la fuerza de
la unidad en 2 mA y luego la carga para que salgan 16 mA, esto no dañará el
dispositivo. Aparte de eso, no hay una corriente segura máxima garantizada.
Direcciones GPIO
 0x 7e10 002c ALMOHADILLAS (GPIO 0-27)
 0x 7e10 0030 ALMOHADILLAS (GPIO 28-45)
 0x 7e10 0034 ALMOHADILLAS (GPIO 46-53)
Nombre del
Bits Descripción Escribe Reiniciar
campo

Debe ser 0x5A al


31:2
CONTRASEÑA escribir; contraseña de protección W 0
4
contra escritura accidental
Reservado : escriba 0, lea como
23: 5
no importa
Velocidad de subida; 0 =
velocidad de respuesta limitada; 1
4 MONTÓN RW 0x1
= velocidad de respuesta no
limitada
Habilite la histéresis de entrada; 0
3 HYST RW 0x1
= deshabilitado; 1 = habilitado
Impulse la fuerza, consulte la lista
2: 0 CONDUCIR RW 0x3
de desglose a continuación
Tabla 0-49 Direcciones GPIO bits

Cuidado con las limitaciones de SSO (salidas de conmutación simultáneas) que


dependen del dispositivo y de la calidad y el diseño de la PCB, la cantidad y calidad
de los condensadores de desacoplamiento, el tipo de carga en las almohadillas
(resistencia, capacitancia) y otros factores fuera del control de Raspberry Pi.

364
MANUAL RASPBERRY
PI 4

Lista de fuerza de conducción


 0 = 2 mA
 1 = 4 mA
 2 = 6 mA
 3 = 8 mA
 4 = 10 mA
 5 = 12 mA
 6 = 14 mA
 7 = 16 mA
Direcciones periféricas
Si no hay un controlador de kernel disponible, y un programa necesita acceder a una
dirección de periférico directamente con mmap, necesita saber en qué parte del
mapa de memoria virtual se ha colocado el segmento de bus de periférico. Esto varía
según el modelo de Raspberry Pi que se utilice, por lo que hay tres funciones
auxiliares en bcm_host.c para ayudar a proporcionar independencia de la plataforma.
NOTA
Se debe utilizar estas funciones en lugar de valores codificados, ya que esto
garantizará la compatibilidad futura.
bcm_host_get_peripheral_address sin firmar ()
Esto devuelve la dirección física del lado ARM donde se asignan los periféricos.
bcm_host_get_peripheral_size sin firmar ()
Esto devuelve el tamaño del espacio del periférico.
bcm_host_get_sdram_address () sin firmar
Esto devuelve la dirección de bus de la SDRAM.
Estos son los valores actuales al momento de escribir este artículo, en forma de
tabla:
Dirección Tamaño Dirección
SoC Fuente
periférica periférico SDRAM

BCM2835 0x20000000 0x01000000 0x40000000 bcm2835.dtsi


BCM2836 0x3f000000 0x01000000 0xC0000000 bcm2836.dtsi

365
MANUAL RASPBERRY
PI 4

BCM2837 0x3f000000 0x01000000 0xC0000000 bcm2837.dtsi


BCM2711 0xfe000000 0x01800000 0xc0000000 bcm2711.dtsi
Tabla 0-50 Bus de la SDRAM

Construyendo un programa en C usando estas funciones


El archivo de inclusión y la biblioteca se instalan de forma predeterminada en un
sistema operativo Raspberry Pi. Simplemente agregue la siguiente línea a su
programa C:
#include <bcm_host.h>
Ejemplo:
#include <stdio.h>
#include <bcm_host.h>

int main(void) {
printf("bcm_host_get_peripheral_address -> 0x%08x\n",
bcm_host_get_peripheral_address());
printf("bcm_host_get_peripheral_size -> 0x%08x\n",
bcm_host_get_peripheral_size());
printf("bcm_host_get_sdram_address -> 0x%08x\n",
bcm_host_get_sdram_address());

return 0;
}
Vincular con:
-lbcm_host
Entonces, una compilación de línea de comando simple podría ser:
cc myfile.c -I/opt/vc/include -L/opt/vc/lib -lbcm_host -o myfile
Uso industrial de Raspberry Pi
La Raspberry Pi se usa a menudo como parte de otro producto. Esta documentación
describe algunas instalaciones adicionales disponibles para usar otras capacidades
del Pi.

366
MANUAL RASPBERRY
PI 4

Configuraciones programables de una sola vez


Hay varios valores de OTP que se pueden utilizar. Para ver una lista de todos los
valores de OTP , puede usar:
vcgencmd otp_dump
Algunas líneas interesantes de este volcado son:
 28 - Número de serie
 29 - Complemento de uno del número de serie
 30 - Número de revisión
Además, de 36 a 43 (inclusive), hay ocho filas de 32 bits disponibles para el cliente.
Para programar estos bits, deberá utilizar vcmailbox. Esta es una interfaz de
controlador de Linux para el firmware que manejará la programación de las filas.
Para hacer esto, consulte la documentación y la aplicación de ejemplo vcmailbox .
La aplicación vcmailbox se puede utilizar directamente desde la línea de comandos
en una compilación del sistema operativo Raspberry Pi Raspberry Pi. Un ejemplo de
uso sería:
/opt/vc/bin/vcmailbox 0x00010004 8 8 0 0
que devolverá algo como:
0x00000020 0x80000000 0x00010004 0x00000008 0x800000008 0xnnnnnnnn
0x00000000 0x00000000
Lo anterior usa la interfaz de propiedad del buzón GET_BOARD_SERIAL con un
tamaño de solicitud de 8 bytes y un tamaño de respuesta de 8 bytes (enviando dos
enteros para la solicitud 0, 0). La respuesta a esto serán dos números enteros
(0x00000020 y 0x80000000) seguidos del código de etiqueta, la longitud de la
solicitud, la longitud de la respuesta (con el bit 31 establecido para indicar que es una
respuesta) y luego el número de serie de 64 bits (donde el MS 32 bits son siempre
0).
Escribir y leer valores de OTP del cliente
ADVERTENCIA
Los valores de OTP son programables una vez, una vez que un bit se ha cambiado
de 0 a 1, no se puede volver a cambiar.

367
MANUAL RASPBERRY
PI 4

Para configurar los valores de OTP del cliente, deberá utilizar la


SET_CUSTOMER_OTP etiqueta (0x38021) de la siguiente manera:
/opt/vc/bin/vcmailbox 0x00038021 [8 + number * 4] [8 + number * 4] [start_num]
[number] [value] [value] [value] ...
 start_num = la primera fila para programar de 0 a 7
 number = número de filas a programar
 value = cada valor a programar
Entonces, para programar las filas 4, 5 y 6 del cliente OTP en 0x11111111,
0x22222222, 0x33333333 respectivamente, usaría:
/opt/vc/bin/vcmailbox 0x00038021 20 20 4 3 0x11111111 0x22222222 0x33333333
Esto luego programará las filas 40, 41 y 42.
Para volver a leer los valores, puede utilizar:
/opt/vc/bin/vcmailbox 0x00030021 20 20 4 3 0 0 0
que debería mostrar:
0x0000002c 0x80000000 0x00030021 0x00000014 0x80000014 0x00000000
0x00000003 0x11111111 0x22222222 0x33333333
Si desea integrar esta funcionalidad en su propio código, debería poder lograrlo
utilizando el código vcmailbox.c como ejemplo.
Bloquear los cambios de OTP
Es posible bloquear los cambios de OTP para evitar que se vuelvan a editar. Esto se
puede hacer usando un argumento especial con el buzón de escritura OTP:
/opt/vc/bin/vcmailbox 0x00038021 8 8 0xffffffff 0xaffe0000
Una vez bloqueados, los valores de OTP del cliente ya no se pueden modificar.
Tenga en cuenta que esta operación de bloqueo es irreversible.
Haciendo ilegibles los bits de OTP del cliente
Es posible evitar que se lean los bits de OTP del cliente. Esto se puede hacer usando
un argumento especial con el buzón de escritura OTP:
/opt/vc/bin/vcmailbox 0x00038021 8 8 0xffffffff 0xaffebabe
Es poco probable que esta operación sea útil para la gran mayoría de usuarios y es
irreversible.

368
MANUAL RASPBERRY
PI 4

Definiciones de bit y registro OTP


Todos los SoC utilizados por la gama Raspberry Pi tienen un bloque de memoria
programable único (OTP) incorporado.
Tiene una longitud de 66 valores de 32 bits, aunque solo unas pocas ubicaciones
tienen datos programados de fábrica.
El vcgencmd para mostrar el contenido de la OTP es:
vcgencmd otp_dump
Registros OTP
Esta lista contiene la información disponible públicamente sobre los registros. Si un
registro o bit no está definido aquí, entonces no es público.
17 - registro de modo de arranque
 Bit 1: establece la frecuencia del oscilador en 19,2 MHz
 Bit 3: habilita pull ups en los pines SDIO
 Bit 19: habilita el modo de arranque GPIO
 Bit 20: configura el banco para verificar el modo de arranque GPIO
 Bit 21: habilita el arranque desde la tarjeta SD
 Bit 22: establece el banco desde el que arrancar
 Bit 28: habilita el arranque del dispositivo USB
 Bit 29: habilita el arranque del host USB (ethernet y almacenamiento masivo)
NOTA
En BCM2711, el modo de arranque lo define la configuración EEPROM del cargador
de arranque en lugar de OTP.
18 - copia del registro bootmode
28 - número de serie
29 - ~ (número de serie)
30 - xref: raspberry-pi.adoc # raspberry-pi-revision-codes 1
33 - revisión de placa extendida - el significado depende del modelo de placa.
Este dispositivo está disponible a través de árboles en /proc/device-tree/chosen/rpi-
boardrev-ext y para los propósitos de prueba este valor OTP puede ser anulado
temporalmente estableciendo board_rev_ext en config.txt.

369
MANUAL RASPBERRY
PI 4

 Módulo de cálculo 4
o Bit 30: si el módulo de cómputo tiene un módulo WiFi instalado
 0 - WiFi
 1 - Sin WiFi
o Bit 31: Si el módulo de cálculo tiene instalado un módulo EMMC
 0 - EMMC
 1 - Sin EMMC (Lite)
 Pi 400
o Bits 0-7: el código de país del teclado predeterminado utilizado por
piwiz
36-43 - Valores OTP del cliente
45 - Clave de decodificación MPG2
46 - Clave de decodificación WVC1 47-55
- Reservado para inicio firmado en el módulo de
cómputo 4 64/65 - Dirección MAC; si está configurado, el sistema lo usará con
preferencia a la dirección generada automáticamente según el número de serie
66 - registro de inicio avanzado (no BCM2711)
 Bits 0-6: GPIO para el pin de salida ETH_CLK
 Bit 7: habilita la salida ETH_CLK
 Bits 8-14: GPIO para pin de salida LAN_RUN
 Bit 15: habilita la salida LAN_RUN
 Bit 24: extiende el parámetro de tiempo de espera del HUB USB
 Bit 25: Frecuencia ETH_CLK:
o 0 - 25 MHz
o 1 - 24 MHz
También contiene bits para deshabilitar la sobretensión, la programación de OTP y la
lectura de OTP.
Fuente de alimentación
Los requisitos de la fuente de alimentación varían según el modelo de Raspberry Pi.
Todos los modelos requieren un suministro de 5.1V, pero la corriente requerida
370
MANUAL RASPBERRY
PI 4

generalmente aumenta según el modelo. Todos los modelos hasta la Raspberry Pi


3 requieren un conector de alimentación micro USB, mientras que la Raspberry Pi 4
usa un conector USB-C.
La cantidad exacta de corriente (mA) que requiere la Raspberry Pi depende de lo que
le conecte. La siguiente tabla muestra varios requisitos actuales.
Capacidad de
Consumo de
corriente Consumo máximo de
corriente activo
Producto recomendada de la corriente periférico
típico de placa
fuente de USB total
desnuda
alimentación

Raspberry
700 mA 500 mA 200 mA
Pi Modelo A
Raspberry
1.2A 500 mA 500 mA
Pi Modelo B
Raspberry
Pi Modelo A 700 mA 500 mA 180 mA
+
Raspberry
Pi Modelo B 1.8A 1.2A 330mA
+
Raspberry
Pi 2 Modelo 1.8A 1.2A 350 mA
B
Raspberry
Pi 3 Modelo 2.5A 1.2A 400 mA
B
Limitado únicamente
Raspberry
por las clasificaciones
Pi 3 Modelo 2.5A 350 mA
de PSU, placa y
A+
conector.
Raspberry
Pi 3 Modelo 2.5A 1.2A 500 mA
B+
Raspberry 3.0A 1.2A 600 mA
371
MANUAL RASPBERRY
PI 4

Pi 4 Modelo
B
Limitado únicamente
Raspberry por las clasificaciones
1.2A 100 mA
Pi Zero de PSU, placa y
conector
Limitado únicamente
Raspberry
por las clasificaciones
Pi Zero W / 1.2A 150 mA
de PSU, placa y
WH
conector.
Limitado únicamente
Raspberry por las clasificaciones
2A 350 mA
Pi Zero 2 W de PSU, placa y
conector.
Tabla 0-51 Fuente de alimentación

Raspberry Pi ha desarrollado sus propias fuentes de alimentación para usar con


todos los modelos. Para Raspberry Pi 4, se recomienda el suministro USB-C 3A
Si necesita conectar un dispositivo USB que cumpla con los requisitos de energía por
encima de los valores especificados en la tabla anterior, debe conectarlo mediante
un concentrador USB con alimentación externa.
Requisitos de energía típicos
Los requisitos de energía específicos de cada modelo se muestran a continuación.
Capacidad de
Consumo máximo Consumo de
corriente
de corriente corriente activo
Producto recomendada de
periférico USB típico de placa
la fuente de
total desnuda
alimentación

Raspberry Pi
700 mA 500 mA 200 mA
Modelo A
Raspberry Pi
1.2A 500 mA 500 mA
Modelo B
Raspberry Pi 700 mA 500 mA 180 mA

372
MANUAL RASPBERRY
PI 4

Modelo A +
Raspberry Pi
1.8A 1.2A 330mA
Modelo B +
Raspberry Pi 2
1.8A 1.2A 350 mA
Modelo B
Raspberry Pi 3
2.5A 1.2A 400 mA
Modelo B
Limitado
únicamente por
Raspberry Pi 3
2.5A las clasificaciones 350 mA
Modelo A +
de PSU, placa y
conector.
Raspberry Pi 3
2.5A 1.2A 500 mA
Modelo B +
Raspberry Pi 4
3.0A 1.2A 600 mA
Modelo B
Frambuesa pi 400 3.0A 1.2A 800 mA
Limitado
únicamente por
Raspberry Pi Zero
1.2A las clasificaciones 150 mA
W / WH
de PSU, placa y
conector.
Limitado
únicamente por
Raspberry Pi Zero 1.2A las clasificaciones 100 mA
de PSU, placa y
conector
Tabla 0-52 Requisitos de energía

Desde la Raspberry Pi B + en adelante, se suministra 1.2A a los periféricos USB


descendentes. Esto permite que la gran mayoría de los dispositivos USB se conecten
directamente a estos modelos, suponiendo que la fuente de alimentación ascendente
tenga suficiente corriente disponible.

373
MANUAL RASPBERRY
PI 4

Los dispositivos de muy alta corriente, o los dispositivos que pueden generar una
sobretensión, como ciertos módems y discos duros USB, aún requerirán un
concentrador USB con alimentación externa. Los requisitos de energía de la
Raspberry Pi aumentan a medida que utiliza las diversas interfaces de la Raspberry
Pi. Los pines GPIO pueden extraer 50 mA de forma segura (tenga en cuenta que eso
significa 50 mA distribuidos en todos los pines: un pin GPIO individual solo puede
extraer 16 mA de forma segura), el puerto HDMI usa 50 mA, el módulo de la cámara
requiere 250 mA y los teclados y ratones pueden tomar tan poco ¡como 100mA o
hasta 1000mA! Verifique la potencia nominal de los dispositivos que planea conectar
a la Raspberry Pi y compre una fuente de alimentación en consecuencia.
Esta es la cantidad típica de energía (en amperios) consumida por diferentes
modelos de Raspberry Pi durante los procesos estándar:

Frambue Frambue Frambue Raspber Frambue


sa Pi 1B sa Pi 2B sa Pi 3B ry Pi sa Pi 4B
+ Zero
Bota Max 0,26 0,40 0,75 0,20 0,85
Prome 0,22 0,22 0,35 0,15 0,7
dio
Inactivo Prome 0,20 0,22 0,30 0,10 0,6
dio
Reproducc Max 0,30 0,36 0,55 0,23 0,85
ión de
video
(H.264)
Prome 0,22 0,28 0,33 0,16 0,78
dio
Estrés Max 0,35 0,82 1,34 0,35 1,25
Prome 0,32 0,75 0,85 0,23 1.2
dio
Detener la 0,10 0,055 0.023
corriente
Tabla 0-53 Energía en amperios consumida por Raspberry Pi diferentes

374
MANUAL RASPBERRY
PI 4

NOTA
Para estas mediciones, usamos una imagen estándar del sistema operativo
Raspberry Pi (actual al 26 de febrero de 2016, o junio de 2019 para la Raspberry Pi
4), a temperatura ambiente, con la Raspberry Pi conectada a un monitor HDMI,
teclado USB y mouse USB. La Raspberry Pi 3 Modelo B se conectó a un punto de
acceso LAN inalámbrico, la Raspberry Pi 4 se conectó a Ethernet. Todas estas
medidas de energía son aproximadas y no tienen en cuenta el consumo de energía
de dispositivos USB adicionales; El consumo de energía puede superar fácilmente
estas medidas si se conectan varios dispositivos USB adicionales o un HAT a la
Raspberry Pi.
Advertencias sobre la fuente de alimentación
En todos los modelos de Raspberry Pi desde Raspberry Pi B + (2014), excepto el
rango Zero, hay un circuito de detección de bajo voltaje que detectará si el voltaje de
suministro cae por debajo de 4.63V (+/- 5%). Esto resultará en un icono de
advertencia que se mostrará en todas las pantallas adjuntas y se agregará una
entrada al registro del kernel.
Si está viendo advertencias, debe mejorar la fuente de alimentación y / o el cable, ya
que la baja potencia puede causar problemas con la corrupción de las tarjetas SD o
un comportamiento errático de la propia Pi; por ejemplo, accidentes inexplicables.
Los voltajes pueden caer por una variedad de razones, por ejemplo, si la fuente de
alimentación en sí es inadecuada, el cable de la fuente de alimentación está hecho
de cables demasiado delgados o si ha conectado dispositivos USB de alta demanda.
Respaldo
La especificación USB requiere que los dispositivos USB no suministren corriente a
los dispositivos ascendentes. Si un dispositivo USB suministra corriente a un
dispositivo ascendente, esto se denomina retroalimentación. A menudo, esto sucede
cuando se conecta un concentrador USB con alimentación defectuosa, y dará como
resultado que el concentrador USB alimentado suministre energía a la Raspberry Pi
host. Esto no se recomienda ya que la energía que se suministra al Pi a través del
concentrador evitará el circuito de protección integrado en el Pi, dejándolo vulnerable
a daños en caso de una sobretensión.
375
MANUAL RASPBERRY
PI 4

Interfaz de periféricos en serie (SPI)


Las computadoras Raspberry Pi están equipadas con varios buses SPI . SPI se
puede utilizar para conectar una amplia variedad de periféricos: pantallas,
controladores de red (Ethernet, bus CAN), UART, etc. Estos dispositivos son mejor
compatibles con los controladores de dispositivos del kernel, pero la spidevAPI
permite que los controladores del espacio de usuario se escriban en una amplia
gama. de idiomas.
Hardware SPI
Rapsberry Pi Zero, 1, 2 y 3 tienen tres controladores SPI:
 SPI0, con dos selecciones de chip de hardware, está disponible en el
encabezado de todos los Pis; También hay una asignación alternativa que
solo está disponible en módulos de cómputo.
 SPI1, con tres selecciones de chip de hardware, está disponible en todos los
modelos de Raspberry Pi excepto en los modelos A y B de Pi 1 originales.
 SPI2, también con tres selecciones de chip de hardware, solo está disponible
en los módulos de cómputo 1, 3 y 3+.
En Raspberry Pi 4, 400 y Compute Module 4 hay cuatro buses SPI adicionales: SPI3
a SPI6, cada uno con 2 selecciones de chip de hardware. Estos buses SPI
adicionales están disponibles a través de asignaciones de funciones alternativas en
ciertos pines GPIO.
Asignaciones de pin / GPIO

Pin de Nombre de PIN Función Pin


unción SPI
encabezado de Broadcom Broadcom
MOSI 19 GPIO10 SPI0_MOSI
MISO 21 GPIO09 SPI0_MISO
SCLK 23 GPIO11 SPI0_SCLK
CE0 24 GPIO08 SPI0_CE0_N
CE1 26 GPIO07 SPI0_CE1_N
Tabla 0-54 SPI0

Nombre de PIN de
Función SPI Función Pin Broadcom
Broadcom
376
MANUAL RASPBERRY
PI 4

MOSI GPIO38 SPI0_MOSI


MISO GPIO37 SPI0_MISO
SCLK GPIO39 SPI0_SCLK
CE0 GPIO36 SPI0_CE0_N
CE1 GPIO35 SPI0_CE1_N
Tabla 0-55 Mapeo alternativo SPI0 (solo módulos de cómputo, excepto CM4)

Pin de Nombre de PIN Función Pin


Función SPI
encabezado de Broadcom Broadcom
MOSI 38 GPIO20 SPI1_MOSI
MISO 35 GPIO19 SPI1_MISO
SCLK 40 GPIO21 SPI1_SCLK
CE0 12 GPIO18 SPI1_CE0_N
CE1 11 GPIO17 SPI1_CE1_N
CE2 36 GPIO16 SPI1_CE2_N
Tabla 0-56 SPI1

Nombre de PIN de
Función SPI Función Pin Broadcom
Broadcom
MOSI GPIO41 SPI2_MOSI
MISO GPIO40 SPI2_MISO
SCLK GPIO42 SPI2_SCLK
CE0 GPIO43 SPI2_CE0_N
CE1 GPIO44 SPI2_CE1_N
CE2 GPIO45 SPI2_CE2_N
Tabla 0-57 SPI2 (solo módulos de cálculo, excepto CM4)

Pin de Nombre de PIN Función Pin


Función SPI
encabezado de Broadcom Broadcom
MOSI 03 GPIO02 SPI3_MOSI
MISO 28 GPIO01 SPI3_MISO
SCLK 05 GPIO03 SPI3_SCLK
CE0 27 GPIO00 SPI3_CE0_N
CE1 18 GPIO24 SPI3_CE1_N
Tabla 0-58 SPI3 (solo BCM2711)
377
MANUAL RASPBERRY
PI 4

Pin de Nombre de PIN Función Pin


Función SPI
encabezado de Broadcom Broadcom
MOSI 31 GPIO06 SPI4_MOSI
MISO 29 GPIO05 SPI4_MISO
SCLK 26 GPIO07 SPI4_SCLK
CE0 07 GPIO04 SPI4_CE0_N
CE1 22 GPIO25 SPI4_CE1_N
Tabla 0-59 SPI4 (solo BCM2711)

Pin de Nombre de PIN Función Pin


Función SPI
encabezado de Broadcom Broadcom
MOSI 08 GPIO14 SPI5_MOSI
MISO 33 GPIO13 SPI5_MISO
SCLK 10 GPIO15 SPI5_SCLK
CE0 32 GPIO12 SPI5_CE0_N
CE1 37 GPIO26 SPI5_CE1_N
Tabla 0-60 SPI5 (solo BCM2711)

Pin de Nombre de PIN Función Pin


Función SPI
encabezado de Broadcom Broadcom
MOSI 38 GPIO20 SPI6_MOSI
MISO 35 GPIO19 SPI6_MISO
SCLK 40 GPIO21 SPI6_SCLK
CE0 12 GPIO18 SPI6_CE0_N
CE1 13 GPIO27 SPI6_CE1_N
Tabla 0-61 SPI6 (solo BCM2711)

Modos maestros
Abreviaturas de nombres de señales
SCLK - Serie CLocK
CE - Chip Enable (a menudo llamado Chip Select)
MOSI - Master Out Slave In
MISO - Master In Slave Out
MOMI - Master Out Master In
378
MANUAL RASPBERRY
PI 4

Modo estandar
En el modo estándar SPI, el periférico implementa el protocolo serie estándar de 3
hilos (SCLK, MOSI y MISO).
Modo bidireccional
En el modo SPI bidireccional se implementa el mismo estándar SPI, excepto que se
usa un solo cable para datos (MOMI) en lugar de los dos usados en el modo
estándar (MISO y MOSI). En este modo, el pin MOSI sirve como pin MOMI.
Modo LoSSI (interfaz serial de baja velocidad)
El estándar LoSSI permite la emisión de comandos a los periféricos (LCD) y la
transferencia de datos hacia y desde ellos. Los comandos y parámetros de LoSSI
tienen una longitud de 8 bits, pero se utiliza un bit adicional para indicar si el byte es
un comando o un parámetro / dato. Este bit adicional se establece alto para un dato y
bajo para un comando. El valor de 9 bits resultante se serializa en la salida. LoSSI se
usa comúnmente con controladores LCD compatibles con MIPI DBI tipo C.
NOTA
Algunos comandos activan una lectura automática por parte del controlador SPI, por
lo que este modo no se puede utilizar como SPI multipropósito de 9 bits.
Modos de transferencia
 Encuestados
 Interrumpir
 DMA
Velocidad
El campo CDIV (Clock Divider) del registro CLK establece la velocidad del reloj SPI:
SCLK = Reloj de núcleo / CDIV
Si CDIV se establece en 0, el divisor es 65536. El divisor debe ser un múltiplo de 2,
con números impares redondeados hacia abajo. Tenga en cuenta que no se pueden
utilizar todas las velocidades de reloj posibles debido a problemas eléctricos
analógicos (tiempos de subida, potencia de la unidad, etc.).
Selección de chip

379
MANUAL RASPBERRY
PI 4

Los tiempos de configuración y retención relacionados con la afirmación y


desactivación automática de las líneas CS cuando se opera en modo DMA son los
siguientes:
La línea CS se confirmará al menos 3 ciclos de reloj de núcleo antes del msb del
primer byte de la transferencia.
La línea CS se desactivará no antes de 1 ciclo de reloj de núcleo después del borde
de salida del pulso de reloj final.
Software SPI
Controlador de Linux
El controlador de Linux predeterminado es spi-bcm2835.
SPI0 está deshabilitado de forma predeterminada. Para habilitarlo, use raspi-config o
asegúrese de que la línea dtparam=spi=on no esté comentada en /boot/config.txt.
Por defecto usa 2 líneas de selección de chips, pero esto se puede reducir a 1
usando dtoverlay=spi0-1cs. dtoverlay=spi0-2cs también existe, y sin ningún
parámetro es equivalente dtparam=spi=on.
Para habilitar SPI1, puede utilizar 1, 2 o 3 líneas de selección de chip, agregando en
cada caso:
dtoverlay = spi1-1cs # 1 selección de chip
dtoverlay = spi1-2cs # 2 selección de chip
dtoverlay = spi1-3cs # 3 selección de chip
al /boot/config.txt archivo. Existen superposiciones similares para SPI2, SPI3, SPI4,
SPI5 y SPI6.
El controlador no hace uso de las líneas de selección de chip de hardware debido a
algunas limitaciones; en su lugar, puede usar un número arbitrario de GPIO como
selecciones de chip de software / GPIO. Esto significa que puede elegir cualquier
GPIO de repuesto como línea CS, y todas estas superposiciones de SPI incluyen ese
control; consulte los /boot/overlays/README detalles o ejecute (por ejemplo)
dtoverlay -h spi0-2cs( dtoverlay -a | grep spi podría ser útil enumerarlos todos).
Velocidad
El controlador admite todas las velocidades que son divisores enteros del reloj
central, aunque, como se dijo anteriormente, no todas estas velocidades admitirán la
380
MANUAL RASPBERRY
PI 4

transferencia de datos debido a los límites en los GPIO y en los dispositivos


conectados. Como regla general, es poco probable que funcione cualquier valor
superior a 50 MHz, pero su kilometraje puede variar.
Bits de modo admitidos
SPI_CPOL - Polaridad del reloj
SPI_CPHA - Fase de reloj
SPI_CS_HIGH - Selección de chip activa alta
SPI_NO_CS - 1 dispositivo por bus, sin selección de chip
SPI_3WIRE - Modo bidireccional, pin de entrada y salida de datos compartidos
El spi-bcm2835 módulo del kernel admite el modo bidireccional o "3 hilos" . Tenga en
cuenta que en este modo, el campo tx o rx de la estructura spi_transfer debe ser un
puntero NULL, ya que solo es posible la comunicación semidúplex. De lo contrario, la
transferencia fallará. El código fuente de spidev_test.c no considera esto
correctamente y, por lo tanto, no funciona en absoluto en el modo de 3 cables.
Bits por palabra admitidos
 8 - Normal
 9 - Esto es compatible con el modo LoSSI.
Modos de transferencia
El modo de interrupción es compatible con todos los buses SPI. SPI0 y SPI3-6
también admiten transferencias DMA.
Latencia del controlador SPI
Este hilo analiza los problemas de latencia.
spidev
spidev presenta una interfaz de espacio de usuario basada en ioctl para líneas
individuales de SPI CS. El árbol de dispositivos se usa para indicar si una línea CS
será impulsada por un módulo controlador del kernel o administrada por spidev en
nombre del usuario; no es posible hacer ambas cosas al mismo tiempo. Tenga en
cuenta que los propios núcleos de Raspberry Pi están más relajados sobre el uso del
árbol de dispositivos para habilitar spidev: los núcleos ascendentes imprimen
advertencias sobre dicho uso y, en última instancia, pueden evitarlo por completo.

381
MANUAL RASPBERRY
PI 4

Usando spidev de C
Hay un programa de prueba de bucle invertido en la documentación de Linux que se
puede utilizar como punto de partida.
Usando spidev de Python
Hay varias bibliotecas de Python que brindan acceso spidev, incluidas spidev( pip
install spidev- consulte https://pypi.org/project/spidev/ ) y SPI-Py (
https://github.com/lthiery/SPI-Py ).
Usando spidev desde un shell como bash
# Write binary 1, 2 and 3
echo -ne "\x01\x02\x03" > /dev/spidev0.0
Otras bibliotecas de SPI
Hay otras bibliotecas de espacio de usuario que proporcionan control SPI
manipulando directamente el hardware: esto no se recomienda.
Solución de problemas
Prueba de bucle invertido
Esto se puede utilizar para probar el envío y la recepción de SPI. Coloque un cable
entre MOSI y MISO. No prueba CE0 y CE1.
wget https://raw.githubusercontent.com/raspberrypi/linux/rpi-3.10.y/Documentation/
spi/spidev_test.c
gcc -o spidev_test spidev_test.c
./spidev_test -D /dev/spidev0.0
spi mode: 0
bits per word: 8
max speed: 500000 Hz (500 KHz)

FF FF FF FF FF FF
40 00 00 00 00 95
FF FF FF FF FF FF
FF FF FF FF FF FF
FF FF FF FF FF FF
DE AD BE EF BA AD
382
MANUAL RASPBERRY
PI 4

F0 0D
Parte del contenido anterior se ha copiado de la página de elinux SPI , que también
se toma prestada de raspberry.com Ambos están cubiertos por la licencia CC-SA.
Bus serie universal (USB)
En general, todos los dispositivos compatibles con Linux se pueden utilizar con una
Raspberry Pi, aunque existen algunas limitaciones para los modelos anteriores a Pi
4.
Salida de potencia máxima
Como ocurre con todas las computadoras, los puertos USB de la Raspberry Pi
suministran una cantidad limitada de energía. A menudo, los problemas con los
dispositivos USB se deben a problemas de alimentación. Para descartar que la
energía sea la causa de un problema, conecte sus dispositivos USB a la Raspberry
Pi utilizando un concentrador con alimentación.
Salida de potencia máxima de los
Modelo
puertos USB

Pi cero, 1 500mA por puerto 1


Pi 2, 3, 4 1200 mA en total en todos los puertos
Tabla 0-62 Salida máxima de potencia

Para el Pi 1B original, el límite es de 100 mA por puerto.


Raspberry pi 4
El Pi 4 contiene dos puertos USB 3.0 y dos puertos USB 2.0 que están conectados a
un controlador USB VL805. Las líneas USB 2.0 en los cuatro puertos están
conectadas a un solo concentrador USB 2.0 dentro del VL805: esto limita el ancho de
banda total disponible para dispositivos USB 1.1 y USB 2.0 al de un solo puerto USB
2.0.

En el Pi 4, el controlador USB utilizado en modelos anteriores se encuentra en el


puerto USB tipo C y está desactivado de forma predeterminada.
Problemas de USB conocidos
Interoperabilidad con concentradores USB 3.0

383
MANUAL RASPBERRY
PI 4

Existe un problema con los concentradores USB 3.0 junto con el uso de dispositivos
de velocidad completa o baja, incluida la mayoría de los ratones y teclados. Un error
en la mayoría del hardware del concentrador USB 3.0 significa que los modelos
anteriores a Pi 4 no pueden comunicarse con dispositivos de velocidad máxima o
baja conectados a un concentrador USB 3.0.
Los dispositivos USB 2.0 de alta velocidad, incluidos los concentradores USB 2.0,
funcionan correctamente cuando se conectan a través de un concentrador USB 3.0.
Evite conectar dispositivos de velocidad baja o completa en un concentrador USB
3.0. Como solución alternativa, conecte un concentrador USB 2.0 en el puerto
descendente del concentrador USB 3.0 y conecte el dispositivo de baja velocidad, o
utilice un concentrador USB 2.0 entre el Pi y el concentrador USB 3.0, luego conecte
los dispositivos de baja velocidad al concentrador USB 2.0 .
Cámaras web USB 1.1
Las cámaras web antiguas pueden ser dispositivos de alta velocidad. Debido a que
estos dispositivos transfieren una gran cantidad de datos y generan una sobrecarga
de software adicional, no se garantiza un funcionamiento confiable. Como solución
alternativa, intente utilizar la cámara con una resolución más baja.
Tarjetas de sonido USB Esoteric
Las costosas tarjetas de sonido para audiófilos suelen utilizar grandes cantidades de
ancho de banda USB: no se garantiza un funcionamiento fiable con DAC de 96 kHz /
192 kHz. Como solución alternativa, forzar la transmisión de salida a calidad de CD
(44,1 kHz / 48 kHz de 16 bits) reducirá el ancho de banda de la transmisión a niveles
confiables.
Concentradores USB TT individuales
Los concentradores USB 2.0 y 3.0 tienen un mecanismo para hablar con dispositivos
de velocidad completa o baja conectados a sus puertos de bajada llamado traductor
de transacciones (TT). Este dispositivo almacena en búfer las solicitudes de alta
velocidad del host y las transmite a velocidad máxima o baja al dispositivo de bajada.
La especificación USB permite dos configuraciones de concentrador: TT simple (un
TT para todos los puertos) y TT múltiple (un TT por puerto). Debido a una limitación

384
MANUAL RASPBERRY
PI 4

de hardware, si se conectan demasiados dispositivos de velocidad completa o baja


en un solo concentrador TT, los dispositivos pueden comportarse de manera poco
confiable. Se recomienda utilizar un concentrador Multi TT para interactuar con varios
dispositivos de velocidad completa y baja. Como solución alternativa, distribuya los
dispositivos de velocidad completa y baja entre el propio puerto USB de Pi y el
concentrador TT único.
Códigos de revisión de Raspberry Pi
Cada revisión de modelo de Raspberry Pi distinta tiene un código de revisión único.
Puede buscar el código de revisión de una Raspberry Pi ejecutando:
cat /proc/cpuinfo
Las últimas tres líneas muestran el tipo de hardware, el código de revisión y el
número de serie único de Raspberry Pi. Por ejemplo:
Hardware: BCM2835
Revisión: a02082
Clave: 00000000765fc593
NOTA
A partir del kernel 4.9, todas las computadoras Raspberry Pi informan BCM2835,
incluso aquellas con procesadores BCM2836, BCM2837 y BCM2711. No debe
utilizar esta cadena para detectar el procesador. Será necesario decodificar con los
códigos de revisión.
Códigos de revisión de estilo antiguo
El primer conjunto de modelos de Raspberry Pi recibió códigos de revisión
hexadecimales secuenciales desde 0002 hasta 0015:
Códig Modelo Revisión RAM Fabricante
o

0002 B 1.0 256 MB Egoman


0003 B 1.0 256 MB Egoman
0004 B 2.0 256 MB Sony Reino Unido
0005 B 2.0 256 MB Qisda
0006 B 2.0 256 MB Egoman
0007 A 2.0 256 MB Egoman

385
MANUAL RASPBERRY
PI 4

0008 A 2.0 256 MB Sony Reino Unido


0009 A 2.0 256 MB Qisda
000d B 2.0 512 MB Egoman
000e B 2.0 512 MB Sony Reino Unido
000f B 2.0 512 MB Egoman
0010 B+ 1.2 512 MB Sony Reino Unido
0011 CM1 1.0 512 MB Sony Reino Unido
0012 A+ 1.1 256 MB Sony Reino Unido
0013 B+ 1.2 512 MB Embest
0014 CM1 1.0 512 MB Embest
0015 A+ 1.1 256 MB / 512 MB Embest
Tabla 0-63 Códigos de revisión de estilo antiguo

Códigos de revisión de nuevo estilo


Con el lanzamiento de Raspberry Pi 2, se introdujeron códigos de revisión de nuevo
estilo. En lugar de ser secuencial, cada bit del código hexadecimal representa un
dato sobre la revisión:
NOQuuuWuFMMMCCCCPPPPTTTTTTTTRRRR
Parte Representa Opciones

norte Sobretensión 0: sobretensión permitida


1: sobretensión no permitida
O Programa 1 de OTP 0: programación OTP permitida
1: programación OTP no permitida
Q Lectura 1 de OTP 0: lectura de OTP permitida
1: lectura de OTP no permitida
uuu No usado No usado
W Bit de garantía  2
0: la garantía está intacta
1: la garantía ha sido anulada
por overclocking
tu No usado No usado
F Nueva bandera 1: revisión de nuevo estilo

386
MANUAL RASPBERRY
PI 4

0: revisión de estilo antiguo


Tamaño de la
mmm 0: 256 MB
memoria
1: 512 MB

2: 1 GB

3: 2 GB

4: 4 GB

5: 8 GB
CCCC Fabricante 0: Sony Reino Unido
1: Egoman

2: Embest

3: Sony Japón

4: Embest

5: Estadio
PPPP Procesador 0: BCM2835
1: BCM2836

2: BCM2837

3: BCM2711
TTTTTTTT Escribe 0: A
1: B

2: A +

3: B +

4: 2B

5: Alpha (primer prototipo)

387
MANUAL RASPBERRY
PI 4

6: CM1

8: 3B

9: cero

a: CM3

c: cero W

d: 3B +

e: 3A +

f: solo para uso interno

10: CM3 +

11: 4B

12: cero 2 W

13: 400

14: CM4
RRRR Revisión 0, 1, 2, etc.
Tabla 0-64 Códigos de revisión de nuevo estilo

Códigos de revisión de nuevo estilo en uso


Puede haber códigos en uso que no se encuentran en la tabla.
Código Modelo Revisión RAM Fabricante

Sony Reino
900021 A+ 1.1 512 MB
Unido
Sony Reino
900032 B+ 1.2 512 MB
Unido
Sony Reino
900092 Cero 1.2 512 MB
Unido
Sony Reino
900093 Cero 1.3 512 MB
Unido
388
MANUAL RASPBERRY
PI 4

Sony Reino
9000c1 Cero W 1.1 512 MB
Unido
Sony Reino
9020e0 3A + 1.0 512 MB
Unido
920092 Cero 1.2 512 MB Embest
920093 Cero 1.3 512 MB Embest
Sony Reino
900061 CM 1.1 512 MB
Unido
Sony Reino
a01040 2B 1.0 1 GB
Unido
Sony Reino
a01041 2B 1.1 1 GB
Unido
Sony Reino
a02082 3B 1.2 1 GB
Unido
Sony Reino
a020a0 CM3 1.0 1 GB
Unido
Sony Reino
a020d3 3B + 1.3 1 GB
Unido
2B (con Sony Reino
a02042 1.2 1 GB
BCM2837) Unido
a21041 2B 1.1 1 GB Embest
2B (con
a22042 1.2 1 GB Embest
BCM2837)
a22082 3B 1.2 1 GB Embest
a220a0 CM3 1.0 1 GB Embest
a32082 3B 1.2 1 GB Sony Japón
a52082 3B 1.2 1 GB Estadio
a22083 3B 1.3 1 GB Embest
Sony Reino
a02100 CM3 + 1.0 1 GB
Unido
Sony Reino
a03111 4B 1.1 1 GB
Unido
b03111 4B 1.1 2GB Sony Reino

389
MANUAL RASPBERRY
PI 4

Unido
Sony Reino
b03112 4B 1.2 2GB
Unido
Sony Reino
b03114 4B 1.4 2GB
Unido
Sony Reino
c03111 4B 1.1 4 GB
Unido
Sony Reino
c03112 4B 1.2 4 GB
Unido
Sony Reino
c03114 4B 1.4 4 GB
Unido
Sony Reino
d03114 4B 1.4 8GB
Unido
Sony Reino
c03130 Pi 400 1.0 4 GB
Unido
Sony Reino
a03140 CM4 1.0 1 GB
Unido
Sony Reino
b03140 CM4 1.0 2GB
Unido
Sony Reino
c03140 CM4 1.0 4 GB
Unido
Sony Reino
d03140 CM4 1.0 8GB
Unido
Sony Reino
902120 Cero 2 W 1.0 512 MB
Unido
Tabla 0-65 Códigos de revisión de nuevo estilo en uso

3.11 Hardware del módulo de computo.


Actualización del módulo de cómputo eMMC
El módulo de cómputo tiene un dispositivo eMMC integrado conectado a la interfaz
de la tarjeta SD principal. Esta guía explica cómo escribir datos en el
almacenamiento eMMC utilizando una placa de E / S del módulo de cómputo.

390
MANUAL RASPBERRY
PI 4

Pasos para flashear el eMMC


Para actualizar el Compute Module eMMC, necesita un sistema Linux (se
recomienda una Raspberry Pi o Ubuntu en una PC) o un sistema Windows (se
recomienda Windows 10). Para BCM2837 (CM3), se ha corregido un error que
afectaba a Mac, por lo que también funcionará.
NOTA
Hay un error en el cargador de arranque BCM2835 (CM1) que devuelve un paquete
USB ligeramente incorrecto al host. La mayoría de los hosts USB parecen ignorar
este error benigno y funcionan bien; Sin embargo, vemos algunos puertos USB que
no funcionan debido a este error. No entendemos muy bien por qué fallan algunos
puertos, ya que no parece estar correlacionado con si son USB2 o USB3 (hemos
visto que ambos tipos funcionan), pero es probable que sea específico para el
controlador y el controlador del host. Este error se ha corregido en BCM2837.
Configuración de la placa CMIO
El módulo de cálculo debe ser instalado correctamente en la placa de E / S. Debe
quedar plano sobre la placa IO.
 Asegúrese de que el nRPI_BOOTque está en J2 ( disable eMMC Boot) en el
puente de la placa IO esté instalado
 Utilice un cable micro USB para conectar el puerto esclavo micro USB J11 en
la placa IO al dispositivo host.
 No encienda todavía.
Calcular el módulo 1 y 3
Asegúrese de que el módulo de cómputo esté instalado correctamente en la placa de
E / S. Debe quedar paralelo a la tabla, con los clips de enganche encajados en su
lugar.

 Asegúrese de que J4 (USB SLAVE BOOT ENABLE) esté configurado en la


posición 'EN'.
 Utilice un cable micro USB para conectar el puerto esclavo micro USB J15 en
la placa IO al dispositivo host.
 No encienda todavía.

391
MANUAL RASPBERRY
PI 4

Para usuarios de Windows


En Windows, hay un instalador disponible para instalar los controladores necesarios
y la herramienta de arranque automáticamente. Alternativamente, un usuario puede
compilarlo y ejecutarlo usando Cygwin y / o instalar los controladores manualmente.
instalador de Windows
Para aquellos que solo desean habilitar Compute Module eMMC como un dispositivo
de almacenamiento masivo en Windows, el instalador independiente es la opción
recomendada. Este instalador ha sido probado en Windows 10 de 32 y 64 bits y
Windows XP de 32 bits.
Asegúrese de no escribir en ningún dispositivo USB mientras se ejecuta el instalador.

1. Descargue y ejecute el instalador de Windows para instalar los controladores y


la herramienta de arranque.
2. Conecte el USB de su PC host en el puerto USB SLAVE, asegurándose de
haber configurado la placa como se describe arriba.
3. Aplicar energía al tablero; Windows ahora debería encontrar el hardware e
instalar el controlador.
4. Una vez que se complete la instalación del controlador, ejecute la RPiBoot.exe
herramienta que se instaló anteriormente.
5. Después de unos segundos, el módulo de cómputo eMMC aparecerá en
Windows como un disco (dispositivo de almacenamiento masivo USB).
Construyendo rpibootsobre su sistema host (Cygwin / Linux)
Usaremos Git para obtener el código fuente de rpiboot, así que asegúrese de que Git
esté instalado. En Cygwin, use el instalador Cygwin. En una Pi u otra máquina Linux
basada en Debian, use el siguiente comando:
sudo apt install git
Git puede producir un error si la fecha no está configurada correctamente. En una
Raspberry Pi, ingrese lo siguiente para corregir esto:
sudo date MMDDhhmm
donde MM es el mes, DD es la fecha y hh y mm son horas y minutos
respectivamente.
392
MANUAL RASPBERRY
PI 4

Clonar el usbboot repositorio de herramientas:


git clone --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot
libusb debe ser instalado. Si está utilizando Cygwin, asegúrese de que libus besté
instalado como se describió anteriormente. En Raspberry Pi OS u otro Linux basado
en Debian, ingrese el siguiente comando:
sudo apt install libusb-1.0-0-dev
Ahora construya e instale la usbbootherramienta:
make
Ejecute la usbboot herramienta y esperará una conexión:
sudo ./rpiboot
Ahora conecte la máquina host en el puerto esclavo USB de la placa de E / S del
módulo de cómputo y encienda la placa CMIO. La rpiboot herramienta descubrirá el
módulo de cómputo y enviará el código de inicio para permitir el acceso al eMMC.
Para obtener más información, ejecute
./rpiboot -h
Escribir en eMMC (Windows)
Una vez rpiboot completado, aparecerá una nueva unidad de almacenamiento
masivo USB en Windows. Recomendamos seguir esta guía y usar Win32DiskImager
para escribir imágenes en la unidad, en lugar de intentar usar, /dev/sda etc. de
Cygwin.
Asegúrese de que J4 (USB SLAVE BOOT ENABLE) / J2 (nRPI_BOOT) esté
configurado en la posición deshabilitada y / o que no haya nada conectado al puerto
USB esclavo. Apagar y encender la placa de E / S ahora debería dar como resultado
que el módulo de cómputo se inicie desde eMMC.
Escribiendo al eMMC (Linux)
Una vez rpiboot completado, verá aparecer un nuevo dispositivo; esto es
comúnmente /dev/sda en un Pi, pero podría ser otra ubicación como /dev/sdb, así
que regístrese /dev/ o ejecute lsblk antes de ejecutar rpiboot para que pueda ver qué
cambios.

393
MANUAL RASPBERRY
PI 4

Ahora necesita escribir una imagen del sistema operativo sin procesar (como el
sistema operativo Raspberry Pi ) en el dispositivo. Tenga en cuenta que el siguiente
comando puede tardar algún tiempo en completarse, según el tamaño de la imagen:
(Cambie /dev/sdX al dispositivo apropiado).
sudo dd if=raw_os_image_of_your_choice.img of=/dev/sdX bs=4MiB
Una vez que se haya escrito la imagen, desconecte y vuelva a conectar el USB;
debería ver aparecer dos particiones (para Raspberry Pi OS) en /dev. En total,
debería ver algo similar a esto:
/dev/sdX <- Device
/dev/sdX1 <- First partition (FAT)
/dev/sdX2 <- Second partition (Linux filesystem)
Las particiones /dev/sdX1 y /dev/sdX2 ahora se pueden montar normalmente.
Asegúrese de que J4 (USB SLAVE BOOT ENABLE) / J2 (nRPI_BOOT) esté
configurado en la posición deshabilitada y / o que no haya nada conectado al puerto
USB esclavo. Apagar y encender la placa de E / S ahora debería dar como resultado
que el módulo de cómputo se inicie desde eMMC.
Cargador de arranque del módulo de cálculo 4
La configuración predeterminada del cargador de arranque en CM4 está diseñada
para admitir la activación y el desarrollo en una placa de E / S de Compute Module 4
y la versión de software que se muestra en la fabricación puede ser anterior a la
última versión. Para productos finales, considere: -
 Seleccionar y verificar una versión específica del cargador de arranque. La
versión del usbboot repositorio es siempre una versión estable reciente.
 Configuración del dispositivo de arranque (por ejemplo, arranque de red).
Consulte la BOOT_ORDER sección en la guía de configuración del cargador
de arranque.
 Habilitar la protección contra escritura de hardware en la EEPROM del
cargador de arranque para garantizar que el cargador de arranque no se
pueda modificar en productos remotos o inaccesibles.

394
MANUAL RASPBERRY
PI 4

NB: La ROM del Compute Module 4 nunca se ejecuta recovery.bin desde SD /


EMMC y el rpi-eeprom-update servicio no está habilitado de forma predeterminada.
Esto es necesario porque el EMMC no es extraíble y un recovery.bin archivo no
válido evitaría que el sistema se inicie. Esto se puede anular y utilizar con el self-
update modo en el que el cargador de arranque se puede actualizar desde USB MSD
o arranque de red. Sin embargo, el self-update modo no es una actualización
atómica y, por lo tanto, no es seguro en caso de un corte de energía mientras se
actualizaba la EEPROM.
Modificar la configuración del cargador de arranque
Para modificar la configuración del cargador de arranque CM4: -
 CD usbboot/recovery
 Reemplácelo pieeprom.original.bin si se requiere una versión específica del
cargador de arranque.
 Edite el boot.conf archivo de configuración del cargador de arranque
predeterminado . Normalmente, al menos BOOT_ORDER debe actualizarse: -
o Para arranque en red BOOT_ORDER=0xf2
o Para arranque SD / EMMC BOOT_ORDER=0xf1
o Para el arranque USB que falla en EMMC BOOT_ORDER=0xf15
 Ejecutar ./update-pieeprom.sh para actualizar el pieeprom.bin archivo de
imagen de imagen EEPROM .
 Si se requiere protección contra escritura EEPROM, edite config.txt y agregue
eeprom_write_protect=1. La protección contra escritura del hardware debe
habilitarse a través del software y luego bloquearse tirando del
EEPROM_nWP pin hacia abajo.
 Ejecutar ../rpiboot –d para actualizar el cargador de arranque usando la
imagen EEPROM actualizada pieeprom.bin
El archivo pieeprom.bin ahora está listo para actualizarse al Módulo de cálculo 4.

Actualización de la EEPROM del cargador de arranque - Módulo de cálculo 4

395
MANUAL RASPBERRY
PI 4

Para actualizar la EEPROM del cargador de arranque, siga la misma configuración


de hardware que para actualizar la EMMC, pero también asegúrese de que la
EEPROM_nWP NO esté baja. Una vez completada, EEPROM_nWPse puede bajar
de nuevo.
# Writes recovery/pieeprom.bin to the bootloader EEPROM.
./rpiboot -d recovery
Solución de problemas
Para un pequeño porcentaje de Raspberry Pi Compute Module 3, se han informado
problemas de arranque. Los hemos rastreado hasta el método utilizado para crear la
partición FAT32; creemos que el problema se debe a una diferencia de tiempo entre
el BCM2835 / 6/7 y los dispositivos eMMC más nuevos. El siguiente método para
crear la partición es una solución confiable en nuestras manos.
sudo parted /dev/<device>
(parted) mkpart primary fat32 4MiB 64MiB
(parted) q
sudo mkfs.vfat -F32 /dev/<device>
sudo cp -r <files>/* <mountpoint>
Conexión y habilitación de periféricos
Compute Module (CM) y Compute Module 3 (CM3) contienen el sistema Raspberry
Pi BCM2835 (o BCM2837 para CM3) en un chip (SoC) o 'procesador', memoria y
eMMC. El eMMC es similar a una tarjeta SD pero está soldado a la placa. A
diferencia de las tarjetas SD, la eMMC está diseñada específicamente para usarse
como un disco y tiene características adicionales que la hacen más confiable en este
caso de uso. La mayoría de los pines del SoC (GPIO, dos interfaces de cámara CSI,
dos interfaces de pantalla DSI, HDMI, etc.) están disponibles de forma gratuita y se
pueden conectar como el usuario lo considere oportuno (o, si no se utilizan,
generalmente se pueden dejar sin conectar). El módulo de cómputo es un módulo
compatible con el factor de forma DDR2 SODIMM, por lo que cualquier zócalo DDR2
SODIMM debería poder utilizarse
NOTA
El pinout NO es el mismo que el de un módulo de memoria SODIMM real.
396
MANUAL RASPBERRY
PI 4

Para usar el Módulo de Computación, un usuario necesita diseñar una 'placa base'
(relativamente simple) que pueda proporcionar energía al Módulo de Computación
(3.3V y 1.8V como mínimo), y que conecte los pines a los periféricos requeridos para
la aplicación del usuario.
Raspberry Pi proporciona una placa base mínima para el módulo de cómputo
(llamado placa de E / S del módulo de cómputo o placa CMIO) que alimenta el
módulo, saca el GPIO a los encabezados de clavija y lleva la cámara y las interfaces
de pantalla a los conectores FFC. También proporciona HDMI, USB y un LED 'ACT',
así como la capacidad de programar el eMMC de un módulo a través de USB desde
una PC o Raspberry Pi.
Esta guía primero explica el proceso de arranque y cómo se usa el árbol de
dispositivos para describir el hardware adjunto; estos son aspectos esenciales que
debe comprender al diseñar con el Módulo de cálculo. A continuación, proporciona
un ejemplo práctico de cómo conectar un periférico I2C y SPI a una placa CMIO (o
CMIO V3 para CM3) y crear los archivos del árbol de dispositivos necesarios para
que ambos periféricos funcionen en Linux, a partir de una imagen básica del sistema
operativo Raspberry Pi.
GPIO BCM283x
BCM283x tiene tres bancos de pines de entrada / salida de uso general (GPIO): 28
pines en el banco 0, 18 pines en el banco 1 y 8 pines en el banco 2, lo que hace un
total de 54 pines. Estos pines se pueden usar como pines GPIO verdaderos, es
decir, el software puede configurarlos como entradas o salidas, leer y / o configurar el
estado y usarlos como interrupciones. También se pueden configurar para 'funciones
alternativas' como I2C, SPI, I2S, UART, tarjeta SD y otras.
En un módulo de cómputo, tanto el banco 0 como el banco 1 son de uso gratuito. El
banco 2 se utiliza para la detección de conexión en caliente eMMC y HDMI y el
control de arranque ACT LED / USB.
Es útil en un sistema en ejecución observar el estado de cada uno de los pines GPIO
(en qué función están configurados y el nivel de voltaje en el pin) para que pueda ver
si el sistema está configurado como se esperaba. Esto es particularmente útil si

397
MANUAL RASPBERRY
PI 4

desea ver si un árbol de dispositivos está funcionando como se espera, o para ver
los estados de los pines durante la depuración de hardware.
Raspberry Pi proporciona el raspi-gpio paquete que es una herramienta para piratear
y depurar GPIO
NOTA
Necesita ejecutar raspi-gpio como root.
Para instalar raspi-gpio:
sudo apt instalar raspi-gpio
Si aptno puede encontrar el raspi-gpiopaquete, primero deberá realizar una
actualización:
actualización de sudo apt
Para obtener ayuda raspi-gpio, ejecútelo con el helpargumento:
ayuda de sudo raspi-gpio
Por ejemplo, para ver la función actual y el nivel de todos los pines GPIO, use:
sudo raspi-gpio get
NOTA
raspi-gpio se puede usar con el funcs argumento para obtener una lista de todas las
funciones GPIO compatibles por pin. Imprimirá una tabla en formato CSV. La idea es
canalizar la tabla a un .csv archivo y luego cargar este archivo usando, por ejemplo,
Excel:
sudo raspi-gpio funcs> gpio-funcs.csv
Proceso de arranque BCM283x
Los dispositivos BCM283x constan de una GPU VideoCore y núcleos de CPU ARM.
De hecho, la GPU es un sistema que consta de un procesador DSP y aceleradores
de hardware para imágenes, codificación y decodificación de video, gráficos 3D y
composición de imágenes.
En los dispositivos BCM283x, es el núcleo DSP de la GPU el que arranca primero.
Es responsable de la configuración general y el mantenimiento antes de arrancar los
procesadores ARM principales.
Los dispositivos BCM283x que se utilizan en las placas Raspberry Pi y Compute
Module tienen un proceso de arranque de tres etapas:
398
MANUAL RASPBERRY
PI 4

1. El GPU DSP sale del reinicio y ejecuta el código desde una pequeña ROM
interna (la ROM de arranque). El único propósito de este código es cargar un
cargador de arranque de segunda etapa a través de una de las interfaces
externas. En un módulo de cómputo o Raspberry Pi, este código busca
primero un cargador de arranque de segunda etapa en la tarjeta SD (eMMC);
espera que se llame bootcode.bin y esté en la primera partición (que debe ser
FAT32). Si no se encuentra ninguna tarjeta SD o bootcode.bin no se
encuentra, la ROM de arranque se coloca y espera en el modo 'arranque
USB', esperando que un host le dé un cargador de arranque de segunda
etapa a través de la interfaz USB.
2. El cargador de arranque de la segunda etapa ( bootcode.bin en la tarjeta sd o
usbbootcode.bin para el arranque USB) es responsable de configurar la
interfaz LPDDR2 SDRAM y varias otras funciones críticas del sistema y luego
cargar y ejecutar el firmware de la GPU principal (llamado start.elf,
nuevamente en la partición primaria de la tarjeta SD).
3. start.elf asume el control y es responsable de la configuración adicional del
sistema y el arranque del subsistema del procesador ARM, y contiene el
firmware que se ejecuta en las diversas partes de la GPU. Primero lee dt-
blob.bin para determinar los estados iniciales de los pines GPIO y las
interfaces y relojes específicos de la GPU, luego analiza config.txt. A
continuación, carga un archivo de árbol de dispositivos ARM (por ejemplo,
bcm2708-rpi-cm.dtb para un módulo de cómputo) y cualquier superposición de
árbol de dispositivos especificada config.txt antes de iniciar el subsistema
ARM y pasar los datos del árbol de dispositivos al kernel de Linux de
arranque.
Árbol de dispositivos
El árbol de dispositivos es una forma especial de codificar toda la información sobre
el hardware adjunto a un sistema (y, en consecuencia, los controladores necesarios).
En un módulo Pi o Compute, hay varios archivos en la primera partición FAT de la
SD / eMMC que son archivos binarios del 'árbol de dispositivos'. Estos archivos
binarios (generalmente con extensión .dtb) se compilan a partir de descripciones de
399
MANUAL RASPBERRY
PI 4

texto legibles por humanos (generalmente archivos con extensión .dts) por el
compilador Device Tree.
En una imagen estándar del sistema operativo Raspberry Pi en la primera partición
(FAT), encontrará dos tipos diferentes de archivos de árbol de dispositivos, uno solo
lo usa la GPU y el resto son archivos de árbol de dispositivos ARM estándar para
cada uno de los productos Pi basados en BCM283x:
 dt-blob.bin (usado por la GPU)
 bcm2708-rpi-b.dtb (Usado para Pi modelo A y B)
 bcm2708-rpi-b-plus.dtb (Usado para el modelo Pi B + y A +)
 bcm2709-rpi-2-b.dtb (Usado para Pi 2 modelo B)
 bcm2710-rpi-3-b.dtb (Usado para Pi 3 modelo B)
 bcm2708-rpi-cm.dtb (Usado para el módulo de cómputo Pi)
 bcm2710-rpi-cm3.dtb (Usado para Pi Compute Module 3)
dt-blob.bin de forma predeterminada no existe ya que hay una versión
'predeterminada' compilada start.elf, pero para los proyectos de Compute Module a
menudo será necesario proporcionar un dt-blob.bin (que anula el archivo integrado
predeterminado).
dt-blob.bin está en formato de árbol de dispositivos compilado, pero solo el firmware
de la GPU lo lee para configurar funciones exclusivas de la GPU.
Durante el arranque, el usuario puede especificar un árbol de dispositivos ARM
específico para utilizarlo a través del device_tree parámetro en config.txt, por
ejemplo, la adición de la línea device_tree=mydt.dtb a config.txt donde mydt.dtb está
el archivo de DTB a cargar en lugar de uno de los archivos ARM DTB estándar. Si
bien un usuario puede crear un árbol de dispositivos completo para su producto
Compute Module, la forma recomendada de agregar hardware es usar
superposiciones (consulte la siguiente sección).
Además de cargar un dtb ARM, start.elf admite la carga de 'superposiciones'
adicionales del árbol de dispositivos a través del dtoverlay parámetro en config.txt,
por ejemplo, agregando tantas dtoverlay=myoverlay líneas como se requiera como
superposiciones config.txt, teniendo en cuenta que las superposiciones viven

400
MANUAL RASPBERRY
PI 4

/overlays y tienen el sufijo, -overlay.dtb por ejemplo /overlays/myoverlay-


overlay.dtb. Las superposiciones se fusionan con el archivo dtb base antes de que
los datos se pasen al kernel de Linux cuando se inicia.
Las superposiciones se utilizan para agregar datos al dtb base que (nominalmente)
describe hardware no específico de la placa. Esto incluye los pines GPIO utilizados y
su función, así como los dispositivos conectados, de modo que se puedan cargar los
controladores correctos. La convención es que en una Raspberry Pi, todo el
hardware adjunto a los GPIO Bank0 (el encabezado GPIO) debe describirse
mediante una superposición. En un módulo de cómputo, todo el hardware adjunto a
los GPIO Bank0 y Bank1 debe describirse en un archivo de superposición. No tiene
que seguir estas convenciones: puede convertir toda la información en un solo
archivo dtb, como se describió anteriormente, reemplazandobcm2708-rpi-cm.dtb. Sin
embargo, seguir las convenciones significa que puede usar una versión del sistema
operativo Raspberry Pi 'estándar', con su base dtb estándar y toda la información
específica del producto contenida en una superposición separada. Ocasionalmente,
el dtb base puede cambiar, generalmente de una manera que no rompa las
superposiciones, por lo que se sugiere usar una superposición.
dt-blob.bin
Cuando se start.elf ejecuta, primero lee algo llamado dt-blob.bin. Esta es una forma
especial de blob de árbol de dispositivos que le dice a la GPU cómo (inicialmente)
configurar los estados de los pines GPIO, y también cualquier información sobre
GPIO / periféricos que son controlados (propiedad) por la GPU, en lugar de ser
utilizados a través de Linux en el brazo. Por ejemplo, el periférico de la cámara
Raspberry Pi es administrado por la GPU, y la GPU necesita acceso exclusivo a una
interfaz I2C para hablar con él, así como un par de pines de control. I2C0 en la
mayoría de las placas y módulos de cómputo Pi está nominalmente reservado para
uso exclusivo de la GPU. La información sobre qué pines GPIO debe usar la GPU
para I2C0 y para controlar las funciones de la cámara proviene dt-blob.bin.
el start.elffirmware tiene un valor predeterminado 'incorporado' dt-blob.bin que se usa
si no dt-blob.binse encuentra en la raíz de la primera partición FAT. La mayoría de
los proyectos de Compute Module querrán proporcionar sus propios proyectos
401
MANUAL RASPBERRY
PI 4

personalizados dt-blob.bin. ya que especifica qué pin es para la detección de


conexión en caliente HDMI, aunque esto nunca debería cambiar en Compute
Module, se puede usar para configurar un GPIO como salida GPCLK y especificar un
LED ACT que la GPU puede usar durante el arranque. Es posible que se agreguen
otras funciones en el futuro.
minimal-cm-dt-blob.dts es un .dts archivo de árbol de dispositivos de ejemplo que
configura la detección de conexión en caliente HDMI y el LED ACT y configura todos
los demás GPIO para que sean entradas con extracciones predeterminadas.
Para compilar el minimal-cm-dt-blob.dts para dt-blob.bin usar el compilador de árbol
de dispositivos dtc:
dtc -I dts -O dtb -o dt-blob.bin mínimo-cm-dt-blob.dts
Árbol de dispositivos ARM Linux
Después de start.elf haber leído dt-blob.bin y configurado los estados y relojes
iniciales de los pines, se lee config.txt que contiene muchas otras opciones para la
configuración del sistema.
Después de leer config.txt otro archivo de árbol de dispositivos específico de la placa
en la que se está ejecutando el hardware, se lee: esto es bcm2708-rpi-cm.dtb para
un módulo bcm2710-rpi-cm.dtb de cómputo o para CM3. Este archivo es un archivo
de árbol de dispositivos ARM Linux estándar, que detalla cómo se conecta el
hardware al procesador: qué dispositivos periféricos existen en el SoC y dónde, qué
GPIO se utilizan, qué funciones tienen esos GPIO y qué dispositivos físicos están
conectados. Este archivo configurará los GPIO apropiadamente, sobrescribiendo el
estado del pin configurado dt-blob.bin si es diferente. También intentará cargar
controladores para los dispositivos específicos.
Aunque el bcm2708-rpi-cm.dtb archivo se puede usar para cargar todos los
dispositivos conectados, la recomendación para los usuarios de Compute Module es
dejar este archivo solo. En su lugar, use el que se proporciona en la imagen del
software del sistema operativo Raspberry Pi estándar y agregue dispositivos usando
un archivo de 'superposición' personalizado como se describió anteriormente. El
bcm2708-rpi-cm.dtb archivo contiene entradas (deshabilitadas) para los diversos
periféricos (I2C, SPI, I2S, etc.) y no hay definiciones de pines GPIO, aparte del
402
MANUAL RASPBERRY
PI 4

periférico de tarjeta eMMC / SD que tiene definiciones GPIO y está habilitado,


porque siempre está en los mismos pines. . La idea es que el archivo de
superposición separado habilite las interfaces necesarias, describa los pines
utilizados y también describa los controladores necesarios. El start.elf firmware leerá
y fusionará los bcm2708-rpi-cm.dtb datos superpuestos antes de entregar el árbol de
dispositivos fusionados al kernel de Linux a medida que se inicia.
Origen y compilación del árbol de dispositivos
Algunos archivos dts de superposición predeterminados viven en formato
arch/arm/boot/dts/overlays. Las superposiciones correspondientes para el hardware
estándar que se pueden conectar a una Raspberry Pi en la imagen del sistema
operativo Raspberry Pi se encuentran en la partición FAT del /overlays directorio.
Tenga en cuenta que estos asumen ciertos pines en BANK0, ya que son para usar
en una Raspberry Pi. En general, use la fuente de estas superposiciones estándar
como guía para crear las suyas propias, a menos que esté usando los mismos pines
GPIO que usaría si el hardware estuviera conectado al encabezado GPIO de una
Raspberry Pi.
La compilación de estos archivos dts en archivos dtb requiere una versión
actualizada del compilador del árbol de dispositivos dtc . La forma de instalar una
versión adecuada en Raspberry Pi es ejecutar:
sudo apt instalar dispositivo-árbol-compilador
Si está compilando su propio kernel, el host de compilación también obtiene una
versión en formato scripts/dtc. Se puede organizar las plantillas, que se construirán
de forma automática mediante su inclusión en Makefileen arch/arm/boot/dts/overlays,
y con el objetivo de hacer 'DTBS'.
Depuración del árbol de dispositivos
Cuando el kernel de Linux se inicia en el (los) núcleo (s) ARM, la GPU le proporciona
un árbol de dispositivos completamente ensamblado, ensamblado a partir del dts
base y cualquier superposición. Este árbol completo está disponible a través de la
interfaz proc de Linux en /proc/device-tree, donde los nodos se convierten en
directorios y las propiedades en archivos.

403
MANUAL RASPBERRY
PI 4

Puede utilizar dtcpara escribir esto como un archivo dts legible por humanos para la
depuración. Puede ver el árbol de dispositivos completamente ensamblado, que a
menudo es muy útil:
dtc -I fs -O dts -o proc-dt.dts / proc / device-tree
Como se explicó anteriormente en la sección GPIO, también es muy útil usarlo raspi-
gpiopara ver la configuración de los pines GPIO para verificar que sean los
esperados:
raspi-gpio obtener
Si algo parece ir mal, también se puede encontrar información útil volcando los
mensajes de registro de la GPU:
sudo vcdbg log msg
Puede incluir más diagnósticos en la salida agregando dtdebug=1a config.txt.
Conexión de un módulo de cámara Raspberry Pi
El módulo de cómputo tiene dos interfaces de cámara CSI-2. CAM0 tiene dos líneas
de datos CSI-2, mientras que CAM1 tiene cuatro líneas de datos. La placa de E / S
del módulo de cálculo expone ambas interfaces. Tenga en cuenta que los
dispositivos Raspberry Pi estándar usan CAM1, pero solo exponen dos carriles.
Los módulos de la cámara no están diseñados para conectarse en caliente. Siempre
deben estar conectados o desconectados con la energía apagada.
Actualización de su sistema
El software de la cámara está en constante desarrollo, el sistema debe estar
actualizado antes de usar estas instrucciones.
actualización de sudo apt
actualización completa de sudo apt
Chip criptográfico
Cuando utilice el módulo de cómputo para controlar cámaras, NO es necesario
incorporar el chip de cifrado utilizado en las placas de cámara diseñadas por
Raspberry Pi al conectar los módulos de cámara OM5647, IMX219 o HQ
directamente a la placa portadora del módulo de cómputo. El firmware Raspberry Pi
detectará automáticamente el CM y permitirá que las comunicaciones con el módulo
de la cámara continúen sin que el chip criptográfico esté presente.

404
MANUAL RASPBERRY
PI 4

Guía de inicio rápido


Para conectar una sola cámara:
1. Apague el CM.
2. En el módulo de cálculo, ejecute sudo raspi-configy habilite la cámara.
3. Conecte la placa RPI-CAMERA y el módulo de cámara al puerto CAM1. Como
alternativa, se puede utilizar el cable de la cámara Pi Zero.

Ilustración 0-57 Conexión de la placa adaptadora

4. (Solo CM1 y CM3) Conecte los pines GPIO como se muestra a continuación.

405
MANUAL RASPBERRY
PI 4

Ilustración 0-58 Conexión GPIO para una sola cámara

5. Encienda el CM y ejecútelo sudo wget


https://datasheets.raspberrypi.com/cmio/dt-blob-cam1.bin -O /boot/dt-blob.bin
6. Finalmente, reinicie para que se lea el archivo dt-blob.bin.
Para conectar dos cámaras, siga los pasos como para una sola cámara y luego
también:
1. Mientras está apagado, repita el paso 3 con CAM0.
2. (Solo CM1 y CM3) Conecte los pines GPIO para la segunda cámara.

406
MANUAL RASPBERRY
PI 4

Ilustración 0-59 Conexión GPIO con cámara adicional

3. (Solo CM4) Agregue puentes a J6.


4. Enciende y ejecuta sudo wget https://datasheets.raspberrypi.com/cmio/dt-blob-
dualcam.bin -O /boot/dt-blob.bin
5. Reinicie para que se lea el archivo dt-blob.bin.
El cableado predeterminado utiliza GPIO 2 y 3 para controlar la cámara principal.
Estos GPIO también se pueden usar para I2C, pero al hacerlo se producirá un
conflicto y es poco probable que la cámara funcione. No habilite I2C vía
dtparam=i2c_arm=onsi desea utilizar la cámara con el cableado predeterminado
Soporte de software
Las aplicaciones de cámara suministrados raspivid y raspistill tienen la opción -cs (--
camselect) para especificar qué cámara debe ser usado.
Si está escribiendo su propia aplicación de cámara basada en la API de MMAL,
puede usar el parámetro MMAL_PARAMETER_CAMERA_NUM para configurar la
cámara actual. P.ej

407
MANUAL RASPBERRY
PI 4

MMAL_PARAMETER_INT32_T camera_num =
{{MMAL_PARAMETER_CAMERA_NUM, sizeof (camera_num)},
CAMERA_NUMBER};
status = mmal_port_parameter_set (cámara-> control, & camera_num.hdr);
Problemas avanzados
La placa de E / S del módulo de cómputo tiene un FFC de 22 vías de 0,5 mm para
cada puerto de cámara, siendo CAM0 una interfaz de dos carriles y CAM1 la interfaz
completa de cuatro carriles. La Raspberry Pi estándar utiliza un cable FFC de 1 mm
de 15 vías, por lo que necesitará un adaptador (pieza n.o RPI-CAMERA) o un cable
de cámara Pi Zero.
La placa CMIO para los módulos de cómputo 1 y 3 difiere ligeramente en el enfoque
de la del módulo de cómputo 4. Se considerarán por separado.
Módulo de cálculo 1 y 3
En la placa de E / S del módulo de cómputo, es necesario unir las interfaces GPIO e
I2C requeridas por el sistema operativo Raspberry Pi al conector CAM1. Esto se
hace conectando los GPIO desde el conector J6 GPIO a los pines CD1_SDA / SCL y
CAM1_IO0 / 1 en el conector J5 usando cables de puente.
Los números de pin a continuación se proporcionan solo como ejemplo. Los pines
LED y SHUTDOWN pueden ser compartidos por ambas cámaras, si es necesario.
Los pines SDA y SCL deben ser GPIO 0 y 1, GPIO 28 y 29 o GPIO 44 y 45, y deben
ser individuales para cada cámara.
Pasos para conectar una cámara Raspberry Pi (a CAM1)
1. Conecte el flexi FFC de 22 W de 0,5 mm (incluido con la placa RPI-CAMERA)
al conector CAM1 (los contactos flexibles hacia abajo). Como alternativa, se
puede utilizar el cable de la cámara Pi Zero.
2. Conecte la placa adaptadora RPI-CAMERA al otro extremo del flex de 0,5 mm
(los contactos del flex hacia abajo).
3. Conecte una cámara Raspberry Pi a la otra FFC de 15 W 1 mm más grande
en la placa adaptadora RPI-CAMERA (los contactos en el flex de la cámara
Raspberry Pi deben mirar hacia arriba ).
4. Conecte CD1_SDA (pin 37 de J6) a GPIO0 (pin 1 de J5).
408
MANUAL RASPBERRY
PI 4

5. Conecte CD1_SCL (patilla 39 de J6) a GPIO1 (patilla 3 de J5).


6. Conecte CAM1_IO1 (J6 pin 41) a GPIO2 (J5 pin 5).
7. Conecte CAM1_IO0 (J6 pin 43) a GPIO3 (J5 pin 7).
Los números entre paréntesis son números de pin físicos convencionales,
numerados de izquierda a derecha, de arriba a abajo. Los números en la serigrafía
corresponden a los números GPIO de Broadcom SoC.

Pasos para conectar una segunda cámara Raspberry Pi (a CAM0)


Conecte la segunda cámara al conector (CAM0) como antes.
Conecte las líneas I2C y GPIO.
1. Conecte CD0_SDA (pin 45 de J6) a GPIO28 (pin 1 de J6).
2. Conecte CD0_SCL (patilla 47 de J6) a GPIO29 (patilla 3 de J6).
3. Conecte CAM0_IO1 (J6 pin 49) a GPIO30 (J6 pin 5).
4. Conecte CAM0_IO0 (J6 pin 51) a GPIO31 (J6 pin 7).
Módulo de cálculo 4
En la placa IO del Compute Module 4, el conector CAM1 ya está cableado al I2C en
los GPIO 44 y 45, y la línea de apagado está conectada a GPIO 5 en el expansor
GPIO. No hay señal LED conectada. No se requieren cambios de hardware para
usar CAM1 más que conectar el FFC de 22 pines al conector CAM1 (contactos
flexibles hacia abajo).
Para conectar una segunda cámara Raspberry Pi (a CAM0), se deben agregar dos
puentes a J6 en una orientación vertical. El conector CAM0 comparte la línea de
apagado con CAM1.
Configuración de estados de pines predeterminados (todas las variantes de CM)
Los GPIO que estamos usando para la cámara están predeterminados en el modo
de entrada en el módulo de cómputo. Para anular estas configuraciones
predeterminadas y también decirle al sistema que estos son los pines que utilizará la
cámara, debemos crear una dt-blob.bin que cargue el firmware cuando se inicie el
sistema. Este archivo se crea a partir de un archivo dts de origen que contiene la
configuración necesaria y se coloca en la partición de arranque.

409
MANUAL RASPBERRY
PI 4

La pin_config sección en la sección pins_cm { }(módulo de cómputo), pins_cm3 { }


( módulo de cómputo 3) o pins_cm4 { }(módulo de cómputo 4) de la fuente dts
necesita el LED de la cámara y los pines de habilitación de energía configurados en
las salidas:
pin @ p2 {función = "salida"; terminación = "no_pulling"; };
pin @ p3 {función = "salida"; terminación = "no_pulling"; };
Para indicarle al firmware qué pines usar y cuántas cámaras buscar, agregue lo
siguiente al pin_defines sección:
pin_define @ CAMERA_0_LED {tipo = "interno"; número = <2>; };
pin_define @ CAMERA_0_SHUTDOWN {tipo = "interno"; número = <3>; };
pin_define @ CAMERA_0_UNICAM_PORT {type = "internal"; número = <1>; };
pin_define @ CAMERA_0_I2C_PORT {tipo = "interno"; número = <0>; };
pin_define @ CAMERA_0_SDA_PIN {tipo = "interno"; número = <0>; };
pin_define @ CAMERA_0_SCL_PIN {tipo = "interno"; número = <1>; };
La sangría y los saltos de línea no son críticos, por lo que los archivos de ejemplo
expanden estos bloques para facilitar la lectura.
La sección pin_config del módulo de cómputo necesita el LED de la segunda cámara
y los pines de habilitación de energía configurados:
pin @ p30 {función = "salida"; terminación = "no_pulling"; };
pin @ p31 {función = "salida"; terminación = "no_pulling"; };
En la sección pin_defines del módulo Compute del archivo dts, cambie el parámetro
NUM_CAMERAS a 2 y agregue lo siguiente:
pin_define @ CAMERA_1_LED {tipo = "interno"; número = <30>; };
pin_define @ CAMERA_1_SHUTDOWN {type = "internal"; número = <31>; };
pin_define @ CAMERA_1_UNICAM_PORT {type = "internal"; número = <0>; };
pin_define @ CAMERA_1_I2C_PORT {tipo = "interno"; número = <0>; };
pin_define @ CAMERA_1_SDA_PIN {tipo = "interno"; número = <28>; };
pin_define @ CAMERA_1_SCL_PIN {tipo = "interno"; número = <29>; };
Compilar un archivo DTS en un blob de árbol de dispositivos

410
MANUAL RASPBERRY
PI 4

Una vez que se han realizado todos los cambios necesarios en el dts archivo, es
necesario compilarlo y colocarlo en la partición de arranque del dispositivo
configurando los pines.
Colocación de la pantalla oficial de 7 pulgadas
El software de su sistema esté actualizado antes de comenzar. En términos
generales, el enfoque adoptado para los módulos de cómputo 1, 3 y 4 es el mismo,
pero existen pequeñas diferencias en la configuración física requerida.
El cable de la cámara Raspberry Pi Zero no se puede utilizar como alternativa al
adaptador RPI-DISPLAY, porque su cableado es diferente y lapantalla no está
diseñada para conectarse en caliente. Este (y los módulos de la cámara) siempre
deben estar conectados o desconectados con la alimentación apagada.
Guía de inicio rápido (pantalla)
Conexión a DISP1

1. Conecte la pantalla al puerto DISP1 en la placa de E / S del módulo de


cómputo a través del adaptador de pantalla de 22 W a 15 W.
2. (Solo CM1 y 3) Conecte estos pines junto con cables de puente:
GPIO0 - CD1_SDA
GPIO1 - CD1_SCL
3. Encienda el Compute Module y ejecute:
sudo wget https://datasheets.raspberrypi.com/cmio/dt-blob-disp1-only.bin -O
/boot/dt-blob.bin
4. Reinicie para dt-blob.bin que se lea el archivo.
Conexión a DISP0
1. Conecte la pantalla al puerto DISP0 en la placa de E / S del módulo de
cómputo a través del adaptador de pantalla de 22 W a 15 W.

2. (Solo CM1 y 3) Conecte estos pines junto con cables de puente:


GPIO28 - CD0_SDA
GPIO29 - CD0_SCL
3. Encienda el Compute Module y ejecute:

411
MANUAL RASPBERRY
PI 4

sudo wget https://datasheets.raspberrypi.com/cmio/dt-blob-disp0-only.bin -


O /boot/dt-blob.bin
4. Reinicie para dt-blob.bin que se lea el archivo.
Guía de inicio rápido (pantalla y cámaras)
Para habilitar la pantalla y una cámara: *
1. Conecte la pantalla al puerto DISP1 en la placa de E / S del módulo de
cómputo a través del adaptador de pantalla de 22 W a 15 W, llamado
RPI-DISPLAY.
2. Conecte el módulo de la cámara al puerto CAM1 en la placa IO del
módulo de cómputo a través del adaptador de 22 W a 15 W llamado
RPI-CAMERA. Alternativamente, se puede utilizar el cable de la cámara
Raspberry Pi Zero.
3. (Solo CM 1 y 3) Conecte estos pines junto con cables de puente:
GPIO0 - CD1_SDA
GPIO1 - CD1_SCL
GPIO2 - CAM1_IO1
GPIO3 - CAM1_IO0

Ilustración 0-60 Conexión GPIO para una sola pantalla y módulos de cámara

(Esta imagen debe actualizarse para quitar los cables de puente


adicionales y usar el cableado estándar (2 y 3, no 4 y 5))
4. Encienda el Compute Module y ejecute:

412
MANUAL RASPBERRY
PI 4

sudo wget https://datasheets.raspberrypi.com/cmio/dt-blob-disp1-


cam1.bin -O /boot/dt-blob.bin
5. Reinicie para dt-blob.bin que se lea el archivo.
Para habilitar la pantalla y ambas cámaras:
1. Siga los pasos para conectar la pantalla y una cámara de arriba.
2. Conecte el módulo de la cámara al puerto CAM0 en la placa IO del
módulo de cómputo a través del adaptador de 22 W a 15 W llamado
RPI-CAMERA. Alternativamente, se puede utilizar el cable de la
cámara Raspberry Pi Zero.
3. (Solo CM1 y 3) Agregar enlaces:
GPIO28 - CD0_SDA
GPIO29 - CD0_SCL
GPIO30 - CAM0_IO1
GPIO31 - CAM0_IO0
4. (Solo CM4) Agregue puentes a J6.
5. Encienda el Compute Module y ejecute:
sudo wget https://datasheets.raspberrypi.com/cmio/dt-blob-disp1-
cam2.bin -O /boot/dt-blob.bin
6. Reinicie para dt-blob.bin que se lea el archivo.
Soporte de software
No se requiere ninguna configuración adicional para habilitar la pantalla táctil. La
interfaz táctil debería funcionar de inmediato una vez que la pantalla se detecte
correctamente.
Si se desea deshabilitar el elemento de la pantalla táctil y solo usar el lado de la
pantalla, puede agregar el comando disable_touchscreen=1 a /boot/config.txt para
hacerlo.
Para hacer que el firmware ignore la pantalla incluso si está conectado, agregue
ignore_lcd=1 a /boot/config.txt.
Configuración de firmware
El firmware busca en el archivo dt-blob.bin la configuración relevante para usar en la
pantalla. Mira el pin_number @ define para
413
MANUAL RASPBERRY
PI 4

DISPLAY_I2C_PORT
DISPLAY_SDA
DISPLAY_SCL
DISPLAY_DSI_PORT
Los números de pin del puerto I2C, SDA y SCL se explican por sí mismos.
DISPLAY_DSI_PORT selecciona entre DSI1 (el predeterminado) y DSI0.
Una vez que se han realizado todos los cambios necesarios en el dts archivo, es
necesario compilarlo y colocarlo en la partición de arranque del dispositivo.
Las instrucciones para hacer esto se pueden encontrar en la página de configuración
de pines.
Fuentes
 dt-blob-disp1-only.dts
 dt-blob-disp1-cam1.dts
 dt-blob-disp1-cam2.dts
 dt-blob-disp0-only.dts (usa cableado como para CAM0)

3.12 Procesadores.
BCM2835
El BCM2835 es el chip Broadcom utilizado en Raspberry Pi Model A, B, B +,
Compute Module y Raspberry Pi Zero.
BCM2836
El chip Broadcom utilizado en Raspberry Pi 2 Model B. La arquitectura subyacente
en BCM2836 es idéntica a BCM2835. La única diferencia significativa es la
eliminación del procesador ARM1176JZF-S y el reemplazo por un clúster Cortex-A7
de cuatro núcleos.
BCM2837
Este es el chip Broadcom utilizado en la Raspberry Pi 3 y en los modelos posteriores
de la Raspberry Pi 2. La arquitectura subyacente del BCM2837 es idéntica a la del
BCM2836. La única diferencia significativa es el reemplazo del clúster de cuatro
núcleos ARMv7 por un clúster ARM Cortex A53 (ARMv8) de cuatro núcleos.
Los núcleos ARM funcionan a 1,2 GHz, lo que hace que el dispositivo sea un 50%
más rápido que la Raspberry Pi 2. El VideoCore IV funciona a 400 MHz.
414
MANUAL RASPBERRY
PI 4

BCM2837B0
Este es el chip Broadcom utilizado en Raspberry Pi 3B + y 3A +. La arquitectura
subyacente del BCM2837B0 es idéntica al chip BCM2837 utilizado en otras
versiones del Pi. El hardware del núcleo ARM es el mismo, solo que la frecuencia
tiene una clasificación más alta.
Los núcleos ARM son capaces de funcionar a hasta 1,4 GHz, lo que hace que el 3B
+ / 3A + sea aproximadamente un 17% más rápido que el Raspberry Pi 3. El
VideoCore IV funciona a 400 MHz. El núcleo ARM es de 64 bits, mientras que el
VideoCore IV es de 32 bits.
El chip BCM2837B0 está empaquetado de manera ligeramente diferente al
BCM2837, y lo más notable es que incluye un esparcidor de calor para mejores
térmicas. Esto permite frecuencias de reloj más altas y un monitoreo y control más
preciso de la temperatura del chip.
BCM2711
Este es el chip Broadcom utilizado en el modelo B de Raspberry Pi 4. La arquitectura
del BCM2711 es una mejora considerable con respecto a la utilizada por los SoC en
los modelos anteriores de Raspberry Pi. Continúa con el diseño de CPU de cuatro
núcleos del BCM2837, pero utiliza el núcleo ARM A72 más potente. Tiene un
conjunto de funciones de GPU muy mejorado con una entrada / salida mucho más
rápida, debido a la incorporación de un enlace PCIe que conecta los puertos USB 2 y
USB 3, y un controlador Ethernet conectado de forma nativa. También es capaz de
direccionar más memoria que los SoC utilizados antes.
Los núcleos ARM son capaces de funcionar a hasta 1,5 GHz, lo que hace que el Pi 4
sea un 50% más rápido que el Raspberry Pi 3B +. La nueva unidad VideoCore VI 3D
ahora funciona a hasta 500 MHz. Los núcleos ARM son de 64 bits y, aunque
VideoCore es de 32 bits, hay una nueva Unidad de administración de memoria, lo
que significa que puede acceder a más memoria que las versiones anteriores.
El chip BCM2711 continúa utilizando la tecnología de dispersión de calor iniciada con
BCM2837B0, que proporciona una mejor gestión térmica.
Procesador: SoC de 64 bits Cortex-A72 (ARM v8) de cuatro núcleos a 1,5 GHz.
Memoria: accede a hasta 8GB LPDDR4-2400 SDRAM (según el modelo)

415
MANUAL RASPBERRY
PI 4

Cachés: 32 KB de datos + 48 KB de caché L1 de instrucciones por núcleo. 1 MB de


caché L2.
Multimedia: H.265 (decodificación 4Kp60); H.264 (decodificación 1080p60,
codificación 1080p30); OpenGL ES, gráficos 3.0
E / S: bus PCIe, puerto Ethernet integrado, 2 puertos DSI (solo uno expuesto en
Raspberry Pi 4B), 2 puertos CSI (solo uno expuesto en Raspberry Pi 4B), hasta 6 ×
I2C, hasta 6 × UART (mezclado con I2C), hasta 6 × SPI (solo cinco expuestos en
Raspberry Pi 4B), salida de video HDMI dual, salida de video compuesto.
RP3A0
La Raspberry Pi RP3A0 es nuestro primer sistema en paquete (SiP) que consta de
un Broadcom BCM2710A1, que es la matriz de silicio empaquetada dentro del chip
Broadcom BCM2837 que se utiliza en la Raspberry Pi 3 , junto con 512 MB de
DRAM.
Es utilizado por la Raspberry Pi Zero 2 W .

Ilustración 0-61 Sección transversal RP3A0

El RP3A0 es una CPU Arm Cortex A53 de cuatro núcleos y 64 bits con una
frecuencia de reloj de 1 GHz, aunque con un disipador de calor u otra solución de
enfriamiento en su lugar, el chip puede potencialmente overclockearse a 1.2 GHz.

416
MANUAL RASPBERRY
PI 4

CAPÍTULO IV PROYECTOS

417
MANUAL RASPBERRY
PI 4

Se describen con redacción clara y concisa las actividades del proyecto. Esto se
realizará mediante una estructuración de capítulos.

Se estructurará en capítulos y éstos a su vez se dividirán en temas, subtemas, etc.,


según las necesidades del Reporte. Los nombres de los capítulos deberán estar en
una hoja independiente en mayúsculas y negritas. Los subtítulos deberán escribirse
en mayúsculas y minúsculas, sin negritas. Todos los títulos deberán justificarse a la
izquierda.

Se deberá guardar la confidencialidad de la información que así sea marcada por la


empresa, igualmente deberán protegerse los derechos de propiedad industrial o
intelectual, derechos de autor, patentes, etc. Se incluirá sólo bajo autorización del
asesor industrial información, documentos o similares, que tengan relación directa
con la operación de la empresa o bien que sean considerados confidenciales.

Para la mayoría de los casos, el contenido de esta sección corresponderá a la


documentación técnica generada como parte del desarrollo del o los proyectos
realizado(s) durante la Estadía Profesional.
Extensión mínima de 35 cuartillas , cuidando que el número de cuartillas por capítulo
sea equilibrado.

418
MANUAL RASPBERRY
PI 4

CAPÍTULO V PROGRAMACIÓN

419
MANUAL RASPBERRY
PI 4

Se describen con redacción clara y concisa las actividades del proyecto. Esto se
realizará mediante una estructuración de capítulos.

Se estructurará en capítulos y éstos a su vez se dividirán en temas, subtemas, etc.,


según las necesidades del Reporte. Los nombres de los capítulos deberán estar en
una hoja independiente en mayúsculas y negritas. Los subtítulos deberán escribirse
en mayúsculas y minúsculas, sin negritas. Todos los títulos deberán justificarse a la
izquierda.

Se deberá guardar la confidencialidad de la información que así sea marcada por la


empresa, igualmente deberán protegerse los derechos de propiedad industrial o
intelectual, derechos de autor, patentes, etc. Se incluirá sólo bajo autorización del
asesor industrial información, documentos o similares, que tengan relación directa
con la operación de la empresa o bien que sean considerados confidenciales.

Para la mayoría de los casos, el contenido de esta sección corresponderá a la


documentación técnica generada como parte del desarrollo del o los proyectos
realizado(s) durante la Estadía Profesional.
Extensión mínima de 35 cuartillas , cuidando que el número de cuartillas por capítulo
sea equilibrado.

420
MANUAL RASPBERRY
PI 4

CAPÍTULO VI PRUEBAS

421
MANUAL RASPBERRY
PI 4

Se describen con redacción clara y concisa las actividades del proyecto. Esto se
realizará mediante una estructuración de capítulos.

Se estructurará en capítulos y éstos a su vez se dividirán en temas, subtemas, etc.,


según las necesidades del Reporte. Los nombres de los capítulos deberán estar en
una hoja independiente en mayúsculas y negritas. Los subtítulos deberán escribirse
en mayúsculas y minúsculas, sin negritas. Todos los títulos deberán justificarse a la
izquierda.

Se deberá guardar la confidencialidad de la información que así sea marcada por la


empresa, igualmente deberán protegerse los derechos de propiedad industrial o
intelectual, derechos de autor, patentes, etc. Se incluirá sólo bajo autorización del
asesor industrial información, documentos o similares, que tengan relación directa
con la operación de la empresa o bien que sean considerados confidenciales.

Para la mayoría de los casos, el contenido de esta sección corresponderá a la


documentación técnica generada como parte del desarrollo del o los proyectos
realizado(s) durante la Estadía Profesional.
Extensión mínima de 35 cuartillas , cuidando que el número de cuartillas por capítulo
sea equilibrado.

422
MANUAL RASPBERRY
PI 4

CAPÍTULO VII CAMBIOS

423
MANUAL RASPBERRY
PI 4

Se describen con redacción clara y concisa las actividades del proyecto. Esto se
realizará mediante una estructuración de capítulos.

Se estructurará en capítulos y éstos a su vez se dividirán en temas, subtemas, etc.,


según las necesidades del Reporte. Los nombres de los capítulos deberán estar en
una hoja independiente en mayúsculas y negritas. Los subtítulos deberán escribirse
en mayúsculas y minúsculas, sin negritas. Todos los títulos deberán justificarse a la
izquierda.

Se deberá guardar la confidencialidad de la información que así sea marcada por la


empresa, igualmente deberán protegerse los derechos de propiedad industrial o
intelectual, derechos de autor, patentes, etc. Se incluirá sólo bajo autorización del
asesor industrial información, documentos o similares, que tengan relación directa
con la operación de la empresa o bien que sean considerados confidenciales.

Para la mayoría de los casos, el contenido de esta sección corresponderá a la


documentación técnica generada como parte del desarrollo del o los proyectos
realizado(s) durante la Estadía Profesional.
Extensión mínima de 35 cuartillas , cuidando que el número de cuartillas por capítulo
sea equilibrado.

424
MANUAL RASPBERRY
PI 4

CAPÍTULO VIII APLICACIÓN


TERMINADA

425
MANUAL RASPBERRY
PI 4

Se describen con redacción clara y concisa las actividades del proyecto. Esto se
realizará mediante una estructuración de capítulos.

Se estructurará en capítulos y éstos a su vez se dividirán en temas, subtemas, etc.,


según las necesidades del Reporte. Los nombres de los capítulos deberán estar en
una hoja independiente en mayúsculas y negritas. Los subtítulos deberán escribirse
en mayúsculas y minúsculas, sin negritas. Todos los títulos deberán justificarse a la
izquierda.

Se deberá guardar la confidencialidad de la información que así sea marcada por la


empresa, igualmente deberán protegerse los derechos de propiedad industrial o
intelectual, derechos de autor, patentes, etc. Se incluirá sólo bajo autorización del
asesor industrial información, documentos o similares, que tengan relación directa
con la operación de la empresa o bien que sean considerados confidenciales.

Para la mayoría de los casos, el contenido de esta sección corresponderá a la


documentación técnica generada como parte del desarrollo del o los proyectos
realizado(s) durante la Estadía Profesional.
Extensión mínima de 35 cuartillas , cuidando que el número de cuartillas por capítulo
sea equilibrado.

426
MANUAL RASPBERRY
PI 4

CAPÍTULO XI IDEAS PARA


MEJORAR EL MANUAL

427
MANUAL RASPBERRY
PI 4

Se describen con redacción clara y concisa las actividades del proyecto. Esto se
realizará mediante una estructuración de capítulos.

Se estructurará en capítulos y éstos a su vez se dividirán en temas, subtemas, etc.,


según las necesidades del Reporte. Los nombres de los capítulos deberán estar en
una hoja independiente en mayúsculas y negritas. Los subtítulos deberán escribirse
en mayúsculas y minúsculas, sin negritas. Todos los títulos deberán justificarse a la
izquierda.

Se deberá guardar la confidencialidad de la información que así sea marcada por la


empresa, igualmente deberán protegerse los derechos de propiedad industrial o
intelectual, derechos de autor, patentes, etc. Se incluirá sólo bajo autorización del
asesor industrial información, documentos o similares, que tengan relación directa
con la operación de la empresa o bien que sean considerados confidenciales.

Para la mayoría de los casos, el contenido de esta sección corresponderá a la


documentación técnica generada como parte del desarrollo del o los proyectos
realizado(s) durante la Estadía Profesional.
Extensión mínima de 35 cuartillas , cuidando que el número de cuartillas por capítulo
sea equilibrado.

428
MANUAL RASPBERRY
PI 4

CAPÍTULO X… (Se coloca la


numeración consecutiva al
último capítulo desarrollado).
RESULTADOS,
RECOMENDACIONES Y
CONCLUSIONES

10.1. RECOMENDACIONES

Los resultados se presentan por medio de texto, tablas y figuras. Texto es la forma
más rápida y efectiva de exponer pocos datos. Las tablas son preferibles para
presentar datos precisos o repetitivos. Las figuras son ideales cuando los datos
exhiben tendencias o patrones interesantes. Evita presentar los datos de más de una
forma. Usa el sistema internacional (métrico) para los pesos y medidas. Esta sección
también se redacta en tiempo pasado (se contó, se observó, etc.).

429
MANUAL RASPBERRY
PI 4

Esta sección explica los resultados de la investigación y los compara con el


conocimiento previo del tema. Limítate en todo momento a explicar los resultados; no
los presentes nuevamente.

• Colocar las tablas en el orden en que van a ser analizadas (que no es siempre el
mismo orden en que se realizaron).
• Analizar con que herramienta (texto, tabla o figura) es la óptima para presentar los
resultados.
• Describir los resultados más significativos de cada uno de los cuadros, haciendo
referencia a ellos de dos formas:
“Como se observa en la Tabla 3.1…….”
Descripción de los resultados y al finalizar el párrafo colocar” (Ver Tabla 5.2)”,
también se puede señalar “(Ver figura 3)”.
• Después de describir la información, proceder a realizar los comentarios sobre
elementos claves, argumentos e interpretación de dichos resultados, en
correspondencia con las bases teóricas establecidas, los criterios del autor y los de
otros autores.

10.2 IMPLANTACIÓN
Resultado final del proyecto de estadía profesional.

 Interfaces
 Diagramas
 Gráficas
 Tablas
 Fotografías

430
MANUAL RASPBERRY
PI 4

 Planos

10.3 PRUEBAS TÉCNICAS

 Validación de datos y procedimientos


 Pruebas de configuración e instalación
 Análisis experimental
 Análisis financiero
 Pruebas PERT y toma de decisión
 Comparación de resultados esperados y obtenidos

(De acuerdo al perfil de la carrera)

10.4 CONCLUSIONES

Tendrán una triple finalidad: reafirmar lo esencial de lo realizado, comentar los


logros, lo cual debe ser coherente con los objetivos planteados y con todo el contexto
del trabajo. Además dichos resultados deben dimensionarse en tiempo y espacio y
mostrar caminos para ir más lejos en desarrollos similares.

La sección debe ser corta y no debe dar detalles de los resultados, duplicar
excesivamente el contenido del resumen, o hacer referencia a artículos, tablas y
figuras.
Extensión mínima una cuartilla y máximo dos.

431
MANUAL RASPBERRY
PI 4

GLOSARIO
Deben de ir todos los términos técnicos y conceptos de importancia, cada uno con su
respectiva definición y en orden alfabético.

Ejemplo:

Análisis de peligros.- proceso de recopilación y evaluación de información sobre los


peligros y las condiciones que los originan para decidir cuáles son importantes con la
inocuidad de los alimentos y, por tanto, planteados en el plan de HACCP.

Ciencia.- Es el conjunto de conocimientos sistemáticamente estructurados, y


susceptible de ser articulados unos con otros.
432
MANUAL RASPBERRY
PI 4

Desgastes.- Es la erosión de material sufrida por una superficie sólida por acción de
otra superficie. Está relacionado con las interacciones entre superficies y más
específicamente con la eliminación de material de una superficie como resultado de
una acción mecánica. La necesidad de una acción mecánica, en forma de contacto
debido a un movimiento relativo, es una distinción importante entre desgaste
mecánico y cualquier otro proceso con similares resultados.

Fricción.- Es la acción y efecto de friccionar (restregar, frotar mucho). Se conoce


como fuerza de fricción a la fuerza que se opone al movimiento de una superficie
sobre otra, o a la fuerza opuesta al inicio de un movimiento.

Lubricación.- Es el proceso o técnica empleada para reducir el rozamiento entre dos


superficies que se encuentran muy próximas y en movimiento una respecto de la
otra, interponiendo para ello una sustancia entre ambas denominada lubricante que
soporta o ayuda a la carga (presión generada) entre las superficies enfrentadas.

Mecánico.- Mecánico denomina a los profesionales que se ocupan de la


construcción, montaje y mantenimiento de los equipos industriales y maquinarias.

Tribología.- Es la ciencia que estudia la fricción, el desgaste y la lubricación que


tienen lugar durante el contacto entre superficies sólidas en movimiento.

433
MANUAL RASPBERRY
PI 4

REFERENCIAS
(BIBLIOGRAFÍA)

Listar en orden alfabético las fuentes consultadas para elaborar el Reporte


Técnico, el Glosario y Anexos; incluyendo: libros, diccionarios, revistas, sitios
web, manuales técnicos, etc. La estructura será:

1. Referencia de un libro:

434
MANUAL RASPBERRY
PI 4

Fullan, M. G. y Stiegelbauer, S. (1997). El cambio educativo: Guía de planeación


para maestros. Distrito Federal, México: Trillas.

2. Referencia de un capítulo dentro de un libro editado:


Cruz, C. (2001). The virtual university: Customized education in a nutshell. En P. S.
Goodman (Ed.), Technology enhanced learning: Opportunities for change (pp. 183–
201). Mahwah, NJ, EE.UU.: Erlbaum.

3. Referencia de un artículo de revista especializada:


Gunawardena, C., Lowe, C. y Anderson, T. (1997). Analysis of a global online debate
and the development of an interaction analysis model for examining social
construction of knowledge in computer conferencing. Journal of Educational
Computing Research, 17, 395–429.37

4. Referencia de una disertación doctoral:


Valenzuela González, J. R. (1998). The effects of the relationship between students'
level of strategic learning and their evaluation of instructor characteristics on
academic achievement. (Disertación doctoral, Universidad de Texas en Austin,
1998).
Dissertation Abstracts International, A 59 (06). (University Microfilms No. AAT
9838147)

5. Referencia de una ponencia en un congreso:


Pintrich, P. R. y Garcia, T. (1992, abril). An integrated model of motivation and self–
regulated learning. Documento presentado en la reunión anual de la American
Educational Research Association, San Francisco, EE.UU.

6. Referencia de un informe técnico:


McKeachie, W. J., Pintrich, P. R., Lin, Y.–G., Smith, D. A. F. y Sharma, R. (1990).
Teaching and learning in the college classroom: A review of the research literature

435
MANUAL RASPBERRY
PI 4

(2a. ed.) (Informe No. 90–B–003.1). Ann Arbor, MI, EE.UU.: University of Michigan,
National Center for Research to Improve Postsecondary Teaching and Learning.

7. Referencia de un documento consultado en Internet:


International Data Corporation. (2001, abril 26). eLearning is burgeoning. Consulta
realizada el 31 de octubre de 2001, en
http://www.idc.com:8080/ebusinesstrends/ebt20010426.stm

8. Referencia de una tesis

Rodriguez Blanco A. Fragmentación de poblaciones y conservación de carnívoros.


Tesís doctoral inédita, Madrid, Universidad Computense de Madrid, 1996.

(Autor. Título. Tipo de Tesis, Lugar, Universidad, Fecha de Edición).

9. Referencia para publicaciones seriadas (Periódicos, anuarios, boletines)

CORREA, Pablo. Metabiblioteca: el sueño de lectores y bibliotecarios. En: El


Espectador, Bogotá: (21 al 27 de ago., 2005) p. 7F

(Autor del artículo. Título del artículo: subtitulo del artículo. En: nombre del periódico,
lugar de publicación (día, mes, año); páginas de la sección consultada.)

10. Referencia para una revista electrónica

BYRNE, Alex. La alfabetización informacional desde una perspectiva global; el


desastre agudiza nuestras mentes. En: Anales de Documentación [en línea]. No. 8
(2005) http://www.um.es/fccd/anales/ado801.pdf. [citado en 10 de septiembre de
2005]

(Autor. Titulo: Subtitulo. En: Título de la publicación: subtitulo de la publicación. Tipo


de medio o soporte físico. Número de volumen, número de la entrega (mes, año).
Localización. Fecha de cita).

436
MANUAL RASPBERRY
PI 4

https://www.ecured.cu/Visual_Studio_Code

https://www.pccomponentes.com/caracteristicas-raspberry-pi-4?
__cf_chl_jschl_tk__=pmd_Eo3x1EQteFLwuTSaPhw0U1.yE2PuQcYG
K7yOpgVfLz4-1633524519-0-gqNtZGzNAjujcnBszQwR

https://www.profesionalreview.com/2021/07/18/que-es-raspberry-pi/
https://aurestic.es/que-es-flutter/

https://es.wikipedia.org/wiki/Flutter_(software)

https://www.qualitydevs.com/2019/07/05/que-es-flutter/

437
MANUAL RASPBERRY
PI 4

ANEXOS

Presentan la información que apoya el contenido del Reporte. Se consideran


opcionales y deberán estar referidos en el desarrollo del Reporte de la Estadía.

En los Anexos o Apéndices, se coloca toda aquella información complementaria o


adicional que sirva de apoyo a puntos específicos del Reporte Técnico y que por sus
características o extensión, se estime conveniente incluirla al final del trabajo.

Se incluirá, de común acuerdo con el asesor industrial o institucional, el organigrama


de la empresa y/o el departamento o algunos otros elementos que sirvan de apoyo
como planos, fotografías, diagramas, mapas, ejemplos de reportes impresos, etc.
NOTA: si se decide integrar algún manual elaborado durante la Estadía Profesional,
se considerará como un Anexo.

438

También podría gustarte