rk3399 的 HDMI 热插拔的问题

问题: 客户的3399 的板子上,烧写ubuntu 发现, 没有热插拔。

测试情况: 系统在第一次烧写完成之后,是有热插拔的,但是第二次启动就没有了。

还有一个情况,就是 ,如果我一开始 上电的时候就不接上 HDMI 的话,等系统启动之后,再 街上HDMI , 那么 这时候 就有了 热插拔了。很奇怪。

开始我的调试:

先来看看网上的资料,这个资料给了我很多的启发。

    firefly@firefly:/etc/udev/rules.d$ cat /usr/local/bin/hdmi-toggle
    #!/usr/bin/env bash
     
    USER="$(who | grep :0\) | cut -f 1 -d ' ')"
    export XAUTHORITY=/home/$USER/.Xauthority
    export DISPLAY=:0
     
    ########### Settings ###########
     
    # Use 'xrandr' to find these
    DP="DP-1"
    VGA="VGA-1"
    HDMI="HDMI-1"
    INTERNAL_DISPLAY="LVDS-1"
     
    # Check /sys/class/drm for the exact location
    DP_STATUS="$(cat /sys/class/drm/card0-DP-1/status)"
    VGA_STATUS="$(cat /sys/class/drm/card0-VGA-1/status)"
    HDMI_STATUS="$(cat /sys/class/drm/card0-HDMI-A-1/status)"
     
    # Do no change!
    EXTERNAL_DISPLAY=""
     
    # Check to see if the external display is connected
    if [ "${DP_STATUS}" = connected ]; then
    	EXTERNAL_DISPLAY=$DP
    fi
    if [ "${VGA_STATUS}" = connected ]; then
    	EXTERNAL_DISPLAY=$VGA
    fi
    if [ "${HDMI_STATUS}" = connected ]; then
    	EXTERNAL_DISPLAY=$HDMI
    fi
     
    # The external display is connected
    if [ "$EXTERNAL_DISPLAY" != "" ]; then
    	# Set the display settings
    	xrandr
    	xrandr  --output $EXTERNAL_DISPLAY --auto
    else
    	# Restore to single display
    	xrandr --output $EXTERNAL_DISPLAY --off
    fi
     
    exit 0

------------------------------------------------------------------------------------------------------------------

什么是 lightdm  , startx  , xrandr

这个我单独写一篇文章, 不混在一起。

------------------------------------------------------------------------------------------------------------

什么是 systemctl , systemd  , 自启动脚本。

这个我单独写一篇文章, 不混在一起。

------------------------------------------------------------------------------------------------------

我自己对于硬件的测试。

这里涉及到 HPD 这个引脚。

这个脚 ,当我插入HDMI 的时候, 为5V,当我 拔掉HDMI 的时候为0V。

无论 热插拔 是正常,还是不正常,都是这个情况。

所以可能跟硬件是没有关系的。

所以我去看一下,源码中的 Linux 的设备树吧。

这里就没有热插拔 什么事儿。可能3399 本身就不支持热插拔。

也去看一下, uboot 的设备树吧。

uboot 里面的设备树 也是一样的。

---------------------------------------------------------------------------------------------------------------

我自己对于永远 默认插上HDMI 的源码修改。

我参考的是网上的资料

我就是这么改的。

-----------------------------------------------------------------------------------------------------------------------

我自己的调试。

我尝试 重启一下, lightdm 发现竟然有了热插拔。

情况是这样的,

已经没有热插拔了。

我重启 lightdm , 屏幕点亮。

然后继续插拔接口, 发现有了热插拔。

然后断电重启,有没有了热插拔。

那问题就简单了,直接写个 自启动脚本那就可以了。

自启动脚本是我从网上抄的。

无论我 插上HDMI ,还是 拔出HDMI 永远都是 connected .

我本想使用xrandr 查看一下 系统的屏幕, 但是系统有这个命令,但是 无法执行。

这是我的自启动服务。

[Unit]
After=multi-user.target

[Service]
Type=oneshot
User=root
ExecStart=/usr/bin/openttyTHS1.sh

[Install]
WantedBy=multi-user.target

这是那个脚本。

为什么这里有个 sleep 函数呢?

我发现如果没有这个函数的话,即便是 启动了,服务, 也不会有 重启桌面的这个操作。

所以干脆延时,知道系统完完全全的启动,在启动这个服务。

这样 问题就解决了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值