Remote Desktop setup only works when monitor plugged in HDMI port

Howdy folks,

I would like to have the option for remote desktop access to my JTX1 since it’s embedded in a robot. SSH is working for me, but there are moments that I would like to interact via a remote desktop.

I have set-up JTX1 desktop sharing (alt-f2, “desktop sharing”) and configured it so that other users can see and control my desktop (without password and login).

On my Ubuntu (14.04 LTS) laptop I am running the Remote Desktop Viewer (Vinagre). I connect to the JTX1 wifi AP (My JTX1 has been configured as a wifi access point) and it works fine (a bit slow though) as long as the JTX1 is connected to a HDMI monitor.

When I boot up the JTX1 without a monitor connected to the HDMI port of the JTX1 it doesn’t work (I get “connection refused” when I try to connect via the Remote Desktop Viewer).

I also tried it with a Fit Headless HDMI dongle that emulates a monitor, but unfortunately that didn’t make a difference.

I verified and do have

Option      "AllowEmptyInitialConfiguration" "True"

set in the “Device” section of /etc/X11/xorg.conf

How do you guys typically set-up a remote desktop capability?

Thanks in advance

Galto

I have not set this up, but from what I’ve seen it is typical that you want a virtual X11 server (it renders to RAM instead of to a real monitor). The dongle which emulates a monitor would sort of be a variation on that theme, but I’m guessing it responded with EDID configuration which the Jetson didn’t like. Sorry, I don’t know what the particular virtual X server software is that you’d need…just that it’d need the same ABI version as the real X server it currently runs. That or you’d need to find out what EDID says about available modes via the dongle.

Packages “read-edid” and “edid-decode” could be useful. When the dongle is attached, find the output of:

get-edid | parse-edid
get-edid | edid-decode

You might also post the content of this file with the dongle attached:

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

Thanks for your response linuxdev

I gave your suggestions a go: I inserted the HDMI dongle and SSH-ed into the JTX1 and the (console) outputs as requested are listed below, but it appears that get-edid isn’t telling much.

$ sudo get-edid | parse-edid:

This is read-edid version 3.0.1. Prepare for some fun.
Attempting to use i2c interface
No EDID on bus 0
No EDID on bus 1
No EDID on bus 3
No EDID on bus 4
No EDID on bus 5
No EDID on bus 6
1 potential busses found: 2
Bus 2 doesn't really have an EDID...
Couldn't find an accessible EDID on this computer.
I'm sorry nothing was successful. Maybe try some other arguments
if you played with them, or send an email to Matthew Kern <pyrophobicman@gmail.com>.
Partial Read... Try again

$ sudo get-edid | edid-decode:

This is read-edid version 3.0.1. Prepare for some fun.
Attempting to use i2c interface
No EDID on bus 0
No EDID on bus 1
No EDID on bus 3
No EDID on bus 4
No EDID on bus 5
No EDID on bus 6
1 potential busses found: 2
Bus 2 doesn't really have an EDID...
Couldn't find an accessible EDID on this computer.
I'm sorry nothing was successful. Maybe try some other arguments
if you played with them, or send an email to Matthew Kern <pyrophobicman@gmail.com>.
Extracted contents:
header:          00 00 00 00 00 00 00 00
serial number:   00 00 00 00 00 00 00 00 00 00
version:         00 00
basic params:    00 00 00 00 00
chroma info:     00 00 00 00 00 00 00 00 00 00
established:     00 00 00
standard:        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
descriptor 1:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
descriptor 2:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
descriptor 3:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
descriptor 4:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
extensions:      00
checksum:        00

No header found
Manufacturer: @@@ Model 0 Serial Number 0
EDID version: 0.0
Analog display, Input voltage level: 0.7/0.3 V
Sync: 
Image size is variable
Gamma: 1.00
Monochrome or grayscale display
Established timings supported:
Standard timings supported:
non-conformant standard timing (0 horiz)
non-conformant standard timing (0 horiz)
non-conformant standard timing (0 horiz)
non-conformant standard timing (0 horiz)
non-conformant standard timing (0 horiz)
non-conformant standard timing (0 horiz)
non-conformant standard timing (0 horiz)
non-conformant standard timing (0 horiz)
Manufacturer-specified data, tag 0
Manufacturer-specified data, tag 0
Manufacturer-specified data, tag 0
Manufacturer-specified data, tag 0
Checksum: 0x0
EDID block does not conform at all!
	Bad year of manufacture
	Manufacturer name field contains garbage

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

