有没有办法向 Linux 帧缓冲区文本控制台添加边距、边框、偏移或填充,以补偿 HDMI 过扫描?

ack*_*er9 9 linux framebuffer console hdmi

我有一个新买的便宜的 8 英寸 TFT LCD 显示器,它的所有侧面都“切掉了边缘”(即不显示所有像素)。我了解到这是由于“过扫描”造成的,这似乎主要影响使用 HDMI 输入的电视。

我的内核首先启动到 efifb,然后切换到 inteldrmfb——两个帧缓冲区驱动程序都出现了这个问题。我不使用 X windows,也永远不想在这个小显示器上使用 X。我只想使用 Linux 文本控制台。所以任何使用“xrandr”的解决方案都已经过时了。

我已经尝试了有关驱动程序级(内核级)帧缓冲区设置的所有方法来解决此问题,包括使用“视频”内核启动参数调整分辨率设置以及使用 fbset 调整启动后的计时设置,但是无论我对 fbset 做什么,它似乎都会被忽略。

所以我的问题是:有没有一种方法,也许比帧缓冲区驱动程序级别更高,我可以在帧缓冲区控制台周围添加边距?

我知道我可以使用“stty”来缩短 Linux 将在控制台上使用的列数和行数,但这只能解决右侧和底部的问题,并且仍然会在左侧留下字符被切断,顶部。有没有办法使用“stty”向控制台添加“第一列”和“第一行”偏移量(即一些空白填充)?如果不使用 stty,使用其他一些轻量级工具(不是 X windows)?

Zol*_*tan 1

您可以fbset尝试一下该命令。

\n\n

运行fbset -i将向您显示有关当前帧缓冲区设置的一些信息,包括“计时”行。对我来说,所有值都是 0-s,这可能意味着它们没有被使用,但是如果您看到那里的一些实际值,您可以尝试调整它们。

\n\n

摘录自man fbset

\n\n
   Display timings:\n\n          -pixclock <value>\n                 set  the  length  of one pixel (in picosec\xe2\x80\x90\n                 onds). Note that the  frame  buffer  device\n                 may only support some pixel lengths\n\n          -left <value>\n                 set left margin (in pixels)\n\n          -right <value>\n                 set right margin (in pixels)\n\n          -upper <value>\n                 set upper margin (in pixel lines)\n\n          -lower <value>\n                 set lower margin (in pixel lines)\n\n          -hslen <value>\n                 set horizontal sync length (in pixels)\n\n          -vslen <value>\n                 set vertical sync length (in pixel lines)\n\n          --timings, -t ...\n                 set  all  timing  parameters at once in the\n                 order  <pixclock>  <left>  <right>  <upper>\n                 <lower>  <hslen> <vslen>, e.g.  -t 35242 64\n                 96 35 12 112 2\n
Run Code Online (Sandbox Code Playgroud)\n\n

请注意-left, -right, -upper,-lower参数。fbset甚至有一个-move命令可以增加这些值之一并同时减少相反的值:

\n\n
   Display positioning:\n\n          -move {left|right|up|down}\n                 move the visible part of the display in the\n                 specified direction\n\n          -step <value>\n                 set  step  size for display positioning (in\n                 pixels or pixel lines),  if  -step  is  not\n                 given  display will be moved 8 pixels hori\xe2\x80\x90\n                 zontally or 2 pixel lines vertically\n
Run Code Online (Sandbox Code Playgroud)\n