Beaglebone Black: Ubuntu 14.04 + ROS (Indigo) install

I have started to update my old projects with Beaglebone Black and ROS Indigo version.


Before ROS installation the best option is to install the Ubuntu 14.04(LTS) arm version. It is recommended because package install will be available for ROS and there’s no need to build the them.

Ubuntu Arm 14.04 Install

I had chosen to install it on an SD card (16GB class 10) since then there will be more than enough space for everything I need. The other option could be to use eMMC on-board flash storage, but that has only 4GB space.

1. Download the image to your computer. Update: the image no longer available here is another image
2. On Windows unpack the above downloaded file and use the Win32DiskImager to write the image on the SD card.
3. Put the SD card to the Beaglebone Black, and press and hold the switch 2
bbbsw2 while you are booting.
4. Login to the Beaglebone Black via ssh, user/pass ubuntu/temppwd .

Ubuntu post install steps

The partition will be only 2Gb you can check if you ssh to the BBB and give the following command:

df -h

To have the full card size use the following commnads on the BBB:

cd /opt/scripts/tools
git pull
sudo ./
sudo reboot

Changing the kernel version

The bone-ubuntu-14.04.2-console-armhf-2015-07-08-2gb.img image has some issues with the kernel. It only allows 720Mhz for the maximum frequency. It can be seen if the


command has given in the BeagleBone Black terminal. It is easy to fix this, all that needs to be done is to change the kernel version. Once again give this on the BBB:

sudo apt-get update
sudo apt-get install linux-image-4.1.3-ti-r7

I have tried this version and it worked for me. See more info in this link.

Optional post step

The Beaglebone Black has only 512 MB ram, any extra memory could come handy. It can be extended by creating swap file on the SD card. On the BBB:

sudo mkdir -p /var/cache/swap/   
sudo dd if=/dev/zero of=/var/cache/swap/swapfile bs=1M count=1024
sudo chmod 0600 /var/cache/swap/swapfile 
sudo mkswap /var/cache/swap/swapfile 
sudo swapon /var/cache/swap/swapfile 

Change the /etc/fstab file to have these settings even after reboot.

/var/cache/swap/swapfile    none    swap    sw    0   0

More info .

I have followed this guide, here is more useful information about the linux installation on BBB.

ROS Indigo Install

Jade is the latest version of the ROS, but since Indigo has the LTS (Long Term Support) I will stick with this version. SSH to the BBB and give the following command series:

1. Setting the locale


2. Setup sources.list

sudo sh -c 'echo "deb trusty main" > /etc/apt/sources.list.d/ros-latest.list'

3. Setup keys

wget -O - | sudo apt-key add -

4. Installation

sudo apt-get update
sudo apt-get install ros-indigo-ros-base

5. Initialize rosdep

sudo apt-get install python-rosdep
sudo rosdep init
rosdep update

6. Environment setup

echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
source ~/.bashrc

More information about the installation can be found here.

After installation everything is in place. If you are new to the ROS I recommend these tutorials.

Here is a sneak-peek what can be done easily with ROS and BBB:


9 thoughts on “Beaglebone Black: Ubuntu 14.04 + ROS (Indigo) install

  1. rosdep init and rosdep update don’t seem to be able to retrieve files
    rosdep init can be bypased by using wget and manually downloading 20-default.list into the rosdep directory. However, not sure how to manually satisfy rosdep update (getting errno 1 on each file)
    Looking around it seems that the issue lies with SSLv3 requirements, and python 2.7 only seems to support SSL23.
    Any advice, I’ve followed through your steps and thats the only issue I’ve been having

    1. That is one of the issues I encountered on my laptop (no wonder). It’s very annoying and have to say that it even depends on ISP. I ha e the same issues when I’m at home, but the university for instance seems to provide those certificates so from there the same thing on the same laptop works…

      I actually haven’t got around figuring this out

  2. Hey, nice tutorial! I have a question though. After I upgraded the Kernel to 4.x I got issues with the Adafruit BBIO library which I used to contrl the PWM pins on the BBB (and worked fine with the 3.8 Kernel). So my question, are you using and did you manage to get the PWM pins to work with your rover? Cheers!

    1. Thank you!:). Currently I’m not using the PWM on the BBB. I have a Tiva launchpad and controlling it through Rosserial. For that reason I haven’t faced this issue yet. However my plan is to use directly the PWM on BBB, when I’ve managed it I will share the howto with you.

Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s