由于树莓派并没有传统意义上的BIOS, 所以现在各种系统配置参数通常被存在”config.txt”这个文本文件中,树莓派的config.txt文件会在ARM内核初始化之前被GPU读取。这个文件存在引导分区上的,对于Linux, 路径通常是/boot/config.txt, 如果是Windows (或者OS X) 它会被识别为SD卡中可访问部分的一个普通文件.

将树莓派SD卡通过读卡器接到电脑上,就可以修改这个文件。

config.txt文件里面能够修改的参数有很多,这个是官方描述里面config.txt可修改的选项。有包含内存、许可密钥等balabalabala......

由于我们做3D打印机只需要他的图像驱动用途,关于config.txt文件其他配置我们暂不需要讨论。我们只看Video/Display选项里面有针对性的按照自己的显示器修改就可以了。

以下我是把官方介绍搬进来直接用必应翻译,必然有很多翻译蛋疼的地方。关键的地方我会//标注,其他可以直接跳过。

复合视频模式选项

SDTV_MODE

sdtv_mode命令定义了用于在黄色 RCA 插孔上合成视频输出的电视标准。默认值为0.

sdtv_mode 结果
0 正常 NTSC
1 日文版的 NTSC –无底座
2 普通好友
3 巴西版 PAL-525/60 而不是 625/50, 不同的副载波

//现在也应该没有人用RGB三色线来驱动了吧,选0就好了。

SDTV_ASPECT

sdtv_aspect命令定义复合视频输出的纵横比。默认值为1.

sdtv_aspect 结果
1 4:3
2 14:9
3 16:9

//这个纵横比就看自己的显示器是什么比例了,如果是特殊比例的,把这个定义去掉。

SDTV_DISABLE_COLOURBURST

sdtv_disable_colourburst设置为1将禁用复合视频输出上的 colourburst。图片将以单色显示, 但可能显示得更清晰。

//这个功能我基本会开启,毕竟我们3D打印只是需要显示图像而已。官方说开启能显示更清晰,我看2k屏和1080p都超过我的视网膜分辨率了,我无从辨别。(要是有个别拉面能看到,请告知/:,@P)但有一点是能感受到的,就是同样的配置加载photonic明显快一点,cpu也降低了一点使用率。Nanodlp我还没试过这个对比。

HDMI 模式选项

HDMI_SAFE

hdmi_safe设置为1将导致 "安全模式" 设置被用来尝试以最大 hdmi 兼容性启动。这与设置以下参数相同:

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

如果您的显示器没有准确的edid, 则将hdmi_ignore_edid设置为0xa5000080可以忽略 edid/显示数据。它需要这个不寻常的值, 以确保它不是意外触发。

//这个需要自己去看自己的屏幕参数了,一般找商家索取屏幕参数里面都会提及。这个功能看屏幕需求有选择开启。

HDMI_EDID_FILE

hdmi_edid_file设置为1将导致 GPU 从位于启动分区的edid.dat文件中读取 edid 数据, 而不是从监视器读取它。

HDMI_FORCE_EDID_AUDIO

hdmi_force_edid_audio设置为1会假装所有音频格式都由显示支持, 即使在未报告为支持的情况下也允许 DTS/AC3 的直通。

//这个可以去掉。

HDMI_IGNORE_EDID_AUDIO

hdmi_ignore_edid_audio设置为1会假装所有音频格式都不受显示器的支持。这意味着 ALSA 将默认为模拟音频 (耳机) 插孔。

//如果要保留ignore_edid这个可以有。

HDMI_FORCE_EDID_3D

hdmi_force_edid_3d设置为1会假装所有 CEA 模式都支持 3D, 即使 edid 不表示支持此项。

//去掉

AVOID_EDID_FUZZY_MATCH

avoid_edid_fuzzy_match设置为1可避免模糊匹配在 edid 中描述的模式。相反, 它将选择标准模式与匹配的分辨率和最接近的帧率, 即使冲裁设置是错误的。

