Skip to content

BeagleBone Bringup

Introduction

If you are beginner then BeagleBone is the best platform for you to learn (embedded) Linux. TI designed first BeagleBoard somewhere is 2008. Currently they have C4 version. They launched upgraded version of beagle board in 2010 -BeagleBoard-xM. But both boards are very expensive and if you are beginner then probably you don’t want to spend that much money. Basic board requirement to learn linux is it should have Ethernet, USB and SD card support. Also when you are learning there is chance that you may brick the board. What if you erase Flash on BeagleBoard, though you can boot from serial port, it is not user friendly.

It won’t be wrong if I call BeagleBone as arduino version of BeagleBoard. They have removed some unrequired interfaces like NAND Flash, DVI, S-Video and reduced its size to 3.4″x2.1″. Just like arduino you can write programs in web browser. Also you can use single USB cable for Power, Serial port and JTAG interface.

Box Packed BeaglBone consist of:

  • BeagleBone Board
  • USB Cable
  • 4GB micro-SD Card x 2 (One contains Drivers, documentation and another contains Linux SDK)
  • MicroSD to SD Card convertor
  • Metal Case for BeagleBone board

In this post we will see how to program/upgrade SD card with Linux image and how to build custom Linux image.

Update Image

If you do not want custom linux image then you can download updated version from

http://www.angstrom-distribution.org/demo/beaglebone/archive/

Angstrom-Cloud9-IDE-eglibc-ipk-v2011.11-core-beaglebone-2011.11.16.img.gz
and use below command to copy image to SDCARD
zcat Angstrom-Cloud9-IDE-eglibc-ipk-v2011.10-core-beaglebone-r0.img.gz > /dev/sdX
If it is xz image then use
xz -dkc Angstrom-Cloud9-IDE-eglibc-ipk-v2011.10-core-beaglebone-r0.img.xz > /dev/sdX

 

After this insert SD card into BeagleBone and connect USB cable. To use serial on fedora you need to install screen and configure baud rate to 115200

yum install screen
modprobe ftdi_sio vendor=0x0403 product=0xa6d0
screen /dev/`dmesg | grep FTDI | grep "now attached to" | tail -n 1 |awk '{ print $NF }'` 115200

After booting you should get below screen

By default login is root. There is no password.

Building Custom Linux Image

Now we will see how to build custom Linux image. First you need to install some basic packages for building image

yum install lzop.i686
sudo yum groupinstall 'Development Tools'
yum update
yum install python m4 make wget curl ftp cvs subversion tar bzip2 gzip unzip python-psyco perl texinfo texi2html diffstat openjade docbook-style-dsssl docbook-style-xsl docbook-dtds docbook-utils sed bison bc glibc-devel glibc-static gcc binutils pcre pcre-devel git quilt groff linuxdoc-tools patch linuxdoc-tools gcc-c++ help2man perl-ExtUtils-MakeMaker tcl-devel gettext ccache chrpath cmake ncurses apr

Clone setup script repository

git clone git://git.angstrom-distribution.org/setup-scripts

Start building image

cd setup-scripts
git checkout origin/oe-core -b oe-core
./oebb.sh config beaglebone
MACHINE=beaglebone ./oebb.sh bitbake systemd-image

Linux source file

setup-scripts/build/tmp-angstrom_2010_x-eglibc/work/beaglebone-angstrom-linux-gnueabi/linux-ti33x-psp*/git/

Actual path in my case

setup-scripts.bkp/build/tmp-angstrom_2010_x-eglibc/work/beaglebone-angstrom-linux-gnueabi/linux-ti33x-psp-3.1-r2f+gitr1d84d8853fa30cf3db2571a5aec572accca4e29d/git

Image location

setup-scripts.bkp/build/tmp-angstrom_2010_x-eglibc/deploy/images/beagleboard

Creating Backup image of SD Card/CD/DVD/USB Drive in Linux

Simple way to backup your device data is to create image (.img or .iso) file. You can even create image file for your folder.

To view device file of SD card use below command

fdisk -l

Lets say if your SD card is /dev/sdb then you can create image using

dd if=/dev/sdb of=./SDC_Backup.img

If you want to restore data then you can use same command but with input and output swapped

dd if=./SDC_Backup.img of=/dev/sdb

