📖 本文由 Batocera 官方 Wiki 翻译整理,内容可能随版本更新而变化。
屏幕显示故障排查
屏幕完全没有画面(黑屏)
如果你确定 Batocera 已经成功启动(例如:可以在网络上看到共享文件夹、能通过 SSH 远程连接、或者能听到背景音乐),但屏幕就是不亮,那可能是系统把画面输出到了错误的接口上。
生活化类比: 这就像是你家里装了两台电视,机顶盒(系统)默认把信号发到了卧室的那台,而你正坐在客厅对着黑屏发呆。
操作步骤:
第一步:最简单的办法是拔掉视频线再重新插上。Batocera 通常会自动切换到最新接入的显示器上。
【提示】在笔记本电脑上,外接显示器有时会抢先“占位”,导致内置屏幕被识别为“最后连接”的设备而无法显示。
如果拔插大法无效,请尝试通过 SSH 登录后台并执行以下指令:
export DISPLAY=:0.0
batocera-resolution listOutputs
batocera-resolution setOutput <这里输入你想要使用的接口名称>
如果经过上述操作依然没有画面,建议直接跳到“高级显示调试”部分。
能看到启动 Logo(Splash Screen),随后变黑或显示“无信号”
这通常意味着官方显卡驱动(Graphics Drivers)没有被自动识别并启用,而系统自带的开源备用驱动又无法带起你的硬件(如果你使用的是近一年内刚上市的“顶配”硬件,这种情况非常常见)。
生活化类比: 启动 Logo 就像是低像素的“开机名片”,谁都能印;但进入系统需要复杂的“专业驾驶证”(驱动),如果系统没找到正版证件,备用的“临时证”可能应付不了你的高级跑车。
操作步骤:
第一步:手动修改 batocera-boot.conf 配置文件。
第二步:在文件中手动激活对应的显卡驱动。
【提示】如果驱动已经选对但依然黑屏,可能是“显卡切换器(Prime Switcher)”需要手动开关。这在连接外接显示器的现代笔记本电脑上很常见。如果系统没能自动为你检测到这一点,你同样需要编辑 batocera-boot.conf 来手动开启 Prime 切换功能。
屏幕显示与启动进阶故障排查
启动后黑屏的其它原因
除了驱动问题,黑屏也可能是因为你的 U盘损坏 导致的。有时候 U盘并没有“死透”,它能勉强完成开机引导,但由于关键数据读取不到,系统会在显示完启动 Logo 后直接卡死。
生活化类比: 就像是一本缺页的故事书,你能看到精彩的封面,但翻开后发现中间有几页被撕掉了,剧情直接断在这里无法继续。
操作步骤:
第一步:如果产生怀疑,最简单的测试方法是换一个质量更好的 U盘重新烧录系统。
第二步:如果你使用的是 HP EliteDesk 系列机型,请检查主板 BIOS 设置,否则主板可能会误将显卡(GPU)禁用。
第三步:作为通用规则,遇到黑屏时,建议开启“详细启动模式(Verbose Boot Mode)”来观察具体的报错代码。
屏幕边缘被裁切了(画面显示不全)
很多现代电视机都自带一种“轻微放大”画面的设置。
生活化类比: 这就像是给照片套了一个比照片还小的相框,导致四周的边角都被遮住了。在老式电视时代,这是为了遮住信号边缘的杂色像素,但在数字高清时代,这反而成了负担。
【提示】 通常电视识别到 PlayStation 或电脑输入时会自动关闭缩放,但如果它“间歇性失灵”,你需要手动去电视设置里操作。
操作步骤:
第一步:拿起电视遥控器,进入“图像设置”或“系统设置”。
第二步:寻找类似 “点对点扫码(Just Scan)”、“像素比例(Pixel Ratio)”、“过扫描(Overscan)”、“缩放/全景(Zoom/Aspect)” 等选项。
第三步:将该项关闭,或将其设置为“原始尺寸”。
屏幕不断闪烁
如果你的显示器上报了一个它其实并不完全支持的 刷新率(Refresh Rate),信号就会偶尔因“越界”而短暂中断,造成闪烁。
操作步骤:
第一步:尝试切换到稍微不同的刷新率。例如,如果当前是 60Hz,可以尝试手动改为 59.98Hz。
第二步:对于 PC 用户,请先参考下文的 xrandr 章节测试不同的分辨率设置。
第三步:找到稳定不闪烁的分辨率后,将其保存以在下次开机时自动应用。
针对特定设备的显示优化与 4K/超宽屏问题排查
在单板电脑或安卓电视盒上解决闪屏
如果你使用的是通过 DRM 服务(Direct Rendering Manager)进行显示的设备(例如安卓电视盒或特定的单板电脑 SBC),遇到屏幕闪烁时,有一个听起来有点不可思议但非常有效的解决方案。
操作步骤:
第一步:暂时拔掉刷好系统的内存卡或 U 盘,重新启动进入设备自带的安卓固件(eMMC Android Firmware)。
第二步:在安卓系统设置里,将分辨率手动设置为该盒子能支持的“最接近原生”的选项。例如,如果盒子支持 4K,就设置为 2160p。
第三步:保存设置后重新插入 Batocera 介质并重启。
【提示】安卓下的这个设置与你之后想在 Batocera 里用什么分辨率无关,它更像是给硬件底层做一次“校准”。重启回到 Batocera 后,闪屏问题通常就会消失。
4K、超宽屏显示不全或性能低下问题
老旧的 8 位或 16 位游戏机,以及 80、90 年代的街机系统,最初都是为 4:3 的大头电视(CRT 屏幕)设计的。而现代显示器不仅是 16:9 甚至更宽,分辨率更是高达 4K(垂直像素达 2160 个,而当年的机器只有 480 或 546 个!)。
生活化类比: 这就像是试图用一台老式放映机去填满整面 IMAX 巨幕。为了让画面铺满每一个像素点,系统需要消耗巨大的体力(计算性能),这会直接拖慢运行速度。
操作步骤:
为了保证流畅度,Batocera 会默认进行一些限制:
第一步:在 v31 左右的版本中,系统会自动将分辨率限制在全高清(HD 1920×1080)。
第二步:在后续更高版本中,如果你发现画面不对,需要手动进入 系统设置(SYSTEM SETTINGS),将分辨率修改为兼容的 1920×1080 模式。对于模拟器(即使是最新的模拟器)来说,这个分辨率已经绰绰有余了。
【注意】如果你使用的是超宽屏显示器(Ultra-wide Monitor),画面可能会因为强制拉伸而变得扁平。
对于 4K 显示器,由于分辨率被默认降到了 1080p,你可能会看到画面只占据了屏幕中心的一小块(这其实是 1920×1080 的像素点在 3840×2160 屏幕上居中对齐的结果):