//这个是用edid必配的功能,能减少很多麻烦。

HDMI_IGNORE_CEC_INIT

hdmi_ignore_cec_init设置为1将停止在启动期间发送的初始活动源消息。这可以防止在您重新启动覆盆子 Pi 时, 启用了由 CEC 支持的 TV 退出待机和通道切换。

HDMI_IGNORE_CEC

hdmi_ignore_cec设置为1会假装cec完全不受电视支持。将不支持任何 CEC 功能。

CEC_OSD_NAME

cec_osd_name命令设置设备的初始的 cec 名称。默认为覆盆子 Pi。

HDMI_PIXEL_ENCODING

hdmi_pixel_encoding命令强制像素编码模式。默认情况下, 它将使用从 EDID 请求的模式, 因此您不需要更改它。

hdmi_pixel_encoding 结果
0 默认值 (用于 CEA 的 rgb 限制, 全为 DMT 的 rgb)
1 RGB 有限公司 (16-235)
2 全 RGB (0-255)
3 YCbCr 有限公司 (16-235)
4 YCbCr 满 (0-255)

//用有些上了年纪的显示屏需要按需要选择,否则会输出不正常,体现错位、花屏。

HDMI_BLANKING

hdmi_blanking命令允许您选择在触发 DPMS 时是否应关闭 hdmi 输出。这是模仿其他计算机的行为。在特定的时间后, 显示器将变为空白, 并进入低功耗/待机模式, 因为接收没有信号。

注意:当使用不使用帧的应用程序 (如 omxplayer) 时, 此功能可能会导致问题。

hdmi_blanking 结果
0 HDMI 输出将为空, 而不是禁用
1 HDMI 输出将被禁用而不仅仅是冲裁

//如果转接成vga活着dvi,选0

HDMI_DRIVE

hdmi_drive命令允许您在 hdmi 和 DVI 输出模式之间进行选择。

hdmi_drive 结果
1 正常 DVI 模式 (无声音)
2 正常 HDMI 模式 (如果支持和启用声音将发送)

//很直白了,不解释。

CONFIG_HDMI_BOOST

配置 HDMI 接口的信号强度。默认值为0 , 最大为11.

原始模型 B 和 A 的默认值为2模型 B + 和所有最新模型的默认值为5.

如果您看到 HDMI 问题 (斑点、干扰), 则尝试7非常长的 HDMI 电缆可能需要多达11, 但除非绝对必要, 否则不应使用此高值。

//这点跟你选择的HDMI线材有关,短线就改小一点,长线电阻大了就改大点。我用过的线最多也就改成8就可以了。

//下面的参数就很重要了,特地分割长一点···························

HDMI_GROUP

hdmi_group命令将 hdmi 输出组定义为 CEA (消费电子协会, 通常由电视使用的标准) 或 DMT (显示监视器计时, 通常由监视器使用的标准)。此设置应与hdmi_mode一起使用.

hdmi_group 结果
0 从 EDID 自动检测
1 Cea
2 Dmt

//这个需要看你怎么调屏幕方便,跟下方的参数有关,我个人觉得调整DMT会相对直观一点

HDMI_MODE

hdmi_group一起, hdmi_mode定义 hdmi 输出格式。

要设置此处未列出的自定义显示模式, 请参阅此线程.

如果hdmi_group=1 (CEA), 这些值是有效的:

