Setup a BeagleBone Green Wireless with HDMI cape

TL, DR

BeagleBone HDMI cape needs a specific OS version to work, and we need to prevent upgrades that would break compatibility. This post provides a guide to setup a BeagleBone Green Wireless with the HDMI cape and prevent breaking updates.

BeagleBone Green Wireless

BeagleBones are open source Single Board Computers (SBC) that can be used by DYI amateurs as well as become part of industrial products and services. One of those boards if the BeagleBone Green Wireless, developed as a joint project by BeagleBoard.org and Seeedstudio. Its main features are:

  • Processor AM335x 1GHz ARM® Cortex-A8
  • 512MB DDR3 RAM
  • 4GB 8-bit eMMC on-board flash storage
  • USB client for power & communications
  • USB host with 4-port hub
  • WiFi 802.11 b/g/n 2.4GHz
  • Bluetooth 4.1 with BLE

The BeagleBoard is a device designed mostly for IoT and robotics applications, and does not have a video output port. However, the lack of a direct screen connection may be limiting, or just annoying during development.

BeagleBone HDMI cape

Fortunately, BeagleBoards have an active environment of add-on boards – called capes. One of them is the HDMI cape by Seeedstudio. This cape connect with different types of BeagleBones, and add a video output stream with a HDMI port you can connect to any screen.

However, it’s not so straightforward to make it work. The latest Debian OS image for BeagleBones (as of December 2021) is the 10.3, with Linux kernel version 4.19. This image will NOT work with the HDMI cape. The screen will remain completely black, with no output.

After some research, I found a note on Seeedstudio forum with a reference to a specific Linux kernel version, 4.4, that is compatible with the HDMI cape. All other versions are not compatible, and thus the HDMI won’t work with earlier or later versions. The correct Debian OS version is then the 8.10 one, which can be downloaded from BeagleBoard website firmware page.

However, we also need to make sure we prevent firmware upgrades – like the ones performed by atp upgrade – to install more updated kernel versions that would break the compatibility with the HDMI cape.

Finally, we need to setup the BeagleBone Green Wireless to connect with our WiFi and prepare to make the most out of it!

Setup guide

Tools

  • BeagleBone Green Wireless
  • BeagleBone HDMI cape
  • microSD card (8Gb+) and USB adapter
  • Laptop/desktop to download and flash Debian OS
  • USB Keyboard
  • HDMI screen and cable
  • MicroUSB cable and 5V power supply
  • Access to WiFi

Procedure

Flash OS on microSD

Go to the BeagleBone official firmware download page and look for Debian 8.10 (direct download link). Flash the image to a microSD card – the easiest way is using Balena Etcher.

Connect the BeagleBone Green Wireless with the HDMI cape. Use the HDMI cable to connect with the screen, and the USB keyboard with one of the 4 USB hosts of our board.

Insert the microSD card in the BeagleBone Green Wireless and connect the power supply via the MicroUSB plug. The board will turn on and in a little bit (first boot can take up to 3 minutes) we will see some output on the screen. We will also see a WiFI Access Point with the name “BeagleBone-xxx” (where xxx is a numeric string unique for each board).

Login and change password

There is a guide right in the header of our screen with the default username and password to login.

  • username: debian
  • password: temppwd

It is wise to change them, as anybody that ever used a BeagleBone knows those account details. Shell command to do so is:

passwd

Flash OS to internal memory

The next thing to do is to flash the Operating System to our BeagleBone internal memory. Current OS versions have “flasher” images, which directly write the OS to the internal memory upon startup. Our old image, however, is only available as as regular image. Therefore, in order to write the OS we need to use one of the flasher scripts included in the image. Shell commands are:

cd /opt/scripts/tools/eMMC/
sudo ./init-eMMC-flasher-v3.sh

The LEDs on the BeagleBoard will blink sequentially as the image is being written to the internal memory. When all lights are stable (OFF in most cases, but reportedly ON in some board) and the process is finished, you can turn off your BeagleBone and remove the microSD card. Make sure you remove the microSD card before booting again!

Freeze Linux Kernel updates

Yo can then go ahead and complete the setup to make sure future updates do not break the compatibility with the HDMI cape. You can see the current Linux kernel version with this command:

uname -r

Then you can use the apt-mark hold command to prevent future updates. There are a few packages and meta-packages that need to be put on hold, in order to make sure we stick with our 4.4 kernel version for the time being. Commands to achieve this are:

sudo apt-mark hold $(uname -r)
sudo apt-mark hold linux-image-$(uname -r)
sudo apt-mark hold linux-generic
sudo apt-mark hold linux-image-generic
sudo apt-mark hold linux-headers-generic
sudo apt-mark hold linux-image-extra-$(uname -r)
sudo apt-mark hold linux-headers-$(uname -r)

Some command may give an error in case the relative package is not found, but that’s OK. The important thing is that both the Linux image and headers are pinned to the 4.4 kernel version.

Note that this operation may prevent you from getting any update, including security ones. Do this only to keep the compatibility with specific hardware (like the HDMI cape in this case), and make the possible to keep a level of security adequate for your application type.

Continue BeagleBone setup

You can then continue the setup, connecting the BeagleBone to your WiFi network, so you can also access it via SSH. You can use connmanctl for this operation. Open the connmanctl console with the following command:

connmanctl

Then go ahead to enable the WiFi

connmanctl> enable wifi

Disable the wifi acces point

connmanctl> tether wifi off

Scan for surrounding WiFi networks

connmanctl> scan wifi

Show available networks

connmanctl> services

This will show a list of available WiFi networks.

Turn on the connection agent

connmanctl> agent on

Connect to the WiFi network you prefer. You can use the tab for autocompleting the name of the network…it’s handy, as those are very long strings.

connmanctl> connect wifi_xxxxxxxxxxxxxxx_managed_psk

It will prompt you to insert the password for the network. You can then check that the auto-connect is correctly set typing again

connmanctl> services

You should see *AO or *AR next to the network you just connected to. Finally, you can exit the connmanctl console typing

connmanctl> quit

You now can test your connection by pinging any website, for instance

ping google.com

You can also use the following commands to turn off the WiFi access point, Bluetooth, and the embedded web server (in case those are not needed), so you can save resources for your own applications:

# Stop and disable WiFi access point
sudo systemctl stop bb-wl18xx-wlan0
sudo systemctl disable bb-wl18xx-wlan0
# Stop and disable Bluetooth
sudo systemctl stop bb-wl18xx-bluetooth
sudo systemctl disable bb-wl18xx-bluetooth
sudo systemctl stop bluetooth
sudo systemctl disable bluetooth
# Stop and disable embedded web server
sudo systemctl stop bonescript-autorun
sudo systemctl disable bonescript-autorun
sudo systemctl stop apache2
sudo systemctl disable apache2

Related links

  • BeagleBoard website link
  • BeagleBone Green Wireless link
  • BeagleBone HDMI cape link
  • Seeedstudio forum with indications about Debian OS compatible with BeagleBone HDMI cape link
  • Debian OS 8.10 compatible with HDMI cape page link and direct link

Do you like our content? Check more of our posts in our blog!