Difference between revisions of "HDMI"
(→RK3399 HDMI与eDP在Andorid下的全屏与旋转设置) |
(→S5P4418/S5P6818 HDMI分辨率设置) |
||
(9 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
+ | ==查询HDMI连接状态== | ||
+ | 查看以下节点:/sys/class/drm/card0-HDMI-A-1/status | ||
+ | |||
==RK3399 HDMI与eDP在Andorid下的全屏与旋转设置== | ==RK3399 HDMI与eDP在Andorid下的全屏与旋转设置== | ||
* 如果用连接了eDP屏 (HD702E) , 由于该屏物理上是竖屏的,因此HDMI的显示是竖屏显示在中间; <br> | * 如果用连接了eDP屏 (HD702E) , 由于该屏物理上是竖屏的,因此HDMI的显示是竖屏显示在中间; <br> | ||
Line 13: | Line 16: | ||
dmesg | grep -Ei "(drm)|(edid)" # 可检查是否有edid错误的情况<br> | dmesg | grep -Ei "(drm)|(edid)" # 可检查是否有edid错误的情况<br> | ||
怀疑 edid 读取失败,用户可以收集完整系统日志便于我们进一步的分析<br> | 怀疑 edid 读取失败,用户可以收集完整系统日志便于我们进一步的分析<br> | ||
+ | |||
+ | ==S5P4418/S5P6818 HDMI分辨率设置== | ||
+ | ===4.4内核=== | ||
+ | 只支持 720P和1080P两种分辨率,<br /> | ||
+ | 可尝试修改 arch/arm64/boot/dts/nexell/s5p6818-nanopi3-common.dtsi ,补丁如下:<br /> | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | --- a/arch/arm64/boot/dts/nexell/s5p6818-nanopi3-common.dtsi | ||
+ | +++ b/arch/arm64/boot/dts/nexell/s5p6818-nanopi3-common.dtsi | ||
+ | @@ -851,6 +851,7 @@ | ||
+ | width = <1280>; | ||
+ | height = <720>; | ||
+ | refresh = <60>; | ||
+ | + prefered = <1>; | ||
+ | }; | ||
+ | }; | ||
+ | </syntaxhighlight> | ||
+ | 另外,也可以检查/修改 drivers/gpu/drm/nexell/nx_drm_hdmi.c 中的 panel_hdmi_ops_get_modes | ||
+ | |||
+ | ==A64 HDMI分辨率设置== | ||
+ | 参考:<br> | ||
+ | https://github.com/friendlyarm/a64_lichee/commit/205f36b879c6d5241b51e7c68551c2ead5723580<br> | ||
+ | |||
+ | ==H3 HDMI分辨率设置== | ||
+ | ===Linux-3.4=== | ||
+ | 参考M1的光盘的以下文档:H3 sys_config.fex使用配置说明V1.1.pdf | ||
+ | |||
+ | ===Linux-4.14=== | ||
+ | 以1280x720为例,修改boot分区中的boot.cmd,在环境变量bootargs中添加下列内容: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | $ drm_kms_helper.edid_firmware=HDMI-A-1:edid/1280x720.bin video=HDMI-A-1:1280x720@60 | ||
+ | </syntaxhighlight> | ||
+ | 修改完毕后,重新生成boot.src: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | $ apt install u-boot-tools | ||
+ | $ mkimage -C none -A arm -T script -d boot.cmd boot.scr | ||
+ | </syntaxhighlight> | ||
+ | 上述操作既可以在PC Ubuntu上执行,也可以在板子上执行。重新生成boot.src后,需要重启板子,才能生效。<br><br> | ||
+ | |||
+ | 重启板子后,使用下列命令可以检查HDMI分辨率的设置: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | $ cat /proc/cmdline | ||
+ | console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootfstype=ext4 rw rootwait fsck.repair=yes panic=10 fbcon=map:0 drm_kms_helper.edid_firmware=HDMI-A-1:edid/1280x720.bin video=HDMI-A-1:1280x720@60 | ||
+ | $ cat /sys/devices/platform/display-engine/drm/card0 | ||
+ | 1280x720 | ||
+ | 1024x768 | ||
+ | 800x600 | ||
+ | 800x600 | ||
+ | 848x480 | ||
+ | 640x480 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==H5 HDMI分辨率设置== | ||
+ | ===Linux-3.10=== | ||
+ | 参考NanoPi-NEO2的光盘的以下文档:H5_sys_config.fex_V1.0.pdf | ||
+ | |||
+ | ===Linux-4.14=== | ||
+ | 以1280x720为例,修改boot分区中的boot.cmd,在环境变量bootargs中添加下列内容: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | $ drm_kms_helper.edid_firmware=HDMI-A-1:edid/1280x720.bin video=HDMI-A-1:1280x720@60 | ||
+ | </syntaxhighlight> | ||
+ | 修改完毕后,重新生成boot.src: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | $ apt install u-boot-tools | ||
+ | $ mkimage -C none -A arm -T script -d boot.cmd boot.scr | ||
+ | </syntaxhighlight> | ||
+ | 上述操作既可以在PC Ubuntu上执行,也可以在板子上执行。重新生成boot.src后,需要重启板子,才能生效。<br><br> | ||
+ | |||
+ | 重启板子后,使用下列命令可以检查HDMI分辨率的设置: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | $ cat /proc/cmdline | ||
+ | console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootfstype=ext4 rw rootwait fsck.repair=yes panic=10 fbcon=map:0 drm_kms_helper.edid_firmware=HDMI-A-1:edid/1280x720.bin video=HDMI-A-1:1280x720@60 | ||
+ | $ cat /sys/devices/platform/display-engine/drm/card0 | ||
+ | 1280x720 | ||
+ | 1024x768 | ||
+ | 800x600 | ||
+ | 800x600 | ||
+ | 848x480 | ||
+ | 640x480 | ||
+ | </syntaxhighlight> |
Latest revision as of 06:18, 20 April 2020
Contents
1 查询HDMI连接状态
查看以下节点:/sys/class/drm/card0-HDMI-A-1/status
2 RK3399 HDMI与eDP在Andorid下的全屏与旋转设置
- 如果用连接了eDP屏 (HD702E) , 由于该屏物理上是竖屏的,因此HDMI的显示是竖屏显示在中间;
如果希望同时连接HD702E和HDMI的情况下,eDP和HDMI自动变为横屏显示,则可以通过串口或adb 运行以下命令设置:
setprop persist.demo.hdmirotationlock 1
需要注意的是,进行此设置后,Settings>Display>HDMI 中的旋转设置将不起作用。
- 如果发现 4K 电视最高只有 1080p60 分辨率可选,已知有2种情况:
1.使用的不是最新的ROM,因此建议使用我们提供的最新ROM;
2.读取电视的 EDID 失败,对于这种情况,可通过以下命令进一步检查:
cd /sys/class/drm/card0-HDMI-A-1
cat modes # 可查看显示模式
cat edid > /sdcard/your-tv.edid # 这是edid 数据,可保存到文件来分析
dmesg | grep -Ei "(drm)|(edid)" # 可检查是否有edid错误的情况
怀疑 edid 读取失败,用户可以收集完整系统日志便于我们进一步的分析
3 S5P4418/S5P6818 HDMI分辨率设置
3.1 4.4内核
只支持 720P和1080P两种分辨率,
可尝试修改 arch/arm64/boot/dts/nexell/s5p6818-nanopi3-common.dtsi ,补丁如下:
--- a/arch/arm64/boot/dts/nexell/s5p6818-nanopi3-common.dtsi +++ b/arch/arm64/boot/dts/nexell/s5p6818-nanopi3-common.dtsi @@ -851,6 +851,7 @@ width = <1280>; height = <720>; refresh = <60>; + prefered = <1>; }; };
另外,也可以检查/修改 drivers/gpu/drm/nexell/nx_drm_hdmi.c 中的 panel_hdmi_ops_get_modes
4 A64 HDMI分辨率设置
参考:
https://github.com/friendlyarm/a64_lichee/commit/205f36b879c6d5241b51e7c68551c2ead5723580
5 H3 HDMI分辨率设置
5.1 Linux-3.4
参考M1的光盘的以下文档:H3 sys_config.fex使用配置说明V1.1.pdf
5.2 Linux-4.14
以1280x720为例,修改boot分区中的boot.cmd,在环境变量bootargs中添加下列内容:
$ drm_kms_helper.edid_firmware=HDMI-A-1:edid/1280x720.bin video=HDMI-A-1:1280x720@60
修改完毕后,重新生成boot.src:
$ apt install u-boot-tools $ mkimage -C none -A arm -T script -d boot.cmd boot.scr
上述操作既可以在PC Ubuntu上执行,也可以在板子上执行。重新生成boot.src后,需要重启板子,才能生效。
重启板子后,使用下列命令可以检查HDMI分辨率的设置:
$ cat /proc/cmdline console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootfstype=ext4 rw rootwait fsck.repair=yes panic=10 fbcon=map:0 drm_kms_helper.edid_firmware=HDMI-A-1:edid/1280x720.bin video=HDMI-A-1:1280x720@60 $ cat /sys/devices/platform/display-engine/drm/card0 1280x720 1024x768 800x600 800x600 848x480 640x480
6 H5 HDMI分辨率设置
6.1 Linux-3.10
参考NanoPi-NEO2的光盘的以下文档:H5_sys_config.fex_V1.0.pdf
6.2 Linux-4.14
以1280x720为例,修改boot分区中的boot.cmd,在环境变量bootargs中添加下列内容:
$ drm_kms_helper.edid_firmware=HDMI-A-1:edid/1280x720.bin video=HDMI-A-1:1280x720@60
修改完毕后,重新生成boot.src:
$ apt install u-boot-tools $ mkimage -C none -A arm -T script -d boot.cmd boot.scr
上述操作既可以在PC Ubuntu上执行,也可以在板子上执行。重新生成boot.src后,需要重启板子,才能生效。
重启板子后,使用下列命令可以检查HDMI分辨率的设置:
$ cat /proc/cmdline console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootfstype=ext4 rw rootwait fsck.repair=yes panic=10 fbcon=map:0 drm_kms_helper.edid_firmware=HDMI-A-1:edid/1280x720.bin video=HDMI-A-1:1280x720@60 $ cat /sys/devices/platform/display-engine/drm/card0 1280x720 1024x768 800x600 800x600 848x480 640x480