hdmi_mode 分辨率 频率 笔记
1 VGA (640x480)
2 480p 60Hz
3 480p 60Hz 16:9 纵横比
4 720p 60Hz
5 1080i 60Hz
6 480i 60Hz
7 480i 60Hz 16:9 纵横比
8 240p 60Hz
9 240p 60Hz 16:9 纵横比
10 480i 60Hz 像素番翻
11 480i 60Hz 像素翻番, 16:9 长宽比
12 240p 60Hz 像素番翻
13 240p 60Hz 像素翻番, 16:9 长宽比
14 480p 60Hz 像素加倍
15 480p 60Hz 像素加倍, 16:9 长宽比
16 1080p 60Hz
17 576p 50Hz
18 576p 50Hz 16:9 纵横比
19 720p 50Hz
20 1080i 50Hz
21 576i 50Hz
22 576i 50Hz 16:9 纵横比
23 288p 50Hz
24 288p 50Hz 16:9 纵横比
25 576i 50Hz 像素番翻
26 576i 50Hz 像素翻番, 16:9 长宽比
27 288p 50Hz 像素番翻
28 288p 50Hz 像素翻番, 16:9 长宽比
29 576p 50Hz 像素加倍
30 576p 50Hz 像素加倍, 16:9 长宽比
31 1080p 50Hz
32 1080p 24Hz
33 1080p 25Hz
34 1080p 30Hz
35 480p 60Hz 像素番翻
36 480p 60Hz 像素翻番, 16:9 长宽比
37 576p 50Hz 像素番翻
38 576p 50Hz 像素翻番, 16:9 长宽比
39 1080i 50Hz 减少冲裁
40 1080i 100Hz
41 720p 100Hz
42 576p 100Hz
43 576p 100Hz 16:9 纵横比
44 576i 100Hz
45 576i 100Hz 16:9 纵横比
46 1080i 120Hz
47 720p 120Hz
48 480p 120Hz
49 480p 120Hz 16:9 纵横比
50 480i 120Hz
51 480i 120Hz 16:9 纵横比
52 576p 200Hz
53 576p 200Hz 16:9 纵横比
54 576i 200Hz
55 576i 200Hz 16:9 纵横比
56 480p 240Hz
57 480p 240Hz 16:9 纵横比
58 480i 240Hz
59 480i 240Hz 16:9 纵横比

在上面的表中, 具有16:9 纵横比的模式是一个通常具有4:3 纵横比的模式的宽屏变体。像素加倍和翻两番表示时钟频率较高, 每个像素分别重复四次。

//如果选CEA方式的,这里记住一个要点就好。匹配你的屏幕分辨率后,频率(刷新率)尽量选低一点,能降低脱机系统的压力。

如果hdmi_group=2 (DMT), 这些值是有效的:

hdmi_mode 分辨率 频率 笔记
1 640x350 85Hz
2 640x400 85Hz
3 720x400 85Hz
4 640x480 60Hz
5 640x480 72Hz
6 640x480 75Hz
7 640x480 85Hz
8 800x600 56Hz
9 800x600 60Hz
10 800x600 72Hz
11 800x600 75Hz
12 800x600 85Hz
13 800x600 120Hz
14 848x480 宽屏 60Hz
15 1024x768 43Hz 与覆盆子 Pi 不相容
16 1024x768 60Hz
17 1024x768 70Hz
18 1024x768 75Hz
19 1024x768 85Hz
20 1024x768 120Hz
21 1152x864 75Hz
22 1280x768 减少冲裁
23 1280x768 60Hz
24 1280x768 75Hz
25 1280x768 85Hz
26 1280x768 120Hz 减少冲裁
27 1280x800 减少冲裁
28 1280x800 60Hz
29 1280x800 75Hz
30 1280x800 85Hz
31 1280x800 120Hz 减少冲裁
32 1280x960 60Hz
33 1280x960 85Hz
34 1280x960 120Hz 减少冲裁
35 1280x1024 60Hz
36 1280x1024 75Hz
37 1280x1024 85Hz
38 1280x1024 120Hz 减少冲裁
39 1360x768 60Hz
40 1360x768 120Hz 减少冲裁
41 1400x1050 减少冲裁
42 1400x1050 60Hz
43 1400x1050 75Hz
44 1400x1050 85Hz
45 1400x1050 120Hz 减少冲裁
46 1440x900 减少冲裁
47 1440x900 60Hz
48 1440x900 75Hz
49 1440x900 85Hz
50 1440x900 120Hz 减少冲裁
51 1600x1200 60Hz
52 1600x1200 65Hz
53 1600x1200 70Hz
54 1600x1200 75Hz
55 1600x1200 85Hz
56 1600x1200 120Hz 减少冲裁
57 1680x1050 减少冲裁
58 1680x1050 60Hz
59 1680x1050 75Hz
60 1680x1050 85Hz
61 1680x1050 120Hz 减少冲裁
62 1792x1344 60Hz
63 1792x1344 75Hz
64 1792x1344 120Hz 减少冲裁
65 1856x1392 60Hz
66 1856x1392 75Hz
67 1856x1392 120Hz 减少冲裁
68 1920x1200 减少冲裁
69 1920x1200 60Hz
70 1920x1200 75Hz
71 1920x1200 85Hz
72 1920x1200 120Hz 减少冲裁
73 1920x1440 60Hz
74 1920x1440 75Hz
75 1920x1440 120Hz 减少冲裁
76 2560x1600 减少冲裁
77 2560x1600 60Hz
78 2560x1600 75Hz
79 2560x1600 85Hz
80 2560x1600 120Hz 减少冲裁
81 1366x768 60Hz
82 1920x1080 60Hz 1080p
83 1600x900 减少冲裁
84 2048x1152 减少冲裁
85 1280x720 60Hz 720p
86 1366x768 减少冲裁

