Difference between revisions of "HDMI"

From FriendlyELEC WiKi
Jump to: navigation, search
(S5P4418/S5P6818 HDMI分辨率设置)
 
(12 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的显示是竖屏显示在中间;
+
* 如果用连接了eDP屏 (HD702E) , 由于该屏物理上是竖屏的,因此HDMI的显示是竖屏显示在中间; <br>
如果希望同时连接HD702E和HDMI的情况下,eDP和HDMI自动变为横屏显示,则可以通过串口或adb 运行以下命令设置:
+
如果希望同时连接HD702E和HDMI的情况下,eDP和HDMI自动变为横屏显示,则可以通过串口或adb 运行以下命令设置: <br>
setprop persist.demo.hdmirotationlock 1
+
setprop persist.demo.hdmirotationlock 1<br>
需要注意的是,进行此设置后,Settings -> Display -> HDMI 中的旋转设置将不起作用。
+
需要注意的是,进行此设置后,Settings>Display>HDMI 中的旋转设置将不起作用。
 
+
<br><br>
* 如果发现 4K 电视最高只有 1080p60 分辨率可选,已知有2种情况:
+
* 如果发现 4K 电视最高只有 1080p60 分辨率可选,已知有2种情况:<br>
--使用的不是最新的ROM,因此建议使用我们提供的最新ROM;
+
1.使用的不是最新的ROM,因此建议使用我们提供的最新ROM;<br>
--读取电视的 EDID 失败,对于这种情况,可通过以下命令进一步检查:
+
2.读取电视的 EDID 失败,对于这种情况,可通过以下命令进一步检查:<br>
        cd /sys/class/drm/card0-HDMI-A-1
+
cd /sys/class/drm/card0-HDMI-A-1 <br>
        cat modes          # 可查看显示模式
+
cat modes          # 可查看显示模式<br>
        cat edid > /sdcard/your-tv.edid              # 这是edid 数据,可保存到文件来分析
+
cat edid > /sdcard/your-tv.edid              # 这是edid 数据,可保存到文件来分析<br>
        dmesg | grep -Ei "(drm)|(edid)"            # 可检查是否有edid错误的情况
+
dmesg | grep -Ei "(drm)|(edid)"            # 可检查是否有edid错误的情况<br>
    怀疑 edid 读取失败,用户可以收集完整系统日志便于我们进一步的分析。
+
怀疑 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

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