config.txt
什么是 config.txt
?
在 GitHub 上修改
Raspberry Pi 设备使用名为 config.txt
的配置文件,而不是传统 PC 上的 BIOS。在 Arm CPU 和 Linux 初始化之前,GPU 会读取 config.txt
。Raspberry Pi OS 会在 boot 分区(位于 /boot/firmware/
)中查找该文件。
注意:在 Raspberry Pi OS Bookworm 之前,Raspberry Pi OS 将启动分区存储在 /boot/
。
您可以直接从 Raspberry Pi OS 安装中编辑 config.txt
。也可以移除存储设备,在另一台电脑上编辑启动分区中的文件,包括 config.txt
。
对 config.txt
的更改仅在重启后生效。您可以使用以下命令查看当前活动设置:
vcgencmd get_config <config>
-
显示特定配置值,例如
vcgencmd get_config arm_freq
. vcgencmd get_config int
-
列出所有非零整数配置选项(非零)
vcgencmd get_config str
-
列出所有非空字符串配置选项
Note
|
并非所有配置设置都能使用 vcgencmd 检索。
|
文件格式
config.txt
文件由早期启动固件读取,因此它有一个非常简单的文件格式。格式是每行上的单个 property=value
语句,其中 value
是整数或字符串。可以添加注释,或者可以注释掉现有的配置值并禁用,方法是在行首添加 #
字符。
条目的行长限制为98个字符-超过此限制的任何字符都将被忽略。
这是一个示例文件:
# Enable audio (loads snd_bcm2835)
dtparam=audio=on
# Automatically load overlays for detected cameras
camera_auto_detect=1
# Automatically load overlays for detected DSI displays
display_auto_detect=1
# Enable DRM VC4 V3D driver
dtoverlay=vc4-kms-v3d
高级功能
include
使指定文件的内容插入到当前文件中。
例如,在config.txt中添加 include exfig.txt
行将在 config.txt
文件中包含 extraconfig.txt
文件的内容。
Note
|
引导加载程序处理的设置只有在
|
条件过滤
条件过滤器在 条件部分 中介绍。
autoboot.txt
在 GitHub 上修改
autoboot.txt
是一个可选的配置文件,可用于指定 boot_partition
编号。
这也可以与 tryboot
功能结合使用,以实现操作系统升级的A/B引导。
autoboot.txt
限制为512字节,并支持 [all]
、 [none]
和 [tryboot]
条件 过滤器。
另请参见 TRYBOOT 引导流程。
boot_partition
指定用于引导的分区号,除非分区号已指定为 reboot
命令的参数(例如 sudo reboot 2
)。
分区号从 1
开始,MBR分区是 1
到 4
。指定分区 0
意味着从 default
分区启动,这是第一个可启动的FAT分区。
可引导分区必须格式化为FAT12、FAT16或FAT32并包含 start.elf
文件(或Raspberry Pi 5上的 config.txt
文件)才能被引导加载程序归类为可引导。
tryboot_a_b
将此属性设置为 1
以在设置 tryboot
标志时加载正常的 config.txt
和 boot.img
文件,而不是 tryboot.txt
和 tryboot.img
。
这使得 tryboot
切换可以在分区级别而不是文件级别进行,而无需修改A/B分区中的配置文件。
A/B引导的示例更新流程
下面的伪代码展示了假设的操作系统 "更新服务 "如何使用 autoboot.txt
中的 tryboot
来执行故障安全操作系统升级。
初始化 autoboot.txt
:
[all]
tryboot_a_b=1
boot_partition=2
[tryboot]
boot_partition=3
安装更新
-
系统开机并默认引导到分区2
-
Update service
将下一个版本操作系统下载到分区3 -
通过重新启动到
tryboot
模式reboot"0 tryboot"
测试更新,其中0
表示默认分区
提交或取消更新
-
系统从分区3启动,因为
[tryboot]
过滤器在tryboot mode
中的计算结果为true -
如果tryboot处于活动状态(
/proc/device-tree/chosen/bootloader/partition
)-
如果当前引导分区(
/proc/device-tree/chosen/bootloader/partition
)与autoboot.txt
的[tryboot]
部分中的boot_partition
匹配-
Update Service
验证系统以验证更新是否成功 -
如果更新成功
-
替换
autoboot.txt
交换boot_partition
配置 -
正常重启-分区3现在是默认启动分区
-
-
Else
-
Update Service
将更新标记为失败,例如它删除更新文件。 -
正常重启-分区2仍然是默认启动分区,因为
tryboot
标志会自动清除
-
-
End if
-
-
End If
-
-
End If
更新 autoboot.txt
[all]
tryboot_a_b=1
boot_partition=3
[tryboot]
boot_partition=2
Note
|
更新 |
常用选项
在 GitHub 上修改
常用硬件配置选项
camera_auto_detect
默认情况下,Raspberry Pi OS 在 `/boot/firmware/config.txt`中包含一行启用此设置的内容。
启用后,固件将自动为识别到的 CSI 摄像头加载设备树。
要禁用,请设置 camera_auto_detect=0
。
display_auto_detect
默认情况下,Raspberry Pi OS 在 `/boot/firmware/config.txt`中包含一行启用此设置的内容。
启用后,固件将自动为识别到的 DSI 显示器加载设备树。
要禁用,请设置 display_auto_detect=0
。
dtoverlay
dtoverlay选项请求固件加载一个命名的设备树overlay — 一个可以启用内核对内置和外部硬件支持的配置文件。例如, dtoverlay=vc4-kms-v3d
加载一个启用内核图形驱动程序的设备树文件。
作为一种特殊情况,如果不带值调用 - dtoverlay=
- 该选项将标记覆盖参数列表的结束。如果在任何其他 dtoverlay
或 dtparam
设置之前使用,它会阻止加载任何HAT overlay。
有关更多详细信息,请参阅 DTBs, overlays and config.txt。
dtparam
Raspberry Pis的设备树配置文件支持许多参数,例如启用I2C和SPI接口。许多DT overlay可以通过使用参数进行配置。这两种类型的参数都可以使用 dtparam
设置提供。此外,overlay参数可以附加到 dtoverlay
选项中,用逗号分隔,但请记住行长限制为98个字符。
有关更多详细信息,请参阅 DTBs, overlays and config.txt。
板载模拟音频(3.5mm插孔)
在 GitHub 上修改
板载音频输出使用配置选项来更改模拟音频的驱动方式,以及是否启用某些固件功能。
audio_pwm_mode
audio_pwm_mode=1
从3.5毫米音频插孔中选择传统的低质量模拟音频。
audio_pwm_mode=2
(默认值)使用高级调制方案选择高质量模拟音频。
Note
|
此选项使用更多GPU计算资源,并且可能会干扰某些模型上的某些用例。 |
HDMI音频
默认情况下,所有具有HDMI输出的Raspberry Pi型号都启用HDMI音频输出。
要禁用 HDMI 音频输出,请在 /boot/firmware/config.txt
中的 dtoverlay=vc4-kms-v3d
行末尾添加 ,noaudio
:
dtoverlay=vc4-kms-v3d,noaudio
启动选项
在 GitHub 上修改
start_file
,fixup_file
这些选项指定在引导之前传输到VideoCore GPU的固件文件。
start_file
指定要使用的VideoCore固件文件。
fixup_file
指定用于修复start_file中使用的内存位置以匹配GPU内存拆分的文件。
start_file
和 fixup_file
是匹配的一对 - 使用不匹配的文件导致板子无法启动。这是一个高级选项,因此我们建议您使用 start_x
和 start_debug
而不是此选项。
Note
|
不能以这种方式选择削减固件( start*cd.elf 和 fixup*cd.dat )- 系统将无法启动。启用削减固件的唯一方法是指定 gpu_mem=16 。削减固件删除了对编解码器、3D和调试日志记录的支持,并将初始早期启动帧缓冲区限制为1080p @16bpp - 尽管KMS可以在稍后阶段用32bpp 4K帧缓冲区替换它,就像任何固件一样。
|
Note
|
Raspberry Pi 5, Compute Module 5, 和Raspberry Pi 500固件独立于引导加载程序EEPROM中。 |
kernel
kernel
是引导分区上用于加载内核的替代文件名。Raspberry Pi 1、Zero和Zero W以及Raspberry Pi Compute Module 1的默认值为 kernel.img
。Raspberry Pi 2、3、3+和Zero 2 W以及Raspberry Pi Compute Module 3和3+的默认值为 kernel7.img
。Raspberry Pi 4和400以及Raspberry Pi Compute Module 4的默认值为 kernel8.img
,如果 arm_64bit
设置为0,则为 kernel7l.img
。
Raspberry Pi 5, Compute Module 5, 和Raspberry Pi 500固件默认加载 kernel_2712.img
,因为此映像包含特定于Raspberry Pi 5的优化(例如16K页面大小)。如果此文件不存在,则将加载通用64位内核( kernel8.img
)。
arm_64bit
如果设置为1,内核将以64位模式启动。设置为0选择32位模式。
在64位模式下,固件将选择适当的内核(例如 kernel8.img
),除非定义了显式的 kernel
选项,在这种情况下使用该选项。
在Pi 4系列(Pi4B、Pi 400、CM4和CM4S)上默认为1,在所有其他平台上默认为0。但是,如果显式 kernel
选项中给出的名称与已知内核之一匹配,则将相应地设置 arm_64bit
。
64 位内核有以下几种形式:
-
未压缩的映像文件
-
映像的 gzip 压缩包
这两种形式都可以使用 img
文件扩展名;引导加载程序使用文件开头的签名字节识别存档。
以下 Raspberry Pi 型号支持此标记:
-
2B rev 1.2
-
3B
-
3A+
-
3B+
-
4B
-
400
-
2 W
-
计算模块 3
-
计算模块 3+
-
计算模块 4
-
计算模块 4S
从 Raspberry Pi 5, Compute Module 5, 和Raspberry Pi 500 以后的型号 仅 支持 64 位内核。这些型号不支持此标记。
ramfsfile
ramfsfile
是要加载的 ramfs
的引导分区上的可选文件名。
Note
|
较新的固件支持加载多个 ramfs 文件。您应该用逗号分隔多个文件名,注意不要超过80个字符的行长限制。所有加载的文件都在内存中连接起来,并被视为单个 ramfs blob。更多信息在 论坛上。
|
initramfs
initramfs
命令同时指定了 ramfs 文件名*和*内存地址。它在一个参数中同时执行 ramfsfile
和 ramfsaddr
的操作。地址也可以是 followkernel
(或 0
),以便将其放在内核映像之后的内存中。示例值如下 initramfs initramf.gz 0x00800000
或 initramfs init.gz followkernel
。与 ramfsfile
一样,较新的固件允许通过逗号分隔多个文件名来加载多个文件。
Note
|
此选项使用与所有其他选项不同的语法,您不应在此处使用 = 字符。
|
disable_poe_fan
默认情况下,即使没有连接 PoE HAT,也会在启动时对 I2C 总线进行探测。将该选项设置为 1 将禁止通过 I2C(ID_SD 和 ID_SC)引脚控制 PoE HAT 风扇。如果不打算使用 PoE HAT,这将有助于缩短启动时间。
enable_uart
enable_uart=1
(与 cmdline.txt
中的 console=serial0,115200
结合使用)要求内核创建一个串行控制台,可通过 GPIO 14 和 15(40 针接头的针脚 8 和 10)访问。编辑 cmdline.txt
,删除 quiet
行后,内核的启动信息也会出现在该行。另请参阅 uart_2ndstage
。
force_eeprom_read
将该选项设为 0
,可防止固件在上电时尝试读取 I2C HAT EEPROM(连接到引脚 ID_SD 和 ID_SC)。另请参阅 disable_poe_fan
。
os_prefix
os_prefix
是一个可选设置,允许在同一卡上安装的多个版本的内核和设备树文件之间进行选择。操作系统文件 "指的是内核、initramfs、cmdline.txt、.dtbs 和 overlays。前缀通常是目录名,但也可以是文件名的一部分,如 "test-"。因此,目录前缀必须包括尾部的 /
字符。
为了减少系统无法启动的可能性,固件首先测试提供的前缀值的可行性 — 除非在新位置/名称处可以找到指定的内核和.dtb,否则前缀将被忽略(设置为"")。这种可行性测试的一个特殊情况应用于覆盖,如果 ${os_prefix}${overlay_prefix}
存在,它只会从 ${os_prefix}${overlay_prefix}README
加载(其中[overlay_prefix, overlay_prefix
]的默认值是 覆盖/
),否则它会忽略 os_prefix
并将覆盖视为共享。
(固件在检查前缀时检查密钥文件而不是目录的存在的原因有两个:前缀可能不是目录,并且并非所有引导方法都支持测试目录的存在。)
Note
|
任何用户指定的操作系统文件都可以通过使用绝对路径(相对于引导分区)绕过所有前缀 - 只需使用 kernel=/my_common_kernel.img
|
另请参见 overlay_prefix
和 upstream_kernel
。
otg_mode
(仅限Raspberry Pi 4)
USB On-The-Go(通常缩写为OTG)是一项功能,允许支持带有适当OTG电缆的USB设备将自己配置为USB主机。在较旧的Raspberry Pi上,一个USB 2控制器用于USB主机和设备模式。
旗舰产品从Raspberry Pi 4B 和 键盘系列产品从 Raspberry Pi 400(不是CM4或CM4IO)以后添加了一个高性能USB 3控制器,通过PCIe连接,以驱动主USB端口。传统的USB 2控制器仍然可以在USB-C电源连接器上用作设备( otg_mode=0
,默认值)。
otg_mode=1
请求将功能更强大的XHCI USB 2控制器用作该USB-C连接器上的可以替换的主机控制器。
Note
|
Raspberry Pi OS 在 `/boot/firmware/config.txt`中的[CM4]配置中已经默认添加此设置。 |
overlay_prefix
指定加载overlays的子目录/前缀,默认为 overlays/
(注意尾部的 /
)。如果与 os_prefix
结合使用, os_prefix
将位于 overlay_prefix
之前,例如, dtoverlay=disable-bt
将尝试加载 ${os_prefix}${overlay_prefix}disable-bt.dtbo
。
Note
|
除非存在 ${os_prefix}${overlay_prefix}README ,否则overlays将与主操作系统共享(即忽略 os_prefix )。
|
配置属性
Raspberry Pi 5 需要一个 config.txt
文件,以表明分区是可启动的。
boot_ramdisk
如果该属性设置为 1
,则引导加载程序将尝试加载一个名为 boot.img
的内存盘文件,其中包含 boot filesystem。随后的文件(如 start4.elf
)将从内存盘读取,而不是原始启动文件系统。
boot_ramdisk
的主要用途是支持 安全启动
,不过,未签名的 boot.img
文件对网络启动或 RPIBOOT
配置也很有用。
-
ramdisk 文件的最大大小为 96MB。
-
boot.img
文件是原始磁盘.img
文件。建议使用无 MBR 的普通 FAT32 分区格式。 -
在操作系统启动之前,ramdisk 文件系统的内存会被释放。
-
如果选择 TRYBOOT,引导加载程序将搜索
tryboot.img
而不是boot.img
。 -
另请参阅 autoboot.txt。
有关 secure-boot
和创建 boot.img
文件的更多信息,请参阅 USBBOOT.
Default: 0
boot_load_flags
自定义固件(裸机)的实验属性。
位 0 (0x1) 表示 .elf 文件是定制固件。这将禁用任何兼容性检查(例如,是否支持 USB MSD 启动),并在启动可执行文件前重置 PCIe。
与 Raspberry Pi 5 无关,因为没有 start.elf
文件。
Default: 0x0
enable_rp1_uart
设置为 1
时,固件会将 RP1 UART0 初始化为 115200bps,并且在启动操作系统前不会复位 RP1(可使用 pciex4_reset=1
单独配置)。
这使得在早期启动代码(例如在裸机调试期间)中更容易在 40 针针座上获得 UART 输出。
Default: 0x0
pciex4_reset
仅限 Raspberry Pi 5。
默认情况下,RP1
使用的 PCIe x4 控制器会在启动操作系统前复位。如果将该参数设置为 0
,则重置将被禁用,操作系统或裸机代码可从引导加载程序继承 PCIe 配置设置。
Default: 1
uart_2ndstage
如果 uart_2ndstage
为 1
,则启用 UART 的调试记录。该选项也会在 start.elf
中自动启用 UART 日志记录。Boot options 页面对此也有说明。
BOOT_UART "属性也会启用引导加载器 UART 日志,但除非同时设置了 uart_2ndstage=1
,否则不会在 start.elf
中启用 UART 日志。
Default: 0
erase_eeprom
如果 erase_eeprom
设置为 1
,那么 recovery.bin
将擦除整个 SPI EEPROM,而不是烧录引导程序映像。此属性对正常启动没有影响。
Default: 0
eeprom_write_protect
配置 EEPROM 写入状态寄存器
。可将其设置为将整个 EEPROM 标记为写保护,或清除写保护。
该选项必须与控制 EEPROM 写状态寄存器
更新的 EEPROM /WP
引脚结合使用。 除非同时配置了 写入状态寄存器
,否则将 /WP
拉低(CM4 的 EEPROM_nWP
或 Raspberry Pi 4 的 TP5
)不会对 EEPROM 进行写保护。
详情请参见 Winbond W25x40cl 或 Winbond W25Q16JV datasheet。
recovery.bin
的 config.txt
中的 eeprom_write_protect
设置。
Value | Description |
---|---|
1 |
配置写保护区域以覆盖整个 EEPROM。 |
0 |
清除写保护区域。 |
-1 |
什么也不做 |
Note
|
flashrom 不支持清除写保护区域,如果定义了写保护区域,将无法更新 EEPROM。
|
在 Raspberry Pi 5 上,/WP
默认为低电平,因此一旦配置了 写状态寄存器
,就会启用写保护。要清除写保护,可通过连接 TP14
和 TP1
将 /WP
拉高。
Default: -1
Secure Boot configuration properties
下面的 config.txt
属性用于对 secure-boot
OTP 设置进行编程。这些更改是不可逆的,只能在刷新引导加载程序 EEPROM 映像时通过 RPIBOOT
进行编程。这可确保 "安全启动 "无法通过远程或意外插入过期 SD 卡映像进行设置。
有关启用 secure-boot
的更多信息,请参阅 USBBOOT repo 中的 Secure Boot readme 和 Secure Boot tutorial。
program_pubkey
如果该属性设置为 1
,那么 recovery.bin
将把 EEPROM 映像中公钥的哈希值写入 OTP。 设置后,引导加载程序将拒绝使用不同 RSA 密钥签名的 EEPROM 映像或未签名的映像。
Default: 0
revoke_devkey
如果该属性设置为 1
,recovery.bin
将向 OTP 写入一个值,防止 ROM 加载不支持 安全启动
的旧版本第二阶段引导加载程序。这可以防止通过恢复到旧版本的引导加载程序来关闭 secure-boot
。
Default: 0
program_rpiboot_gpio
计算模块有一个专用的 nRPIBOOT
跳线,用于选择 RPIBOOT
模式。带有 EEPROM 的旗舰版和键盘版 Raspberry Pi 设备没有专用的 nRPIBOOT
跳线。要在旗舰版和键盘版设备上选择 RPIBOOT
模式,请将下列 GPIO 引脚之一拉低:
-
2
-
4
-
5
-
6
-
7
-
8
该属性不依赖于`secure-boot`,但要确认该 GPIO 配置不会与任何可能在启动期间将 GPIO 拉低的 HAT 冲突。
为了安全起见,只能通过 RPIBOOT
对该属性进行编程,因此必须首先使用 erase_eeprom
清除引导加载程序 EEPROM。这将导致 BCM2711 ROM 故障切换到 RPIBOOT
模式,从而允许设置该选项。
在 BCM2712 上,您也可以通过按住电源按钮并同时连接 USB-C 电源来强制启动 RPIBOOT
模式。
Default:
GPIO控制
在 GitHub 上修改
gpio
通过 gpio
指令,可以在启动时将 GPIO 引脚设置为特定模式和值,而以前需要自定义 dt-blob.bin
文件。每一行都对一组引脚应用相同的设置(或至少进行相同的更改),可以是单个引脚(3
)、引脚范围(3-4
)或以逗号分隔的列表(3-4,6,8
)。
引脚集后面跟一个 =
和一个或多个以逗号分隔的属性:
-
ip
- 输入 -
op
- 输出 -
a0-a5
- Alt0-Alt5 -
dh
- 驱动高电平(用于输出) -
dl
- 驱动低电平(用于输出) -
pu
- 上拉 -
pd
- 下拉 -
pn/np
- 没有上拉或下拉
gpio
设置按顺序应用,因此后面出现的设置会覆盖之前出现的设置。
例子:
# 为GPIO引脚0到27选择Alt2(对于DPI24)
gpio=0-27=a2
# 将GPIO12设置为输出设置为1
gpio=12=op,dh
# 改变拉动(输入)引脚18和20
gpio=18,20=pu
# 设置引脚17到21为输入
gpio=17-21=ip
gpio
指令受控于 config.txt
中的 […]
条件筛选器,因此可以根据型号、序列号和 EDID 使用不同的设置。
通过这种机制进行的 GPIO 更改不会对内核产生任何直接影响。它们不会导致 GPIO 引脚被导出到 sysfs
接口,而且可以被设备树中的 pinctrl
条目以及 pinctrl
等实用程序覆盖。
还需注意的是,从接通电源到更改生效之间会有几秒钟的延迟,如果通过网络或 USB 大容量存储设备启动,延迟时间会更长。
超频选项
在 GitHub 上修改
内核有一个 CPUFreq驱动程序,默认情况下启用省电调速器,当安装 raspi-config 时,在启动过程中切换为按需调速器。使用按需调速器后,CPU 频率将随处理器负载而变化。您可以使用 *_min
配置选项调整最小值,或通过应用静态缩放调速器(powersave 或 performance)或 force_turbo=1
来禁用动态时钟。
当 SoC 达到 temp_limit
(见下文)(默认值为 85°C)时,超频和过压将在运行时被禁用,以降低 SoC 的发热量。Raspberry Pi 1 和 Raspberry Pi 2 应该不会达到这一上限,但 Raspberry Pi 3 及更新版本则更有可能达到这一上限。当检测到电压不足时,超频和过压也会被禁用。
Note
|
更多信息 参见频率管理和热控制部分。 |
Warning
|
将任何超频参数设置为 raspi-config 所用值以外的值,可能会在 SoC 内设置一个永久位。这样就有可能检测到你的 Raspberry Pi 曾经超频。当 force_turbo 设置为 1 ,并且任何 over_voltage_* 选项设置为 0 以上时,超频位就会设置。更多信息,请参阅 关于 Turbo 模式的博文。
|
超频
Option | Description |
---|---|
|
Frequency of the ARM CPU in MHz. |
|
Increases |
|
Sets |
|
Frequency of the GPU processor core in MHz. Influences CPU performance because it drives the L2 cache and memory bus; the L2 cache benefits only Raspberry Pi Zero/Raspberry Pi Zero W/Raspberry Pi 1; and there is a small benefit for SDRAM on Raspberry Pi 2 and Raspberry Pi 3. See section below for use on Raspberry Pi 4. |
|
Frequency of the hardware video block in MHz; individual override of the |
|
Frequency of the image sensor pipeline block in MHz; individual override of the |
|
Frequency of the 3D block in MHz; individual override of the |
|
Frequency of the High Efficiency Video Codec block in MHz; individual override of the |
|
Frequency of the SDRAM in MHz. SDRAM overclocking on Raspberry Pi 4 or newer is not supported. |
|
CPU/GPU core upper voltage limit. The value should be in the range [-16,8] which equates to the range [0.95V,1.55V] ([0.8,1.4V] on Raspberry Pi 1) with 0.025V steps. In other words, specifying -16 will give 0.95V (0.8V on Raspberry Pi 1) as the maximum CPU/GPU core voltage, and specifying 8 will allow up to 1.55V (1.4V on Raspberry Pi 1). For defaults, see the table below. Values above 6 are only allowed when |
|
Sets |
|
SDRAM controller voltage adjustment. [-16,8] equates to [0.8V,1.4V] with 0.025V steps. Not supported on Raspberry Pi 4 or later devices. |
|
SDRAM I/O voltage adjustment. [-16,8] equates to [0.8V,1.4V] with 0.025V steps. Not supported on Raspberry Pi 4 or later devices. |
|
SDRAM phy voltage adjustment. [-16,8] equates to [0.8V,1.4V] with 0.025V steps. Not supported on Raspberry Pi 4 or later devices. |
|
Forces turbo mode frequencies even when the ARM cores are not busy. Enabling this may set the warranty bit if |
|
Enables turbo mode from boot for the given value in seconds, or until * changed the default from |
|
Minimum value of |
|
Minimum value of |
|
Minimum value of |
|
Minimum value of |
|
Minimum value of |
|
Minimum value of |
|
Minimum value of |
|
Minimum value of |
|
Minimum value of |
|
On Raspberry Pi 4 and Raspberry Pi 5 the over_voltage_delta parameter adds the given offset in microvolts to the number calculated by the DVFS algorithm. |
|
Overheat protection. This sets the clocks and voltages to default when the SoC reaches this value in degree Celsius. Values over 85 are clamped to 85. |
|
3A+/3B+ only. CPU speed throttle control. This sets the temperature at which the CPU clock speed throttling system activates. At this temperature, the clock speed is reduced from 1400MHz to 1200MHz. Defaults to |
此表给出了各种Raspberry Pi型号选项的默认值,所有频率均以MHz表示。
Option | Pi 0/W | Pi1 | Pi2 | Pi3 | Pi3A+/Pi3B+ | CM4 & Pi4B ⇐ R1.3 | Pi4B R1.4 | Pi 400 | Pi Zero 2 W | Pi 5 |
---|---|---|---|---|---|---|---|---|---|---|
|
1000 |
700 |
900 |
1200 |
1400 |
1500 |
1500 or 1800 if |
1800 |
1000 |
2400 |
|
400 |
250 |
250 |
400 |
400 |
500 |
500 |
500 |
400 |
910 |
|
300 |
250 |
250 |
400 |
400 |
500 |
500 |
500 |
300 |
N/A |
|
300 |
250 |
250 |
400 |
400 |
500 |
500 |
500 |
300 |
910 |
|
300 |
250 |
250 |
400 |
400 |
500 |
500 |
500 |
300 |
910 |
|
N/A |
N/A |
N/A |
N/A |
N/A |
500 |
500 |
500 |
N/A |
910 |
|
450 |
400 |
450 |
450 |
500 |
3200 |
3200 |
3200 |
450 |
4267 |
|
700 |
700 |
600 |
600 |
600 |
600 |
600 |
600 |
600 |
1500 |
|
250 |
250 |
250 |
250 |
250 |
200 |
200 |
200 |
250 |
500 |
|
250 |
250 |
250 |
250 |
250 |
250 |
250 |
250 |
250 |
500 |
|
250 |
250 |
250 |
250 |
250 |
250 |
250 |
250 |
250 |
N/A |
|
250 |
250 |
250 |
250 |
250 |
250 |
250 |
250 |
250 |
500 |
|
250 |
250 |
250 |
250 |
250 |
250 |
250 |
250 |
250 |
500 |
|
400 |
400 |
400 |
400 |
400 |
3200 |
3200 |
3200 |
400 |
4267 |
此表给出了所有模型中相同的选项的默认值。
Option | Default |
---|---|
|
0 (seconds) |
|
85 (°C) |
|
0 (1.35V, 1.2V on Raspberry Pi 1) |
|
0 (1.2V) |
|
0 (1.2V) |
|
0 (1.2V) |
|
0 (1.2V) |
|
0 (1.2V) |
固件使用自适应电压缩放(AVS)来确定由 over_voltage
和 over_voltage_min
定义的范围内的最佳CPU/GPU内核电压。
特定于Raspberry Pi 4、Raspberry Pi 400和CM4
系统空闲时的最小核心频率必须足够快,以支持显示器的最高像素时钟(忽略消隐)。因此,如果显示模式为4Kp60, core_freq
将被提升到500 MHz以上。
Display option | Max core_freq
|
---|---|
Default |
500 |
|
550 |
Note
|
从 Raspberry Pi 5、CM5、Pi 500后无需添加 hdmi_enable_4kp60 ,因为默认支持双 4Kp60 显示器。
|
-
超频需要最新的固件版本。
-
如果系统超频,最新固件会自动放大电压。手动设置
over_voltage
会禁用超频的自动电压缩放。 -
超频时建议使用单独的频率设置(
isp_freq
、v3d_freq
等)而不是gpu_freq
,因为ISP、V3D、HEVC等的最大稳定频率会有所不同。 -
SDRAM频率无法在Raspberry Pi 4或更高版本的设备上配置。
时钟关系
Raspberry Pi 4
GPU内核、CPU、SDRAM和GPU都有自己的PLL,并且可以有不相关的频率。h264、v3d和ISP块共享一个PLL。
要查看树莓派的当前频率(以KHz为单位),请键入: cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
。将结果除以1000以找到以MHz为单位的值。请注意,该频率是内核_requested_频率,任何节流(例如在高温下)都可能意味着CPU实际上运行得比报告的要慢。可以使用 vcgencmd measure_clockarm
检索实际ARM CPU频率的瞬时测量值。这以赫兹显示。
监测核心温度
要查看 Raspberry Pi 的温度,请运行以下命令:
$ cat /sys/class/thermal/thermal_zone0/temp
将结果除以 1000 即可得出以摄氏度为单位的数值。或者,您也可以使用 vcgencmd measure_temp
来报告 GPU 温度。
达到温度上限不会对 SoC 造成伤害,但会导致 CPU 节流。散热器有助于控制核心温度,从而提高性能。如果 Raspberry Pi 在机箱内运行,这一点尤其有用。散热片上的气流可提高冷却效率。
达到温度限制不会损坏SoC,但会导致CPU节流。散热器有助于控制核心温度,从而控制性能。如果Raspberry Pi在机箱内运行,这尤其有用。散热器上的气流可以提高冷却效率。
当内核温度在80°C到85°C之间时,ARM内核将被限制。如果温度超过85°C,ARM内核和GPU将被限制。
对于Raspberry Pi 3 Model B+,PCB技术进行了更改,以提供更好的散热和增加的热质量。此外,还引入了软温度限制,目标是最大限度地延长设备在达到85°C的硬限制之前可以 冲刺
的时间。当达到软限制时,时钟速度从1.4GHz降低到1.2GHz,工作电压略有降低。这降低了温度上升的速度:我们将1.4GHz的短周期换成1.2GHz的较长周期。默认情况下,软限制为60°C。这可以通过 config.txt
中的 temp_soft_limit
设置进行更改。
监控电压
保持电源电压在4.8V以上对可靠性能至关重要。请注意,某些USB充电器/电源的电压可能低至4.2V。这是因为它们通常设计用于为3.7V锂电池充电,而不是为计算机提供5V。
要监控Raspberry Pi的PSU电压,您需要使用万用表来测量GPIO上的VCC和GND引脚之间的电压。更多信息可在文档的 电源 部分获得。
如果电压降至4.63V(±5%)以下,ARM内核和GPU将被限制,并将指示低压状态的消息添加到内核日志中。
Raspberry Pi 5 PMIC 内置 ADC,可以测量电源电压。要查看当前电源电压,请运行以下命令:
$ vcgencmd pmic_read_adc EXT5V_V
条件过滤器
在 GitHub 上修改
当将单个 SD 卡(或卡图像)与一个 Raspberry Pi 和一个显示器一起使用时,很容易根据特定组合的要求来设置 config.txt
并保持这种状态,仅在发生变化时进行修改。
但是,如果在不同的显示器之间交换一个 Raspberry Pi,或者在多个板之间交换 SD 卡(或卡图像),则一组设置可能不再足够。条件过滤器允许您定义配置文件的某些部分仅在特定情况下使用,从而允许单个 config.txt
在由不同硬件读取时创建不同的配置。
[all]
过滤器
[all]
过滤器是最基本的过滤器。它会重置所有先前设置的过滤器,并允许将其下方列出的任何设置应用于所有硬件。通常,在过滤设置组的末尾添加一个 [all]
过滤器是个好主意,以避免无意中组合过滤器(见下文)。
型号过滤器
条件型号过滤器根据下表应用。
Filter | Applicable model(s) |
---|---|
|
Model 1A, Model 1B, Model 1A+, Model 1B+, Compute Module 1 |
|
Model 2B (BCM2836- or BCM2837-based) |
|
Model 3B, Model 3B+, Model 3A+, Compute Module 3, Compute Module 3+ |
|
Model 3A+, Model 3B+ (also sees |
|
Model 4B, Pi 400, Compute Module 4, Compute Module 4S |
|
Raspberry Pi 5, Compute Module 5, Pi 500 |
|
Pi 400 (also sees |
|
Pi 500 (also sees |
|
Compute Module 1 (also sees |
|
Compute Module 3 (also sees |
|
Compute Module 3+ (also sees |
|
Compute Module 4 (also sees |
|
Compute Module 4S (also sees |
|
Compute Module 5 (also sees |
|
Zero, Zero W, Zero 2 W |
|
Zero W (also sees |
|
Zero 2 W (also sees |
|
Filter by |
这些对于定义不同的 kernel
、 initramfs
和 cmdline
设置特别有用,因为 Raspberry Pi 1 和 Raspberry Pi 2 需要不同的内核。它们还可用于定义不同的超频设置,因为 Raspberry Pi 1 和 Raspberry Pi 2 具有不同的默认速度。例如,为每个设置定义单独的 initramfs
映像:
[pi1] initramfs initrd.img-3.18.7+ followkernel [pi2] initramfs initrd.img-3.18.7-v7+ followkernel [all]
请记住在最后使用 [all]
过滤器,以便任何后续设置不仅限于 Raspberry Pi 2 硬件。
Note
|
某些型号的 Raspberry Pi(包括 Zero、计算模块和键盘型号)可从多个过滤器读取设置。要将设置只应用于一种型号,可采用以下方法
|
[none]
过滤器
[none]
过滤器可防止任何后续设置应用于任何硬件。虽然没有 [none]
什么都做不了,但它是一种有用的方法,可以将未使用的设置组保留在 config.txt 中,而不必注释掉每一行。
[tryboot]
过滤器
如果设置了 tryboot
重新启动标志,此过滤器将成功。
它旨在用于 autoboot.txt 中,以在 tryboot
模式下选择不同的 boot_partition
进行故障安全操作系统更新。
[EDID=*]
过滤器
当在 Raspberry Pi 中使用单个 SD 卡在多个显示器之间切换时,如果空白配置不足以自动为每个显示器选择所需的分辨率,则允许根据显示器的 EDID 名称选择特定设置。
要查看所连接显示器的 EDID 名称,您需要按照几个步骤操作。运行以下命令查看 Raspberry Pi 上有哪些输出设备:
$ ls -1 /sys/class/drm/card?-HDMI-A-?/edid
在 Raspberry Pi 4 上,这将打印类似以下内容:
/sys/class/drm/card1-HDMI-A-1/edid
/sys/class/drm/card1-HDMI-A-2/edid
然后,您需要针对每个文件名运行 edid-decode
,例如:
$ edid-decode /sys/class/drm/card1-HDMI-A-1/edid
如果没有显示器连接到特定的输出设备,它就会告诉你 EDID 是空的;否则,它就会为你提供有关显示器功能的信息。您需要查找指定 制造商
和 显示器产品名称
的行。"EDID 名称" 为 <制造商>-<显示器产品名称>
,字符串中的空格用下划线代替。例如,如果您的 edid-decode
输出包括:
.... Vendor & Product Identification: Manufacturer: DEL .... Display Product Name: 'DELL U2422H' ....
此监视器的EDID名称为 DEL-DELL_U2422H
。
然后,您可以将其用作条件过滤器来指定仅在连接此特定监视器时使用的设置:
[EDID=DEL-DELL_U2422H]
cmdline=cmdline_U2422H.txt
[all]
这些设置仅在启动时适用。显示器必须在启动时连接,Raspberry Pi必须能够读取其EDID信息以找到正确的名称。启动后将不同的显示器热插到Raspberry Pi不会选择不同的设置。
在Raspberry Pi 4上,如果两个HDMI端口都在使用中,则将针对它们两个检查EDID过滤器,并应用所有匹配条件过滤器的配置。
Note
|
此设置在Raspberry Pi 5上不可用。 |
序列号过滤器
有时设置应该只应用于单个特定的Raspberry Pi,即使您将SD卡交换到不同的SD卡。示例包括许可证密钥和超频设置(尽管许可证密钥已经以不同的方式支持SD卡交换)。您还可以使用它来选择不同的显示设置,即使上面的EDID标识是不可能的,只要您不在Raspberry Pi之间交换显示器。例如,如果您的显示器不提供可用的EDID名称,或者如果您使用复合输出(无法从中读取EDID)。
要查看Raspberry Pi的序列号,请运行以下命令:
cat /proc/cpuinfo
一个16位十六进制值将显示在输出底部附近。您的Raspberry Pi序列号是最后八位十六进制数字。例如,如果您看到:
Serial : 0000000012345678
序列号是 12345678
。
Note
|
在某些Raspberry Pi型号上,前8个十六进制数字包含 0 以外的值。即使在这种情况下,也只使用最后八个十六进制数字作为序列号。
|
您可以定义仅应用于此特定Raspberry Pi的设置:
[0x12345678]
# settings here are applied only to the Raspberry Pi with this serial
[all]
# settings here are applied to all hardware
内存选项
在 GitHub 上修改
许可证密钥和编解码器选项
在 GitHub 上修改
通过锁定到 Raspberry Pi 的CPU序列号的 购买许可证,可以启用Raspberry Pi 3和更早型号上的附加编解码器的硬件解码。
树莓派4永久禁用了MPEG2和VC1的硬件解码器。这些编解码器无法启用,因此不需要硬件编解码器许可证密钥。MPEG2和VC1文件的软件解码在典型用例中表现良好。
Raspberry Pi 5具有H.265(HEVC)硬解。默认情况下启用此解码,因此不需要硬件编解码器许可证密钥。
视频选项
在 GitHub 上修改
HDMI模式
树莓派4-系列的HDMI
为了支持双显示器和高达 4Kp60 的模式,Raspberry Pi 4、CM4、和Pi 400 在每个时钟周期生成 2 个输出像素。
每种 HDMI 模式都有一个时序列表,用于控制同步脉冲持续时间周围的所有参数。这些时序通常通过像素时钟、活动像素数量、前廊、同步脉冲以及水平和垂直方向的后廊来定义。
以每时钟 2 像素的速度运行所有程序意味着4-系列设备不能支持任何不能被 2 整除的时序。
CEA 和 DMT标准中只有一种不兼容的模式:DMT模式81、1366x768@60Hz。这种模式的水平同步和后门廊时序具有奇数值,宽度不能被8整除。
如果您的显示器具有这种分辨率,4-系列设备会自动降到显示器所宣传的下一模式;通常为 1280x720。
复合视频模式
复合视频输出可以在每个型号的Raspberry Pi计算机上找到:
model | composite output |
---|---|
Raspberry Pi 1 A and B |
RCA jack |
Raspberry Pi Zero |
Unpopulated |
Raspberry Pi Zero 2 W |
Test pads on underside of board |
Raspberry Pi 5 |
J7 pad next to HDMI socket |
All other models |
3.5mm AV jack |
Note
|
键盘系列产品上不提供复合视频输出。 |
enable_tvout
设置为 1
以启用复合视频输出,设置为 0
以禁用。从 Raspberry Pi 4 开始的旗舰机型、从 CM4 开始的计算模块以及 Zero 机型上均可使用,复合输出仅在您将其设置为 1
时可用,这也会禁用HDMI输出。键盘系列产品上不提供复合输出。
Model | Default |
---|---|
Pi 4, 5 and 400 |
0 |
All other models |
1 |
在所有支持此功能的型号上,需要禁用HDMI输出才能启用复合输出。当没有连接/检测到HDMI显示器时,HDMI输出被禁用。设置 enable_tvout=0
以防止在禁用HDMI时启用复合。
要启用复合输出,请在 /boot/firmware/config.txt
中的 dtoverlay=vc4-kms-v3d
行末尾添加 ,composite
:
dtoverlay=vc4-kms-v3d,composite
默认情况下,这会输出复合NTSC视频。要选择不同的模式,请将以下内容附加到 /boot/firmware/cmdline.txt
中的单行:
vc4.tv_norm=<video_mode>
将 <video_mode>
占位符替换为以下值之一:
-
NTSC
-
NTSC-J
-
NTSC-443
-
PAL
-
PAL-M
-
PAL-N
-
PAL60
-
SECAM