请注意, 有一个像素时钟限制最高支持模式是1920x1200 在60Hz 与减少的冲裁。

//用DMT的对应找到分辨率的代号填进去就好了。

HDMI_FORCE_MODE

设置为1将删除除hdmi_modehdmi_group所指定的内部列表之外的所有其他模式, 这意味着它们不会出现在任何模式的枚举列表中。如果显示似乎忽略hdmi_modehdmi_group设置, 则此选项可能会有帮助。

//这个简单理解就是特殊分辨率,现在市面主流的夏普2k屏是2560*1440,DMT参数是没有的。要么自己好好理解CEA,要么自己写特定分辨率。自己写特定分辨率就需要设置为1。下面会介绍自写特定分辨率。

EDID_CONTENT_TYPE

强制编辑内容类型为特定值。

选项有:

  • 0 = EDID_ContentType_NODATA, 内容类型无。
  • 1 = EDID_ContentType_Graphics, 内容类型图形, 贸易中心必须设置为1
  • 2 = EDID_ContentType_Photo, 内容类型照片
  • 3 = EDID_ContentType_Cinema, 内容类型戏院
  • 4 = EDID_ContentType_Game, 内容类型游戏

哪些值对我的监视器有效?

您的 HDMI 监视器可能只支持一组有限的格式。要查找支持哪些格式, 请使用以下方法:

  1. 将输出格式设置为 VGA 60Hz (hdmi_group=1hdmi_mode=1) 并启动您的覆盆子 Pi
  2. 输入以下命令以提供 CEA 支持的模式列表: /opt/vc/bin/tvservice -m CEA
  3. 输入下面的命令以给出由 tvservice 支持的模式列表: /opt/vc/bin/tvservice -m DMT
  4. 输入以下命令以显示当前状态: /opt/vc/bin/tvservice -s
  5. 输入以下命令以从监视器中转储更详细的信息: /opt/vc/bin/tvservice -d edid.dat; /opt/vc/bin/edidparser edid.dat

在使用默认 HDMI 模式解决问题时, 还应提供edid.dat 。

自定义模式

如果您的监视器需要的模式不在上面的某个表中, 则可以为其定义自定义CVT模式:

hdmi_cvt=<width> <height> <framerate> <aspect> <margins> <interlace> <rb>
价值 默认 描述
宽度 需要) 宽度 (以像素为单位)
高度 需要) 高度 (以像素为单位)
帧率 需要) 帧率在 Hz
方面 3 纵横比 1 = 4:3, 2 = 14:9, 3 = 16:9, 4 = 5:4, 5 = 16:10, 6 = 15:9
边缘 0 0 = 已禁用边距, 1 = 已启用边距
交错 0 0 = 渐进式, 1 = 交错
Rb 0 0 = 正常, 1 = 减少的冲裁