解决画面未铺满的步骤:
第一步:拿起你的电视或显示器遥控器,进入显示设置菜单。
第二步:检查“缩放”或“画面比例”选项,确保将其设置为 “拉伸(Stretch)”、“全屏(Full Screen)”、“扩展(Expand)” 或 “填充(Fill)”。这样电视硬件就会负责把 1080p 的信号放大到填满 4K 屏幕。
画面比例与性能进阶设置
画面还是太小?手动调整视频模式
如果你已经检查过电视的缩放设置,但游戏画面依然像邮票一样缩在屏幕中心,最有效的办法就是“强制降级”分辨率。
生活化类比: 这就像是你的书桌(4K屏幕)太大,而书本(游戏画面)太小。与其让书本孤零零地放在正中间,不如换一张小一点但正合适的桌子(1080p模式),这样视觉上就填满了。
操作步骤:
第一步:按下手柄上的 Start 键进入 主菜单(MAIN MENU)。
第二步:依次进入 游戏设置(GAMES SETTINGS) -> 视频模式(VIDEO MODE)。
第三步:手动选择 “1920×1080”(或带有 “MAXIMUM 1920×1080” 字样的选项)。
【提示】如果你不想全局修改,也可以在 每系统高级设置(PER SYSTEM ADVANCED CONFIGURATION) 界面中,针对具体的某个游戏机种进行单独设置。
关于边框(Bezels)的特殊情况
如果你使用的是 720p(1280×720)的电视,但想使用那些为 1080p 设计的精美游戏边框,虽然 Batocera 通常会自动调整大小,但有时你仍需在 视频模式(VIDEO MODE) 中手动强制指定 1280×720 分辨率。
如果你执意要开启 4K(3840×2160)分辨率(例如为了让着色器效果更细腻,或适配超宽屏):
第一步:在视频模式中选择 “3840×2160”。
第二步:开启 拉伸边框(STRETCH BEZEL) 选项。这样系统就会强行把 1080p 的边框素材拉伸到 4K 屏幕上。
【注意】拉伸边框 功能在 Batocera 5.27 及更低版本中不可用。同时,开启 4K 分辨率会显著增加系统的计算压力,可能导致模拟器运行卡顿。
文件管理器里的文字太小了!
当你连接 4K 屏幕时,文件管理器(在 PC 上按 [F1] 进入)或某些模拟器的设置菜单字体可能会变得像蚂蚁一样小,难以阅读。
操作步骤:
第一步:打开并编辑 Batocera.conf 配置文件。
第二步:找到下方的 DPI(每英寸点数) 设置部分。
第三步:删除 global.dpi=96 前面的 # 号(即取消注释)来手动指定显示精度。
## DPI
## 当系统无法自动检测到正确的 DPI 时使用的临时方案
## 如果字体太小,请取消下面这行的注释
global.dpi=96
当 4K 电视上的系统界面(EmulationStation)反应迟钝时
(原文此部分内容未完,通常涉及降低 UI 分辨率以提升流畅度)
对于大多数能够正确提供“设备身份信息”(EDID 数据包)的电视来说,接下来的操作通常是不必要的;但如果你的电视不按常理出牌,没能正确上报信息,那么这些设置就是你的救命稻草。
解决 4K 电视上系统界面卡顿的问题
在某些单板电脑(SBC)与 4K 电视的组合中,你可能会发现系统界面(EmulationStation,简称 ES)运行得非常缓慢,甚至像幻灯片一样掉帧(刷新率可能只有 10 FPS)。
生活化类比: 这就像是让一辆小排量的代步车(单板电脑)去拉一辆满载的重型卡车(4K 画面),车头累得满头大汗也跑不动。
虽然 ES 理论上会根据你的设置与电视协商分辨率,但有些电视品牌比较“固执”,会强行维持在 4K(2160p)模式。此时,你需要手动修改配置文件来“硬刚”它。
强制锁定 1080p 为最高分辨率
如果你的电视错误上报了信息,导致系统强行运行在 4K 模式,你可以通过修改 Batocera-boot.conf 文件来限制它的上限。
操作步骤:
针对 Batocera v31 及更高版本:
第一步:打开 /boot/Batocera-boot.conf 文件。
第二步:找到或添加以下代码行,将分辨率上限锁定为 1080p:
es.resolution=max-1920x1080
【提示】如果你使用的是配置非常低的老旧设备,甚至可以狠一点,直接限制到 640×480:
es.resolution=max-640x480
针对旧版本 Batocera(v29 和 v30):
在旧版本中,上面的指令是不起作用的。
第一步:同样打开 Batocera-boot.conf。
第二步:使用下面这个专门的参数:
system.es.maxresolution=1920x1080
设置完成后,Batocera 会自动在指定的最高分辨率下,挑选一个最合适的刷新率来运行。
手动指定 ES 使用特定的分辨率模式
如果你不想用系统默认的最高分辨率,而是想指定某一个特定的模式,可以先查看你的显示器支持哪些方案。
操作步骤:
第一步:通过 SSH 远程连接进入系统后台。
第二步:运行以下命令来获取支持的分辨率清单:
export DISPLAY=:0.0
# 后续命令请见下文...
Batocera-resolution listModes
执行上述指令后,你会看到一长串由显示器上报的视频模式清单。
操作步骤:
第一步:在清单中找到你中意的分辨率和刷新率组合。
第二步:打开 /boot/Batocera-boot.conf 文件。
第三步:将对应的数值填入 es.resolution 行。
例如,你想强制系统界面以 1280×720 像素、59.94Hz 刷新率运行,只需添加:
es.resolution=1280x720.59.94
树莓派(Raspberry Pi)专属:EDID 识别完全失效怎么办?
有些树莓派在解析显示器的身份信息(EDID)时非常死板,甚至会无视你刚才在配置文件里手动设置的指令。
生活化类比: 这就像是一个固执的收发员,非说你家门口的快递箱尺寸不合格,拒绝把包裹送进去。这时候我们就得绕过这个收发员,强行让快递员送货。
操作步骤:
第一步:找到并打开 boot/config.txt 文件。
第二步:添加以下代码,强制树莓派忽略有误的 EDID 信息并设置 HDMI 分组:
hdmi_ignore_edid=0xa5000080
hdmi_group=1
【注意】一旦开启此设置,你可以强制使用任何 HDMI 模式,包括你显示器根本不支持的模式。操作时请务必小心,以免黑屏!
树莓派 7 英寸官方触摸屏无法工作
如果你在树莓派 3B+ 上使用官方 7 英寸触摸屏,且系统内核日志(dmesg)中出现了类似 Unknown Atmel firmware revision 的固件版本错误提示:
操作步骤:
第一步:打开你的 config.txt 文件。
第二步:在末尾添加一行调整波特率的参数:
dtparam=i2c_vc_baudrate=50000
【提示】此修复方案来源于社区用户的反馈,如果你的屏幕因此恢复正常,那就是波特率同步的问题。
屏幕出现画面撕裂(Tearing)现象
(原文此部分内容未完,通常涉及垂直同步 V-Sync 相关的排查)
特定主板(如 ITX-N100-2L)的画面撕裂修复
如果你使用的是 ITX-N100-2L V1.31 这一类 ITX 主板,可能会遇到严重的画面显示问题。这类主板有个特殊设计:除了 VGA 接口(系统里识别为“DP-1”)和 HDMI 接口(识别为“HDMI-1”)外,还带有一个内置显示器接口(低压差分信号接口(LVDS),识别为“eDP-1”)。
由于亚洲市场上很多迷你电脑(Mini PC)都采用这种板子或类似变体,如果你发现画面不对劲,很可能就是这个原因。
典型症状:
无论是在系统界面(EmulationStation)还是游戏中,即便你开启了默认的垂直同步(VSYNC),画面依然会不停“撕裂”。
生活化类比: 就像主板在同时给两个显示器(一个是你的电视,一个是并不存在的“内置屏”)发信号,两边的频率对不上,导致画面像被剪刀剪开了一样错位。
操作步骤:
第一步:进入系统主菜单。
第二步:找到系统设置(SYSTEM SETTINGS)。
第三步:在多屏设置(MULTISCREENS)选项下,将视频输出(Video Output)设置为无(NONE)。
【注意】如果在做了上述调整后仍有图形显示异常,请检查装饰(DECORATIONS)或状态栏(HUD)设置,看看是否开启了性能(PERFORMANCE)显示等功能,如果有,请将其关闭。
解决禁用内置屏后的“游戏启动闪烁”
在 ITX-N100-2L 等主板上禁用 eDP-1 后,可能会导致游戏启动动画(如“淡入淡出”效果)出现花屏。
操作步骤:
针对目前 v41 版本的唯一解决办法:
第一步:进入用户界面设置(USER INTERFACE SETTINGS)。
第二步:找到游戏启动过渡动画(GAME LAUNCH TRANSITION)。
第三步:将其设置为即时(INSTANT)。
高级显示调试:当 xrandr 成为你的帮手
【注意】本章节仅适用于 PC(x86 和 x86_64 架构),不适用于树莓派(Raspberry Pi)或 Odroid 等单板电脑。此外,由于新版系统已能处理大多数情况,本节内容在很多时候已作为备选方案。
如果你需要旋转屏幕,或者需要手动强制使用较低的刷新率,这个通过 xrandr(一款强大的显示配置工具)进行调试的方法会非常管用。
解决高分辨率下的系统性能与卡顿问题
分辨率越高越好吗?
在 Batocera v30 及更早的版本中,系统非常“实在”:它会直接抓取你显示器报告的最高分辨率和最高刷新率。
生活化类比: 这就像是一个过于听话的员工。如果你把一个性能一般的小电脑(如树莓派)接在一台 4K 超高清电视上,系统会硬着头皮跑 4K 画面。结果就是,小电脑累得气喘吁吁,界面操作起来像幻灯片一样一顿一顿的。
版本改进:
* Batocera v31 及更高版本: 系统变聪明了,默认会将最高分辨率限制在全高清(1080p)。如果你的显示器支持 120Hz 或更高的超高刷新率,它也会自动启用,让菜单翻页像丝绸般顺滑!
* 【提示】: 120Hz 的顺滑仅限系统界面(EmulationStation),进入游戏后默认仍会保持在 60Hz。
* 手动开启 4K: 如果你对画质有极致追求,可以去游戏设置(GAME SETTINGS)里把视频模式(VIDEO MODE)手动改为 3840×2160。不过说实话,对于大多数老游戏(Retro-games)来说,4K 和 1080p 看起来区别并不大。
进阶工具:使用 xrandr 诊断显示状态
如果你觉得画面显示不正常,或者想看看显示器到底支持哪些“姿势”,可以通过命令行工具进行排查。
操作步骤:
第一步:通过 SSH 远程连接登录你的 Batocera 系统。
第二步:在终端依次输入以下两条命令:
export DISPLAY=:0.0
xrandr
执行后,屏幕上会跳出一大串你的显示器支持的“分辨率清单”。
【提示】:在输出的内容中,你会看到某一行分辨率后面跟着一个星号(),这代表你当前正在使用*的刷新率。
示例参考(以一台老旧的 4:3 屏幕为例):
Screen 0: minimum 8 x 8, current 1366 x 768, maximum 32767 x 32767
LVDS1 connected primary 1366x768+0+0 (显示器的具体连接信息)
1366x768 60.03*+ 40.03 (这里带星号,说明目前正在跑 1366x768 分辨率)
1024x768 60.00
1024x576 60.00
960x540 60.00
800x600 60.32 56.25
864x486 60.00
640x480 59.94
不管你用的是新款 4K 屏还是老古董,排查的原理都是一样的:通过这个列表,你能确认系统是否准确识别了你的硬件,以及它是否跑在最合适的性能区间。
进阶屏幕自定义设置
解决“无法打开显示设备(can’t open display :0.0)”错误
当你通过远程命令操作显示器时,有时会碰到系统抱怨找不到显示设备的情况。
生活化类比: 这就像是你试图在公司通过远程监控调整家里的电视,但电视还没通电或还没“认出”你是主人。你需要亲自坐到电视机前操作一下,它才能获得授权。
操作步骤:
第一步:直接来到你的 Batocera 机器前,确保显示器已连接并亮起。
第二步:在 PC 版本的系统界面中,按下键盘上的 [F1] 键进入文件管理器。
第三步:点击左侧边栏的 应用程序(Applications),找到并运行终端工具(xterm)。从这里执行命令通常就能成功。
使用自定义脚本修改显示输出
如果你想让某种显示设置(如旋转屏幕或固定分辨率)在每次开机时自动生效,可以通过编写一个自定义配置文件来实现。
操作步骤:
第一步:通过 SSH 远程连接登录系统,运行以下命令来创建或编辑配置文件:
nano /userdata/system/custom-es-config
【注意】如果你使用的是 Batocera v31 或更低版本,请改为编辑这个文件:nano /userdata/system/.xinitrc。
第二步:在编辑器中输入你需要的指令(参考下文的常用指令)。
第三步:输入完成后,按下键盘上的 [Ctrl] + [O] 保存文件,然后按回车确认。
常用显示自定义指令参考
系统已经在后台文件里为你准备了一些“预制菜”,你只需要把它们复制到你的自定义文件中即可。
生活化类比: 配置文件里的指令就像是点菜清单,每一行代表一个特定的动作。
你可以尝试以下常用配置:
- 旋转屏幕:
xrandr -o left(向左旋)xrandr -o right(向右旋)xrandr -o inverted(倒转)
- 强制修改分辨率:
xrandr -s 640x480
- 同时修改分辨率和刷新率(Hz):
xrandr -s 640x480 -r 60
实际应用示例:
如果你想将屏幕分辨率固定为 640×480,你的 /userdata/system/custom-es-config 文件内容应该长这样:
#!/bin/bash
# 修改分辨率
xrandr -s 640x480
如果你拥有一台高刷显示器,想尝试 1280×720 分辨率下的 120Hz 超顺滑体验,请写入:
#!/bin/bash
# 修改分辨率和刷新率
xrandr -s 1280x720 -r 120
【提示】开头那行 #!/bin/bash 非常重要,它告诉系统这是一个可以执行的脚本,千万别漏掉。
最终调试与设置永久保存
保存文件并退出
在命令行编辑器中完成修改后,请使用键盘快捷键操作:按下 [Ctrl] + [S] 进行保存,然后按下 [Ctrl] + [Q] 退出编辑器。
针对旧版本 Batocera(v31 及更低版本)的特殊操作
在老版本中,配置文件的存放路径有所不同。
操作步骤:
第一步:由于系统不会自动调用自定义配置,你需要先从系统目录拷贝一份原始文件到用户数据区。执行以下指令:
cp /etc/X11/xinit/xinitrc /userdata/system/.xinitrc
第二步:按照前文的方法编辑 /userdata/system/.xinitrc 文件。
测试新分辨率:防止画面“出界”
系统界面(EmulationStation,简称 ES)默认是以全屏模式运行的。有时候即便重启,它可能还是会死守旧的分辨率,导致画面显示不全。
生活化类比: 这就像是给一个习惯了穿大号衣服的人换了一件修身款,但他还是按照大号的动作伸展,结果把衣服撑破了(画面超出了屏幕边界)。
操作步骤:
第一步:为了测试,你可以先尝试以“窗口化模式”启动,输入以下指令:
exec EmulationStation --windowed
第二步:使用以下命令重启 ES,看看新分辨率是否生效:
/etc/init.d/S31emulationstation stop
/etc/init.d/S31emulationstation start
【关键】让设置永久生效
如果你现在直接关机或重启,刚才辛苦修改的所有设置都会像写在沙滩上的字一样,被海水(重启过程)冲刷得干干净净。
操作步骤:
在重启之前,你必须运行以下命令来保存配置层(Overlay):
batocera-save-overlay
执行完毕后,你的显示设置才算真正刻在了硬盘里。
屏幕旋转:竖屏玩家的福音
利用 xrandr 工具,你还可以轻松实现屏幕旋转。这对于那些想要复刻老式纵向街机(Vertical Screen Arcade)体验的玩家来说非常实用!
如果电视还是“不听话”怎么办?
如果上述方法都无法搞定你的电视,我们还有一招“终极脚本法”。通过创建一个自定义启动脚本来强行接管输出。
操作步骤:
第一步:在 /userdata/system/custom.sh 路径下创建一个新文件。
第二步:将以下代码复制进去,并把 <output>(接口名)、<widthxheight>(分辨率)和 <refresh-rate>(刷新率)替换为你自己的数值:
#!/bin/bash
# 如果没检测到显示变量,手动指定它
if test -z "${DISPLAY}"
then
export DISPLAY=:0.0
fi
## 强行设置分辨率、接口和刷新率
xrandr --output <output> --mode <widthxheight> --rate <refresh-rate>
希望这份教程能帮你搞定显示难题,享受游戏的乐趣!
这是关于手动强制设置分辨率的最后一步操作,以及如何查看系统底层信息的补充说明:
操作示例:
如果你想让接在第一个 HDMI 接口上的电视以 1080p、60Hz 运行,代码看起来应该是这样的:
xrandr --output HDMI-0 --mode 1920x1080 --rate 60
【注意】请务必记住你手动执行了这一步操作。
生活化类比: 这就像是你给电视下了一道“死命令”。这道命令的优先级最高,它会直接覆盖掉我们之前尝试过的所有其他设置。如果以后你换了显示器发现画面不对,记得回来把这行代码删掉。
如何查看当前的 X.Org X Server 版本?
如果你需要进行深度的技术排查,可能需要确认 Batocera 当前使用的图形显示驱动框架(X.Org X Server)的具体版本。
操作步骤:
第一步:通过 SSH 远程连接登录系统。
第二步:复制并运行以下指令,直接从系统日志中抓取版本信息:
head /var/log/Xorg.0.log | grep "X.Org X Server"
执行后,屏幕上就会显示出当前系统的图形驱动引擎版本号。
原文: 显示问题与分辨率调整 • 翻译: DIY8 Bot


暂无评论内容