This is very simple way to backup your data. You can even create image for HDD data.

But recently I came across more complex situation in which SD card had multiple partitions.

We will see how to create partitions in SD Card and backup your data.

To view current partition run

lt /dev/sdb*
brw-rw—-. 1 root disk 8, 16 Dec 11 12:05 /dev/sdb
brw-rw—-. 1 root disk 8, 17 Dec 11 12:05 /dev/sdb1
brw-rw—-. 1 root disk 8, 18 Dec 11 12:05 /dev/sdb2
[root@ashishd BEAGLE_BONE]# fdisk /dev/sdb

Command (m for help): p

Disk /dev/sdb: 3904 MB, 3904897024 bytes
255 heads, 63 sectors/track, 474 cylinders, total 7626752 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *          63      144584       72261    c  W95 FAT32 (LBA)
/dev/sdb2          144585     7132859     3494137+  83  Linux

Command (m for help):

As shown above there are two partition one is bootable windows FAT32 and other is linux partition. Now you need to take backup of both partition So

dd if=/dev/sdb1 of=./sdb1.img

dd if=/dev/sdb2 of=./sdb2.img

Now if you want to create two partition on other SD card and copy data then you can use fdisk utility

fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x3c410c14.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won’t be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Use p to print existing partition

Command (m for help): p

Disk /dev/sdb: 3965 MB, 3965190144 bytes
122 heads, 62 sectors/track, 1023 cylinders, total 7744512 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3c410c14

Device Boot      Start         End      Blocks   Id  System

Use m for HELP

Command (m for help):
Command action
a   toggle a bootable flag
b   edit bsd disklabel
c   toggle the dos compatibility flag
d   delete a partition
l   list known partition types
m   print this menu
n   add a new partition
o   create a new empty DOS partition table
p   print the partition table
q   quit without saving changes
s   create a new empty Sun disklabel
t   change a partition’s system id
u   change display/entry units
v   verify the partition table
w   write table to disk and exit
x   extra functionality (experts only)

Create NEW partition

Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4, default 1): 1
First sector (2048-7744511, default 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-7744511, default 7744511): 146596

Change Partition system ID to W96 FAT32 and set boot flag=1

Command (m for help): t

Selected partition 1
Hex code (type L to list codes): c
Changed system type of partition 1 to c (W95 FAT32 (LBA))

Command (m for help): a
Partition number (1-4): 1

Command (m for help): p

Disk /dev/sdb: 3965 MB, 3965190144 bytes
122 heads, 62 sectors/track, 1023 cylinders, total 7744512 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3c410c14

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048      146596       72274+   c  W95 FAT32 (LBA)

If you want to know partition types

Command (m for help): l

0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris
1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
3  XENIX usr       40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
4  FAT16 <32M      41  PPC PReP Boot   85  Linux extended  c7  Syrinx
5  Extended        42  SFS             86  NTFS volume set da  Non-FS data
6  FAT16           4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
7  HPFS/NTFS       4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility
8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt
9  AIX bootable    50  OnTrack DM      93  Amoeba          e1  DOS access
a  OS/2 Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O
b  W95 FAT32       52  CP/M            9f  BSD/OS          e4  SpeedStor
c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs
e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT
f  W95 Ext’d (LBA) 55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor
12  Compaq diagnost 61  SpeedStor       a9  NetBSD          f4  SpeedStor
14  Hidden FAT16❤ 63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary
16  Hidden FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS
17  Hidden HPFS/NTF 65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST SmartSleep  70  DiskSecure Mult b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 75  PC/IX           bb  Boot Wizard hid fe  LANstep
1c  Hidden W95 FAT3 80  Old Minix       be  Solaris boot    ff  BBT
1e  Hidden W95 FAT1

 

Similarly create second Linux partition

Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4, default 2): 2
First sector (146597-7744511, default 146597):
Using default value 146597
Last sector, +sectors or +size{K,M,G} (146597-7744511, default 7744511):
Using default value 7744511

Print partition table

Command (m for help): p

Disk /dev/sdb: 3965 MB, 3965190144 bytes
122 heads, 62 sectors/track, 1023 cylinders, total 7744512 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3c410c14

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048      146596       72274+   c  W95 FAT32 (LBA)
/dev/sdb2          146597     7744511     3798957+  83  Linux

