Jan 132012

BeagleBone A3 inside a BuiltToSpec Enclosure

I received a Beaglebone as a birthday gift.  It is a powerful little board that contains Texas Instrument’s Sitara ARM Cortex-A8 microprocessor. According to the BeagleBone website, “The BeagleBone is the low-cost, high-expansion hardware-hacker focused BeagleBoard.”  You can find out more about it here: http://beagleboard.org/bone.  The following are some notes I took while getting acquainted with the BeagleBone.
(Please note that you are probably better off using the official instructions at the BeagleBone Getting Started page. The steps below worked on my hardware and operating system (Ubuntu 10.04). Also, I installed the BeagleBoard Linux SDK before messing around with the BeagleBone. The FTDI driver just worked, I did not have to mess with it–so your mileage may vary if you follow the instructions below verbatim. Finally, be very careful when using dd not to overwrite the wrong drive!)

Making a backup of the provided microSD card

1. Make a directory for our BeagleBone images.

o@ubuntu:$ mkdir beaglebone_backup
o@ubuntu:$ cd beaglebone_backup

2. Connect the sd card to the host computer and find it’s mount point.  I like to use dmesg.

o@ubuntu:$ dmesg | tail
[291266.566727] sd 68:0:0:0: Attached scsi generic sg3 type 0
[291266.575483] sd 68:0:0:0: [sdc] 7626752 512-byte logical blocks: (3.90 GB/3.63 GiB)
[291266.577006] sd 68:0:0:0: [sdc] Write Protect is off
[291266.577017] sd 68:0:0:0: [sdc] Mode Sense: 0b 00 00 08
[291266.577024] sd 68:0:0:0: [sdc] Assuming drive cache: write through
[291266.579100] sd 68:0:0:0: [sdc] Assuming drive cache: write through
[291266.579114] sdc: sdc1 sdc2
[291266.584546] sd 68:0:0:0: [sdc] Assuming drive cache: write through
[291266.584559] sd 68:0:0:0: [sdc] Attached SCSI removable disk

3. In my system the sd card mounted on /dev/sdc. One partition is mounted on /dev/sdc1 and the other on /dev/sdc2. We unmount these two partitions so our backup image is not accidentally corrupted.

o@ubuntu:$ umount /dev/sdc1 /dev/sdc2

4. Next we proceed to copy the image from the sd card to a compressed file named beaglebone_default.img.gz. (I use a block size of 8M because that is what worked best for me.)

o@ubuntu:$ sudo dd if=/dev/sdc bs=8M | gzip -c > beaglebone_default.img.gz
465+1 records in
465+1 records out
3904897024 bytes (3.9 GB) copied, 284.111 s, 13.7 MB/s

( ** Note: Here is how to restore the backup image to an sd card–takes a while!**)

o@ubuntu:$ zcat beaglebone_default.img.gz | sudo dd of=/dev/sdc bs=8M
0+113329 records in
0+113329 records out
3904897024 bytes (3.9 GB) copied, 723.991 s, 5.4 MB/s


Updating to the newest demo image

1. Download the newest image from http://www.angstrom-distribution.org/demo/beaglebone/

o@ubuntu:$ wget http://www.angstrom-distribution.org/demo/beaglebone/Cloud9-IDE-eglibc-ipk-v2012.01-core-beaglebone-2012.01.11.img.gz

2. Copy image to sd card–it takes a while.

o@ubuntu:$ zcat Cloud9-IDE-eglibc-ipk-v2011.12-core-beaglebone-2011.12.26.img.gz | sudo dd of=/dev/sdc bs=8M
0+113329 records in
0+113329 records out
3904897024 bytes (3.9 GB) copied, 723.991 s, 5.4 MB/s



Booting the BeagleBone, getting a serial console, and more

1. Connect the BeagleBone to a router using Ethernet.
2. Connect the BeagleBone using the provided cable to a host machine. Give it a minute to boot.
3. Find out what /dev/ttyUSB* the BeagleBone is connected to.

o@ubuntu:$ dmesg | grep FTDI | grep "now attached to" | tail -n 1 | awk '{ print $NF }'

4. Ok, now I know it is connected to /dev/ttyUSB1, so use screen or minicom to establish a serial console. With screen you will get a blank screen with a blinking cursor, from there just press enter to see the Angstrom login. (login in as root with no password)

o@ubuntu:$ screen /dev/ttyUSB1 115200

The Angstrom Distribution beaglebone ttyO0

Angstrom v2012.01-core - Kernel 3.1.0+

beaglebone login: root
Last login: Wed Jan 11 08:49:23 GMT 2012 from ::ffff: on pts/0

5. Once we have a serial console, we can find our IP address and make note of it so that we can connect via SSH later on.

