Source Code

/Source Code
Source Code2019-01-11T16:13:50+00:00


Download the Source Code

All of the source code that is described in this book is available in a public GitHub repository: Derek Molloy Exploring BeagleBone repository.

You can clone this repository on a Linux desktop computer or your BeagleBone using the command:

You can also install a Windows GitHub desktop application or a Mac OS X GitHub desktop application. Alternatively, you can download a full ZIP archive of the code using the following link: Download Source Code (this is a live link that automatically provides you with the very latest files).

Code Library API Documentation

The library of code that is made available in the GitHub repository library directory has support for Doxygen (as described on Page 269) . This support is twofold — it provides a template for you to use in documenting your own projects and it provides details of the classes that are available in this API. There are two versions of the documentation available:

To build this documentation enter the exploringBB/library/docs directory and type: doxygen ExploringBB.Doxyfile. You should not attempt to install the Doxygen tools or LaTeX on the BeagleBone as they both occupy a considerable amount of storage space.

Details of Recent Commits

[commits repository=’exploringBB’ count=’10’ title=’Commits’]

Chart of Repository Commit History

[chart repository=’exploringBB’ class=’admin-github-chart’ height=’200′ color=’#f17f49′ count=’30’ title=’Activity’]

Gist Test

[gist id=’4bf6b107aab8e7103369′ ]


  1. Andrew Bushnell January 20, 2015 at 2:32 pm

    Is there a way to refresh what I have. I tried running the wget and have it over write the files I have but it wants to create new files and folders and it stops.



    • Derek January 21, 2015 at 1:41 am

      Hi Andy, have you tried using:

      You can also checkout individual files if you are concerned about overwriting a file that you have modified. I can put a short guide here on this page if it is useful. Derek.

  2. Andrew Bushnell January 23, 2015 at 2:36 pm

    How does GIT know where to go to get the new information?

    • Derek January 23, 2015 at 9:59 pm

      Hi Andrew, when you clone the remote repository a hidden “.git” directory is created in the local repository directory that contains a lot of information about the archive, including the details of the repository location. You can see it using:

      • Andrew Bushnell January 24, 2015 at 7:36 pm

        Thanks. I just tried it and I like it.

  3. Michiel Van Dorpe April 3, 2017 at 12:29 pm

    Hey, i have internet connection with my BBB and update git correctly but HTTP request fails all the time when i try a git clone… Could you help me?

    • Oscar August 31, 2017 at 5:48 am

      I have the same problem. Did you find a solution?

  4. Bolek Mellerowicz July 20, 2017 at 12:01 am

    Hi Derek,

    Really impressed by this excellent resource and and thanks for all this information. Thanks to your hard work I am using the Beaglebone on a flight prototype at work!

    Question regarding the PRUADC.p code from chapter 13.

    When I scope the pin P8_46 pin toggled in the PRUCLOCK.p (listing 13.A2) code with a logic analyzer I get a very clean 100 kHz clock pulse. In PRUADC.p (listing 13.A4) I introduced pin P8_11 (pr1_pru0__pru_r30_15) in the SPICLK function to see what the SPI CLOCK signal would be like on the scope. I got inconsistent pulse frequency (as if the pulses were sometimes split) and not sure why.

    In my overlay I define P8_11 as: 0x034 0x06

    I toggle the pin in this snippet:

    MOV r0, TIME_CLOCK // time for clock low — assuming clock low before cycle
    SUB r0, r0, 1 // decrement the counter by 1 and loop (next line)
    QBNE CLKLOW, r0, 0 // check if the count is still low
    QBBC DATALOW, r2.t31 // The write state needs to be set right here — bit 31 shifted left
    SET r30.t1
    CLR r30.t1
    SET r30.t2 // set the clock high
    MOV r0, TIME_CLOCK // time for clock high
    SUB r0, r0, 1 // decrement the counter by 1 and loop (next line)
    QBNE CLKHIGH, r0, 0 // check the count
    LSL r2, r2, 1
    // clock goes low now — read the response on MISO
    CLR r30.t2 // set the clock low
    CLR r30.t15 // CLEAR P8_11 TO VIEW SCLK SIGNAL
    QBBC DATAINLOW, r31.t3
    OR r3, r3, 0x00000001
    LSL r3, r3, 1

    Why is TIME_CLOCK defined as 12 (at the top of PRUADC.p file)?

    At this point I am not sure whether the inconsistent spi clock is caused by me or the code needs to be fixed.

    Please let me know what you think.

    Thank you,


  5. Oscar August 31, 2017 at 5:47 am

    Hi Derek,

    I am having the following error when I try to git clone in my new beaglebone blue.

    “Failed to connect to port 443: Connection refused”

    I am also unable to “sudo apt-get update” and it gives also connection refused on same port.

    I have shared my internet (both ethernet and wifi) and run /sbin/route add default gw and I am able to ping and, but for some reason I can’t update or clone.

    Any ideas? I’ve read it might be an internet connection but I am lost here. I could really use some help.

    I am on Windows 10 64 bit and have installed drivers.

    Thanks in advance.

  6. Atul November 6, 2017 at 6:56 pm

    root@beaglebone:~# git clone
    Cloning into ‘exploringBB’…
    error: server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none while accessing
    fatal: HTTP request failed

    Plz suggest solution for this error

  7. siranjeevi June 9, 2018 at 2:26 pm

    hi, i have used beaglebone using debian os.i want to send byte of data from beaglebone to another beaglebone…i have test my beaglebone uart to windows 10 pc the result was good..saprately checking also well but connection not get result.
    any one can help me..

    thanking you

  8. Jinao Gao July 5, 2018 at 10:38 pm

    Hi Derek,

    Currently I am working on setting SPI on BBB and just followed the procedures on your book. After I typed the command of sudo sh -c “echo BB-SPIDEV0 > $SLOTS”, the terminal gave me :
    debian@beaglebone:/lib/firmware$ sudo sh -c “echo BB-SPIDEV0 > $SLOTS”
    [sudo] password for debian:

    Message from syslogd@beaglebone at Jun 17 14:06:20 …
    kernel:[ 786.178943] Internal error: Oops: 5 [#1] PREEMPT SMP ARM

    Message from syslogd@beaglebone at Jun 17 14:06:20 …
    kernel:[ 786.280549] Process sh (pid: 1060, stack limit = 0xdc550218)

    Message from syslogd@beaglebone at Jun 17 14:06:20 …
    kernel:[ 786.286234] Stack: (0xdc551d58 to 0xdc552000)

    Message from syslogd@beaglebone at Jun 17 14:06:20 …
    kernel:[ 786.290611] 1d40: 00000000 014000c0

    Message from syslogd@beaglebone at Jun 17 14:06:20 …
    kernel:[ 786.298829] 1d60: 00000000 20030013 dc551dd4 dc551d78 c0dc34cc db64e784 c15d9ab0 db64e7a0

    After this, if I cat $SLOTS, I got:
    0: PF—- -1
    1: PF—- -1
    2: PF—- -1
    3: PF—- -1
    4: P-O— -1 Override Board Name,00A0,Override Manuf,BB-SPIDEV0

    However, when I go to /dev, there is no file named spidev1.0 or spidev1.1

    I am kind of stuck at this point and pretty confused what is going on.

    I will really appreciate if this comment get replied!

    Jinao Gao

  9. Kurt Stewart August 30, 2018 at 3:57 pm

    Hi Derek,

    I am wondering if you could explain how to use the code to change the SPI speed.


  10. Jon February 10, 2019 at 7:13 pm


    The second edition of Exploring BeagleBone looks awesome and adding the PocketBeagle was quite timely since I have recently obtained one these. Thanks for sharing your knowledge of the BeagleBoards and for putting the time into creating the books.

    Has the code listed on your GitHub repo for exploringBB been updated to reflect the new book?

    • Derek February 11, 2019 at 10:50 am

      Hi Jon,

      Thanks! Yes, the GitHub repository is up to date for the new Edition. There are two branches in the repo, called “version1” and “version2”. I have pointed the master at “version2” but it should allow people to move between the two editions if required. If you can see “chp16” then you have the lastest version.

      Kind regards, Derek.

Comments are closed.

Exploring BeagleBone

This is the companion site for the book “Exploring BeagleBone: Tools and Techniques for Building with Embedded Linux” by Derek Molloy. The site structures and contains all of the digital media that is described in the book. Each chapter in the book links to an individual web page, which can be accessed using the menu on the top right-hand side of this page when you close this menu. For details of the book itself, click here.

Recent Works

Latest from Derek Molloy YouTube Channel

Oops, something went wrong.