Edge2 Android: Display on display port often not working after reboot/reset

Which system do you use? Android, Ubuntu, OOWOW or others?

Android

Which version of system do you use? Please provide the version of the system here:

edge2-android-14-v250708
Also confirmed the issue with some previous versions, including Android 12.1.

Please describe your issue below:

If two displays are connected to the Khadas Edge2 board, one to HDMI and the other one to DisplayPort. The display connected to the display port does often not work properly after reset or reboot of the system. Booting from complete power off state however works 99.9% of the time.

I used a wide variety of different Displays and also various HDMI/DisplayPort cables and adapters. In my opinion this issue happens with any display/cable combination that is basically compatible with the board. It doesn’t matter if HDMI or DisplayPort is used on the display end. To keep it simple, I describe only one particular set.

Environment
-Khadas Edge2 Board + Android
-Magedok T108C connected HDMI<->HDMI
-Magedok T108C connected DP<->DP (USB-C)

Steps to reproduce

  • Power on Displays and Board
  • Both displays show Android’s Boot Animation and later System UI (ok-case)
  • Reset Board (Pressing Reset Button / adb shell reboot)

Observation (~66% of the time)

  • 2nd Display connected to DisplayPort remains black. However, it has some kind of signal.

Checking with dumpsys display it appears as if Android thinks the display is 640x480!?!

Tries
1 - ok
2 - nok
3 - ok
4 - nok
5 - nok

Please note. Sometimes it looks like the display works always and sometimes there is a long series of black screens only cycles. Turning off the power for 5 minutes and then power on everything resolves the problem almost always.

Post a console log of your issue below:

dmesg_dp_display_nok.txt (525.5 KB)
dmesg_dp_display_ok.txt (526.6 KB)
dri_0_summary_display_nok.txt (3.8 KB)
dri_0_summary_display_ok.txt (2.6 KB)
dumpsys_display_nok.txt (39.3 KB)
dumpsys_display_ok.txt (39.3 KB)
logcat_dp_display_nok.txt (2.4 MB)
logcat_dp_display_ok.txt (2.4 MB)

@jkoehler Edge2 Android 14: HDMI display not properly detected during boot into Android
Please use this firmware for verification.

Thank you very much for your feedback. It is highly appreciated.
The new firmware also demonstrates the same issue:

Reproduction attempts (Pushing reset button):
1 - ok
2 - ok
3 - nok
4 - ok
5 - ok

dmesg_new_firmware_nok.txt (505.3 KB)
logcat_new_firmware_nok.txt (3.0 MB)

@jkoehler I have tried here 10 times before, but it didn’t come out.
What is the probability of you appearing over there?
What is the resolution of your DP monitor?
Can you verify the Android 13 firmware?

@goenjoy, you are right, the issue doesn’t seem to happen with the Android 13 image (Though I believe I saw it with custom Android 12.1 image).
The display resolution is 1920x1080 and the display runs at 60Hz but it seems like it has no influence.

However, with Android 14 it is relatively easy for me to reproduce.
I swapped the Khadas Edge2 board, cables, adapters and displays several times with basically the same results.

My hunch is there might be some uninitialized variable in play.

I conducted several testes. Please see results below:

edge2-android-12-v230625.img
No official support for dual display
I saw the issue with custom build but it is not important to me

edge2-android-13-v241206
1 - ok
2 - ok
3 - ok
4 - ok
5 - ok
6 - ok
7 - ok
8 - ok
9 - ok
10 - ok

edge2-android-14-v250708 + USB-C Magedok 1920x1080
1 - nok
2 - ok
3 - nok
4 - nok
5 - nok
6 - nok
7 - nok
8 - ok
9 - ok
10 - ok

edge2-android-14-v250708 + USB-C CableMatters HDMI-Adaptor + HDMI Magedock 1920x1080
1 - ok
2 - ok
3 - ok
4 - nok
5 - nok
6 - ok
7 - nok
8 - nok
9 - nok
10 - ok

edge2-android-14-v250708 + USB-C CableMatters HDMI-Adaptor + HDMI Elecrow 1024x600
1 - ok
2 - ok
3 - ok
4 - nok
5 - nok
6 - ok
7 - ok
8 - nok
9 - ok
10 - ok