root@beaglebone:$ ifconfig eth0 | grep inet
inet addr: Bcast: Mask:
inet6 addr: fe80::425f:c2ff:fe76:770a/64 Scope:Link

6. We can also ping Google to see if our internet connection is good.

root@beaglebone:$ ping -c 5 google.com
inet addr: Bcast: Mask:
inet6 addr: fe80::425f:c2ff:fe76:770a/64 Scope:Link
PING google.com ( 56(84) bytes of data.
64 bytes from dfw06s16-in-f18.1e100.net ( icmp_req=1 ttl=54 time=49.9 ms
64 bytes from dfw06s16-in-f18.1e100.net ( icmp_req=2 ttl=54 time=55.8 ms
64 bytes from dfw06s16-in-f18.1e100.net ( icmp_req=3 ttl=54 time=34.6 ms
64 bytes from dfw06s16-in-f18.1e100.net ( icmp_req=4 ttl=54 time=36.4 ms
64 bytes from dfw06s16-in-f18.1e100.net ( icmp_req=5 ttl=54 time=25.8 ms

--- google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 25.873/40.556/55.828/10.862 ms

7. How about we add a root password and a normal user account.

root@beaglebone:$ passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

root@beaglebone:$ adduser octavio
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

8. You can upgrade the Angstrom distro using opkg but this might not be a very good idea.
Please read the Angstrom manual and note this warning: IT IS VITAL THAT YOU MAKE A BACKUP BEFORE UPGRADING! Rendering your device unbootable/unstable and loss of data is entirely your risk.

root@beaglebone:$ opkg update

root@beaglebone:$ opkg upgrade 2>&1 | tee /var/log/opkgupgrade.log

9. Python is installed in the default demo image, but let’s see if pyserial is available to install from opkg. If it is let’s install it.

root@beaglebone:$ opkg list | grep pyserial
python-pyserial - 2.4-ml3 - python-pyserial version 2.4-ml3
python-pyserial-dbg - 2.4-ml3 - python-pyserial version 2.4-ml3 - Debugging files
python-pyserial-dev - 2.4-ml3 - python-pyserial version 2.4-ml3 - Development files

root@beaglebone:$ opkg install python-pyserial
Installing python-pyserial (2.4-ml3) to root...
Downloading http://feeds.angstrom-distribution.org/feeds/core/ipk/eglibc/armv7a/python/python-pyserial_2.4-ml3_armv7a.ipk.
Configuring python-pyserial.


Getting an ssh shell

1. Find the IP address of the BeagleBone by connecting to it using the serial console or by finding it in the client list of your router. Open a terminal and connect to the BeagleBone as root using ssh:

o@ubuntu:$ ssh root@
The authenticity of host ' (' can't be established.
RSA key fingerprint is ea:36:22:a6:66:dd:e6:4c:2b:52:74:d1:d5:af:4a:57.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '' (RSA) to the list of known hosts.
root@'s password:



Size comparison: BeagleBone A3, Arduino Duemilanove, Chumby Hacker Board Beta

  24 Responses to “First steps with the Beaglebone”

  1. Thank you, very useful.

  2. Helpful and very nice enclosure!

  3. Its very Helpful…..thank you so much…….

  4. Hi, nice information
    Also like that box where did u get one?


  5. Hi, I just got it working! I am trying to make a LED working in P8_3 ! but no success at all so far! and what is funny is when i wire the LED in P8_3 and GND ! when I run the programa it shut off the board! am I wiring up something wrong? do I need a resistor?

    • I have not yet played with the GPIO’s because my BeagleBone’s PHY was faulty and I had to return it. I should be getting a replacement any day now. If I were you I would checkout the BeagleBone System Reference and see how they hooked up the user leds on the board.

  6. I did ‘upgrade’ the linux installation on the SD card that was shipped with the beaglebone with these commands:
    opkg update
    opkg upgrade

    That ‘broke’ the ethernet connection: The board itself and any router connected to the board via a cable would not recognize the connection.

    Both, the other shipped SD card (the one labeled TI SDK) and a newly created card using the latest disk image are working fine, which suggests that the update / upgrade installed some buggy ethernet related package?



    • There is always that risk when upgrading to the newest Angstrom. () I was bitten a couple times trying to upgrade my Chumby Hacker board but the two times I’ve upgraded the BeagleBone everything went smooth. Thanks for the update, I’ll make a note above warning readers to proceed with caution.

  7. Is it possible to get network connectivity simply via the host and only the USB serial emulator? Also I am having some difficulty using the #screen for whatever reason. Minicom seems to really work. Screen usually leaves me at a blank screen..even after hitting every button. Outstanding work on this guide. Precisely what I was looking for, your research and this guide have been essential. Thanks!


    P.S. Have any guides for booting the image..or at least seeing a gui from BB?

  8. [...] First steps with the beaglebone Configuring Anström Linux ← New PCBs for our RGBA driver just arrived [...]

  9. Hello,

    Today I bought a beaglebone and have just started playing with it. However I could not even update it. At first I was getting errors like:

    opkg_download: Failed to download

    Then, I checked for the net and found that someone has solved his problem by manually changing the DNS server by editing the /etc/resolv.conf file. Then I changed my DNS server to and But none of them worked. I am still getting tons of these errors:

    Downloading http://feeds.angstrom-distribution.org/feeds/core/ipk/eglibc/armv7a/base/Packages.gz. wget: bad address ‘feeds.angstrom-distribution.org’

    I do not know if I have any problem with my ethernet connection:

    root@beaglebone:~# ifconfig eth0 Link encap:Ethernet HWaddr D4:94:A1:91:36:5F inet addr: Bcast: Mask: inet6 addr: fe80::d694:a1ff:fe91:365f/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1372 errors:0 dropped:0 overruns:0 frame:0 TX packets:1314 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:178008 (173.8 KiB) TX bytes:1393690 (1.3 MiB) Interrupt:40

    lo Link encap:Local Loopback inet addr: Mask: inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:564 errors:0 dropped:0 overruns:0 frame:0 TX packets:564 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:47904 (46.7 KiB) TX bytes:47904 (46.7 KiB)

    I tried to ping google:

    root@beaglebone:~# ping -c 5 google.com ping: unknown host google.com

    Which steps should I follow to update my system? I think my problem is related to my ethernet connection. But I do not know how to check it. I am sorry if my question is quite a newbie question. But I really checked for net and tried most of the solutions that worked for others. However I could not solve my problem.

    Thank you for your help,

  10. Great guide! This is the first guide that told me to connect to the router, which was lost on me previously. Also the first guide to show how to find the IP address through the serial terminal.

  11. [...] A good review of recommended first steps can be found at the borderhack blog. [...]

  12. For those who are interested, the latest copies of Angstrom are in xz archive formats which requires:

    # xz -dkc Angstrom-Cloud9-IDE-eglibc-ipk-v2011.10-core-beaglebone-r0.img.xz > /dev/sdX

    All I did was change his [zcat Cloud9-IDE-eglibc-ipk-v2011.12-core-beaglebone-2011.12.26.img.gz | sudo dd of=/dev/sdc bs=8M]

    to [xz -dkc Angstrom-Cloud9-IDE-eglibc-ipk-v2011.10-core-beaglebone-r0.img.xz | sudo dd of=/dev/sdc bs=8M] without the brackets, of course, and it worked.

    For more about this visit: http://downloads.angstrom-distribution.org/demo/beaglebone/

    Thanks for these instructions, they are VERY useful for trying to setup via a linux terminal.

  13. I must be doing something right. (Reading this note was step 1).

    I plugged in an ethernet cable to the BB and a router on my LAN. From reading this note, it seemed
    that the BB would ask for an IP address on boot, which it did. Looking in the /var/log/messages file
    of my host system, I found the IP address that my DHCP server had assigned.

    Then, from a terminal session on my host F17 system, I did:


    and ta-ta, I logged into the BB !!

    I then did:

    opkg upgrade

    but nothing happened. Then I read more in your note and did:

    opkg update
    opkg upgrade 2>&1 | tee /var/log/upgrade00.log

    It rolled along for over an hour, printing out diagnostic information as it went.

    Every once in awhile, it would pause for several minutes, but then would resume.

    At the end, it complained about not enough room to write and then quit.

    Looking at the output of the ‘df’ command showed that there was quite a bit of space.

    So, I just repeated the steps:

    opkg update
    opkg upgrade 2>&1 | tee upgrade01.log

    At what looked like a normal end, I did:

    uname -a

    and it outputted a build date of Thu Jun 14 23:26:20 CEST, so I thought to reboot

    Now the output of ‘uname -a’ is:

    Linux beaglebone 3.2.30 #1 Wed Oct 17 09:39:19 CEST 2012 armv7l GNU/Linux

    Looks good – thanks much to everyone.

  14. opkg upgrade is buggy. It broke some /etc config files for me and I’ve heard others have had problems.

    How do we upgrade packages with opkg without uinstalling like ssh for iternet facing security updates?

  15. Your tutorial is do well written.. Bravo!
    I can’t help but ask about something I am banging my head against the wall about. I am failing at installing Android on the Beaglebone but my only reason to try is simply to play a video file via the LCD7 cape. Have you been able to play a video file on your board with Angstrom?


  16. If you prefer Ubuntu, you can download Ubuntu from various sites, or get a pre-installed and configured micro SD Flash with Ubuntu 13.04 for the BeagleBone Black from:


 Leave a Reply



4 − one =

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre user="" computer="" escaped="">