事情经过是这样的:
昨天晚上回家想看电影,就打开我一年没开的am6bplus,启动coreelec,连接到我电脑上的webdav美美看了三个钟头。看完电影顺便把coreelec从nightly升级到了最新的stable,版本为21.3-omega。
升级完之后在系统设置里看了看有没有什么新的功能,发现显示里面可以自定义GUI显示色深为8bit还是10bit,就从自动改成了强制10bit(电视为LG OLED,面板为原生10bit),还把色彩模式改成了RGB(444)。
改完之后在webdav里随便看看,顺手点开一个视频,然后一晃,就开始闪no signal。
当时心里很慌,当即把播放器重启了好几次,仍然无法显示。于是切换到内置的Android系统(拔下SDCARD重启即可切换为内置系统),并没有故障;插入SDCARD重启,仍然报错no signal。
于是赶紧去coreelec的官方论坛查了查,发现很多人有这个问题,似乎是因为播放器启动时会试图进行输出信号切换,但电视/投影机无法识别或不支持相应的信号格式(分辨率/刷新率/色彩模式/色深)。
有人给出一个解决方案:
开机后使用ssh连接到coreelec,然后查询fw environment:
fw_printenv hdmi_mode
fw_printenv output_mode
如果两个均为not defined,说明fw env中该项被错误抹除,应使用
fw_setenv hdmi_mode 1080p60Hz
fw_setenv output_mode 1080p60Hz
设置fw env后重启。
我使用该方案后,在ssh中使用reboot重启,仍然无法正常显示。
随后又看到使用disp_cap对显示模型进行限制的方案,使用
cat /sys/devices/virtual/amhdmitx/amhdmitxo/disp_cap > /storage/.kodi/userdata/disp_cap
随后
nano /storage/.kodi/userdata/disp_cap
将低于1080p60Hz的选项删除,随后重启,无法正常显示。
重启后我连接到coreelec,使用
dispinfo查询coreelec display information,并注意到:
edid信息正常显示,且edid parse为ok,说明显示器正常识别
但/sys/class/display/vinfo中的current vinfo:
- name栏显示为2160p60hz
表明fw setenv实际无效。
继续在dispinfo输出中向下看,发现/flash/config.ini中有:
HDMI custom mode及vOUT mode
首先尝试设定HDMI custom mode:
mount -o remount,rw /flashnano /flash/config.ini在nano中uncomment modeline这一行,写入并重启,无果
重启后尝试:
注释掉modeline这一行,随后uncomment
vout='1080p60Hz',写入后重启,成功进入系统。进入系统后显示界面为1080p并且有过扫描(overscan),进入coreelec设置,设置显示色深及色彩模式,均改回自动,随后更改刷新率为60p,分辨率2160p,自此显示正常。进入视频-文件访问webdav,播放了几个视频,测试SDR、HDR及DV均播放正常。
故障就这样解决了,实际上每一步操作都是一直查找论坛里的讨论进行的,整个过程费时约两个小时,解决好以后已经一点多了。确实有点晚,但有一种不解决好的话睡觉都睡不着的感觉。
希望大家也能引以为戒,不要乱调稳定运行很久的设置。
再顺便:星际穿越真好看啊,大家记得看