//这里是自写分辨率要注意的地方,不解释了,自己理解一下,有需要学习的我后面再贴一个自定义分辨率config文件

可以省略末尾的字段以使用默认值。

请注意, 这只是创建模式 (组2模式 87)。为了使 Pi 在默认情况下使用此选项, 您必须添加一些其他设置。例如, 以下选择 800 x 480 分辨率并启用音频驱动器:

hdmi_cvt=800 480 60 6
hdmi_group=2
hdmi_mode=87
hdmi_drive=2

//这个基本就是样板了,自行感受一下看能不能理解得到。

如果您的监视器不支持标准的 CVT 计时, 这可能不起作用。

液晶显示屏/触摸屏选项

IGNORE_LCD

默认情况下, 在 I2C 总线上检测到树莓 Pi LCD 显示器时使用。ignore_lcd=1将跳过此检测阶段, 因此将不使用 lcd 显示器。

//I2c连接的脱机控制触控液晶界面的要开启。

DISPLAY_DEFAULT_LCD

如果检测到树莓 Pi DSI LCD, 它将被用作默认显示, 并显示帧。设置display_default_lcd=0将确保 lcd 不是默认显示, 这通常意味着 HDMI 输出将是默认的。液晶屏仍可通过从支持的应用程序中选择其显示编号 (例如 omxplayer) 来使用。

LCD_FRAMERATE

指定帧率的树莓 Pi LCD 显示, 以赫兹/fps。默认为60Hz。

LCD_ROTATE

这将使用 LCD 内置的翻转功能翻转显示器, 这是一种使用基于 GPU 的旋转操作的廉价操作。

例如, lcd_rotate=2将补偿倒置显示。

DISABLE_TOUCHSCREEN

启用/禁用触摸屏。

disable_touchscreen=1将禁用官方树莓 Pi 液晶显示屏上的触摸屏。

//基本都用第三屏吧,原装的树莓派触控屏够买3块树莓派有余了,看需要吧。

ENABLE_DPI_LCD

启用连接到 DPI 个 gpio 的 LCD 显示器。这是允许使用的第三方 LCD 显示器使用并行显示界面。

DPI_GROUP, DPI_MODE, DPI_OUTPUT_FORMAT

dpi_groupdpi_mode config.txt 参数用于设置预定模式 (在上述 HDMI 中使用的 DMT 或 CEA 模式)。用户可以以与 HDMI 相同的方式生成自定义模式。

dpi_output_format是一个位掩码, 用于指定用于设置显示格式的各种参数。

//这个能更稳定的自定义分辨率输出

有关使用 DPI 模式和输出格式的更多详细信息, 请在此处找到。.

通用显示选项

HDMI_FORCE_HOTPLUG

如果将hdmi_force_hotplug设置为1 , 则会假装 hdmi 热插拔信号被断言, 因此显示 hdmi 显示已附加。换言之, 即使没有检测到 hdmi 显示器, 也将使用 hdmi 输出模式。

//这个可以理解是强制性HDMI输出了,我填的是1。如果不改液晶屏背光做可见光打印机能加速开机加载速度一点。如果改了背光的话,这个参数改不改都没关系。

HDMI_IGNORE_HOTPLUG

如果将hdmi_ignore_hotplug设置为1 , 则会假装 hdmi 热插拔信号未被断言, 因此显示 hdmi 显示器未附加。换言之, 即使检测到 HDMI 监视器, 也将使用复合输出模式。

//这个也是能提高一点加载系统的速度

DISABLE_OVERSCAN

disable_overscan设置为1以禁用称作.

OVERSCAN_LEFT