edge2-android-14-updated + USB-C CableMatters HDMI-Adaptor + HDMI Elecrow 1024x600
1 - ok
2 - nok
3 - ok
4 - nok
5 - ok
6 - nok
7 - ok
8 - nok
9 - nok
10 - ok

Infos for display Elecrow 1024x600
dmesg_new_firmware_elecrow_ok.txt (505.1 KB)
dmesg_new_firmware_elecrow_nok.txt (505.2 KB)
logcat_new_firmware_elecrow_ok.txt (2.4 MB)
logcat_new_firmware_elecrow_nok.txt (3.3 MB)

@jkoehler I have tried 20 times here, but still haven’t reproduced the problem you mentioned. But on my end, it’s not a type-c to HDMI interface, it’s still a direct type-c interface connection. Please make the following modifications to see if there are any improvements?

kernel-6.1$ git diff
diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-khadas-edge2.dts b/arch/arm64/boot/dts/rockchip/rk3588s-khadas-edge2.dts
index 5266b643eb66..bde9d1189e78 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588s-khadas-edge2.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3588s-khadas-edge2.dts
@@ -246,7 +246,7 @@ &i2s5_8ch {
 };
 
 &dsi0 {
-       status = "okay";
+       status = "disabled";
        reset-delay-ms = <20>;
        reset-gpios = <&gpio4 RK_PA3 GPIO_ACTIVE_HIGH>;
        pinctrl-names = "default";
@@ -254,7 +254,7 @@ &dsi0 {
 };
 
 &dsi0_in_vp2 {
-    status = "okay";
+    status = "disabled";
 };
 
 &dsi0_in_vp3 {
@@ -262,21 +262,21 @@ &dsi0_in_vp3 {
 };
 
 &route_dsi0 {
-       status = "okay";
+       status = "disabled";
        connect = <&vp2_out_dsi0>;
 };
 
 &mipi_dcphy0 {
-       status = "okay";
+       status = "disabled";
 };
 
 &dsi0_panel {
-       status = "okay";
+       status = "disabled";
        power-supply = <&vcc3v3_lcd1_en>;
 };
 
 &dsi1 {
-       status = "okay";
+       status = "disabled";
        reset-delay-ms = <20>;
        reset-gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_HIGH>;
        pinctrl-names = "default";
@@ -288,20 +288,20 @@ &dsi1_in_vp2 {
 };
 
 &dsi1_in_vp3 {
-       status = "okay";
+       status = "disabled";
 };
 
 &route_dsi1 {
-       status = "okay";
+       status = "disabled";
        connect = <&vp3_out_dsi1>;
 };
 
 &mipi_dcphy1 {
-       status = "okay";
+       status = "disabled";
 };
 
 &dsi1_panel {
-       status = "okay";
+       status = "disabled";
        power-supply = <&vcc3v3_lcd2_en>;
 };

If the above modifications still do not improve, please continue with the following modifications based on the previous ones and try again:

kernel-6.1$ git diff
diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-khadas-edge2.dts b/arch/arm64/boot/dts/rockchip/rk3588s-khadas-edge2.dts
index bde9d1189e78..c1322f6fa521 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588s-khadas-edge2.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3588s-khadas-edge2.dts
@@ -186,7 +186,7 @@ &dp0 {
        status = "okay";
 };
 
-&dp0_in_vp2 {
+&dp0_in_vp0 {
        status = "okay";
 };
 
@@ -225,7 +225,7 @@ &hdmi0 {
        status = "okay";
 };
 
-&hdmi0_in_vp0 {
+&hdmi0_in_vp2 {
        status = "okay";
 };

Dear @goenjoy,
thank you very much for your great support!
Disabling the MIPI interfaces dsi0 and dsi1 (patch #1) solves the issue.
Since I don’t use dsi0 nor dsi1 this solution is very good for my purposes.

Just as a side note: I noticed that the id of the dp display sometimes varies between 2 and 3 if MIPI is enabled. Maybe Android confuses the different display connectors sometimes.

However, thank you very much for providing a workaround.

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.