5" screen compatible with tx-1 and Adafruit screen advice

Hi,

I tried connecting the Jetson TX-1 with the following screen from Adafruit but I can’t seem to get it running correctly [url]https://www.adafruit.com/product/2260[/url].

Can anyone help with this issue or recommend a 5" screen that would work well with the Jetson TX-1?

Thanks
Yuval

I am assuming this is connected to the main HDMI connector without any intervening adapters. With this plugged in, does this file exist:

/sys/kernel/debug/tegradc.1/edid

If that file exists, can you paste its content?

Try booting the TX1 without the screen connected, waiting about 2 minutes, then connecting the screen.

When the 5" screen is connected the /sys/kernel/debug/tegradc.1/edid has “No EDID” written in it but when connecting to a regular LCD screen I can get a valid EDID information. When the 5" screen is connected I basically get white scanning horizontal lines on top of the OS GUI.

I tried to use Xrandr in order to add a new mode for the screen resolution (800x480 with no scaler) but got the following error :
X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 140 (RANDR)
Minor opcode of failed request: 18 (RRAddOutputMode)
Serial number of failed request: 20
Current serial number in output stream: 21

I tried connecting the screen after 2 minutes from boot time but no luck and nothing shows up.

Any help will be appreciated,
Yuval

I tried using the screen with raspberryPie (which this screen was meant to with) and every thing works great if I follow the instructions on the Adafruit website:

Beside changing the screen configuration (which I didn’t manage to do properly on the Jetson) it is also suggested that I disable the sound over the HDMI port but I can’t find the equivalent of raspi-config for Ubuntu. Any suggestions?

Thanks
Yuval

Without EDID data no auto-configuration is possible. This thread mentions manual edit of xorg.conf:
[url]https://devtalk.nvidia.com/default/topic/987771/jetson-tx1/how-to-modify-the-jetson-tx1-hdmi-output-resolution-of-576i-50hz-/[/url]

OK so the way I see it I need to fix 2 issues:

  1. Understand why the screen doesn’t have an EDID written inside EEPROM
  2. How to configure the Jetson to output 800x480 resolution at 60MHz.

Using the RaspberryPie I was able to force the HDMI output to be 800x480 and also had to force the audio output to be on the 3.5 jack instead of the HDMI. To my knowledge, since the screen only supports one type of resolution doing so is equivalent to having an EDID.

while trying to add the new resolution mode I get the following error:
X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 140 (RANDR)
Minor opcode of failed request: 18 (RRAddOutputMode)
Serial number of failed request: 20
Current serial number in output stream: 21

Any ideas how to proceed?

EDID is sent by a specific wire using i2c protocol. That wire does not exist on 15-pin D-sub cables…those cables came from a time before plug-n-play of monitors existed. Adapters for VGA cut the wire…literally.

Talking about the difference between DVI-D and DVI-A will also illustrate why some cheaper solutions don’t work. DVI has basically three variants. DVI-A provides only an analog signal exactly compatible with older VGA; DVI-I contains only the wire for a digital signal, and no analog backwards compatibility; lastly, DVI-D offers both a digital signal wire and an analog signal wire. This allows compatibility between older video cards and some newer monitors.

HDMI does not offer analog compatibility, but in a case where the monitor (in this case an RPi device) has some dedicated function they may not implement the i2c wire for EDID…this would be more expensive, and if the device is planned for only one purpose and that purpose has a solution, then the manufacturer may have simply chosen to leave out EDID. I can’t say I know for sure on this small screen, but I highly suspect this is the case. You could add an ROM and i2c circuitry to solve this, but RPi may already be set to be able to use this resolution.

Other than adding EDID ROM and i2c, you must set up all data regarding this monitor in X11 by hand. Automatic configuration is not possible without EDID. NOTE: Your RPi seems to have that resolution available by default, and simply walking through resolutions till you hit that one works; Ubuntu 14.04 in this case does not happen to have that non-standard resolution.

It seems that the screen has an option to set the internal EDID following these instructions:

I’m currently trying to find out if it comes with a pre-build EDID or should I configure that myself.
If Ubuntu 14.04 does not have this resolution by default how can I add it? I tried using the following commands:

  1. cvt 800 480 60
  2. xrandr --newmode “800x480_60.00” 38.25 800 832 912 1024 600 603 607 624 -hsync +vsyn
  3. xrandr --addmode HDMI-0 800x480

the last step fails with the following error:
X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 140 (RANDR)
Minor opcode of failed request: 18 (RRAddOutputMode)
Serial number of failed request: 20
Current serial number in output stream: 21