00 ff ff ff ff ff ff 00 0d 82 00 00 00 00 00 00
 28 17 01 03 80 33 1d 78 ea e2 95 a2 55 4f 9f 26
 11 50 54 a5 4b 00 71 4f 81 80 d1 c0 01 01 01 01
 01 01 01 01 01 01 02 3a 80 18 71 38 2d 40 58 2c
 45 00 fd 1e 11 00 00 1e 00 00 00 fc 00 20 66 69
 74 20 48 65 61 64 6c 65 73 73 00 00 00 fd 00 38
 4c 1e 53 11 00 0a 20 20 20 20 20 20 00 00 00 fc
 20 20 20 20 20 20 20 20 20 20 20 20 20 20 01 50
 02 03 11 f0 4c 90 05 04 03 02 07 16 01 14 1f 12
 13 02 3a 80 18 71 38 2d 40 58 2c 45 00 fd 1e 11
 00 00 1e 01 1d 80 18 71 1c 16 20 58 2c 25 00 fd
 1e 11 00 00 9e 01 1d 00 72 51 d0 1e 20 6e 28 55
 00 fd 1e 11 00 00 1e 8c 0a d0 8a 20 e0 2d 10 10
 3e 96 00 fd 1e 11 00 00 18 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 39

I get the same results with my monitor plugged in btw (except for /sys/kernel/debug/tegradc.1/edid)

Thanks

Galto

It’s interesting that the Jetson software doesn’t like the EDID at all. To see what something else says about the dongle, go here, and paste in the edid file information (it’s just hexadecimal you can mouse copy and paste):
http://www.edidreader.com

I kind of wish I knew why the Jetson can’t read it. If you go to that edidreader.com tool, and go to the Timing Bitmap, it has several older compatible modes, but nothing new (if you saw 1920x1080 it’d almost certainly work, but this doesn’t show up). It may be possible to hard configure the display (the dongle with no real display counts as a display) for one of those modes and have it work with the remote desktop software. I’d be more tempted though to add a virtual server if possble, then you could use any valid mode, e.g., 1920x1080. It’s interesting that 1920x1080 shows up under Descriptor 1, but isn’t considered in Timing Bitmap. On a real monitor I could see how a mode might not be listed if it exceeded the monitor’s safe range, but it seems odd for a dongle which doesn’t really render.

Maybe someone could recommend a virtual X server which might work. Xvfb is available (package xvfb), but I don’t know how well it works. Here’s an article on using Xvfb, but part of it is out of date…current Ubuntu distributions don’t use “/etc/inittab”. Probably you’d instead edit “/etc/X11/xinit/xserverrc” (as long as you have ssh or serial console access it wouldn’t matter if the GUI failed anyway, you could just edit that file back to original).

Thanks for the insights Linuxdev, and for your suggestion on the virtual X-server.

I actually bought the cheapest version of the dongle.

Here is the line-up: fit-Headless

Perhaps if I upgrade to the fit-headless 4K or GS (HDMI 2.0 compliant) it might work?

I’d say odds go up that a 4k dongle would work, I’m just wondering why the cheaper dongle doesn’t list 1920x1080 in timings, yet shows it elsewhere (a real monitor might have a reason, dongles don’t)…it may be an oversight in their firmware. Odds go up by having more modern modes supported, but you’ll have to actually try it to find out (the cheaper dongle probably should have worked too, but you’d have to look at the actual i2c exchange to figure out if there really is some bug in the dongle’s EDID).

I use TurboVNC on my Jetson TK1 and Nvidia Shield Android TV with l4t R24.2.
I don’t have Jetson TX1 and I cannot test it on Jetson TX1.
It might work on Jetson TX1, because L4T for Jetson TX1 is used on my Shield TV.
TurboVNC on my Nvidia Shield works while the HDMI port is empty.

For more details:
[url][HowTo]Install VirtualGL and TurboVNC to Jetson TK1 - Jetson TK1 - NVIDIA Developer Forums

Thanks for your suggestion demotomohiro,

I have ordered the higher-end dongle (fit-headless GS), and I’ll find out soon if that works out for me.

If not, then I’ll might have to go the TurboVNC route like you documented so well in your post.

Galto

I received the new high-end dongle today (fit-headless GS), but it didn’t make a difference.

So it looks like I’ll have to roll up my sleeves after all if I want to have a remote desktop.

