最近给pi换上官方最新系统,原本显示屏可以自动匹配,升级之后发现显示区域变小了。(屏幕是TB入的7寸雪花屏 800*480分辨率)后来看了一下官方说明,默认的分辨率是1280*800。由于本人的屏幕分辨率在官方默认的分辨率组里都没有,调整的时候走了一些弯路。
最开始参照一些帖子的方法。
先是改
framebuffer_width=1280
framebuffer_height=800
hdmi_group=2
hdmi_mode=14
这两组参数值。前两个参数的具体作用还不是很清楚,
hdmi_group和hdmi_mode两个参数用以选定下表1-1和1-2的分辨率。
These values are valid if hdmi_group=1 (CEA):
hdmi_mode resolution frequency notes
1 VGA (640x480)
2 480p 60Hz
3 480p 60Hz 16:9 aspect ratio
4 720p 60Hz
5 1080i 60Hz
6 480i 60Hz
7 480i 60Hz 16:9 aspect ratio
8 240p 60Hz
9 240p 60Hz 16:9 aspect ratio
10 480i 60Hz pixel quadrupling
11 480i 60Hz pixel quadrupling, 16:9 aspect ratio
12 240p 60Hz pixel quadrupling
13 240p 60Hz pixel quadrupling, 16:9 aspect ratio
14 480p 60Hz pixel doubling
15 480p 60Hz pixel doubling, 16:9 aspect ratio
16 1080p 60Hz
17 576p 50Hz
18 576p 50Hz 16:9 aspect ratio
19 720p 50Hz
20 1080i 50Hz
21 576i 50Hz
22 576i 50Hz 16:9 aspect ratio
23 288p 50Hz
24 288p 50Hz 16:9 aspect ratio
25 576i 50Hz pixel quadrupling
26 576i 50Hz pixel quadrupling, 16:9 aspect ratio
27 288p 50Hz pixel quadrupling
28 288p 50Hz pixel quadrupling, 16:9 aspect ratio
29 576p 50Hz pixel doubling
30 576p 50Hz pixel doubling, 16:9 aspect ratio
31 1080p 50Hz
32 1080p 24Hz
33 1080p 25Hz
34 1080p 30Hz
35 480p 60Hz pixel quadrupling
36 480p 60Hz pixel quadrupling, 16:9 aspect ratio
37 576p 50Hz pixel quadrupling
38 576p 50Hz pixel quadrupling, 16:9 aspect ratio
39 1080i 50Hz reduced blanking
40 1080i 100Hz
41 720p 100Hz
42 576p 100Hz
43 576p 100Hz 16:9 aspect ratio
44 576i 100Hz
45 576i 100Hz 16:9 aspect ratio
46 1080i 120Hz
47 720p 120Hz
48 480p 120Hz
49 480p 120Hz 16:9 aspect ratio
50 480i 120Hz
51 480i 120Hz 16:9 aspect ratio
52 576p 200Hz
53 576p 200Hz 16:9 aspect ratio
54 576i 200Hz
55 576i 200Hz 16:9 aspect ratio
56 480p 240Hz
57 480p 240Hz 16:9 aspect ratio
58 480i 240Hz
59 480i 240Hz 16:9 aspect ratio
These values are valid if hdmi_group=2 (DMT):
**hdmi_mode resolution frequency notes
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 incompatible with the Raspberry 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 reduced blanking
27 1280x800
28 1280x800 60Hz
29 1280x800 75Hz
30 1280x800 85Hz
31 1280x800 120Hz reduced blanking
32 1280x960 60Hz
33 1280x960 85Hz
34 1280x960 120Hz reduced blanking
35 1280x1024 60Hz
36 1280x1024 75Hz
37 1280x1024 85Hz
38 1280x1024 120Hz reduced blanking
39 1360x768 60Hz
40 1360x768 120Hz reduced blanking
41 1400x1050
42 1400x1050 60Hz
43 1400x1050 75Hz
44 1400x1050 85Hz
45 1400x1050 120Hz reduced blanking
46 1440x900
47 1440x900 60Hz
48 1440x900 75Hz
49 1440x900 85Hz
50 1440x900 120Hz reduced blanking
51 1600x1200 60Hz
52 1600x1200 65Hz
53 1600x1200 70Hz
54 1600x1200 75Hz
55 1600x1200 85Hz
56 1600x1200 120Hz reduced blanking
57 1680x1050
58 1680x1050 60Hz
59 1680x1050 75Hz
60 1680x1050 85Hz
61 1680x1050 120Hz reduced blanking
62 1792x1344 60Hz
63 1792x1344 75Hz
64 1792x1344 120Hz reduced blanking
65 1856x1392 60Hz
66 1856x1392 75Hz
67 1856x1392 120Hz reduced blanking
68 1920x1200
69 1920x1200 60Hz
70 1920x1200 75Hz
71 1920x1200 85Hz
72 1920x1200 120Hz reduced blanking
73 1920x1440 60Hz
74 1920x1440 75Hz
75 1920x1440 120Hz reduced blanking
76 2560x1600
77 2560x1600 60Hz
78 2560x1600 75Hz
79 2560x1600 85Hz
80 2560x1600 120Hz reduced blanking
81 1366x768 60Hz
82 1920x1080 60Hz 1080p
83 1600x900
84 2048x1152
85 1280x720 60Hz 720p
86 1366x768**
如果表1-2和1-1里有自己屏幕对应的分辨率,直接选上就可以。不用改
framebuffer_width=800
framebuffer_height=480
直接在前面加#注释掉就行。
调整成
framebuffer_width=800
framebuffer_height=480
hdmi_group=2
hdmi_mode=14
情况更糟糕,出现屏幕偏移,左侧出现不显示的黑块。
后来参照官网(http://www.raspberrypi.org/documentation/configuration/config-txt.md)的说明进行第二次修改如下:
点进链接。
hdmi_cvt=<width> <height> <framerate> <aspect> <margins> <interlace> <rb>
width width in pixels
height height in pixels
framerate framerate in Hz
aspect aspect ratio 1=4:3, 2=14:9, 3=16:9, 4=5:4, 5=16:10, 6=15:9
margins 0=margins disabled, 1=margins enabled
interlace 0=progressive, 1=interlaced
rb 0=normal, 1=reduced blanking
The first three arguments are required. The remaining ones are optional. aspect defaults to 16:9 if not specified.
It should appear if you do
CODE: SELECT ALL
tvservice -m DMT
An example:
CODE: SELECT ALL
hdmi_cvt=1680 1050 60 5 0 0 1
CODE: SELECT ALL
tvservice -m DMT
...
mode 87: 1680x1050 @ 60Hz 16:10, clock:119MHz progressive
官网提供的方法是使用hdmi_cvt函数,具体用法如下。
hdmi_cvt=<width> <height> <framerate> <aspect> <margins> <interlace> <rb>
width width in pixels
height height in pixels
framerate framerate in Hz
aspect aspect ratio 1=4:3, 2=14:9, 3=16:9, 4=5:4, 5=16:10, 6=15:9
margins 0=margins disabled, 1=margins enabled
interlace 0=progressive, 1=interlaced
rb 0=normal, 1=reduced blanking
我的屏幕width=800; height=480; framerate是刷新率,给个100; 屏幕比例15:9,aspect=6; margins用来设定加不加边框,取0无边框;interlace=0; rb=1;如下:
hdmi_cvt=800 480 100 6 0 0 1
开机之后,屏幕的分辨率是完全对了,但是出现花屏,屏幕变模糊了,还有一条紫色杂边。显然hdmi_cvt的方法也不太适合我的屏幕。
最后琢磨了一会儿,注意到overscan值
disable_overscan=1
overscan_left=0
overscan_right=0
overscan_top=0
overscan_bottom=0
测试了一下,overscan的作用形象地说就是用来“挤压显示区域”,注意是挤压,不是切除。比如定义
overscan_left=100
即把屏幕的显示区域从左侧挤压100像素,右侧不变,如果原本是满屏的,挤压之后的效果就是左侧多出来100像素宽度的不显示区域。
最后完美的解决方式如下
disable_overscan=0
overscan_right=0
overscan_right=0
overscan_top=0
overscan_bottom=120
hdmi_group=2hdmi_mode=13
思路很简单,屏幕是800*480分辨率,于是选择最接近的分辨率:mode13,800*600。然后overscan_right=120,把下方显示区域向上挤压120像素,正好凑成800*480.效果很理想。
由于kali系统2.0之后去除掉了config.txt文件,打开安装盘后找不到该文件。
解决方法很简单,把官方版系统的config.txt文件按照上述配置好,然后把config.txt文件拷贝进去,再打开树莓派,就发现屏幕又完美匹配了。
如果亲手配置过官方版本树莓派系统的话,就会发现官方版系统虽然有config.txt文件,但是未手动修改的话,文件里的配置参数都是被注释的,也就是说默认状态的config文件是不起作用的。也难怪kali系统会将其去除。
顺带一提,装kali系统的时候出现一个现象:
系统烧进内存卡之后,开机,屏幕一直闪烁,冒雪花。一度以为是系统坏了,没装好,卸载了重装。最后发现是电源供电能力不足引起的,把屏幕单独供电即可。我默认的接线方式是笔记本给树莓派主板供电,树莓派USB口给7寸液晶屏供电。跑官方的系统是没问题的,但是跑kali系统出现屏幕供电不足的情况,可见kali功耗相对官方系统更大一些。
另外,用官方提供的cvt的方法可能也能完美调整屏幕,后来查验该方法调整时出现屏幕的模糊情况是因为hdmi_driver=2导致的,把它注释,或者赋值1即可恢复清晰度。