Andrew B. Wright, Ph. D., SM ’88


Next Post: Remoteproc “Hello, world!”

This is a blog about my experiences getting a Beaglebone Black up and running.  I am retrofitting my Control and Sensor System (CASSY) robotics project from the Vex PIC Microcontroller to the Beaglebone Black.

The retrofit of the CASSY platform using the Beaglebone Black (rev. C) is an extension of the work that Traig Born did on the J5 robotics platform.  It is an embedded linux platform, so I’m more comfortable with maneuvering on it than on the Cortex (the new Vex platform).

WARNING:  Many ISPs are cracking down on man-in-the-middle attacks, so you may find that you cannot bridge a wireless connection to a wireless connection (802.1X).  I used to use a wireless connection on the beaglebone to connect to a wireless connection on my mac mini (or later ipad). This did not allow access from Beaglebone to internet. Consequently, I connected the Beaglebone wirelessly to my home network. I have not yet set up multiple domains, but that could be a way to isolate your swarm of Beaglebone’s from your streaming media.

When the beaglebone is deployed, it needs to be “headless” which means no monitor or keyboard. You need to be able to log in through a wireless connection to manage the beaglebone. Therefore, making a wired connection will require some form of keyboard and monitor connection directly to the beaglebone. This can be accomplished by connecting the beaglebone through wired ethernet to a computer that can bridge the connection. Or, it may mean that the beaglebone case must contain access to connections for keyboard and monitor.

A new version of the Beaglebone Black has been introduced after I started this project, the Beaglebone Black Wireless.  This blog does not currently address this platform; however, I have purchased the hardware and will start to incorporate that platform into this tutorial.  In particular, the section on wired connectivity is not relevant, since the Beaglebone Black Wireless does not have a wired connector.

In this blog, there are a total of four processors/systems in play:

  • the host computer (in my case a mac mini running macOS (Big Sur))
  • the beaglebone arm processor running debian linux
  • programmable real time unit 0 (pru0) on the beablebone
  • programmable real time unit 1 (pru1) on the beablebone

Hardware to purchase to get started:

microSD card and adapter (example: sandisk extreme plus, 64 Gb)various
wifi-dongle (Realtek RTL8188CUS)
host computervarious
cat5 cross-over cable (optional)
beaglebone power
usb keyboard/mouse
beaglebone black rev.
usb ethernet
wireless access pointvarious
  1. Update the Beaglebone to the latest debian!  The Beaglebones may sit in your supplier’s inventory for a while. Many devices (like pwms and wifi) don’t work the same as they do in the latest version. You can test version using uname -r (after you’re logged in, see below).
  2. Get the beaglebone onto a network!
    1. wireless network (see network topography figure)
    1. wired network using ethernet port
    2. wired network using usb port (not covered in this work)
    3. wired network using serial port (not covered in this work)
  3. Set up root access and remote root access!
  4. Wifi can be droppy … fix it! Get wifi to restart when it drops using cron.
  5. Update the system! Once you have internet connectivity, update the system.
  6. Get back to basics and free some disk space! (NOTE: the latest OS for the Beaglebone does not include X11, so this step is not necessary).
  7. Test programming on the arm
  8. Access an LED from the arm

Code Archive

I am setting up a GitHub repository to serve as the code archive.

  • hello, world (remoteproc version)
  • toggle
  • time
  • talk
  • gpio
  • analog input
  • pwm
  • i2c
  • spi

Obsolete Content

I have removed the obsolete content which is over a couple of years old. As I edit and discover there may be useful information, I’ll drop content from the blog above to this section.