"... and no one shall work for money, and no one shall work for fame; But each for the joy of the working, and each, in his separate star, shall draw the thing as he sees it, for the god of things as they are"

-Kipling

 

Disabling Video On The Beaglebone Black And Running Headless

Summary

By default the Beaglebone Black is configured to provide a GUI interface to an HDMI monitor. Supporting this GUI interface requires a considerable amount of effort on the part of the Beaglebone Black CPU and operating system. It also ties up quite a few I/O lines which could otherwise be used to operate internal devices such as SPI, I2C, A2D and serial ports. Running the Beaglebone Black without video can save a considerable amount of memory and increase the responsiveness of the device and, of course, free up those I/O lines for other purposes.

So, how does one connect to the Beaglebone Black if there is no GUI interface. Well, you can use the USB method (enabled by default) or you can connect via SSH or you can use some sort of Remote Desktop mechanism. The USB method will always work (unless you disable it) but the SSH and Remote Desktop methods require you to know the IP address of the Beaglebone Black. This presents something of a conundrum - how can you know the IP address of a device you have never connected to?

The answer is simple, you don't run the Beaglebone Black headless until you are sure you have set up networking, can connect to it, and have it set to use a fixed IP address that will not change on you. Once you get everything working, you can disable the HDMI video and you will have a true headless environment.

The USB and Remote Desktop methods will not be discussed here. This page will solely concern itself with running the Beaglebone Black in a truely headless manner. In other words the GUI will not be present (even remotely) and the HDMI I/O lines and associated resources will be freed up for use.

Get the Non-GUI Version of the Beaglebone Black Debian Operating System

The BeagleBoard.org download page offers two versions of the Debian operating system for the Beaglebone Black. One will be "without Graphical Desktop" and one will be "with Graphical Desktop". Unless you are going to be using a Remote Desktop to interact with the Beaglebone Black, there is little point in using an operating system that starts the LXQT GUI.

Below is a useful sequence of events.

  1. Download the appropriate version of the operating system from the BeagleBoard.org download page.
  2. Install the operating system on a microSD card. You may find the installation instructions on this page to be helpful.
  3. Connect up an HDMI monitor and keyboard to the Beaglebone Black.
  4. Connect the Beaglebone Black to your network with an Ethernet cable.
  5. Power up the Beaglebone Black.
  6. Login to the Beaglebone Black. Even if you downloaded the "without Graphical Desktop" version of the operating system, you will still get a login prompt on the monitor. It will just be a purely text based command line version.
  7. Use the instructions on this page to find out what your IP address is and set it as a static address.
  8. Reboot the Beaglebone Black and try a test connection via SSH.
Once you can successfully connect to the Beaglebone Black via SSH from a remote machine you are ready to proceed to the next step (if you wish) which disables the HDMI subsystem entirely. Since your Beaglebone Black is probabably connected to the Internet at this point you might well take the opportunity to update all of your packages. Just issue the command ...
sudo apt-get update
... and maybe ...
sudo apt-get upgrade
... if you wish to upgrade the existing packages as well.

Adjust the uEnv.txt file to Disable HDMI Video

The process of disabling the HDMI video is quite simple on later versions of the Beaglebone Black operating systems. All you need to do is edit the uEnv.txt file (use the command nano /boot/uEnv.txt as root). In this file you will see a line which states ...

#disable_uboot_overlay_video=1
... just uncomment this line ...
disable_uboot_overlay_video=1
... and reboot the Beaglebone Black.

Once the Beaglebone Black has rebooted, you will see that you no longer get a login prompt on the HDMI monitor. The I/O lines and other resources used by HDMI are now available for other uses. You should still be able to login via SSH with no problems.

Note: you may also wish to disable the audio subsystem by uncommenting the line in the /boot/uEnv.txt file shown below

#disable_uboot_overlay_audio=1

License

The contents of this web page are provided "as is" without any warranty of any kind and without any claim to accuracy. Please be aware that the information provided may be out-of-date, incomplete, erroneous or simply unsuitable for your purposes. Any use you make of the information is entirely at your discretion and any consequences of that use are entirely your responsibility. All source code is provided under the terms of the MIT License.