Flash your BeagleBone Black with Ubuntu 16.04 and don’t worry about changing the OS for next few years. This long-term-support (LTS) Ubuntu version enables you to install LTS versions of several software, for example, robotics middle-ware ROS.
In this post, let’s go over step-by-step instructions to flash BBB on-board eMMC with Ubuntu 16.04. The instructions are easy to follow even for those just getting started with BBB. Please leave any questions or feedback in the comments section.
ATTENTION !! (Update: 02/2019)
eLinux.org no longer hosts Ubuntu 16.04 flasher image. Instructions in this post are still relevant if you have an older image. Let me know in comments if you need one.
Instead, you may be interested in an updated post
How to flash BeagleBone Black Wireless eMMC with Ubuntu 18.04 & set up Wi-Fi
- BeagleBone Black Rev. C board with power adapter
- MicroSD Card (with adaptor) of capacity 2 GB or more
- FTDI USB to Serial Cable
- Ethernet cable connected to the router
- Ubuntu PC (even Windows PC will work)
- Install Etcher on your PC.
On a high level, installing latest Ubuntu 16.04 on to BBB eMMC involves below steps:
- Download a pre-built Ubuntu 16.04 image for BBB. Flash it to a microSD card using PC.
- Use SD card to flash BBB eMMC.
- Boot BBB with the installed pre-built image from eMMC.
- Optionally, download and install the latest kernel.
Prepare microSD Card
Connect microSD card to the PC. Use SD card adapter if your PC has a SD card slot. Or, use USB SD card adapter to plug it into one of the USB slots. Either way works fine.
Download and save the pre-built Ubuntu 16.04 LTS image from elinux.org to your PC. Open Etcher and select the downloaded BBB image file with extension .img.xz.
Select the drive that represents your SD card or USB SD card adapter. In Ubuntu terminal, do ls /dev/ to note the inserted device name. In my case, it was /dev/sdb. On a Windows, a new drive will appear in My Computer.
Be sure to select the correct drive. Choosing a wrong drive may wipe out even your hard drive.
Eject SD card once Etcher finishes flashing. Now, SD card is ready for the next step.
Flash BeagleBone Black eMMC
With BBB powered off, insert micro SD card into its slot. The slot for microSD is beneath the board on the opposite end of Ethernet connector.
Insert USB-Serial cable into the J1 Serial Debug header as show in the picture. Connect other end of the cable to a free USB slot of the PC.
Remove all the capes and use a fully charged power supply or ac adapter. Don’t power it on yet!
Setup the serial program (screen) on the PC. This shows progress messages coming from BBB serial debug header.
Press & hold the boot select button (S2) and apply power. Once powered on, release the button.
Boot messages should appear on the PC serial terminal. There is also a visual sign on BBB indicating flashing procedure in progress. 4 User LEDs (D2-D5) next to the Ethernet jack will show a Cyclone-Sweep pattern (see video).
Once the flashing process is complete, all 4 LEDs will stay ON. If BBB is not powered-down at the end of the procedure, manually remove power. Remove microSD card from its slot.
Boot from eMMC
Plugin Ethernet cable, keep Serial Debug header connected and power on the board.
Voila! BBB boots Ubuntu 16.04 from eMMC.
For most purposes, the booted kernel is good enough (and you may stop reading here). However, for various reasons you might need the latest or a different kind of kernel. In that case, read on!
Install the Latest Kernel (optional)
One simple reason to upgrade the kernel is that you will be on the latest and greatest. You might also want to switch to a real-time kernel to develop latency sensitive applications on BeagleBone Black.
In this section, I’m going to install the latest 4.4.x real-time kernel. The process is same for any other kernel variants.
Let’s SSH to BBB to do next steps. Open a new terminal on your PC and SSH to BBB.
[Find IP address of your board by logging in with default username and password displayed on the serial terminal. Then, type ifconfig.]
First, know current version of your kernel and search for available Linux kernels.
$ uname -r
$ sudo apt-get update
$ sudo apt-cache search linux-image | grep 4.4
Note that I’m filtering out 4.4 kernels using grep command. Choose a kernel version from the list. I chose to install kernel 4.4.91-ti-rt-r140.
$ sudo apt-get install linux-image-4.4.91-ti-rt-r140
$ sudo reboot
Upon reboot, login and check the kernel version again to make sure it switched.
$ uname -r