overscan_left命令指定在屏幕左边缘上跳过的像素数。如果文本从屏幕的左边缘流出, 则增加此值。如果屏幕的左边缘与文本之间有黑色边框, 则减小它。

OVERSCAN_RIGHT

overscan_right命令指定在屏幕右边缘上跳过的像素数。

OVERSCAN_TOP

overscan_top命令指定在屏幕上边缘跳过的像素数。

OVERSCAN_BOTTOM

overscan_bottom命令指定在屏幕的下边缘上跳过的像素数。

OVERSCAN_SCALE

overscan_scale设置为1 , 以强制任何非帧层符合称作设置。

FRAMEBUFFER_WIDTH

framebuffer_width命令指定控制台帧宽度 (以像素为单位)。默认值为显示宽度减去总水平称作。

FRAMEBUFFER_HEIGHT

framebuffer_height命令指定控制台帧高度 (以像素为单位)。默认值为显示高度减去总垂直称作。

//这里这么长的几个参数基本是自定义分辨率的时候用得上,自定义分辨率的拉面自己理解一下。这里翻译得挺直白了。

MAX_FRAMEBUFFER_HEIGHT, MAX_FRAMEBUFFER_WIDTH

指定允许内部帧缓冲区的最大维度。

FRAMEBUFFER_DEPTH

使用framebuffer_depth指定控制台帧深度 (以比特为单位)。默认值为16.

framebuffer_depth 结果 笔记
8 8bit 帧 默认 RGB 调色板使屏幕无法读取
16 16bit 帧
24 24bit 帧 可能导致显示损坏
32 32bit 帧 可能需要与framebuffer_ignore_alpha=1结合使用

//这个看需求,我是默认,没太大影响。

FRAMEBUFFER_IGNORE_ALPHA

framebuffer_ignore_alpha设置为1以禁用 alpha 通道。可以帮助显示 32bit framebuffer_depth.

TEST_MODE

在继续引导 OS 正常启动之前, test_mode命令在启动时 (仅在复合视频和模拟音频输出上) 显示测试映像和声音。用于制造测试;默认值为0.

DISPLAY_HDMI_ROTATE

使用display_hdmi_rotate旋转或翻转 hdmi 显示方向。默认值为0.

display_hdmi_rotate 结果
0 无旋转
1 顺时针旋转90度
2 顺时针旋转180度
3 顺时针旋转270度
0x10000 水平翻转
0x20000 垂直翻转

请注意, 90 和270度旋转选项在 gpu 上需要额外的内存, 因此这些功能将无法与 16MB gpu 拆分一起使用。

//这里如果发现你的屏幕用于打印时,模型是左右翻转的话,要么CW切片保存的文件打开修改水平翻转功能。要么这里改0x10000实现。

DISPLAY_LCD_ROTATE

使用display_lcd_rotate旋转或翻转液晶屏方向。参数与display_hdmi_rotate相同.

DISPLAY_ROTATE

在最新固件中, display_rotate已弃用, 但由于向后兼容性而保留。请改用display_lcd_rotatedisplay_hdmi_rotate 。

使用display_rotate旋转或翻转屏幕方向。参数与display_hdmi_rotate相同.

其他选项

DISPMANX_OFFLINE

强制 dispmanx 组合在两个福勒斯特 framebuffers 中离线进行。这可以使更多的 dispmanx 元素被复合, 但速度较慢, 并且可能会限制屏幕帧率通常为30fps。

本文使用 eLinux wiki 页面RPiconfig中的内容, 该页在创作共享属性-知识共享署名 3.0 Unported 许可证下共享。

基本这里能解决大部分用photonic或者nanodlp的树莓派脱机方案的液晶输出问题。我们是这么走过来的,希望能帮助大家减少走一些弯路。

如果需要更详细的关于config配置的资料,转树莓派实验室:

http://shumeipai.nxez.com/2015/11/23/raspberry-pi-configuration-file-config-txt-nstructions.html