我有一个新购买的便宜的8英寸TFT LCD显示器,它在所有侧面“切掉边缘”(即没有显示所有像素).我已经明白,这是由于“过扫描”,这似乎主要影响使用HDMI输入的电视.
我的内核首先启动到efifb,然后切换到inteldrmfb – 两个帧缓冲驱动程序都出现了问题.我没有使用X窗口,也不想在这个微小的显示器上使用X.我想要做的就是使用Linux文本控制台.所以使用“xrandr”的任何解决方案都已淘汰.
我已经尝试了有关驱动程序级(内核级)帧缓冲区设置的所有内容来解决此问题,包括使用“视频”内核启动参数调整分辨率设置以及使用fbset调整启动后的时序设置,但是无论我用fbset做什么,它似乎都被忽略了.
所以我的问题是:有没有办法,也许比在帧缓冲驱动程序级别更高的级别,我可以在帧缓冲控制台周围添加边距?
我知道我可以使用“stty”缩短Linux将在控制台上使用的列数和行数,但这只会解决右侧和底部的问题,并且仍会在左侧和顶端.有没有办法使用“stty”向控制台添加“第一列”和“第一行”偏移量(即一些空白填充)?如果没有stty,还有一些其他轻量级工具(不是X窗口)?
解决方法:
您可以试试fbset命令.
运行fbset -i将显示有关当前帧缓冲设置的一些信息,包括“时序”行.对我来说,所有值都是0-s,这可能意味着它们没有被使用,但是如果你看到一些实际值,你可以尝试调整它们.
男人fbset的摘录:
Display timings:
-pixclock <value>
set the length of one pixel (in picosec‐
onds). Note that the frame buffer device
may only support some pixel lengths
-left <value>
set left margin (in pixels)
-right <value>
set right margin (in pixels)
-upper <value>
set upper margin (in pixel lines)
-lower <value>
set lower margin (in pixel lines)
-hslen <value>
set horizontal sync length (in pixels)
-vslen <value>
set vertical sync length (in pixel lines)
--timings, -t ...
set all timing parameters at once in the
order <pixclock> <left> <right> <upper>
<lower> <hslen> <vslen>, e.g. -t 35242 64
96 35 12 112 2
请注意-left,-right,-upper,-lower参数. fbset甚至有一个-move命令可以增加其中一个值并同时减少相反的值:
Display positioning:
-move {left|right|up|down}
move the visible part of the display in the
specified direction
-step <value>
set step size for display positioning (in
pixels or pixel lines), if -step is not
given display will be moved 8 pixels hori‐
zontally or 2 pixel lines vertically