DisplayPort to HDMI not working

I’ve raised this issue before a couple of times, but whenever I try to connect an HDMI display to the Nano via the DisplayPort jack (and obviously using some kind of a DP-to-HDMI dongle or cable) it never works. I’ve tried dozens of active dongles, passive dongles, direct cables, etc. The only thing that seems to work is driving an actual DisplayPort display. I can’t drive any display that accepts only HDMI input.

This has to be some kind of bug. This must be made to work with a DP-to-HDMI solution, because the overwhelming majority of people are going to try to connect displays to the Nano the way I did: by just connecting DP to HDMI. (Obviously this is a two-display scenario, where the HDMI for display 1 is already in use and we are trying to drive a second HDMI display by way of the DP jack.)

I have a tech demo coming up and I’m getting quite desperate for a solution to this problem.

Is there some way to force the Nano to output a certain mode without negotiating with the display? We used to force EDIDs all the time on the Quadro cards. I’m wondering if something similar is possible for the Nano.

wyckster,

Please add that edid to your driver directly.

This method is from rel-28. But should be applied to rel-32 too.

Forcing edid (This is most likely when your monitor failed to be up due to problematic default EDID)
1. Prepare a known 256byte EDID.
2. set use_fallback = true; in tegra_edid_get_monspecs() under edid.c.
3. fill in the known EDID to default_720p_edid[256].

(It took a long time for me to figure out how to build a kernel and try this.) But, unfortunately this is not working for me.

Here is the output of my dmesg after plugging in a display. The connection is from the DP jack on the nano via a DP-to-HDMI cable to the HDMI input jack of the display.

[   54.409575] tegradc tegradc.1: dp: plug event received
[   54.409789] hpd: state 3 (Disabled), hpd 1, pending_hpd_evt 1
[   54.409829] hpd: switching from state 3 (Disabled) to state 0 (Reset)
[   54.514219] hpd: state 0 (Reset), hpd 1, pending_hpd_evt 0
[   54.514330] tegradc tegradc.1: blank - powerdown
[   54.514552] extcon-disp-state extcon:disp-state: cable 44 state 0 already set.
[   54.514585] Extcon DP: HPD disabled
[   54.514614] hpd: hpd_switch 0
[   54.514653] hpd: switching from state 0 (Reset) to state 1 (Check Plug)
[   54.514732] hpd: state 1 (Check Plug), hpd 1, pending_hpd_evt 0
[   54.514782] hpd: switching from state 1 (Check Plug) to state 2 (Check EDID)
[   54.522133] hpd: state 2 (Check EDID), hpd 1, pending_hpd_evt 0
[   54.522934] tegradc tegradc.1: dp: aux write retry (0x10000100) -- 2
[   54.524658] tegradc tegradc.1: dp: aux write retry (0x10000100) -- 1
[   54.526086] tegradc tegradc.1: dp: aux write retry (0x10000100) -- 0
[   54.527701] tegradc tegradc.1: dp: aux write got error (0x10000100)
[   54.534131] tegradc tegradc.1: dp: Failed to write DPCD data. CMD 0x600, Status 0x10000100
[   54.543439] tegradc tegradc.1: dp: aux write retry (0x10000100) -- 2
[   54.544713] tegradc tegradc.0: unblank
[   54.544725] tegradc tegradc.1: blank - powerdown
[   54.545183] tegradc tegradc.1: dp: aux write retry (0x10000100) -- 1
[   54.546710] tegradc tegradc.1: dp: aux write retry (0x10000100) -- 0
[   54.548167] tegradc tegradc.1: dp: aux write got error (0x10000100)
[   54.555632] tegradc tegradc.1: dp: Failed to write DPCD data. CMD 0x600, Status 0x10000100
[   54.564821] tegradc tegradc.1: dp: aux write retry (0x10000100) -- 2
[   54.566327] tegradc tegradc.1: dp: aux write retry (0x10000100) -- 1
[   54.567797] tegradc tegradc.1: dp: aux write retry (0x10000100) -- 0
[   54.569430] tegradc tegradc.1: dp: aux write got error (0x10000100)
[   54.575842] tegradc tegradc.1: dp: Failed to write DPCD data. CMD 0x600, Status 0x10000100
[   54.585297] tegradc tegradc.1: dp: aux write retry (0x10000100) -- 2
[   54.586496] tegradc tegradc.1: dp: aux write retry (0x10000100) -- 1
[   54.587951] tegradc tegradc.1: dp: aux write retry (0x10000100) -- 0
[   54.589394] tegradc tegradc.1: dp: aux write got error (0x10000100)
[   54.595761] tegradc tegradc.1: dp: Failed to write DPCD data. CMD 0x600, Status 0x10000100
[   54.604098] tegradc tegradc.1: dp: failed to exit panel power save mode (0xfffffff2)
[   54.611883] hpd: edid read prepare failed
[   54.615776] tegradc tegradc.1: blank - powerdown
[   54.615802] extcon-disp-state extcon:disp-state: cable 44 state 0 already set.
[   54.615807] Extcon DP: HPD disabled
[   54.615810] hpd: hpd_switch 0
[   54.615816] hpd: switching from state 2 (Check EDID) to state 3 (Disabled)
[   54.619133] tegradc tegradc.0: unblank
[   54.619141] tegradc tegradc.1: blank - powerdown

