有时,远程站点断电,当电源恢复时,电视和Pi会同时通电。 />
问题在于电视需要一段时间才能开机,因此,在Pi开机时,据其所知,没有任何HDMI端口插入。
不幸的是, ,使用2018年11月13日-raspbian-stretch-full.img raspbian图像(带有GUI),除非电视已经启动并在Pi启动时将其插入Pi,否则Pi将不会输出任何内容给电视。在/boot/config.txt中有一个名为
hdmi_force_hotplug=1
的选项,默认情况下已注释掉。取消注释会导致HDMI可热插拔。现在的问题是,如果在Pi启动后插入电视或显示器,分辨率会很糟糕。是这样,远低于正常运行的1920x1080。
我们的Pi在启动时会自动打开浏览器到特定页面,并且完全无人值守-没有人注意到或修复现场分辨率。如果启动时未检测到电视,我们需要它能够自动修复。
有人知道解决此问题的方法吗?
编辑:虽然有一个下面提供的一些答案是有用的,没有一个能真正使HDMI可热插拔。当桌面操作系统(如Ubuntu / Fedora / Windows)插入新的监视器时,它将立即检测到它并立即调整分辨率。它不需要重新启动,也不需要硬编码的分辨率。理想的解决方案将执行类似的操作。
我认为一种实现方法是让服务不断向HDMI设备查询EDID,并将其缓存。如果EDID更改,则设备必须已更改,并且如果新设备具有不同的首选分辨率,则应更改活动分辨率以匹配该分辨率。
我编写服务可以查询EDID,对其进行缓存并查看是否需要更改分辨率的问题没有问题。我只是不确定如何使用终端来更改台式机的活动分辨率,而无需重新启动。我不确定是否应该寻找一种方法来更改帧缓冲区分辨率或X Server的分辨率,或者更改桌面环境的分辨率,或者全部更改。
#1 楼
在/boot/config.txt
中:hdmi_force_hotplug=1
hdmi_group=1
hdmi_mode=16
在这里说明了这些内容:https://www.raspberrypi.org/documentation/configuration/config-txt/video.md
还有这个:https://www.raspberrypi.org/documentation/configuration/hdmi-config.md-但是,如果上述第1组,模式16起作用,则不必担心所有这些。
评论
这确实有效,并且链接到的文档在解释这些选项方面非常出色。但是,这确实是假设您提前知道HDMI设备的分辨率。我们有一个Pi映像,可以根据需要克隆到任意数量的Pi,然后在现场安装。如果为1080p设置的Pi插入了不支持1080p的旧电视,则我们需要有人手动登录pi才能更改设置。 Pi是否无法检测到插入了新的HDMI设备并自动更改正在运行的系统的分辨率?这就是台式机操作系统的工作,不是吗?
–约翰
20年1月8日,19:25
我猜这是硬件限制-据我所知,操作系统根本没有使用config.txt中的内容。加载内核之前,固件已使用它。标准台式机linux确实会检测并适当调整显示输出的大小,但是在这种情况下,它是从SoC获取该大小的。我从未使用过tvservice,但是tvservice -h的输出暗示它可以用于动态地重新配置显示器。这可能包括也可能不包括“在Pi上”。
–金锁♦
20年1月8日,19:38
“ Linux不像2003年那样。它只能工作!哦,如果您想在插入屏幕时看到内容,则必须编辑文本文件,并且顺便说一句,它不会自动检测分辨率。”大声笑
– Timmmm
20-04-22在18:51
您运行什么操作系统或软件都没有关系。 Pi上的硬件/固件在操作系统加载之前设置分辨率,并且必须重新启动硬件才能更改分辨率。 / boot中的配置文件与linux无关,操作系统从不使用它。 Pi的(部分专有)固件使用它。同样,这是设备的限制,而不是操作系统的限制。
–金锁♦
20-4-22在19:06
#2 楼
在“ Raspberry Pi配置”中,选择“设置分辨率”选择分辨率,然后重新启动。
评论
为什么使用JPEG(尽管现在具有PNG格式,第一张图像还是有特定的伪像)?为什么要上采样(两个图像)?
–俄罗斯
20年1月8日在7:41
@Ruslan我的猜测是,它是在高dpi系统上显示的屏幕快照的屏幕快照。
– jpa
20年1月8日在9:04
这似乎是设置与@goldilocks相同选项的图形方式。如果这只是自动修改/boot/config.txt的前端,我不会感到惊讶。无论哪种方式,最好都知道两种设置分辨率的方法-谢谢
–约翰
20年1月8日在19:29
#3 楼
我只是不确定如何在不重新启动的情况下使用终端来更改桌面的活动分辨率。我不确定是否应该寻找一种方法来更改帧缓冲区分辨率或X Server的分辨率,或更改桌面环境的分辨率,或所有上述所有方法。
据了解,Raspberry Pi GPU的分辨率与启动后的帧缓冲区分辨率完全无关。
tvservice
允许您更改GPU分辨率,而tvservice -p
将使用插入的电视/显示器的原始分辨率。帧缓冲/ X服务器(AFAIK DE仅使用X服务器的分辨率)是一个棘手的问题。您需要使用
fbset
重新加载帧缓冲区分辨率。但是,fbset
仅在您进行更改后才真正重新加载设置。您可以创建不受此限制的修改版本,或者执行fbset -depth 32; fbset -depth 16
来将深度设置为32并恢复为默认值16(如果您使用的是32位帧缓冲器,请切换顺序)。刷新xorg非常简单。虽然我相信更改帧缓冲区分辨率将自动设置xorg分辨率,但Windows将需要重新绘制。
xrefresh
(x11-xserver-utils
的一部分)将为您完成此操作。
评论
您只需要在Raspberry Pi配置中将分辨率设置为1920x1080。在/boot/config.txt中?我看到了framebuffer_width和framebuffer_height。那是你在说什么?
通过以下链接设置静态分辨率:stackoverflow.com/a/29318136/6602159 | stackoverflow.com/a/23355379/6602159
闻起来有点腥-我有一个覆盆子Pi3B,通过HDMI连接到Dell屏幕,我通过电源电缆打开了电源。.所以两者同时出现...我什至可以关闭屏幕,重新插入Pi-它仍然具有很好的分辨率-我会在您的位置升级raspbian ..超过15个月的时间...
使用电源音序器(q.v.)是否可以接受?