Write all changes and exit

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.

You can cross check partition using fdisk command

fdisk /dev/sdb

Command (m for help): p

Disk /dev/sdb: 3965 MB, 3965190144 bytes
122 heads, 62 sectors/track, 1023 cylinders, total 7744512 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3c410c14

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048      146596       72274+   c  W95 FAT32 (LBA)
/dev/sdb2          146597     7744511     3798957+  83  Linux

Command (m for help): q

Then restore img file to both partition

dd if=./sdb1.img of=/dev/sdb1
144522+0 records in
144522+0 records out
73995264 bytes (74 MB) copied, 15.9707 s, 4.6 MB/s
dd if=./sdb2.img of=/dev/sdb2

Accessing your home network over internet – without VPN

Few days back I was looking solution to access my home PC over internet. And I was almost convinced that VPN is only way to access your home network if you have dynamic IP. But recently I found alternate way to access my PC, NAS server and even my linux machine over internet. In fact I access them using my Android phone and iPad. I didn’t find nice article under single page. So I decided to put all things together.

Read more…

Securing Wireless networks

Recently I visited one of my friends house where he was using wireless ADSL router. He had desktop and was not at all using wireless. I found his wireless connection is open. He is doctor by profession and hardly understands wireless security setting. There are some cases in Mumbai where open wi-fi connections were misused. You should be very careful while using wireless connections. This post explains different wireless encryption protocols and how you can use them efficiently.

Read more…

Tutorial: Design PCB using Eagle

Few days back I was searching for good tutorial on PCB designing. Eagle CADSoft is one of the popular software preferred by students and hobbyist. I also decided to use same for my project. Below is series of tutorial videos by RPCE Electronics on eaglesoft. It is very useful and simple even if you don’t know anything about eagle Soft.

Read more…

Don’t have Serial / Parallel port on MB…. Well it might be hidden on motherboard

I have DG33FB motherboard with intel quad core processor. While buying it I did little R & D like number of SATA ports, DDR DIMM sockets etc. But I never paid attention to legacy ports like Serial and Parallel ports. I was under impression that these are default ports and don’t have to bother it. But now days most of motherboard manufacturer does not have support for these legacy ports. (Actually, motherboard chipset does not have support).

Read more…

Creating SVN repository on Linux

Subversions are mainly used when there are multiple users and sharing/modifying code. I am going to create SVN repositary for Linux Kernel and U-boot images. This article explains how you can setup an SVN repository at home Linux PC.

Read more…

Using Linux and Windows system simultaneously

If you are a single user and want to use Linux and Windows both OS then probably you may not want to spend money on another keyboard, mouse and monitor. I explored few options to save hardware cost if you want to have similar setup.

Read more…

Mounting DNS-323 Drive in linux

When you are working on multiple platform then you should much have common storage area which is accessible from windows as well as linux. If you have network drive then you can mount device in linux system. I have D-link’s DNS323 NAS server which you can mount in linux using below commands

Read more…

Infrared Remote Control RC-5

Overview:

RC5 is most popular protocol used for IR remote control. It was developed by philips. Now it has become universal protocol and used in almost each and every remote control. Also care is taken that IR code is unique for electronics equipments and manufacturers. This article explains how you can crack RC-5 codes from any IR remote control and design your own receiver.

Read more…

Command Line Interface (CLI) For AVR

Overview: This is simple CLI code written in C for ATMEGA32 and simulated on Proteus. Serial Port (RS232) is used for input and output. You can connect board to serial port of computer and use hyperterminal as input and output. LCd Display is alternate output device and PCF8583 maintains data time information.

Read more…

Tachometer using AVR Atmega16

Overview: Tachometer is used to measure speed of motor or shaft or propeller. This tachometer is designed using ATMega16 micro-controller and runs at 16MHz. It can be configured for multiple propellers. Also measuring time interval can be varied for better accuracy. Attractive feature of this is it measures speed without any physical contact with shaft or motor. It shows RPM speed on LCD and Tachometer setting can be changed from simple push buttons. It uses low cost infrared Tx-Rx pair for sensing propellers. It can measure RPM speed up to 90k RPM. No mechanical part is used hence low cost (less than Rs.500) and maintenance free.

Read more…

Follow

Get every new post delivered to your Inbox.