It’s not very high on my priority list at the moment, but when I get to it I will try demotomohiro’s instructions on the JTX1.

thanks

Galto

I would be interested in seeing the output from the previous test, but using the newer dongle (my curiosity in why some modes don’t show up is growing):

sudo -s
get-edid | parse-edid
get-edid | edid-decode
cat /sys/kernel/debug/tegradc.1/edid
exit

Sure , here we go:

get-edid | parse-edid

This is read-edid version 3.0.1. Prepare for some fun.
Attempting to use i2c interface
No EDID on bus 0
No EDID on bus 1
No EDID on bus 3
No EDID on bus 4
No EDID on bus 5
No EDID on bus 6
1 potential busses found: 2
Bus 2 doesn't really have an EDID...
Couldn't find an accessible EDID on this computer.
I'm sorry nothing was successful. Maybe try some other arguments
if you played with them, or send an email to Matthew Kern <pyrophobicman@gmail.com>.
Partial Read... Try again

get-edid | edid-decode

This is read-edid version 3.0.1. Prepare for some fun.
Attempting to use i2c interface
No EDID on bus 0
No EDID on bus 1
No EDID on bus 3
No EDID on bus 4
No EDID on bus 5
No EDID on bus 6
1 potential busses found: 2
Bus 2 doesn't really have an EDID...
Couldn't find an accessible EDID on this computer.
I'm sorry nothing was successful. Maybe try some other arguments
if you played with them, or send an email to Matthew Kern <pyrophobicman@gmail.com>.
Extracted contents:
header:          00 00 00 00 00 00 00 00
serial number:   00 00 00 00 00 00 00 00 00 00
version:         00 00
basic params:    00 00 00 00 00
chroma info:     00 00 00 00 00 00 00 00 00 00
established:     00 00 00
standard:        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
descriptor 1:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
descriptor 2:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
descriptor 3:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
descriptor 4:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
extensions:      00
checksum:        00

No header found
Manufacturer: @@@ Model 0 Serial Number 0
EDID version: 0.0
Analog display, Input voltage level: 0.7/0.3 V
Sync: 
Image size is variable
Gamma: 1.00
Monochrome or grayscale display
Established timings supported:
Standard timings supported:
non-conformant standard timing (0 horiz)
non-conformant standard timing (0 horiz)
non-conformant standard timing (0 horiz)
non-conformant standard timing (0 horiz)
non-conformant standard timing (0 horiz)
non-conformant standard timing (0 horiz)
non-conformant standard timing (0 horiz)
non-conformant standard timing (0 horiz)
Manufacturer-specified data, tag 0
Manufacturer-specified data, tag 0
Manufacturer-specified data, tag 0
Manufacturer-specified data, tag 0
Checksum: 0x0
EDID block does not conform at all!
	Bad year of manufacture
	Manufacturer name field contains garbage

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

00 ff ff ff ff ff ff 00 0d 82 34 12 db 02 96 49
 ff 1a 01 04 a2 00 01 78 fb 6e a5 a3 54 4f 9f 26
 11 50 54 a5 6b 80 d1 fc d1 3c d1 cf 8b c0 8c c0
 a9 c0 a9 40 b3 00 86 6f 80 a0 70 38 40 40 30 20
 35 00 40 44 21 00 00 1e 00 00 00 fc 00 66 69 74
 48 65 61 64 6c 65 73 73 47 53 00 00 00 fd 00 18
 4b 1e 87 3c 00 00 00 00 00 00 00 00 ed 7b 80 a0
 70 b0 47 40 30 20 36 00 40 68 21 00 00 18 01 69
 02 03 45 01 47 66 64 61 5f 5c 3f 10 3e 7f 7f 28
 0f 7f 07 17 7f ff 3f 7f ff 47 7f ff 5f 7f 82 7f
 7f 00 7f 7f 51 7f 7f 30 77 7f 03 83 7f 00 00 6d
 03 0c 00 20 00 80 3c 20 10 60 01 02 03 67 d8 5d
 c4 01 78 80 03 1e 66 70 a0 80 b0 34 40 30 20 35
 00 88 68 21 00 00 18 fe b9 70 50 d0 a0 3f 50 08
 20 18 00 08 b0 41 00 00 18 71 c2 00 a0 a0 a0 55
 50 30 20 35 00 00 b0 31 00 00 18 00 00 00 00 26

It’s interesting to note now how the second dongle (high-end) is identical to my first dongle (low-end) - I really wouldn’t know how to distinguish one from the other physically…