我有一个RaspberryPi,想要在没有xserver的情况下全屏显示图像 - 所以直接将它写入帧缓冲区。这里没问题。
但全屏设置并不起作用。
cat /sys/class/graphics/fb0/modes
的产率:
U:1024x768p-0
U:1920x1200p-0
U:1920x1080p-0
U:608x684p-0
所以我用
fbset -xres 1920 -yres 1200 -match
导致
>>fbset
mode "1920x1200"
geometry 1920 1200 1920 1200 16
timings 0 0 0 0 0 0 0
rgba 5/11,6/5,5/0,0/16
endmode
如果我现在使用fbi
来显示图像,或者只是填充帧缓冲区/dev/urandom >> /dev/fb0
,则只会填充部分屏幕。显示部分的方面等是正确的,周围只有一个很大的黑色边界。
如果我使用其他分辨率,一切都按预期工作,例如fbi中的统计数据线变大等。
我做错了什么?
答案 0 :(得分:4)
尝试fbset的这种格式:
fbset -fb /dev/fb0 -g 1920 1200 1920 1200 16
并检查你是否真的关注fb0而不是fb1:
fbset -fb /dev/fb0
仔细检查实际设置的内容:
cat /sys/class/graphics/fb0/mode
还尝试运行fbi(再次确保你使用fb0):
fbi -d /dev/fb0 image.png
您还可以通过执行以下操作将设置强制设置为fb0:
echo U:1920x1200p-0 > /sys/class/graphics/fb0/mode
从技术上讲,这就是fbset正在做的事情。 只是确保fb1不会搞砸了。
最后,请确保您的控制台正在使用fb0。我确定是。
con2fbmap 1
您可能还想重新启动,因此请检查您的设置:
cat /proc/cmdline
如果不是1920x1200,请更新为1920x200。我认为它位于/boot/cmdline.txt中,用于覆盆子pi。对我来说是/boot/uEnv.txt。
答案 1 :(得分:0)
我有一个两部分的答案,它在 Raspberry Pi 上产生了奇迹。
首先,Pi 有过扫描的概念,即在整个屏幕周围添加黑色边框,使其落入旧电视的“管”内。是的,一些模拟该功能的现代平板电视也需要它。如果您的黑色边框围绕所有屏幕分辨率,请更改此设置。最简单的方法是通过 sudo raspi-config
。选项和布局因 raspi-config
的不同版本而异,但您可以先在 Advanced Options
菜单中查找 Overscan
。如果过扫描是您的问题,但您想要更好地控制黑色边框的大小 - 那么有一种方法可以在 /boot/config.txt 中对其进行微调。我不会在这里讨论这个,搜索如何调整该文件很容易。
如果这不是您的问题,并且您正在寻找可以为电视/显示器设置的更好的分辨率,那么您还可以使用 raspi-config
从所有有效的屏幕分辨率中进行选择。它们位于与过扫描相同的 Advanced Options
菜单中。
如果您需要以编程方式检查和设置分辨率,那么首选工具是 tvservice
。该程序没有手册页,但不带参数运行它会提供一些帮助。有一些非常有趣的功能远远超出了 fbset
的能力。
一些简短的例子:
$ sudo tvservice --status
state 0x120009 [HDMI CEA (16) RGB lim 16:9], 1920x1080 @ 60.00Hz, progressive
$
$ sudo tvservice --modes=CEA
Group CEA has 11 modes:
mode 1: 640x480 @ 60Hz 4:3, clock:25MHz progressive
mode 2: 720x480 @ 60Hz 4:3, clock:27MHz progressive
mode 3: 720x480 @ 60Hz 16:9, clock:27MHz progressive
mode 4: 1280x720 @ 60Hz 16:9, clock:74MHz progressive
(prefer) mode 16: 1920x1080 @ 60Hz 16:9, clock:148MHz progressive
mode 17: 720x576 @ 50Hz 4:3, clock:27MHz progressive
mode 18: 720x576 @ 50Hz 16:9, clock:27MHz progressive
mode 19: 1280x720 @ 50Hz 16:9, clock:74MHz progressive
mode 31: 1920x1080 @ 50Hz 16:9, clock:148MHz progressive
mode 32: 1920x1080 @ 24Hz 16:9, clock:74MHz progressive
mode 34: 1920x1080 @ 30Hz 16:9, clock:74MHz progressive
您可以看到电视支持哪些模式,并且要完整,您应该扫描 DMT 和 CEA 组以了解所有内容。 DMT 模式更适合电脑显示器而不是电视。
然后您的程序可以从该列表中进行选择并使用 tvservice -e
设置其中一种模式。