Does it mean that the board does not support that type of resolution?

The lack of the “edid” file under “/sys” (or rather the fact that it did not contain any data) means there is no EDID in your monitor and it is up to you to either program that EEPROM yourself, or perhaps manually adding the information in your xorg.conf file.

Certain resolutions are available by default and even without EDID you can set the display to use those (blindly). Re-writing the X11 server itself to add one of those as a “default” would require extraordinary effort…and then you’d still have to tell it to use that. Putting the data in EDID would be much easier, then all of those difficult source code edits would be done in dynamic software self-configure instead…EDID essentially means it can do run time self-editing.

You have a large array of standardized resolutions which the Jetson can use with nothing more than being told to switch (e.g., xrandr)…but that if you want to use something out of that array of ranges you need to give detailed data…and your monitor is completely empty of the normal EEPROM data. All HDMI monitors should have that data. You’ve just become the manufacturer since nobody else put that data in :P

OK i’ll try and write the EDID to the EEPROM of the monitor and see if that will fix the issue.
The one thing I don’t fully understand is the selection of the output resolution (from the board to the monitor) in case there is no perfect match between the EDID and default available resolutions (800x480 doesn’t appear as an option when searching Xrandr supported resoluions).
I mean that the monitor itself doesn’t have a scaler component so any input which isn’t exactly 800x480 will not fit the screen perfectly.

In addition to setting the EDID do I need to add a default resolution using “Xrandr” or is it done automatically?

That’s an experiment you’ll need to try to find out before you’ll be certain.

It’s likely that if the dot clock and other maximums of the video output hardware are not exceeded (EDID data will have to be correct for that to produce a valid modeline), and various settings pass some sanity test, then I think the video output will work with what the EDID passes. Defaults are something which exist for selecting among standardized possibilities from the industry and can be obtained by blindly selecting; not having this specific resolution seems to be a case of simply having not added the resolution as blindly selectable…it doesn’t mean you can’t manually fill in the modeline and get it to work (many monitors of the past have been capable of far more than the standard resolutions and still work…but only after the “driver disk” has updated video settings). EDID is one way of updating selections.

OK I’ll try that and update. Thanks a lot for all the help!

Hi, I updated the EDID on the screen using the tutorial from Adafruit but still when booting the board I see that the file /sys/kernel/debug/tegradc.1/edid has “no EDID” written in it.

My next debugging option is to try and disable the audio from going over the HDMI port. If you have any more suggestions about debugging I would like to try since I saw more posts about the mismatch between the Jetson and small screens .

BTW all this time the screen works perfectly with the RaspberryPi

Do you know of any 5" screen that might work well with the Jetson?

For the audio part I think it is just changing the mixer. I have not attempted this for HDMI since I don’t use HDMI audio. This is for a TK1, not a TX1, but some may overlap and be the same…check audio through amixer. If you run “man amixer”, and type “/list”, then a number of “list” functions will show up. That’s rather vague, but I’m afraid I have no other experience at the moment with HDMI audio. You can use “amixer cget name=“some setting”” to see a setting, “amixer cset=“some setting” value” to set something.

If the HDMI cable itself does not use any adapters and is truly HDMI, then I’d suspect the EDID is still not correct. Even when a Jetson has had trouble using EDID data it has always correctly reported what the EDID is.

Does this file exist? I’m curious if i2c is looking.

/sys/bus/i2c/drivers/tegra_edid

If you list i2c busses via “sudo i2cdetect -l” you should see this (this is an attempt to verify if it is possible for i2c to respond):

i2c-0   i2c             Tegra I2C adapter                       I2C adapter
i2c-1   i2c             Tegra I2C adapter                       I2C adapter
i2c-2   i2c             Tegra I2C adapter                       I2C adapter
i2c-3   i2c             Tegra I2C adapter                       I2C adapter
i2c-4   i2c             Tegra I2C adapter                       I2C adapter
i2c-5   i2c             Tegra I2C adapter                       I2C adapter
i2c-6   i2c             Tegra I2C adapter                       I2C adapter

Are any of those missing?

Can anyone answer which of those i2c busses is used with EDID? I see the dts has “sor1” with this line in it, but I’m unsure of associating that with a particular controller (I’m hoping to see if that i2c bus can be queried directly to know if there is an i2c response at all, or if the response is just not valid…this should be possible by a direct query of the particular i2c):

nvidia,ddc-i2c-bus = <0x82>;

As for other 5" displays I do not know of any.

I re-flashed the board with the latest OS and Jetpack 3.2.1 and now it works! Thanks a lot for all the help.