Can you comment regarding my dmesg log that I posted (previous msg)? What do you think is happening? What may I have done wrong?

Actually, we don’t support dp-hdmi dongle. It looks like the aux channel is not able to read edid from it.

hi WayneWWW
can sor0 be used as hdmi on jetson nano board?

From hardware aspect, this should work. However, we didn’t have any QA on software side, so not sure what problem may hit.

@WayneWWW but I thought that your instructions would force the EDID in the kernel and so I thought that this was going to work even though it couldn’t read the edid. that was what I was asking for originally, to be able to force the EDID.

Does the same setup work plugged into a desktop with Display Port? What is the make and model of monitor you are trying to connect to?

You could try to comment out this lines in hpd.c

216  	if (data->ops->edid_read_prepare)
217  		if (!data->ops->edid_read_prepare(data->drv_data)) {
218  			pr_err("hpd: edid read prepare failed");
219  			goto end_disabled;
220  		}

Actually, I am wondering if link training is needed for such case (HDMI-> DP adapter), if it still needs LT, then maybe this method would not work either.

Are you sure Jetson nano’s sor0 can be used as hdmi?
As I know nano’s trm is as same as TX1 .
But TX1’s sor0 can’t be used as hdmi from TX1’s TRM.

Ok, then the answer is no. If the TRM does not claim it, then even hardware does not support it.

I don’t sure if nano’sor0 can be used as hdmi.so I ask.can you help me to sure?

Nano is using TX1 chip and TRM only indicates eDP for SOR0. Thus, it is not supported.

Intending to use an Optoma ML550 projector. (1280x800) https://www.optoma.com/us/product/ml550/
Also tried with LG HF60LA (1920x1080) https://www.lg.com/us/home-video/lg-HF60LA-projector.

So how can I convert the eDP to HDMI to drive my two projectors? What is the solution?

Maybe you need to find some converter from other vendor to convert the eDP signal to HDMI.

Hi WayneWWW,
May I know the procedure to find hpd.c and comment out these lines?
I tried to search it and couldn’t find where this file is located.

Hi,

This is kernel source code so not on the device.

You have to download it from our download center.

1 Like

Thanks,

In case anyone still have the same issue, I solved mine with using the active DP->HDMI adaptor. The passive one won’t work. Has to be an active ones.

2 Likes

Facing the same issue. Used a DisplayPort to DVI(-D) Cable (DVI-I at Projector), it does not work for me. Haven’t checked dmesg so far. Projector Canon SX60.