Jetson TK1 - running a startup application without hdmi cable plugged in

Hi,

I have a startup application that runs successfully on the Jetson TK1. This application does not require a screen to run, so I disconnected the HDMI cable. But when I remove the HDMI cable from the Jetson, the application is not able to run (I checked by SSHing into it). I assumed that during boot up the HDMI is turned off for power saving, which may affect the startup application. Any suggestions on how to run a startup application program without HDMI plugged in would be appreciated.

Thanks,
CarrSys

Does this application use the DISPLAY environment variable? If not, you could run it via /etc/rc.local. I guess a big question is that when it fails, what is the message?

Is your “startup application” something that the desktop environment starts automatically? If you don’t have HDMI connected, the desktop environment may not start at all and thus those startup applications are not started.

You could configure X.Org to start anyway but that’s just waste of resources. As linuxdev mentioned, the easiest way is to run it from the /etc/rc.local (you may use su to run it as a specific user).

Thanks for the feedback. I tried running the application via /etc/rc.local without much success. I need to run an executable, which was produced from a .cpp file. Do I simply just enter the command to run the executable in /etc/rc.local the same way I would in the terminal (Ex: ./myProgram --arg1 --arg2)? Also does the executable need to be located in a specific folder, or can I just specify the path?

Thanks,
CarrSys

You’d name the full path. For example, if it were named “hello” and in /usr/local/bin, “/usr/local/bin/hello”. If you need it to run as a particular user remember sudo might be required. It would be highly desirable to see why the app fails when run manually without HDMI; using ssh or serial port would allow seeing messages as the app tries to load.

As a side test, you can use “ldd appname” on your application and see what it links to. The linkage may show as something which is part of X, in which case this would fail because X doesn’t start.

Thanks linuxdev. I modified the /etc/rc.local file, and it seems to run okay (tested using the command: sudo /etc/init.d/rc.local start). However, the application still does not run on boot up (HDMI is plugged in). Are there certain permissions preventing /etc/rc.local from running on startup.

Not likely that rc.local doesn’t run. More likely sudo wants a password or something else interactive. Everyone can write to /tmp, so you could test via adding this to rc.local:

touch /tmp/testme1
...whatever the startup line is for your app...
touch /tmp/testme2

Then look after startup to see if /tmp/testme1 and 2 exist, and see who owns them. You’ll know if rc.local was run, and if it did, whether or not it tried to exec your program. Not much has been said about the actual application though, so it is hard to give more help.

Solved the problem! Simple mistake: the path of one of my arguments was incorrect. Thanks for the help linuxdev!