<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CEYAQHk6eSp7ImA9WhBbF08.&quot;"><id>tag:blogger.com,1999:blog-3872270766482215974</id><updated>2013-05-16T09:35:41.711-07:00</updated><category term="ARM" /><category term="serial peripheral interface" /><category term="beagleboard" /><category term="beagleboard xm" /><category term="ubuntu" /><category term="SPI" /><category term="compile kernel" /><category term="compile" /><category term="kernel" /><title>Brian's Life</title><subtitle type="html">The world through the eyes of an everyday Christian, husband, and engineer.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.brianhensley.net/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.brianhensley.net/" /><author><name>Brian</name><uri>http://www.blogger.com/profile/12143981961115835179</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_xdQLaQMyKlY/TOnYFjETHQI/AAAAAAAAAAQ/HeqGcLXV3_I/S220/P7160514.JPG" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/brianhensley/UnIP" /><feedburner:info uri="brianhensley/unip" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;C0UERnY7eSp7ImA9WhBRGEw.&quot;"><id>tag:blogger.com,1999:blog-3872270766482215974.post-3093881159328695176</id><published>2013-03-05T11:35:00.001-08:00</published><updated>2013-03-08T22:40:07.801-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-08T22:40:07.801-08:00</app:edited><title>Raspberry Pi Robot + Wii remote (Phase 1)</title><content type="html">So I know my last post on how to use the Nintendo Wii controller with the Raspberry Pi was quite popular. I've been working on the next stage of the project which includes connecting my Digilent Cerebot II Atmega64L micro-controller to the Raspberry Pi. This required that I get the SPI connection working between the Pi and the micro-controller and get the Wii remote to control everything. I constructed this project using a set of Python and C programming with modules I either created or borrowed.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="360" src="http://www.youtube.com/embed/zZPD0wcXPgw" width="640"&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;u&gt;&lt;br /&gt;&lt;/u&gt;
&lt;u&gt;Check out Previous Posts to help build the robot!&lt;/u&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.brianhensley.net/2012/08/wii-controller-raspberry-pi-python.html"&gt;Getting Wii Controller working with Raspberry Pi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.brianhensley.net/2012/07/getting-spi-working-on-raspberry-pi.html"&gt;Getting Serial Peripheral Interface (SPI) working on the Raspberry P&lt;/a&gt;i&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.brianhensley.net/2012/02/python-controlling-spi-bus-on.html"&gt;Python over SPI channel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.brianhensley.net/2012/07/how-to-get-debian-working-on-my.html"&gt;Installing Debian (linux) on the Pi&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;u&gt;&lt;br /&gt;&lt;/u&gt;
&lt;u&gt;My current hardware setup looks like this:&lt;/u&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Raspberry Pi&lt;/li&gt;
&lt;li&gt;Digilent Cerebot II (Atmega64 Microcontroller)&lt;/li&gt;
&lt;li&gt;2x H-bridges (Digilent)&lt;/li&gt;
&lt;li&gt;2x 6 Volt DC Motors (PWM controlled)&lt;/li&gt;
&lt;li&gt;USB to Bluetooth -&amp;nbsp;this one &lt;a href="http://www.frys.com/product/6103319?site=sr:SEARCH:MAIN_RSLT_PG"&gt;SABRENT&lt;/a&gt; at Fry's is what I used&lt;/li&gt;
&lt;li&gt;&lt;a href="http://gan.doubleclick.net/gan_click?lid=41000613802463973&amp;amp;pid=sku2314557&amp;amp;adurl=http%3A%2F%2Fwww.samsclub.com%2Fsams%2Fwii-remote-plus-various-colors%2Fprod1910540.ip%3Fpid%3D_DoubleClick_Affiliates%26ci_src%3D15781033%26ci_sku%3Dsku2314557&amp;amp;usg=AFHzDLufbBzK4Ob22GkrqMYpU7q1KVudSQ&amp;amp;pubid=564672"&gt;Nintendo Wii Controller&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;8x 2AA batteries (6V for the Micro, 6V for the Pi)&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
This picture describes the basic setup of my remote control robot.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-VJXE1w9KMiw/URiXZ8z5-3I/AAAAAAAAAnc/KmkFKyMiNv8/s1600/robot+layout.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="472" src="http://1.bp.blogspot.com/-VJXE1w9KMiw/URiXZ8z5-3I/AAAAAAAAAnc/KmkFKyMiNv8/s640/robot+layout.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;Getting Started (Python + Bluetooth):&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
So in this post i'm going to go over the different parts that build up my robot project. The first one is the Raspberry Pi and Bluetooth module. As I've used in my previous &lt;a href="http://www.brianhensley.net/2012/08/wii-controller-raspberry-pi-python.html"&gt;Wii Controller + Python + Raspberry Pi = Amazing!&lt;/a&gt; blog I used the Cwiid python module that enables my to connect to a USB Bluetooth dongle I put in my Raspberry Pi. You'll need to install Cwiid for python on the Pi.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo apt-get install python-cwiid&lt;/blockquote&gt;
&lt;br /&gt;
Once this is done you'll have to start your program with some python code that connects to the controller. So in your Python code make sure you include the library and then cwiid.Wiimote() connects to the Nintendo Wii remote.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
import cwiid&lt;br /&gt;
wm = cwiid.Wiimote()&lt;/blockquote&gt;
&lt;br /&gt;
After this you'll want to enable button data reporting.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
wm.rpt_mode = cwiid.RPT_BTN&lt;/blockquote&gt;
&lt;br /&gt;
All the buttons on the wii remote have values that can be queried. The best part is they add, so if you're pressing multiple buttons such as left + gas, which are values of 2048 + 1 = 2049. Something like this&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
wm.state['buttons'] == 2049&lt;/blockquote&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-mVGt11EXkeU/UTrYyo7OGeI/AAAAAAAAAsQ/abxyO2cYG_w/s1600/wiimote+button+values+no+watermark.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="147" src="http://2.bp.blogspot.com/-mVGt11EXkeU/UTrYyo7OGeI/AAAAAAAAAsQ/abxyO2cYG_w/s400/wiimote+button+values+no+watermark.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
(button values for CWiid)&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;Getting Started (Python + SPI):&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The next phase of this project was getting the Serial Peripheral interface (SPI) working with the hardware. As with many parts of my blog this one can take a lot longer as I had to write code in C and make a module that can be called in Python. Please check out my previous post on &lt;a href="http://www.brianhensley.net/2012/02/python-controlling-spi-bus-on.html"&gt;Python Controlling SPI Bus on the Raspberry Pi and Beagleboard XM&lt;/a&gt;&amp;nbsp;for getting Python working. You have to make sure you have SPI enabled in the hardware and from there you can check it by going to the /dev directory. I have another blog &lt;a href="http://www.brianhensley.net/2012/07/getting-spi-working-on-raspberry-pi.html"&gt;Getting SPI working on the Raspberry Pi&lt;/a&gt; that helps with getting this setup.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-rnb-7LqdiD0/UTWN15s1QcI/AAAAAAAAApw/UHiWBAwc07Y/s1600/SPIdev.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://4.bp.blogspot.com/-rnb-7LqdiD0/UTWN15s1QcI/AAAAAAAAApw/UHiWBAwc07Y/s640/SPIdev.PNG" width="579" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Once your hardware is showing up you can use the SPI.so module I created and call it in Python using something similar to this. For the record my SPI command is in this format, no real reason, just an arbitrary one I chose for hex values.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
spidata = ['FFDDLLRR00']&lt;/blockquote&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Where the DD is representing the direction of the robot, LL is the left wheel speed and RR is the right wheel speed.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
spilist = []&lt;br /&gt;
#combine the string&lt;br /&gt;
combine = str('FF')+ direction[0] +str(rws)+str('0')+str(lws)+str('0')+str('00')&lt;br /&gt;
spilist.append(combine) # append the string of combined direction and wheelspeeds&lt;br /&gt;
length_data = len(spilist[0])/2 + 1&lt;br /&gt;
spiconnection.transfer(spilist[0], length_data)&lt;br /&gt;
time.sleep(.2)&lt;/blockquote&gt;
&lt;br /&gt;
There is a lot more detail here that i'm not going to go into, but all the logic to my code, directions, logic behind what buttons are pushed and such are written in Python and located in file name "robot_version0.x.py" where x is the version number. All my code revisions will be found in the following folder location. Feel free to check back over time for newer versions.&lt;br /&gt;
&lt;br /&gt;
===&amp;gt;&amp;nbsp;&lt;a href="https://docs.google.com/folder/d/0B9EuFQNHg6R9clhBcDB0bWNyYlk/edit?usp=sharing"&gt;My Code versions: version 0.1 at time of post.&lt;/a&gt;&amp;nbsp;&amp;lt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of the many important things to know about SPI is how it works. Understanding it has a data line in and out, a clock and a slave select. All data from the master controller goes to all the slaves, but the master just tells which slave to listen. SPI was originally created by Motorola many years ago and is still very popular in computer communication.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-UfSwvHAjpks/UTYpL4H75nI/AAAAAAAAAqA/58b7yV9YKZc/s1600/SPI+layout.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="302" src="http://3.bp.blogspot.com/-UfSwvHAjpks/UTYpL4H75nI/AAAAAAAAAqA/58b7yV9YKZc/s400/SPI+layout.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;Getting Started (SPI + PWM + Atmega64):&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
So the last part of this project deals with setting up the &lt;a href="http://www.digilentinc.com/"&gt;Digilent Inc&lt;/a&gt;&amp;nbsp;board that is a&amp;nbsp;&lt;a href="http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,398,1008&amp;amp;Prod=CEREBOT-II"&gt;Cerebot II miro-controller&lt;/a&gt;. I'm using AVR studio 4.0 and first started by setting up the mico-controller as a SPI slave so it will take in the clock and Slave Select (SS) from the Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-TXTgZ_B3EEM/UTY1JaCiv4I/AAAAAAAAAqQ/lfMmhztEepA/s1600/CEREBOT-II-400.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="202" src="http://3.bp.blogspot.com/-TXTgZ_B3EEM/UTY1JaCiv4I/AAAAAAAAAqQ/lfMmhztEepA/s320/CEREBOT-II-400.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the SPI signal was setup and tested I configured the &lt;a href="http://en.wikipedia.org/wiki/Pulse-width_modulation"&gt;Pulse Width Modulation (PWM)&lt;/a&gt; signals that would talk to the H-Bridges and help higher voltages go to the DC motors. There are registers that control the speed and the direction. So I have the SPI data read in and then it configures what the speed for each wheel is and set the direction. These values change the speed and feed back the data to the Python code saying what was read in, small form of error checking. &amp;nbsp;Check the code folder for "WiiRobotProject" as this is my code for AVR code. Still a work in progress so there are tons of comments and things I was trying. it will look cleaner in my final code release.&lt;br /&gt;
&lt;br /&gt;
There are a bunch of features I would love to still get out of this Cerebot II board, such as the motor feedback, maybe add some SERVOs to control a camera (phase 3)? Time will only tell if i get around to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;FINAL NOTE (CODE):&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
Like posted earlier if you would like to check out my code or get some ideas from what I'm doing please check the link below for my source code. Comments. suggestions, and questions are always welcome. Please check out previous tutorials i've written to help with the small details.&lt;br /&gt;
&lt;br /&gt;
===&amp;gt;&amp;nbsp;&lt;a href="https://docs.google.com/folder/d/0B9EuFQNHg6R9clhBcDB0bWNyYlk/edit?usp=sharing"&gt;My Code versions: version 0.1 at time of post.&lt;/a&gt;&amp;nbsp;&amp;lt;===&lt;br /&gt;
&lt;br /&gt;
Until next time, peace!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;Future NEXT STEPS:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-nR3n8mjhdI0/UTZIYozh3yI/AAAAAAAAAqg/XNRkUga9eWo/s1600/Future.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="255" src="http://4.bp.blogspot.com/-nR3n8mjhdI0/UTZIYozh3yI/AAAAAAAAAqg/XNRkUga9eWo/s320/Future.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So my next phases of this project will include some of the following as basic ideas:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Battery&amp;nbsp;operated&lt;/li&gt;
&lt;li&gt;wireless putty connection for controll&lt;/li&gt;
&lt;li&gt;Wii Nunchuck support for camera/laser&lt;/li&gt;
&lt;li&gt;Servo control - camera/ front wheels&lt;/li&gt;
&lt;li&gt;Hash checking of SPI data&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/brianhensley/UnIP/~4/b8VsN7FXsdA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.brianhensley.net/feeds/3093881159328695176/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.brianhensley.net/2013/03/raspberry-pi-robot-wii-remote-phase-1.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/3093881159328695176?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/3093881159328695176?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/brianhensley/UnIP/~3/b8VsN7FXsdA/raspberry-pi-robot-wii-remote-phase-1.html" title="Raspberry Pi Robot + Wii remote (Phase 1)" /><author><name>Brian</name><uri>http://www.blogger.com/profile/12143981961115835179</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_xdQLaQMyKlY/TOnYFjETHQI/AAAAAAAAAAQ/HeqGcLXV3_I/S220/P7160514.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/zZPD0wcXPgw/default.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://www.brianhensley.net/2013/03/raspberry-pi-robot-wii-remote-phase-1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUNRHg5fyp7ImA9WhBTEUs.&quot;"><id>tag:blogger.com,1999:blog-3872270766482215974.post-7357056414950744241</id><published>2013-01-19T19:44:00.000-08:00</published><updated>2013-02-06T06:51:35.627-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-06T06:51:35.627-08:00</app:edited><title>Beagleboard XM - How to install Ubuntu 12.10 (Quantal)</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-U-Tv8SKUFxA/UPtgiPo3rhI/AAAAAAAAAXs/B3D62-t-PMg/s1600/ubuntu+title.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;br /&gt;&lt;img border="0" height="203" src="http://2.bp.blogspot.com/-U-Tv8SKUFxA/UPtgiPo3rhI/AAAAAAAAAXs/B3D62-t-PMg/s400/ubuntu+title.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
Hi folks so i'm back after taking quite a bit of time off. Had the unfortunate experience of my dad passing away recently. I truly believe that family comes first so i've been spending my time elsewhere. Thanks for your patients.&lt;br /&gt;
&lt;br /&gt;
Versions of Ubuntu have changed over the last year so i'm going to give you the run down of the latest version, called Ubuntu 12.10 (Quantal) onto your Beagleboard XM. This procedure will be very similar to installing 11.04 but i'm going to give some more broad answers so if links/URLs die and such you can find your way. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Hardware&lt;/u&gt;: &lt;br /&gt;
-Beagleboard XM (mine is rev C)&lt;br /&gt;
-Micro SD card (4GB or higher I recommend)&lt;br /&gt;
-Ubuntu system to install things onto your SD card (i'm using VirtualBox with 12.04)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;iframe bordercolor="#000000" frameborder="0" height="200" hspace="0" marginheight="0" marginwidth="0" scrolling="no" src="http://ad.doubleclick.net/adi/N7433.148119.BLOGGEREN/B6533661.1203;sz=200x200;ord=[timestamp]?;lid=41000613802463918;pid=45843;usg=AFHzDLum-lZtSfTLsy7O6aXKPESBAP4pIQ;adurl=http%253A%252F%252Fwww.abt.com%252Fproduct%252F45843%252FTranscend-TS16GUSDHC6.html;pubid=564672;imgsrc=http%3A%2F%2Fcontent.abt.com%2Fmedia%2Fimages%2Fproducts%2Fl_ts16gusdhc6.jpg;width=200;height=146" vspace="0" width="200"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;NOTE:&lt;/b&gt; you might need to get a few ubuntu packages for your system (virtualbox), i've already installed a few&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
apt-get install uboot-mkimage btrfs-tools pv&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;span style="font-size: large;"&gt;START&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
The first thing i'm doing is referencing Roberts home site and i'm going to look for the latest version of Ubuntu for the beagleboard that I can find. &lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
Link: http://rcn-ee.net/deb/rootfs&lt;/blockquote&gt;
&lt;br /&gt;
I'm going to look into the Quantal folder and at the time of writing this I see revision 3 is the latest. So lets download and unzip it to get started.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
wget http://rcn-ee.net/deb/rootfs/quantal/ubuntu-12.10-r3-minimal-armhf-2013-01-12.tar.xz&lt;/blockquote&gt;
&lt;br /&gt;
Unzip the files...&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
tar xJf ubuntu-12.10-r3-minimal-armhf-2013-01-12.tar.xz&lt;/blockquote&gt;
&lt;br /&gt;
Lets go into the folder... pressing the tab button finishes the folder/file name just in case you are new to linux syntax.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
cd ubuntu-12.10-r3-minimal-armhf-2013-01-12/&lt;/blockquote&gt;
&lt;br /&gt;
So there will be a file located in this folder called 'setup_sdcard.sh' this is a script that sets up the SD card for you, which is pretty neat. All you need to do is call the location of your SD card and away it goes. So I called the following command to see where my SD card was mouted.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
df -h&lt;/blockquote&gt;
&lt;br /&gt;
I found that my 4GB SD card was located as /dev/sdb1 but i'm going to use the name /dev/sdb so as not to include just the partition name but the whole drive location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-9TXcwElCxKg/UPtPsRYtWoI/AAAAAAAAAXM/Qpeblb1VUb0/s1600/blog+post+pic+1+_ubuntu_XM_12_10.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="129" src="http://4.bp.blogspot.com/-9TXcwElCxKg/UPtPsRYtWoI/AAAAAAAAAXM/Qpeblb1VUb0/s640/blog+post+pic+1+_ubuntu_XM_12_10.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Now to install the following, you'll need to start the install process, be sure to add your SD card name correctly!! if you have a beagleboard or beaglebone you need to look for the right syntax instread of 'beagle_xm'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
sudo ./setup_sdcard.sh --mmc /dev/sdb --uboot beagle_xm &lt;/blockquote&gt;
&lt;br /&gt;
It will want to confirm that the right drive is being selected, and ask for verification. Just press 'y' and then hit enter. Now this procedure might take a while depending on your connection to your SD card and the speed of your computer/SD card it could take 5-15 mins so be patient.&amp;nbsp; Just to note I did have one pop up warning me, but all i had to do was click ok and it continued. &lt;br /&gt;
&lt;br /&gt;
Once this is complete and you get a message saying everything was complete, unmount your SD card if it hasn't been done in the script already. &lt;br /&gt;
&lt;br /&gt;
Now take the SD card and insert it into your Beagleboard XM and power it up! &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Default username/password: ubuntu / temppwd&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The first thing I recommend is updating the packages and upgrading everthing.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;span style="font-size: large;"&gt;OPTIONAL INSTALLS AFTER: &lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Ethernet &lt;/b&gt;- One of many ways to enable Ethernet connection&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo ifconfig -a&lt;br /&gt;
sudo dhclient eth0&lt;br /&gt;
sudo ifconfig -a &lt;/blockquote&gt;
&lt;br /&gt;
&lt;b&gt;Serial Peripheral Interface (SPI)&lt;/b&gt; - How to enable SPI hardware...&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
cd ~&lt;br /&gt;
cd boot/uboot&lt;br /&gt;
nano uEnv.txt&lt;/blockquote&gt;
&lt;br /&gt;
You'll need to remove the # symbol from in front of buddy=spidev, once this is done save by pressing the ctrl+x and confirm the name with an enter. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-U9oBThGq-dc/UPtfkIVoIAI/AAAAAAAAAXc/MWxMnZuhFl0/s1600/SPI+enable.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="62" src="http://2.bp.blogspot.com/-U9oBThGq-dc/UPtfkIVoIAI/AAAAAAAAAXc/MWxMnZuhFl0/s640/SPI+enable.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Continue over to my &lt;a href="http://www.brianhensley.net/2012/02/spi-working-on-beagleboard-xm-rev-c.html"&gt;SPI for beagleboard post&lt;/a&gt; that shows how to test that everything works. But the short part is you should see the spidev located under the /dev folder like this &lt;b&gt;after rebooting&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-Dg4MC0DjGzY/UPtiPh2X8QI/AAAAAAAAAX8/EscfeAJ_Wos/s1600/dev+devices.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="281" src="http://1.bp.blogspot.com/-Dg4MC0DjGzY/UPtiPh2X8QI/AAAAAAAAAX8/EscfeAJ_Wos/s400/dev+devices.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;GUI Desktop&lt;/b&gt; - How to install a simple GUI desktop&lt;br /&gt;
&lt;br /&gt;
To get the GUI installed you can do many different&amp;nbsp;approaches&amp;nbsp; I did a couple, &amp;nbsp;first I started by installing the following, but ran into the problem that xserver no longer made OMAP3 video drivers. I think they're going towards&amp;nbsp;xf86-video-omap. But until that is completely true I did the following.&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo apt-get install gdm xfce4 network-manager&lt;/blockquote&gt;
.&lt;br /&gt;
Then I found Robert's script that took care of the rest. Both the previous and the next commands take a couple hours, but you get a few selections for desktops. LXDE and XFCE.&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
/bin/bash /boot/uboot/tools/ubuntu/minimal_lxde_desktop.sh&lt;/blockquote&gt;
&lt;br /&gt;
&lt;div&gt;
Thanks for your feedback, and feel free to email or message me.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Good Sources:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
http://elinux.org/BeagleBoardUbuntu#Quantal_12.10_armhf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/brianhensley/UnIP/~4/7sn76dr3jFE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.brianhensley.net/feeds/7357056414950744241/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.brianhensley.net/2013/01/beagleboard-xm-how-to-install-ubuntu.html#comment-form" title="20 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/7357056414950744241?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/7357056414950744241?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/brianhensley/UnIP/~3/7sn76dr3jFE/beagleboard-xm-how-to-install-ubuntu.html" title="Beagleboard XM - How to install Ubuntu 12.10 (Quantal)" /><author><name>Brian</name><uri>http://www.blogger.com/profile/12143981961115835179</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_xdQLaQMyKlY/TOnYFjETHQI/AAAAAAAAAAQ/HeqGcLXV3_I/S220/P7160514.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-U-Tv8SKUFxA/UPtgiPo3rhI/AAAAAAAAAXs/B3D62-t-PMg/s72-c/ubuntu+title.PNG" height="72" width="72" /><thr:total>20</thr:total><feedburner:origLink>http://www.brianhensley.net/2013/01/beagleboard-xm-how-to-install-ubuntu.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cNQnYzfyp7ImA9WhBRGEw.&quot;"><id>tag:blogger.com,1999:blog-3872270766482215974.post-2929954862999842372</id><published>2012-08-03T13:27:00.001-07:00</published><updated>2013-03-08T22:38:13.887-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-08T22:38:13.887-08:00</app:edited><title>Wii Controller + Raspberry Pi + Python = Awesome!!</title><content type="html">UPDATE 1/2/2013:&lt;br /&gt;
-Corrected button numbers&lt;br /&gt;
-Bluetooth commands&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/-97Isycmgd6Q/UBsmBJays4I/AAAAAAAAASE/F2aQzp5-wBU/s1600/wiimote+border.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="301" src="http://4.bp.blogspot.com/-97Isycmgd6Q/UBsmBJays4I/AAAAAAAAASE/F2aQzp5-wBU/s400/wiimote+border.png" width="400" /&gt;&lt;/a&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; So this is going to be a many part series for a robot project i'm working on. This first one covers writing a program that runs on the Raspberry Pi. This program is going to connect through bluetooth to a Nintendo Wii controller and allow you to control the data via Python. Cool I know!&lt;br /&gt;
&lt;br /&gt;
So what I did first was familiarize myself with connecting my Wii controller to my PC (virtual desktop running Ubuntu) and using Cwiid as a module I was able to write a small program to grab the data. Once I knew I could connect and communicate all I needed to do was port this over to my Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen="allowfullscreen" frameborder="0" height="360" src="http://www.youtube.com/embed/vEQXFn-KuVs" width="640"&gt;&lt;/iframe&gt;


&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Parts list:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Raspberry Pi&lt;/li&gt;
&lt;li&gt;bluetooth USB dongle - I bought this one &lt;a href="http://www.frys.com/product/6103319?site=sr:SEARCH:MAIN_RSLT_PG"&gt;SABRENT&lt;/a&gt;&amp;nbsp;at Frys Electronics for $10&lt;/li&gt;
&lt;li&gt;&lt;a href="http://gan.doubleclick.net/gan_click?lid=41000000024781945&amp;amp;pid=sku2314557&amp;amp;adurl=http%3A%2F%2Fwww.samsclub.com%2Fsams%2Fwii-remote-plus-various-colors%2Fprod1910540.ip%3Fpid%3D_DoubleClick_Affiliates%26ci_src%3D15781033%26ci_sku%3Dsku2314557&amp;amp;usg=AFHzDLtPzMO8iewGFifM5Kd2apWlIJ5q4A&amp;amp;pubid=564672" rel="nofollow"&gt;Wii Remote - Black&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Standard Raspberry Pi cables (power, keyboard, monitor)&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Make sure you first have debian installed and up to date on your Raspberry Pi. I did a 'how to' earlier that can be found &lt;a href="http://www.brianhensley.net/2012/07/how-to-get-debian-working-on-my.html"&gt;HERE&lt;/a&gt;, the only difference is I installed the BETA 'Wheezy' version. Once you have your board up and working make sure you update everything.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo apt-get update&lt;/blockquote&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo apt-get upgrade&lt;/blockquote&gt;
&lt;br /&gt;
This could take hours depending...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Installing the Bluetooth Dongle and drivers&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/-hbu6yIvnjCU/UA7o6UV6X0I/AAAAAAAAAP8/LQVrBjeSWV4/s1600/bluetooth+USB+dongle.GIF" imageanchor="1" style="background-color: white; clear: left; display: inline !important; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-hbu6yIvnjCU/UA7o6UV6X0I/AAAAAAAAAP8/LQVrBjeSWV4/s1600/bluetooth+USB+dongle.GIF" /&gt;&lt;/a&gt;&lt;br /&gt;
The first thing is to plug your Bluetooth dongle into one of the USB ports of the Pi.&lt;br /&gt;
Once you have your Raspberry Pi booted up install the bluetooth package for it. Mine tool about an hour to download. To reduce this time install it without the GUI started.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo apt-get install bluetooth&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once it is installed, make sure you can see the bluetooth device and scan for your Wii Remote.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo service bluetooth status&lt;/blockquote&gt;
&lt;br /&gt;
If it isn't connected type this to start up your bluetooth, or reboot your Pi:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
/etc/init.d/bluetooth start&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
To get your bluetooth address type,&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
hcitool dev&lt;/blockquote&gt;
&lt;br /&gt;
This will show your dongle address. Something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-UWPVf5IvIdE/UBr5Q0kTrLI/AAAAAAAAARM/qmXFLULTLuM/s1600/hcitool_dev_picture.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="63" src="http://4.bp.blogspot.com/-UWPVf5IvIdE/UBr5Q0kTrLI/AAAAAAAAARM/qmXFLULTLuM/s400/hcitool_dev_picture.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Next you can scan for devices. Type the following in, then press the 1+2 on your Wii remote to make it searchable.&amp;nbsp;By pressing the one and two this will put the controller into discovery mode.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
hcitool scan&lt;/blockquote&gt;
&lt;br /&gt;
You should see something like this, representing your Wiimote address and name.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-TgPrM2KoE54/UBr5ahUuitI/AAAAAAAAARU/80jNagdr3rw/s1600/hcitool_scan_picture.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="65" src="http://3.bp.blogspot.com/-TgPrM2KoE54/UBr5ahUuitI/AAAAAAAAARU/80jNagdr3rw/s640/hcitool_scan_picture.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Installing CWiiD for Python&lt;/b&gt;&lt;br /&gt;
Next we need to download CWiiD, this is a great python module that allows us to control a Wii remote in Python, it has been ported to the ARM, x86, and AMD. To download and install type:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo apt-get install python-cwiid&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that it has been installed lets try it out. I've created this program that controls the Wii remote in Python. All you have to do is download it to your main directory.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
wget&amp;nbsp;https://sites.google.com/site/brianhensleyfiles/wiimotetest.py&lt;/blockquote&gt;
&lt;br /&gt;
Then to use it type,&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo python wiimotetest.py&lt;/blockquote&gt;
&lt;br /&gt;
It will ask you to press 1+2 on your Wiimote, once you do so it should say "Wii Remote connected...":&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-9KSZwJdFeao/UBr2wE8BnhI/AAAAAAAAAQ8/8QbQIyhBrzw/s1600/python+start+wiimote.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="105" src="http://2.bp.blogspot.com/-9KSZwJdFeao/UBr2wE8BnhI/AAAAAAAAAQ8/8QbQIyhBrzw/s640/python+start+wiimote.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I have this setup for part of my robot project so I have a center point AKA 'position 50' and it has limits of 0 to 100. So as you hold your wii remote horizontal you can press left and right and it will increment +/- 10 from 0 to 100. The other features are pressing the button number 1 and 2 individually. This will be displayed by saying those buttons were pressed. The last option is pressing some of the buttons together and having a message say it is moving forward or backwards and with what position.&lt;br /&gt;
&lt;br /&gt;
I set the MINUS button to turn on and off the Wiiremote rumbling feature.&lt;br /&gt;
&lt;br /&gt;
To disconnect and close the connection I setup the PLUS button on the wii remote to disconnect from the Wiimote.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe bordercolor="#000000" frameborder="0" height="200" hspace="0" marginheight="0" marginwidth="0" scrolling="no" src="http://ad.doubleclick.net/adi/N7433.148119.BLOGGEREN/B6695650.386;sz=200x200;ord=[timestamp]?;lid=41000000024781945;pid=sku2314554;usg=AFHzDLs5a5q3osuLrScsYbc0KPFrrGghtw;adurl=http%253A%252F%252Fwww.samsclub.com%252Fsams%252Fwii-remote-plus-various-colors%252Fprod1910540.ip%253Fpid%253D_DoubleClick_Affiliates%2526ci_src%253D15781033%2526ci_sku%253Dsku2314554;pubid=564672;imgsrc=http%3A%2F%2Fs7d2.scene7.com%2Fis%2Fimage%2Fsamsclub%2Fs7product%2F0004549689062_A.jpg;width=200;height=200" vspace="0" width="200"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Understanding CWIID / TIPS:&lt;/b&gt;&lt;br /&gt;
In python it's important to know more about&amp;nbsp;writing&amp;nbsp;your code to take data from the CWIID module and controller. The first three things I recommend doing are including the module, enabling buttons, and try out the State options.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
import cwiid&lt;br /&gt;
wm = cwiid.Wiimote()&lt;/blockquote&gt;
&lt;br /&gt;
Next be sure to enable button data reporting,&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
wm.rpt_mode = cwiid.RPT_BTN&lt;/blockquote&gt;
&lt;br /&gt;
What you can do next is determine what the value of each button is (see picture below). NOTE: when you press mutliple buttons the number values are added together. For example, when you hold the remote horizontally and press the left button it returns a value of 2048, when you press the right button you get 1024.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
wm.state['buttons']&lt;/blockquote&gt;
&lt;br /&gt;
If you click button #1 you get a state value of 2, so for example you could press the right button and the button #1 and get a state value of 1024 + 2 = 1026, because they were added. In my python script you can see I did comparison statements of the total status value for multiple buttons. Here is an image I drew up with the button values, labeled in orange. Use this to reference your Python program for what buttons you are pushing.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-mVGt11EXkeU/UTrYyo7OGeI/AAAAAAAAAsM/r8CDU8UCjnc/s1600/wiimote+button+values+no+watermark.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="236" src="http://3.bp.blogspot.com/-mVGt11EXkeU/UTrYyo7OGeI/AAAAAAAAAsM/r8CDU8UCjnc/s640/wiimote+button+values+no+watermark.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;NOTE: it may be useful to add some delays in, so you have time to return the remote value and have it do something in your program.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thanks for reading! Please be sure to comment your&amp;nbsp;experience and follow me on twitter to keep up on my next blog posts! twitter.com/bhensley&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Useful Links:&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://packages.debian.org/wheezy/bluetooth"&gt;http://packages.debian.org/wheezy/bluetooth&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://wiki.debian.org/BluetoothUser"&gt;http://wiki.debian.org/BluetoothUser&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
awesome inside wiiremote details:&lt;br /&gt;
&lt;a href="http://wiibrew.org/wiki/Main_Page"&gt;http://wiibrew.org/wiki/Main_Page&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
Good Wiimote python example:&lt;br /&gt;
&lt;a href="http://talk.maemo.org/showthread.php?t=60178"&gt;http://talk.maemo.org/showthread.php?t=60178&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/brianhensley/UnIP/~4/F9-YdlsQsKw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.brianhensley.net/feeds/2929954862999842372/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.brianhensley.net/2012/08/wii-controller-raspberry-pi-python.html#comment-form" title="26 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/2929954862999842372?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/2929954862999842372?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/brianhensley/UnIP/~3/F9-YdlsQsKw/wii-controller-raspberry-pi-python.html" title="Wii Controller + Raspberry Pi + Python = Awesome!!" /><author><name>Brian</name><uri>http://www.blogger.com/profile/12143981961115835179</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_xdQLaQMyKlY/TOnYFjETHQI/AAAAAAAAAAQ/HeqGcLXV3_I/S220/P7160514.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-97Isycmgd6Q/UBsmBJays4I/AAAAAAAAASE/F2aQzp5-wBU/s72-c/wiimote+border.png" height="72" width="72" /><thr:total>26</thr:total><feedburner:origLink>http://www.brianhensley.net/2012/08/wii-controller-raspberry-pi-python.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYBSH07cSp7ImA9WhJXFk4.&quot;"><id>tag:blogger.com,1999:blog-3872270766482215974.post-3668897754584300273</id><published>2012-07-25T18:27:00.003-07:00</published><updated>2012-08-10T14:12:39.309-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-10T14:12:39.309-07:00</app:edited><title>Getting SPI working on the Raspberry Pi</title><content type="html">So one of the phases in my project is connecting the Raspberry Pi to a micro-controller that has many Pulse Width Modulation (PWM) signals. Since the Raspberry doesn't have the number of PWM signals I need to control i'm going to do so through SPI. This post is the 'how to' on getting your SPI signals outputting from your Raspberry Pi. More blogs to come later to show you more details.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="360" src="http://www.youtube.com/embed/9IshJ1EsjFY" width="640"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;INSTALL&lt;/b&gt;&lt;br /&gt;
First you'll need to download the beta "Wheezy" debian package from &lt;a href="http://www.raspberrypi.org/archives/1435"&gt;here&lt;/a&gt;. Then follow the normal instructions for installing it to your board. Once you have installed it and booted up for the second time i ran some updates (That took hours!!)&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
sudo apt-get update&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
sudo apt-get upgrade&lt;/blockquote&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;b&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;
&lt;b&gt;
SPI BACKGROUND&lt;/b&gt;&lt;br /&gt;
While that is updating lets talk a little bit of SPI background knowledge is needed in order to get this working. First off Serial Peripheral interface (SPI) is made up of 4 wires normally. It is a standard that was designed by Motorola for use with their micro controllers. If you're interested in learning more about SPI i've added the &lt;a href="http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus"&gt;Wikipedia link&lt;/a&gt;.  Here is what a standard SPI setup looks like, multiple slaves is optional.&lt;br /&gt;
&lt;br /&gt;
SS - Slave Select (Beagleboard community calles this Chip Select (CS))&lt;br /&gt;
MOSI - Master Out Slave In&lt;br /&gt;
MISO - Master In Slave Out&lt;br /&gt;
CLK - Clock&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://2.bp.blogspot.com/-W0cLgXcwXHc/TzBKeozZi_I/AAAAAAAAAK4/cCIK5FA3R7A/s1600/SPI+layout.png"&gt;&lt;img border="0" height="302" src="http://2.bp.blogspot.com/-W0cLgXcwXHc/TzBKeozZi_I/AAAAAAAAAK4/cCIK5FA3R7A/s400/SPI+layout.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;More INSTALL&lt;/b&gt;&lt;br /&gt;
Next it was time to update to the latest firmware for the board, as the latest has brought out the SPI controller. To do so I used Andrews Hexxeh rpi-update to do this. Some needed tools...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
sudo apt-get install git&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;
Now lets download his tool and install change who has access to read/write the tool.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update&lt;br /&gt;
sudo chmod +x /usr/bin/rpi-update&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Once this is done you can run it by calling the following command. (mine took a while).&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo rpi-update&lt;/blockquote&gt;
&lt;br /&gt;
*NOTE - while I was doing this I ran out of space on my 4GB drive. I figured I wasn't really low on space and when I checked it I found my windows tool&amp;nbsp;originally&amp;nbsp;only made me a 2GB partition. There are many ways to do this, but I used &lt;a href="http://sourceforge.net/projects/gparted/files/gparted-live-stable/0.13.0-1/gparted-live-0.13.0-1.iso/download"&gt;GPARTED &lt;/a&gt;to expand my space to the real 4GB. It's a live CD...&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://gan.doubleclick.net/gan_click?lid=41000000028007181&amp;amp;pid=DHSDSDRX34096A21&amp;amp;adurl=http%3A%2F%2Fwww.unbeatablesale.com%2Fdhsdsdrx34096a21.html%3Fmr%3AtrackingCode%3D42186C15-99CC-DF11-82EF-001B21631C34%26mr%3AreferralID%3DNA&amp;amp;usg=AFHzDLsp8ANS_00jGbioEAQzNSUhKyVF4Q&amp;amp;pubid=564672" rel="nofollow"&gt;SanDisk 4GB Extreme 3 SD Card w/Reader&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So once the updates are all completed. I rebooted my Pi.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo shutdown -h now&lt;/blockquote&gt;
&lt;br /&gt;
Unplug the power and plug it back in. And when I rebooted I went to my /dev/ directory and found my spidev devices!&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-9EO7DYaztU0/UBCOZF_kWLI/AAAAAAAAAQM/C9AxP46KZNU/s1600/SPIdev.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/-9EO7DYaztU0/UBCOZF_kWLI/AAAAAAAAAQM/C9AxP46KZNU/s640/SPIdev.PNG" width="579" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The last part of this is to test the SPI signal. I'm going to download &lt;a href="http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob_plain;f=Documentation/spi/spidev_test.c"&gt;spidev_test.c&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
wget&amp;nbsp;http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob_plain;f=Documentation/spi/spidev_test.c -O spidev_test.c&lt;/blockquote&gt;
&lt;br /&gt;
Next we want to short the MISO and MOSI pins. Located as GPIO 9 &amp;amp; GPIO 10 as seen below.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-zwM_OmpN_SM/UBCSOk1E1PI/AAAAAAAAAQY/GJ4EsfjFcgU/s1600/GPIOs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/-zwM_OmpN_SM/UBCSOk1E1PI/AAAAAAAAAQY/GJ4EsfjFcgU/s400/GPIOs.png" width="173" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
We want to edit the spidev_test.c file so it it uses the correct spidevice in our /dev/ folder.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
nano spidev_test.c&lt;/blockquote&gt;
&lt;br /&gt;
scroll down and change the device to "spidev0.0" and then save it by pressing the Ctrl+O to save and Ctrl+X to exit. lets compile this thing and run it now.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
gcc spidev_test.c&lt;/blockquote&gt;
&lt;blockquote class="tr_bq"&gt;
sudo ./a.out&lt;/blockquote&gt;
&lt;br /&gt;
If you see this it's working.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-YKhpu2Yex5o/UBCWqeP3rnI/AAAAAAAAAQs/PnFCnBFV6I4/s1600/spi+working.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="249" src="http://2.bp.blogspot.com/-YKhpu2Yex5o/UBCWqeP3rnI/AAAAAAAAAQs/PnFCnBFV6I4/s320/spi+working.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you see this it's not working.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-x8jeriQ0ebg/UBCWqBzgVEI/AAAAAAAAAQk/oeTqxbDuILk/s1600/spi+not+working.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-x8jeriQ0ebg/UBCWqBzgVEI/AAAAAAAAAQk/oeTqxbDuILk/s1600/spi+not+working.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For more information on how to control your SPI with python try checking out my post for how to do so on the beagleboard xm. Many have found it useful and i'm sure you will too. &lt;a href="http://www.brianhensley.net/2012/02/python-controlling-spi-bus-on.html"&gt;Python controlling SPI on the Beagleboard XM&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/brianhensley/UnIP/~4/2AuSQHsRAq4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.brianhensley.net/feeds/3668897754584300273/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.brianhensley.net/2012/07/getting-spi-working-on-raspberry-pi.html#comment-form" title="44 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/3668897754584300273?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/3668897754584300273?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/brianhensley/UnIP/~3/2AuSQHsRAq4/getting-spi-working-on-raspberry-pi.html" title="Getting SPI working on the Raspberry Pi" /><author><name>Brian</name><uri>http://www.blogger.com/profile/12143981961115835179</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_xdQLaQMyKlY/TOnYFjETHQI/AAAAAAAAAAQ/HeqGcLXV3_I/S220/P7160514.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/9IshJ1EsjFY/default.jpg" height="72" width="72" /><thr:total>44</thr:total><feedburner:origLink>http://www.brianhensley.net/2012/07/getting-spi-working-on-raspberry-pi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QHQHo_fCp7ImA9WhJXFEo.&quot;"><id>tag:blogger.com,1999:blog-3872270766482215974.post-2995216829622721905</id><published>2012-07-13T21:07:00.001-07:00</published><updated>2012-08-08T17:15:31.444-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-08T17:15:31.444-07:00</app:edited><title>How to get 1080p videos running on my Raspberry Pi</title><content type="html">&amp;nbsp; &amp;nbsp; &amp;nbsp; So one of the first things I was very interested in the Raspberry Pi doing was running 1080p videos. All that power coming from one little controller, I couldn't believe it. So here is my success story of how I got my new raspberry pi to run 1080p videos right after &lt;a href="http://www.brianhensley.net/2012/07/how-to-get-debian-working-on-my.html"&gt;installing Debian&lt;/a&gt; onto it.&lt;br /&gt;
&lt;br /&gt;
Here is a video of my working success:&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="360" src="http://www.youtube.com/embed/OFweR9oTuno" width="640"&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&amp;nbsp;PARTS:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://gan.doubleclick.net/gan_click?lid=41000000005217789&amp;amp;pid=21879031&amp;amp;adurl=http%3A%2F%2Fwww.officemax.com%2Ftechnology%2Fmemory-cards%2Fmini-micro-secure-digital-memory-cards%2Fproduct-prod2350008%3Fcm_mmc%3DPerformics-_-Technology-_-Memory%2520Cards-_-Mini%2520and%2520Micro%2520Secure%2520Digital%2520Memory%2520Cards%26ci_src%3D14110944%26ci_sku%3D21879031&amp;amp;usg=AFHzDLs-AChsH3eul_ypXb5O4MdkCT3DeQ&amp;amp;pubid=564672" rel="nofollow"&gt;SanDisk 8GB microSD&amp;nbsp;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Raspberry Pi &lt;b&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://gan.doubleclick.net/gan_click?lid=41000000028007181&amp;amp;pid=CMPR6846&amp;amp;adurl=http%3A%2F%2Fwww.technooutlet.com%2Fcmpr6846.html%3Fmr%3AtrackingCode%3D92048487-3D37-E111-824F-001B21BCB944%26mr%3AreferralID%3DNA&amp;amp;usg=AFHzDLvUtDwBa0rHaUGz3FM2D9NClO7NDQ&amp;amp;pubid=564672" rel="nofollow"&gt;Standard Series HDMI to DVI Cable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PC - with Windows or Linux&lt;/li&gt;
&lt;li&gt;1080p video&lt;/li&gt;
&lt;li&gt;1080p TV screen/Monitor ( I recommend &lt;a href="http://gan.doubleclick.net/gan_click?lid=41000000026530730&amp;amp;pid=59295&amp;amp;adurl=http%3A%2F%2Fwww.abt.com%2Fproduct%2F59295%2FSamsung-UN40EH6000.html&amp;amp;usg=AFHzDLtx1mKYZO0e58M21l6J1vYnLgUSFA&amp;amp;pubid=564672" rel="nofollow"&gt;Samsung 40 "LED 1080P HDTV&lt;/a&gt;&lt;b&gt;)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;b&gt;Installation&lt;/b&gt;&lt;br /&gt;
There are a few different tools I found that play back HD content. The one I chose to use was called Omxplayer. From a terminal window lets install all the prerequisite applications first.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo apt-get install&amp;nbsp;libpcre3-dev libpcrecpp0 libva-dev libva-x11-1 libva1&lt;/blockquote&gt;
&lt;br /&gt;
After some amount of time it will finish and then next we need to install the omxplayer.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
wget&amp;nbsp;http://seyrsnys.myzen.co.uk/rpi/omxplayer_0.0.1-arm.deb&lt;/blockquote&gt;
&lt;br /&gt;
After it's downloaded unzip it and install&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo dpkg -i omxplayer_0.0.1-arm.deb&lt;/blockquote&gt;
&lt;br /&gt;
And that's it!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Playing a movie&lt;/b&gt;&lt;br /&gt;
The last part of the tutorial will be playing a movie and how to call and use the omxplayer. Make sure you have a movie file i'm using an episode of friends that is located on a flash drive (extension MKV), many other extensions work too. Here is a list of all the omxplayer options and a general how to use them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
pi@raspberrypi:~$ omxplayer --help&lt;br /&gt;
Usage: omxplayer [OPTIONS] [FILE]&lt;br /&gt;
Options :&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-h / --help &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;print this help&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-a / --alang language &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;audio language &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: e.g. ger&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-n / --aidx &amp;nbsp;index &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; audio stream index &amp;nbsp; &amp;nbsp;: e.g. 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-o / --adev &amp;nbsp;device &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; audio out device &amp;nbsp; &amp;nbsp; &amp;nbsp;: e.g. hdmi/local&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-i / --info &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dump stream format and exit&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-s / --stats &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pts and buffer stats&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-p / --passthrough &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; audio passthrough&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-d / --deinterlace &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;deinterlacing&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-w / --hw &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hw audio decoding&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-3 / --3d &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;switch tv into 3d mode&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-y / --hdmiclocksync &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; adjust display refresh rate to match video&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-t / --sid index &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;show subtitle with index&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-r / --refresh &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; adjust framerate/resolution to video&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
For me i'm going to use my HDMI to DVI cable to output video and standard 3.5mm for audio output. So i'm going to use the command.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo omxplayer -o local /My/Folder/MyVideoFileName.videoextension&lt;/blockquote&gt;
&lt;br /&gt;
If I was wanting to send my audio through the HDMI cable I would call something like this.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo omxplayer -o hdmi /MyFolder/MyVideoFileName.videoextension&lt;/blockquote&gt;
&lt;br /&gt;
And that's it, your 1080p Video will now run!! Please feel free to check out my other blogs or leave questions and comments below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Useful Links&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://elinux.org/Omxplayer"&gt;http://elinux.org/Omxplayer&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://github.com/huceke/omxplayer/blob/master/README.md"&gt;https://github.com/huceke/omxplayer/blob/master/README.md&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/brianhensley/UnIP/~4/03SK9vfwKZ0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.brianhensley.net/feeds/2995216829622721905/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.brianhensley.net/2012/07/how-to-get-1080p-videos-running-on-my.html#comment-form" title="28 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/2995216829622721905?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/2995216829622721905?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/brianhensley/UnIP/~3/03SK9vfwKZ0/how-to-get-1080p-videos-running-on-my.html" title="How to get 1080p videos running on my Raspberry Pi" /><author><name>Brian</name><uri>http://www.blogger.com/profile/12143981961115835179</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_xdQLaQMyKlY/TOnYFjETHQI/AAAAAAAAAAQ/HeqGcLXV3_I/S220/P7160514.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/OFweR9oTuno/default.jpg" height="72" width="72" /><thr:total>28</thr:total><feedburner:origLink>http://www.brianhensley.net/2012/07/how-to-get-1080p-videos-running-on-my.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4GRX86fSp7ImA9WhBREkk.&quot;"><id>tag:blogger.com,1999:blog-3872270766482215974.post-1850875108850682171</id><published>2012-07-13T09:05:00.002-07:00</published><updated>2013-03-02T09:55:24.115-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-02T09:55:24.115-08:00</app:edited><title>How to get Debian WORKING on my Raspberry Pi</title><content type="html">&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;I ordered my Raspberry Pi in the first couple weeks that it was&amp;nbsp;available, and after a 4 month wait because the demand was so high, it has arrived. So what is a Raspberry Pi and what are the first steps you should do to use it? Well the first thing I did was read lots of instructions. Why? you may ask. Well because these instructions are engineers speaking to engineers. Now if this was a standard tool, or TV, or something that people grew up using everyday then I wouldn't stress or waste my time reading any manual. this is different, so read the instructions!&lt;br /&gt;
&lt;br /&gt;
A Raspberry Pi is one of my favorite deserts, and also the name of my newest electronic toy. It's ...&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;


&lt;iframe allowfullscreen="" frameborder="0" height="360" src="http://www.youtube.com/embed/Nlln0E3LlmU" width="640"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
...called Raspberry Pi because it's a cool name. But actually its a complex little computer that is about the size of a debit card.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
Broadcom chip that contains BCM2835 700Mhz CPU&lt;br /&gt;
GPU - Broadcom VideoCore IV - can run 1080p30 videos&lt;br /&gt;
256MB ram&lt;br /&gt;
Composite video, HDMI, 2x USB2.0, 3.5mm audio jack&lt;br /&gt;
SPI, I2C, 8x GPIO pins&lt;br /&gt;
B model includes Ethernet port 10/100&lt;/blockquote&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;b&gt;Requirements/Software&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
So lets get to business, first there are a few parts that you are going to need. First is a power cord with a micro-B connector. If you don't know what a micro-B connector is, then google it. Next you'll need some form of wall wort to power it, I used the one from my motorola phone. The important thing is that it has 500-1000mA of current and 5V. I also used a HDMI-&amp;gt;DVI cable, a mouse and keyboard (low power ones work best). The last thing needed is an SD card, I used the one I got from Fry's for $5.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
From your PC you can do one of two things when installing Debian, you can use windows or linux. Most my blogs are on linux but i'm going to use windows because I tried it and it worked great on my first try.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
Download the debian file here------&amp;gt; &lt;a href="http://downloads.raspberrypi.org/images/debian/6/debian6-19-04-2012/debian6-19-04-2012.zip"&gt;FILE TO DOWNLOAD&lt;/a&gt;&amp;nbsp;(443MB)&lt;/blockquote&gt;
&lt;blockquote class="tr_bq"&gt;
or go to &lt;a href="http://www.raspberrypi.org/downloads"&gt;http://www.raspberrypi.org/downloads&lt;/a&gt; for more downloads&lt;/blockquote&gt;
&lt;br /&gt;
&lt;div&gt;
Next you'll want to verify you downloaded it correctly so do a checksum on it. check for the following number.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote class="tr_bq"&gt;
SHA- 11852df83a11ee7083ca0e5f3fb41f93ecc59b1c8 &lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
If you don't know how to do a checksum, I would recommend some easy software ---&amp;gt; &lt;a href="http://code.kliu.org/hashcheck/downloads/HashCheckInstall-latest.exe"&gt;Checksum&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Installation&lt;/b&gt;&lt;/div&gt;
So the next part is installing Debian onto your Raspberry Pi. I used a tool called &lt;a href="https://launchpad.net/win32-image-writer"&gt;Win32-image-writer&lt;/a&gt;. Make sure you go and download the binary version.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-6cIn5xWDF94/T_-8DF7k4EI/AAAAAAAAAOw/D3sCchSvUhw/s1600/binary+image+writer.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="195" src="http://2.bp.blogspot.com/-6cIn5xWDF94/T_-8DF7k4EI/AAAAAAAAAOw/D3sCchSvUhw/s320/binary+image+writer.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Once this is download you can run the tool. It looks like this:&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-tPEdKKCwNjY/T_-8kdIdCDI/AAAAAAAAAO4/jAiy-RTT8Lk/s1600/image+writer+image.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-tPEdKKCwNjY/T_-8kdIdCDI/AAAAAAAAAO4/jAiy-RTT8Lk/s400/image+writer+image.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
You'll need to load the .IMG file from the debian download earlier. Then select your SD card in the device. Once you've done this press the write button and sit back and let it do all the work. Very easy!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Load into the Pi&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Now that the Debian image has been written to the SD card, put it in the Raspberry Pi. Hook up an&amp;nbsp;Ethernet&amp;nbsp;cable, HDMI, USB keyboard and mouse and connect the power!&lt;br /&gt;
&lt;br /&gt;
The system will boot up and load for the first time, mine required a reboot once through the process. Once it has fully rebooted and is asking for a login, here is the default password and user name.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
Username: pi&lt;br /&gt;
Password: raspberry&lt;/blockquote&gt;
The system is essentially a Debian server with a few added packages. Now most people that are new to the world of Linux won't like the Terminal feel. This is where you will want to start the Graphical User Interface (GUI). To do this type:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
startx&lt;/blockquote&gt;
&lt;br /&gt;
You should see it boot into this screen, and everything is up and running.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-PiruNEhi5JQ/UABGoFPD-NI/AAAAAAAAAPE/BSCH4CUY0ao/s1600/HPIM1500.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/-PiruNEhi5JQ/UABGoFPD-NI/AAAAAAAAAPE/BSCH4CUY0ao/s400/HPIM1500.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
One of the last things you should do is update the system. To do this you need to update the list of updates by running:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo apt-get update&lt;/blockquote&gt;
&lt;br /&gt;
Then you will want to apply these updates by:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo apt-get upgrade&lt;/blockquote&gt;
&lt;br /&gt;
&lt;span style="background-color: white;"&gt;About 20+ minutes later your Raspberry Pi is up and running.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Also, once you boot you'll see a black border around your screen. Add the following to&amp;nbsp;/boot/config.txt and this will fix that problem. Now this file didn't excist for me, so I had to create it first&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
cd~/&lt;br /&gt;
cd /boot/&lt;br /&gt;
sudo nano config.txt&lt;/blockquote&gt;
&lt;br /&gt;
add the following line:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
disable_overscan=1&lt;/blockquote&gt;
&lt;br /&gt;
Thanks for reading my tutorial about how I got my Pi up and running. Please feel free to comment and ask questions below. I will be doing more tutorials about other features of the Raspberry Pi as time progresses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Great reference sites:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://elinux.org/RPi_Beginners"&gt;http://elinux.org/RPi_Beginners&lt;/a&gt;&lt;br /&gt;
http://elinux.org/RPi_config.txt&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/brianhensley/UnIP/~4/IQyvVwirS1Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.brianhensley.net/feeds/1850875108850682171/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.brianhensley.net/2012/07/how-to-get-debian-working-on-my.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/1850875108850682171?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/1850875108850682171?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/brianhensley/UnIP/~3/IQyvVwirS1Y/how-to-get-debian-working-on-my.html" title="How to get Debian WORKING on my Raspberry Pi" /><author><name>Brian</name><uri>http://www.blogger.com/profile/12143981961115835179</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_xdQLaQMyKlY/TOnYFjETHQI/AAAAAAAAAAQ/HeqGcLXV3_I/S220/P7160514.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/Nlln0E3LlmU/default.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://www.brianhensley.net/2012/07/how-to-get-debian-working-on-my.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4GRncyeSp7ImA9WhNbFkg.&quot;"><id>tag:blogger.com,1999:blog-3872270766482215974.post-4307773235237343160</id><published>2012-03-05T11:50:00.001-08:00</published><updated>2013-01-19T19:52:07.991-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-19T19:52:07.991-08:00</app:edited><title>Install Beagleboard XM Ubuntu 11.10 with GUI</title><content type="html">(LAST UPDATED 1/19/2013) - New blog that &lt;a href="http://www.brianhensley.net/2013/01/beagleboard-xm-how-to-install-ubuntu.html"&gt;superseeds this one...&lt;/a&gt;in many ways check it out&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/-0dAVQj2QOZk/T1UWZn5ZyKI/AAAAAAAAAM0/XY1Kiz4Hv0s/s1600/ubuntu_desktop_nature.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-0dAVQj2QOZk/T1UWZn5ZyKI/AAAAAAAAAM0/XY1Kiz4Hv0s/s320/ubuntu_desktop_nature.jpg" width="320" /&gt;&lt;/a&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;So this quick run through will be to illustrate how to get Ubuntu 11.10 and a GUI running on the Beagleboard XM. &amp;nbsp;Graphical User Interface (GUI, pronouced "Gu eee") is the interface that is used on most computers that does not consist of a Terminal or command prompt.&lt;br /&gt;
&lt;br /&gt;
I do all my setup on my Windows 7 64-bit laptop (HP elitebook, i5 2nd gen). I have Virtual Box installed running Ubuntu Desktop.&lt;br /&gt;
&lt;br /&gt;
One of the first things I install is VirtualBox Guest Additions Installations. This allows me to copy and paste between windows and virualbox. Go up to devices-&amp;gt;install guest additions. It will prompt you for your Ubuntu root password. Then just wait. When finished reboot Ubuntu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lets begin...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
USED&amp;nbsp;Accessories:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Beagleboard XM rev C&lt;/li&gt;
&lt;li&gt;&lt;a href="http://gan.doubleclick.net/gan_click?lid=41000000005217789&amp;amp;pid=21879031&amp;amp;adurl=http%3A%2F%2Fwww.officemax.com%2Ftechnology%2Fmemory-cards%2Fmini-micro-secure-digital-memory-cards%2Fproduct-prod2350008%3Fcm_mmc%3DPerformics-_-Technology-_-Memory%2520Cards-_-Mini%2520and%2520Micro%2520Secure%2520Digital%2520Memory%2520Cards%26ci_src%3D14110944%26ci_sku%3D21879031&amp;amp;usg=AFHzDLs-AChsH3eul_ypXb5O4MdkCT3DeQ&amp;amp;pubid=564672" rel="nofollow"&gt;SanDisk 8GB microSD&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://gan.doubleclick.net/gan_click?lid=41000000026530730&amp;amp;pid=53629&amp;amp;adurl=http%3A%2F%2Fwww.abt.com%2Fproduct%2F53629%2FSony-MRWF3.html&amp;amp;usg=AFHzDLuKhESpgQ6lQlcCbFMrOmtiX3kLpw&amp;amp;pubid=564672" rel="nofollow"&gt;Sony SD to USB reader&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Windows computer using virtual box, running Ubuntu 12.04 (Precise Pangolin)&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Pre-reqs:&lt;/b&gt;&lt;br /&gt;
Before we begin we need to make sure we have all the required software on our main computer before we continue. Call the following command in your terminal.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo apt-get install wget pv dosfstools parted&lt;/blockquote&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Step One:&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Identify your SD Card in Ubuntu once inserting it and bringing it into VirtualBox. Open the Terminal window and type the following.&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
df -h&lt;/blockquote&gt;
&lt;br /&gt;
You'll see something like the following, notice how my 4GB flash drive is referenced as /dev/sdb1 this is important and "sdb" will be used later.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
Filesystem &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Size &amp;nbsp;Used Avail Use% Mounted on&lt;br /&gt;
/dev/sda1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 6.1G &amp;nbsp;3.8G &amp;nbsp;2.1G &amp;nbsp;65% /&lt;br /&gt;
none &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;943M &amp;nbsp;652K &amp;nbsp;942M &amp;nbsp; 1% /dev&lt;br /&gt;
none &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;949M &amp;nbsp;1.1M &amp;nbsp;948M &amp;nbsp; 1% /dev/shm&lt;br /&gt;
none &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;949M &amp;nbsp;100K &amp;nbsp;949M &amp;nbsp; 1% /var/run&lt;br /&gt;
none &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;949M &amp;nbsp; &amp;nbsp; 0 &amp;nbsp;949M &amp;nbsp; 0% /var/lock&lt;br /&gt;
/dev/sdb1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 3.7G &amp;nbsp; 32K &amp;nbsp;3.7G &amp;nbsp; 1% /media/5DA5-2520&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Next you'll want to download the following stable release of&amp;nbsp;Ubuntu&amp;nbsp;for the Beagleboard Xm with the following command. Also, it's about 108MB so it might take a little time to download on your virtualbox or ubuntu host, i'm using virtualbox.&lt;/div&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
wget http://rcn-ee.net/deb/rootfs/oneiric/ubuntu-11.10-r10-minimal-armel.tar.xz&lt;/blockquote&gt;
&lt;br /&gt;
Once that has downloaded you want to verify that the download was&amp;nbsp;successful, we do this with whats called a checksum. &amp;nbsp;This is an advance algorithm that spits out a number that can be compared to verify the download was sucessful. To do so type the following by typing:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
md5sum ubuntu-11.10-r10-minimal-armel.tar.xz&lt;/blockquote&gt;
&lt;br /&gt;
You must get a result that matches this!&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;br /&gt;
0221ef5b014097a6a42796e54c7c365c &amp;nbsp;ubuntu-11.10-r10-minimal-armel.tar.xz&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/blockquote&gt;
Since this is a TAR file, similar to a ZIP in windows so we must extract the files and than go to that directory&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
tar xJf ubuntu-11.10-r10-minimal-armel.tar.xz&lt;br /&gt;
cd ubuntu-11.10-r10-minimal-armel&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that you're in the right directory its time to call the script that will partition and setup all the files on the micro SD card. Now this part its important to remember the drive name that we did above, "sdb" as this is substituted into the command below.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo ./setup_sdcard.sh --mmc /dev/sdb --uboot beagle_xm&amp;nbsp;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Mine is taking about 10 mins to setup, this may vary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After this is complete go into the disk utility found at &amp;nbsp;System -&amp;gt; Administration -&amp;gt;Disk Utility, and make sure you unmount and Safely Remove the drive (MAKE SURE YOU DO THIS EVERY TIME).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-XyLWvWlT3HQ/TySu8IZ1IXI/AAAAAAAAAJ0/KpnQl6mypGk/s1600/ubuntu+pic1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://4.bp.blogspot.com/-XyLWvWlT3HQ/TySu8IZ1IXI/AAAAAAAAAJ0/KpnQl6mypGk/s320/ubuntu+pic1.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Step Two&lt;/b&gt;:&lt;/div&gt;
&lt;div&gt;
Now that Ubuntu has been installed on your Beagleboard XM you can test it by inserting it into the beagleboard Xm and starting it up.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;NOTE: Default username:&lt;/b&gt;&amp;nbsp;ubuntu&amp;nbsp;&lt;b&gt;Password:&lt;/b&gt;&amp;nbsp;temppwd&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
To check the kernel version type the following once it's booted up.&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
uname -r&lt;/blockquote&gt;
&lt;br /&gt;
At the time of this writing mine is version 3.1.6-x6 , now to check the version of Ubuntu type&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
lsb_release -a&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;b&gt;Step Three:&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Now you should have Ubuntu 11.10 installed but you will be missing the Graphical User Interface (GUI). In our case there are many options for user interfaces to install on that can be used but we're going to use XFCE because i've found it works well. Others many be used. Call the following commands to install the GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo apt-get upgrade&lt;/blockquote&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo apt-get install gdm xfce4 xserver-xorg-video-omap3 network-manager &lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
This may take a while to update and install, could take an hour! Once its all installed reboot and log into your new GUI Ubuntu on the Beagleboard XM!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-5QeDNMfH4YU/T1UYh411-zI/AAAAAAAAAM8/aLsGG0OB67A/s1600/ubuntu+bootup.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="http://3.bp.blogspot.com/-5QeDNMfH4YU/T1UYh411-zI/AAAAAAAAAM8/aLsGG0OB67A/s320/ubuntu+bootup.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
(image may look different on BB)&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-6AbN_WkEI-s/T1UYknkXehI/AAAAAAAAANE/cJWkl8iQO-w/s1600/xfce+desktop.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="244" src="http://3.bp.blogspot.com/-6AbN_WkEI-s/T1UYknkXehI/AAAAAAAAANE/cJWkl8iQO-w/s320/xfce+desktop.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
(image may look different on BB)&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
If you have problems getting the Ethernet working on bootup try the following commands:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo ifconfig -a&lt;br /&gt;
sudo dhclient eth0&lt;br /&gt;
sudo ifconfig -a&lt;/blockquote&gt;
&lt;br /&gt;
Please leave feedback or email me questions.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/brianhensley/UnIP/~4/xX2qHBaF01k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.brianhensley.net/feeds/4307773235237343160/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.brianhensley.net/2012/03/beagleboard-xm-ubuntu-1110-with-gui.html#comment-form" title="33 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/4307773235237343160?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/4307773235237343160?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/brianhensley/UnIP/~3/xX2qHBaF01k/beagleboard-xm-ubuntu-1110-with-gui.html" title="Install Beagleboard XM Ubuntu 11.10 with GUI" /><author><name>Brian</name><uri>http://www.blogger.com/profile/12143981961115835179</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_xdQLaQMyKlY/TOnYFjETHQI/AAAAAAAAAAQ/HeqGcLXV3_I/S220/P7160514.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-0dAVQj2QOZk/T1UWZn5ZyKI/AAAAAAAAAM0/XY1Kiz4Hv0s/s72-c/ubuntu_desktop_nature.jpg" height="72" width="72" /><thr:total>33</thr:total><feedburner:origLink>http://www.brianhensley.net/2012/03/beagleboard-xm-ubuntu-1110-with-gui.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUDSHs4eCp7ImA9WhJXE00.&quot;"><id>tag:blogger.com,1999:blog-3872270766482215974.post-6269823130948377062</id><published>2012-02-26T16:53:00.002-08:00</published><updated>2012-08-06T18:34:39.530-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-06T18:34:39.530-07:00</app:edited><title>Python controlling SPI Bus on Beagleboard XM, and Raspberry Pi</title><content type="html">UPDATE: 8/6/2012 - works for Raspberry Pi too, enjoy! &amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
So i'm writing my second article on how to do stuff on the Beagleboard Xm. This time i'm going to focus on how to write python code to control the Beagleboard Xm SPI bus ports.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-JUlaBN5EDp0/T0rOs509bSI/AAAAAAAAAMk/uhJR33asmzc/s1600/python+snake.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="175" src="http://4.bp.blogspot.com/-JUlaBN5EDp0/T0rOs509bSI/AAAAAAAAAMk/uhJR33asmzc/s200/python+snake.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;
Most the time I could stick with programming C since my last posts required doing a SPI test that comes when you compile the kernel and test the ports. Coworkers I work with use Python on a daily bases so I figured this would help since my next goal is to write a GUI application that has different SPI commands or inputs and seems simple enough to do with Python. So Python here we come.&lt;br /&gt;
&lt;br /&gt;
I'm going to start from the beginning and then include a download link of my final files to help you along the way.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step One&lt;/b&gt;&lt;br /&gt;
It's important to understand that you have access to the hardware that you're looking to control. So before we move forward make sure you have on your bealgboard access to a spidev. This can be checked by going into the /dev/ folder and looking for spidev3.0 or such.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
cd~/&lt;br /&gt;
cd /dev/&lt;/blockquote&gt;
&lt;br /&gt;
Look and see if you see something along the lines of spidev3.0 or spidev3.1 or spidev4.0, if you don't please refer to my older post where I walk through patching the kernel and getting to this stage. &lt;a href="http://www.brianhensley.net/2012/02/spi-working-on-beagleboard-xm-rev-c.html"&gt;Getting SPI working on the Beagleboard XM&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step Two&lt;/b&gt;&lt;br /&gt;
Next its important to have some understanding of Python. Now if you're completely new to this like I am than taking &lt;a href="http://code.google.com/edu/languages/google-python-class/"&gt;Google's Python Class&lt;/a&gt; will really help you out. It's a two day class that may take you longer as it did me (time restraints), but you'll learn a lot of basic information that should get you going on the language.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step Three&lt;/b&gt;&lt;br /&gt;
Ok, now we can start with communicating with the /dev/spidev3.0 device that is our SPI port on our Beagleboard XM. The first thing I read through was the C example that was provided by &lt;a href="http://www.kernel.org/doc/Documentation/spi/spidev"&gt;Kernel's Documentation on SPI&lt;/a&gt;. &amp;nbsp;There are a few things that are very important so lets first make sure we have the right packages installed so we can do Python programming.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo apt-get install python-dev&lt;/blockquote&gt;
&lt;br /&gt;
Now that the right packages are installed on your Beagleboard XM let's take a moment to figure out how we want to go about controlling it. The methods I came up with were either one, figure out the right commands that are comparable to C and get them working in Python. Two, make a C module that could be called anytime in Python and passed in a string of Hex values.&lt;br /&gt;
&lt;br /&gt;
Honestly I really liked option two so this is what i'll be&amp;nbsp;demonstrating. This whole process was not easy as I searched much of the web trying to figure out&amp;nbsp;strategy&amp;nbsp;of examples and blog posts and such. Once again here I am leading you to understand what I've found. So the first thing to understand about passing a C module into Python is its very similar to a DLL for windows. We will have a module that has a list of function that can be called from our Python variable and will transfer our data. My Goal is to take in a Python string like this and get a C hex like the following.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
Pyhon String Input:&lt;br /&gt;
data = ["FFFF40009545"]&lt;/blockquote&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
C Hex output:&lt;br /&gt;
uint8_t list = {0xFF, 0xFF, 0x40, 0x00, 0x95, 0x54, 0x45};&lt;/blockquote&gt;
&lt;br /&gt;
The reason for wanting to do this is simplicity. There may be better options and if so I would love to hear about them. Add a comment at the bottom of this post please!&lt;br /&gt;
&lt;br /&gt;
To do the transformation there must first be a C program that takes in both the string data and the length of string. This will&amp;nbsp;guaranteeing&amp;nbsp;the data is being parsed out right in C as it was expected in Python. My Python test file I'll call spitest.py and it will have something along the following lines on the Beagleboard Xm.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-HFQusmQ9R9w/T0rQJC0iTWI/AAAAAAAAAMs/8R0hT9VBRuI/s1600/spitest_py.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="242" src="http://4.bp.blogspot.com/-HFQusmQ9R9w/T0rQJC0iTWI/AAAAAAAAAMs/8R0hT9VBRuI/s320/spitest_py.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(click to enlarge)&lt;br /&gt;
&lt;br /&gt;
Click here to download &amp;gt;&amp;gt;&amp;gt; &amp;nbsp;&lt;a href="https://sites.google.com/site/brianhensleyfiles/spitest.py"&gt;spitest.py&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
As you can see in spitest.py there are a few commands that are called out, such as spi.SPI, transfer, and close. These are the three main commands i'm centering my C module around and will be the ones I call out and use in Python. One opens, one transfers the data, and one closes the SPI port. When the time comes to test this I'm going to place this test file in the following directory that should be created after I compile spimodule.c. It's important to have the testing file in the same directory for now as the compiled spi.so file. It's also important to have the "import spi" which will import into our python code our spi.so module we are going to create in the future steps.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
/home/ubuntu/build/lib.linux-armv7l-2.7&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
Then when the time comes I'll call the following command to run my test from that directory.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo python spitest.py&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step Four&lt;/b&gt;&lt;br /&gt;
Yes I know like this feels like we're going back a step but I had to explain the python first. So now we're going to create the spimodule.c file that will do the conversion of the incoming string to a hex value that can be&amp;nbsp;transferred&amp;nbsp;to the hardware.&lt;br /&gt;
&lt;br /&gt;
To do so there has to be a understanding of two things one, how to convert from a string to a hex and two how to write an extension module. Neither are easy if you're a novice programmer like myself. As much as I like to go into details, i'm not going to cover how to write a extension module for Python. More info on that can be found here &lt;a href="http://docs.python.org/extending/newtypes.html"&gt;Python Documentation for writing extensions&lt;/a&gt;. Great examples can also be found at &lt;a href="http://www.tutorialspoint.com/python/python_further_extensions.htm"&gt;Tutorials Points&lt;/a&gt;. The original code I found and edited and based my module from is documented &lt;a href="http://elk.informatik.fh-augsburg.de/da/da-49/trees/pyap7k/lang/py-spi/src/"&gt;here&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
Within this spimodule.c that is being used is the following code I wrote that allows for the conversion as well as documents much of the code to transfer the data.&lt;br /&gt;
&lt;span style="background-color: white; font-family: sans-serif; font-size: 16px; line-height: 20px; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="background-color: white; font-family: sans-serif; font-size: 16px; line-height: 20px; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-oCs4e0R7gyk/T0ncyaXmb3I/AAAAAAAAAL8/-aKZSdQsuXA/s1600/spimodule_transfer1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="278" src="http://1.bp.blogspot.com/-oCs4e0R7gyk/T0ncyaXmb3I/AAAAAAAAAL8/-aKZSdQsuXA/s400/spimodule_transfer1.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
(click to enlarge photo)&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-_Exu8E4gRkk/T0nc1l4L3FI/AAAAAAAAAME/CWUzeHzvQ50/s1600/spimodule_transfer2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="270" src="http://3.bp.blogspot.com/-_Exu8E4gRkk/T0nc1l4L3FI/AAAAAAAAAME/CWUzeHzvQ50/s400/spimodule_transfer2.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
(click to enlarge photo)&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-sgNeyjre7EE/T0nc4nWOr6I/AAAAAAAAAMM/z8VkdBU7Q2E/s1600/spimodule_transfer3.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="138" src="http://3.bp.blogspot.com/-sgNeyjre7EE/T0nc4nWOr6I/AAAAAAAAAMM/z8VkdBU7Q2E/s400/spimodule_transfer3.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
(click to enlarge photo)&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download the full module here at &amp;gt;&amp;gt;&amp;gt; &lt;a href="https://sites.google.com/site/brianhensleyfiles/spimodule.c"&gt;spimodule.c&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This code is the transfer function (not differential equations kind), but the one what will transfer our SPI data. It takes the string parses out the first two characters and saves them into a variable called hexbyte. Then using sscanf and scans it into a uint8_t type as a hex value using %X. Here is a table to explain the different sscanf formats and how to pass in different value types.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-9kDBOqJf17c/T0q5c9GQ6rI/AAAAAAAAAMU/urn7kvWUf0Q/s1600/sscanf.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="140" src="http://3.bp.blogspot.com/-9kDBOqJf17c/T0q5c9GQ6rI/AAAAAAAAAMU/urn7kvWUf0Q/s320/sscanf.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (click to enlarge)&lt;br /&gt;
&lt;br /&gt;
A good rule of thumb for helping with debugging and using different types of parsing and type conversion is to print your results and to&amp;nbsp;separate&amp;nbsp;them in your code so you can keep track and debug it later. You can see in my code that I often do printf so that I know where my data is and what it should be.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step Five&lt;/b&gt;&lt;br /&gt;
Now that my spimodule is made and should be working lets build it and run everything. Feel free to try my files above but note they are there for advice not to be your secure work around.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;NOTE: THERE IS NO ERROR CHECKING IN THE CODE&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
So the first thing to do is to compile the code. I have my spimodule.c and a setup.py file located in my main home directory. The setup file is used as a compiling file that calls the C file and any other extension or author notes that are needed.&lt;br /&gt;
&lt;br /&gt;
Download into home directory with spimodule.c &amp;gt;&amp;gt; &lt;a href="https://sites.google.com/site/brianhensleyfiles/setup.py"&gt;setup.py&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
cd~/&lt;br /&gt;
sudo python setup.py build&lt;/blockquote&gt;
&lt;br /&gt;
This will build your spi.so file and it will be located in the following folder. If it isn't this is because it was built somewhere else and after building it it will tell you were it is located. There may be some warnings when you compile it but thats ok, as long as there aren't errors.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
cd&amp;nbsp;build/lib.linux-armv7l-2.7&lt;/blockquote&gt;
&lt;br /&gt;
check the directory,&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
ls&lt;/blockquote&gt;
&lt;br /&gt;
You should see a file spi.so and this is where you'll place your spitest.py from step three. Now lets run the spitest.py. One thing to mention is I setup the spimodule.c that got compiled into the spi.so to give some printf functions for every 2 hex value both as a string and later when it is type casted into a unsigned integer 8-bit size.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo python spitest.py&lt;/blockquote&gt;
&lt;br /&gt;
You should get a result like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-ed8bvQQ7drY/T0rMX5PsivI/AAAAAAAAAMc/4NXpz9g8iok/s1600/SPI+output.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-ed8bvQQ7drY/T0rMX5PsivI/AAAAAAAAAMc/4NXpz9g8iok/s1600/SPI+output.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(click to enlarge)&lt;br /&gt;
&lt;br /&gt;
As you can see the string has been passed, and&amp;nbsp;separated&amp;nbsp;and then converted to Hex format. Then the data shows you what is going to be sent and what is received. If they are the same, than everything is a success. Now go on and program Python to pass your data to SPI bus devices!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;NOTE: make sure you have a wire&amp;nbsp;across&amp;nbsp;the MOSI and MISO pins on the beagleboard xm.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please leave comments, feedback, or code corrections!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;Bibliography&lt;/span&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;b&gt;String to Hex example&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://forums.devshed.com/c-programming-42/convert-char-string-to-hex-format-586165.html"&gt;http://forums.devshed.com/c-programming-42/convert-char-string-to-hex-format-586165.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Other good links&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://www.nerdkits.com/videos/printf_and_scanf/"&gt;http://www.nerdkits.com/videos/printf_and_scanf/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://wikis.oracle.com/display/DTrace/Types,+Operators+and+Expressions"&gt;https://wikis.oracle.com/display/DTrace/Types,+Operators+and+Expressions&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.cplusplus.com/reference/clibrary/cstdio/sscanf/"&gt;http://www.cplusplus.com/reference/clibrary/cstdio/sscanf/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;GREAT EXAMPLE OF IMPORTING C as a module&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://en.wikibooks.org/wiki/Python_Programming/Extending_with_C"&gt;http://en.wikibooks.org/wiki/Python_Programming/Extending_with_C&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.tutorialspoint.com/python/python_further_extensions.htm"&gt;http://www.tutorialspoint.com/python/python_further_extensions.htm&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://docs.python.org/extending/newtypes.html"&gt;http://docs.python.org/extending/newtypes.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;b&gt;Code examples python&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://elk.informatik.fh-augsburg.de/da/da-49/trees/pyap7k/lang/"&gt;http://elk.informatik.fh-augsburg.de/da/da-49/trees/pyap7k/lang/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Kernel Documentation Spidev&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://www.kernel.org/doc/Documentation/spi/spidev"&gt;http://www.kernel.org/doc/Documentation/spi/spidev&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.kernel.org/doc/Documentation/spi/spidev_test.c"&gt;http://www.kernel.org/doc/Documentation/spi/spidev_test.c&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Google Python Class&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://code.google.com/edu/languages/google-python-class/"&gt;http://code.google.com/edu/languages/google-python-class/&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/brianhensley/UnIP/~4/r8GlBnmHNbQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.brianhensley.net/feeds/6269823130948377062/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.brianhensley.net/2012/02/python-controlling-spi-bus-on.html#comment-form" title="9 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/6269823130948377062?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/6269823130948377062?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/brianhensley/UnIP/~3/r8GlBnmHNbQ/python-controlling-spi-bus-on.html" title="Python controlling SPI Bus on Beagleboard XM, and Raspberry Pi" /><author><name>Brian</name><uri>http://www.blogger.com/profile/12143981961115835179</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_xdQLaQMyKlY/TOnYFjETHQI/AAAAAAAAAAQ/HeqGcLXV3_I/S220/P7160514.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-JUlaBN5EDp0/T0rOs509bSI/AAAAAAAAAMk/uhJR33asmzc/s72-c/python+snake.png" height="72" width="72" /><thr:total>9</thr:total><feedburner:origLink>http://www.brianhensley.net/2012/02/python-controlling-spi-bus-on.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUANRHk7cCp7ImA9WhNbFkg.&quot;"><id>tag:blogger.com,1999:blog-3872270766482215974.post-4851422562009919509</id><published>2012-02-04T13:48:00.000-08:00</published><updated>2013-01-19T19:49:55.708-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-19T19:49:55.708-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ARM" /><category scheme="http://www.blogger.com/atom/ns#" term="SPI" /><category scheme="http://www.blogger.com/atom/ns#" term="serial peripheral interface" /><category scheme="http://www.blogger.com/atom/ns#" term="kernel" /><category scheme="http://www.blogger.com/atom/ns#" term="compile" /><category scheme="http://www.blogger.com/atom/ns#" term="beagleboard xm" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><category scheme="http://www.blogger.com/atom/ns#" term="beagleboard" /><category scheme="http://www.blogger.com/atom/ns#" term="compile kernel" /><title>SPI working on the Beagleboard XM rev C</title><content type="html">(UPDATE 1/19/2013) - NEW blog post on installing Ubuntu 12.10, includes enabling SPI and more click this link &lt;a href="http://www.brianhensley.net/2013/01/beagleboard-xm-how-to-install-ubuntu.html"&gt;BLOG POST&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
(UPDATED 7/5/2012) - (added ubuntu-11.10-r3 download from dropbox, as original source no longer exists.)&lt;br /&gt;
&lt;br /&gt;
So this is for people that are trying to get SPI working on their Beagleboard XM rev C boards. At the time that I began this adventure I had no clue how to get SPI working on my board. So I&amp;nbsp;decided&amp;nbsp;to blog about it while I was learning, and now it works. The setup is for Ubuntu 11.10 and using Kernel v3.1.10 So let me share with you.&lt;br /&gt;
&lt;br /&gt;
Now you must understand I've spend much time looking at many different posts on the google group "beagleboard", many blog sites, elinux pages and such. People are just ripping their hair out as someone put it on how to successfully get SPI working. What I found was skattered knowledge of the topic and I wanted to bring it all together for the novice user.&lt;br /&gt;
&lt;br /&gt;
There is something else you should know about me and that is i'm a novice user in the Linux world. In my search I was really searching for was a straight forward walk though from starting to finish, starting with a blank 4GB microSD card and ending on getting SPI working.&lt;br /&gt;
&lt;br /&gt;
So lets get started from the beginning....&lt;br /&gt;
&lt;br /&gt;
USED&amp;nbsp;Accessories:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Beagleboard XM rev C&lt;/li&gt;
&lt;li&gt;&lt;a href="http://gan.doubleclick.net/gan_click?lid=41000000005217789&amp;amp;pid=21879031&amp;amp;adurl=http%3A%2F%2Fwww.officemax.com%2Ftechnology%2Fmemory-cards%2Fmini-micro-secure-digital-memory-cards%2Fproduct-prod2350008%3Fcm_mmc%3DPerformics-_-Technology-_-Memory%2520Cards-_-Mini%2520and%2520Micro%2520Secure%2520Digital%2520Memory%2520Cards%26ci_src%3D14110944%26ci_sku%3D21879031&amp;amp;usg=AFHzDLs-AChsH3eul_ypXb5O4MdkCT3DeQ&amp;amp;pubid=564672" rel="nofollow"&gt;SanDisk 8GB microSD&amp;nbsp;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SD to USB reader&lt;/li&gt;
&lt;li&gt;Windows computer using virtual box, running Ubuntu 11.04 (Natty)&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Step One:&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Identify your SD Card in Ubuntu&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
df -h&lt;/blockquote&gt;
&lt;br /&gt;
You'll see something like the following, notice how my 4GB flash drive is referenced as /dev/sdb1 this is important and "sdb" will be used later in many different cases:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
Filesystem &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Size &amp;nbsp;Used Avail Use% Mounted on&lt;br /&gt;
/dev/sda1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 6.1G &amp;nbsp;3.8G &amp;nbsp;2.1G &amp;nbsp;65% /&lt;br /&gt;
none &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;943M &amp;nbsp;652K &amp;nbsp;942M &amp;nbsp; 1% /dev&lt;br /&gt;
none &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;949M &amp;nbsp;1.1M &amp;nbsp;948M &amp;nbsp; 1% /dev/shm&lt;br /&gt;
none &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;949M &amp;nbsp;100K &amp;nbsp;949M &amp;nbsp; 1% /var/run&lt;br /&gt;
none &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;949M &amp;nbsp; &amp;nbsp; 0 &amp;nbsp;949M &amp;nbsp; 0% /var/lock&lt;br /&gt;
/dev/sdb1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 3.7G &amp;nbsp; 32K &amp;nbsp;3.7G &amp;nbsp; 1% /media/5DA5-2520&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Next you'll want to download the following stable release of&amp;nbsp;Ubuntu&amp;nbsp;for the Beagleboard Xm with the following command. Also, it's about 108MB so it might take a little time to download on your virtualbox or ubuntu host, i'm using virtualbox.&lt;/div&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
wget http://rcn-ee.net/deb/rootfs/oneiric/ubuntu-11.10-r3-minimal-armel.tar.xz&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
(UPDATE - THE ABOVE DOWNLOAD NO LONGER WORKS, PLEASE SEE FOLLOWING LINK FOR FILE) Be sure to place this in the standard home directory like before. Then continue procedure.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
wget https://dl.dropbox.com/s/c5jc16rdqnjglw3/ubuntu-11.10-r3-minimal-armel.tar.xz?dl=1&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
Once that has downloaded you want to verify that the download was&amp;nbsp;successful, we do this with whats called a checksum. &amp;nbsp;This is an advance algorithm that spits out a number that can be compared to verify the download was sucessful. To do so type the following by typing:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
md5sum ubuntu-11.10-r3-minimal-armel.tar.xz&lt;/blockquote&gt;
&lt;br /&gt;
You must get a result that matches this!&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
551e66185c5ce3c6270a8e38b8ac6457 ubuntu-11.10-r3-minimal-armel.tar.xz&lt;/blockquote&gt;
&lt;br /&gt;
Since this is a TAR file, similar to a ZIP in windows so we must extract the files and than go to that directory&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
tar xJf ubuntu-11.10-r3-minimal-armel.tar.xz&lt;br /&gt;
cd ubuntu-11.10-r3-minimal-armel&lt;/blockquote&gt;
&lt;br /&gt;
Now that you're in the right directory its time to call the script that RCN-EE (Robert Nelson) made what will partition and setup all the files on the micro SD card. Now this part its important to remember the drive name that we did above, "sdb" as this is substituted into the command below.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo ./setup_sdcard.sh --mmc /dev/sdb --uboot beagle_xm&amp;nbsp;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Mine is taking about 10 mins to setup, this may vary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After this is complete go into the disk utility found at &amp;nbsp;System -&amp;gt; Administration -&amp;gt;Disk Utility, and make sure you unmount and Safely Remove the drive (MAKE SURE YOU DO THIS EVERY TIME). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-XyLWvWlT3HQ/TySu8IZ1IXI/AAAAAAAAAJ0/KpnQl6mypGk/s1600/ubuntu+pic1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://4.bp.blogspot.com/-XyLWvWlT3HQ/TySu8IZ1IXI/AAAAAAAAAJ0/KpnQl6mypGk/s320/ubuntu+pic1.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Step Two&lt;/b&gt;:&lt;/div&gt;
&lt;div&gt;
Now that Ubuntu has been installed on your Beagleboard XM you can test it by inserting it into the beagleboard Xm and starting it up.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;NOTE: Default username:&lt;/b&gt; ubuntu &lt;b&gt;Password:&lt;/b&gt; temppwd&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
To check the kernel version type the following once it's booted up.&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
uname -r&lt;/blockquote&gt;
&lt;br /&gt;
At the time of this writing mine is version 3.1.6-x6 (This changes to 3.1.10-x7 by the end of the procedure), now to check the version of Ubuntu type&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
lsb_release -a&lt;/blockquote&gt;
&lt;br /&gt;
&lt;b&gt;SPI BACKGROUND&lt;/b&gt;&lt;br /&gt;
Now a little bit of SPI background knowledge is needed in order to get this working. First off&amp;nbsp;Serial Peripheral interface (SPI) is made up of 4 wires normally. It is a standard that was designed by Motorola for use with their&amp;nbsp;micro controllers. If you're interested in learning more about SPI i've added the Wikipedia link in the&amp;nbsp;bibliography&amp;nbsp;below. &amp;nbsp;Here is what a standard SPI setup looks like, multiple slaves is optional.&lt;br /&gt;
&lt;br /&gt;
SS - Slave Select (Beagleboard community calles this Chip Select (CS))&lt;br /&gt;
MOSI - Master Out Slave In&lt;br /&gt;
MISO - Master In Slave Out&lt;br /&gt;
CLK - Clock&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-W0cLgXcwXHc/TzBKeozZi_I/AAAAAAAAAK4/cCIK5FA3R7A/s1600/SPI+layout.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="242" src="http://2.bp.blogspot.com/-W0cLgXcwXHc/TzBKeozZi_I/AAAAAAAAAK4/cCIK5FA3R7A/s320/SPI+layout.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
On the Beagleboard XM there are 4 SPI controllers that come with the processor, but only two of them have been brought out to be used in the hardware, these are McSPI3( I will be using) &amp;nbsp;and McSPI4. I've written up a small table in excel to&amp;nbsp;demonstrate&amp;nbsp;this information (details came originally from BB XM manual).&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-1PLaEenqDU4/TyXwLoxhL3I/AAAAAAAAAJ8/1t-9P8vOWrQ/s1600/SPI+pins+BB+XM.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-1PLaEenqDU4/TyXwLoxhL3I/AAAAAAAAAJ8/1t-9P8vOWrQ/s320/SPI+pins+BB+XM.PNG" width="279" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;
It will be important later when we're testing the test program that we have the right pins connected. We'll connect pins 17 and 19 of the output pins MOSI into the MISO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step Three:&lt;/b&gt;&lt;br /&gt;
So now we've made it to the point of needing to setup the SPI pins in the Kernel. Everything i've learned is from a combination of time, searching all over the&amp;nbsp;internet&amp;nbsp;and a couple discussions with Robert Nelson and reading through lots of his scripts.&lt;br /&gt;
&lt;br /&gt;
Now from my reading there are two main parts that have to be changed. The first is the PIN MULTIPLEXER, the second is configuring the SPI_BOARD_INFO. &amp;nbsp;Most of this is skipped and done automatically through scripts we'll be using but its good to know whats going on. More information can be found at&amp;nbsp;&lt;a href="http://elinux.org/BeagleBoard/SPI"&gt;http://elinux.org/BeagleBoard/SPI&lt;/a&gt;&amp;nbsp;if you're interested.&lt;br /&gt;
&lt;br /&gt;
First there are a bunch of tools you need in your Ubuntu&amp;nbsp;environment. These include the ARM compiler and the Git tool, uboot tools and more, you'll understand as we progress. So lets install these ( virtualbox Ubuntu):&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
sudo apt-get install gcc-arm-linux-gnueabi git&lt;br /&gt;
sudo apt-get install ccache libncurses5-dev u-boot-tools&lt;/blockquote&gt;
&lt;br /&gt;
Next we need to download the latest version of Ubuntu with the SPI patch&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
git clone git://github.com/RobertCNelson/stable-kernel.git&lt;br /&gt;
cd stable-kernel&lt;br /&gt;
git checkout origin/v3.1.x -b v3.1.x&amp;nbsp;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Now before we continue we have to &lt;b&gt;un-comment&lt;/b&gt; the following line&amp;nbsp;by removing the "#"&amp;nbsp;symbol. Save the file and we'll continue to to the building.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
gedit build_kernel.sh&lt;/blockquote&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;b&gt;Un-comment&lt;/b&gt;,&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
#patch -p1 &amp;lt; ${DIR}/patches/beagle/0001-spi-testing.patch&amp;nbsp;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: you might have to copy the system.sh.sample file to system.sh like I had too.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote class="tr_bq"&gt;
cp system.sh.sample system.sh&lt;/blockquote&gt;
&lt;br /&gt;
Now you have to &lt;b&gt;un-comment&lt;/b&gt; a line in system.sh by removing the "#" symbol. Save it and continue.We will come back to edit this file more later, so keep note where it is and read through it if you have time. As this file holds the MMC directory for when we're using the load uImage script.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
gedit system.sh&lt;/blockquote&gt;
&lt;blockquote class="tr_bq"&gt;
#CC=arm-linux-gnueabi-&amp;nbsp;&lt;/blockquote&gt;
&lt;br /&gt;
In order to compile the kernel you have to first have all the basic Linux kernel files. To do this we must have the following files. By typing in the following, it should take a while (~500MB):&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
cd ~/&lt;br /&gt;
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git&lt;/blockquote&gt;
&lt;br /&gt;
After this is complete we are ready to compile the kernel, make sure you go back to the stable-kernel directory before you build the kernel.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
cd~/&lt;br /&gt;
cd stable-kernel&lt;br /&gt;
./build_kernel.sh&lt;/blockquote&gt;
&lt;br /&gt;
During this time it will change from a default terminal screen to a select screen that looks like the following.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-Wzf5DeCGnwk/Ty2szA1mdrI/AAAAAAAAAKM/ojaQSHSs7AI/s1600/kernel+compile+picture+1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="270" src="http://3.bp.blogspot.com/-Wzf5DeCGnwk/Ty2szA1mdrI/AAAAAAAAAKM/ojaQSHSs7AI/s400/kernel+compile+picture+1.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once your to the Kernel Configuration menu scroll down to the "Device Drivers" then go to "SPI Support" and than make sure the following are selected.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
[*] Debug support for SPI devices&lt;br /&gt;
[*] McSPI driver for OMAP&lt;br /&gt;
[*] User mode SPI device driver support&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
After you Exit it will ask you to save, do so. Then it will continue to install for about an hour or more depending on your system speed.&lt;br /&gt;
&lt;br /&gt;
Once the creation of the Kernel has been complete run the following line to apply this to the microSD card.&lt;br /&gt;
Two things have to be done before this can be done. First you have to edit the system.sh file again. Make the following adjustments according to your drive letter like the beginning of this article (/dev/sdb)&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
cd ~/&lt;br /&gt;
cd stable-kernel/&lt;br /&gt;
gedit system.sh&lt;/blockquote&gt;
&lt;br /&gt;
CHANGE the MMC and &lt;b&gt;un-comment&lt;/b&gt;&amp;nbsp;"#" in front of the ZRELADDR:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
MMC=/dev/sdb&lt;/blockquote&gt;
&amp;nbsp;and&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
ZRELADDR=0x80008000&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
If you desire to go into board-omap3beagle.c located in KERNEL you can change some of the default settings and then apply this patch.&lt;br /&gt;
&lt;br /&gt;
Note: you'll need to recompile the kernel afterwords I believe. I didn't have to update, this was advice from Robert.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
git diff &amp;gt; ../patches/beagle/0001-spi-testing.patch&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &lt;br /&gt;
Now the last step is to load all the files to the microSD card, make sure you're in the /stable-kernel/ directory still:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
. ./tools/load_uImage.sh&lt;/blockquote&gt;
&lt;span style="color: #333333; font-family: 'Bitstream Vera Sans Mono', 'Courier New', monospace;"&gt;&lt;span style="font-size: 12px; line-height: 16px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
After all the loading is done safely remove the flash card from your computer and load it into the Beagleboard Xm. Once everything is loaded up you should be able to change directories to the /dev/ and see your spidev3.0 and spidev3.1 device names there now.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Step 4&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Time to test this code and and see that everything works. To do this i'm going to load my microSD card back into virtualbox and test the ports. To do this we need to reference the table for the pins above and connect pins 17 and 19 which are SPI3.0 MOSI and MISO. They look like the following on the back of the board (MARKED IN RED DOTS).&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-4E0N49PL0Dc/Ty4oBhtXn0I/AAAAAAAAAKU/KmbekoSUlKA/s1600/pins+SPI+to+connect.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="206" src="http://4.bp.blogspot.com/-4E0N49PL0Dc/Ty4oBhtXn0I/AAAAAAAAAKU/KmbekoSUlKA/s400/pins+SPI+to+connect.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Once back in virtualbox using the terminal go to the following directory and compile the SPItest example.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote class="tr_bq"&gt;
cd linux-stable/&lt;br /&gt;
arm-linux-gnueabi-gcc Documentation/spi/spidev_test.c -o spitest&lt;/blockquote&gt;
&lt;br /&gt;
Once this is created, move the "spitest" to the main directory of your microSD card where Ubuntu is running, normally found in the /home/ubuntu area.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now un-mount and safely remove the flash card, hint, like you always should be doing. Insert back into the Beagleboard Xm and bootup. Once you've logged in run the following command to check if SPI is now working.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
./spitest -D /dev/spidev3.0&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
You should see a result like this.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;code&gt;0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,&lt;/code&gt;&lt;code&gt;
0x40, 0x00, 0x00, 0x00, 0x00, 0x95,&lt;/code&gt;&lt;code&gt;
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,&lt;/code&gt;&lt;code&gt;
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,&lt;/code&gt;&lt;code&gt;
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,&lt;/code&gt;&lt;code&gt;
0xDE, 0xAD, 0xBE, 0xEF, 0xBA, 0xAD,&lt;/code&gt;&lt;code&gt;
0xF0, 0x0D,&lt;/code&gt;&lt;/blockquote&gt;
&lt;div&gt;
&lt;span style="font-family: monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
If you didn't hook up the right pins on the beagleboard xm you'll see something like this&lt;br /&gt;
&lt;div&gt;
&lt;span style="font-family: monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span style="font-family: monospace;"&gt;0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: monospace;"&gt;0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: monospace;"&gt;0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,&lt;/span&gt;&lt;span style="font-family: monospace;"&gt;0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,&lt;/span&gt;&lt;span style="font-family: monospace;"&gt;0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,&lt;/span&gt;&lt;span style="font-family: monospace;"&gt;0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,&lt;/span&gt;&lt;span style="font-family: monospace;"&gt;0xFF, 0xFF,&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;
&lt;span style="font-family: monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
If you saw the first set of data above then you've completely setup SPI correctly. Congrats!!&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-Kuxl0uIdGrQ/TzAKFu88vTI/AAAAAAAAAKg/pUuwq6qAPU8/s1600/HPIM1199.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/-Kuxl0uIdGrQ/TzAKFu88vTI/AAAAAAAAAKg/pUuwq6qAPU8/s400/HPIM1199.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
(Probing the Beagleboard Xm with digital channels of Tektronix Scope)&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-AWL0PaxVHcE/TzAKGaZ8OlI/AAAAAAAAAKo/cBKR8h-OdJQ/s1600/HPIM1209.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/-AWL0PaxVHcE/TzAKGaZ8OlI/AAAAAAAAAKo/cBKR8h-OdJQ/s400/HPIM1209.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(Here is my whole setup probing the Beagleboard Xm with a Tektronix MDO4104-6)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-1XGrIy9CNbU/TzAOZIcE2eI/AAAAAAAAAKw/gMIckOfuvDU/s1600/tek00000.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/-1XGrIy9CNbU/TzAOZIcE2eI/AAAAAAAAAKw/gMIckOfuvDU/s400/tek00000.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp; &amp;nbsp; (screen capture from MDO4104-6 Mixed domain Oscilloscope showing decoded SPI signal)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As you can see I'm decoding the channels from the BBXm and i'm getting the correct SPITEST signal. This has been the final verification that i'm seeing both the Clock, MOSI and SS pins working. Sweet!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you liked my demonstration please leave feedback and pass this along.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Bibliography&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Here are a few useful links I used during this process...&lt;br /&gt;
&lt;br /&gt;
Helpful information on GIT commands and how things work:&lt;br /&gt;
&lt;a href="http://stackoverflow.com/questions/67699/how-do-i-clone-all-remote-branches-with-git"&gt;http://stackoverflow.com/questions/67699/how-do-i-clone-all-remote-branches-with-git&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
Good reference blog for Angtrom SPI setup:&lt;br /&gt;
&lt;a href="http://linuxdeveloper.blogspot.com/2011/10/enabling-spi-on-beagleboard-xm.html"&gt;http://linuxdeveloper.blogspot.com/2011/10/enabling-spi-on-beagleboard-xm.html&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
Wikipedia SPI details (I added if you wanted to learn more):&lt;br /&gt;
&lt;a href="http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus"&gt;http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
Elinux:&lt;br /&gt;
&lt;a href="http://elinux.org/BeagleBoardUbuntu"&gt;http://elinux.org/BeagleBoardUbuntu&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://elinux.org/BeagleBoard/SPI"&gt;http://elinux.org/BeagleBoard/SPI&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://elinux.org/BeagleBoard/SPI#Little_Word_about_recompiling_the_Kernel"&gt;http://elinux.org/BeagleBoard/SPI#Little_Word_about_recompiling_the_Kernel&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
Beagleboard Manual:&lt;br /&gt;
&lt;a href="http://beagleboard.org/static/BBxMSRM_latest.pdf"&gt;http://beagleboard.org/static/BBxMSRM_latest.pdf&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
General Linux, full detail SPI kernel compile:&lt;br /&gt;
&lt;a href="http://www.jumpnowtek.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=57&amp;amp;Itemid=62"&gt;http://www.jumpnowtek.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=57&amp;amp;Itemid=62&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/brianhensley/UnIP/~4/a9EtSR1Id0s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.brianhensley.net/feeds/4851422562009919509/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.brianhensley.net/2012/02/spi-working-on-beagleboard-xm-rev-c.html#comment-form" title="30 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/4851422562009919509?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/4851422562009919509?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/brianhensley/UnIP/~3/a9EtSR1Id0s/spi-working-on-beagleboard-xm-rev-c.html" title="SPI working on the Beagleboard XM rev C" /><author><name>Brian</name><uri>http://www.blogger.com/profile/12143981961115835179</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_xdQLaQMyKlY/TOnYFjETHQI/AAAAAAAAAAQ/HeqGcLXV3_I/S220/P7160514.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-XyLWvWlT3HQ/TySu8IZ1IXI/AAAAAAAAAJ0/KpnQl6mypGk/s72-c/ubuntu+pic1.PNG" height="72" width="72" /><thr:total>30</thr:total><feedburner:origLink>http://www.brianhensley.net/2012/02/spi-working-on-beagleboard-xm-rev-c.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIMR384fCp7ImA9WhRUGUg.&quot;"><id>tag:blogger.com,1999:blog-3872270766482215974.post-672906304106285725</id><published>2012-01-30T11:59:00.000-08:00</published><updated>2012-01-30T11:59:46.134-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-30T11:59:46.134-08:00</app:edited><title /><content type="html">&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;So for work we've got a&amp;nbsp;Superbowl&amp;nbsp;party coming up this Friday, we're going to have a chili cook off and a finger football competition. This party will be for just over 100+ people. Being a part of the "fun committee" I was in charge of creating the goal posts that people would be kicking their paper footballs through. &amp;nbsp;At first I was thinking of something simple, maybe 1.5 feet tall. But than I realized I could do this so much better. So here is a picture of what i've come up with. It stands 3.8 feet tall and there will be a movable cart that we'll have different distances for levels of the kicking competition. After three rounds we will declare a winner. I'm sooo excited for this Friday!!&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-vrqxY1JpYRw/Tyb2S9U8cEI/AAAAAAAAAKE/eLeJJ33BrXg/s1600/0130121027.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/-vrqxY1JpYRw/Tyb2S9U8cEI/AAAAAAAAAKE/eLeJJ33BrXg/s400/0130121027.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ya that's right! this thing rocks!&lt;br /&gt;
&lt;br /&gt;
Cheers,&lt;br /&gt;
Brian&lt;img src="http://feeds.feedburner.com/~r/brianhensley/UnIP/~4/K1zAWUgrJhU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.brianhensley.net/feeds/672906304106285725/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.brianhensley.net/2012/01/for-work-weve-got-coming-up-this-friday.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/672906304106285725?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/672906304106285725?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/brianhensley/UnIP/~3/K1zAWUgrJhU/for-work-weve-got-coming-up-this-friday.html" title="" /><author><name>Brian</name><uri>http://www.blogger.com/profile/12143981961115835179</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_xdQLaQMyKlY/TOnYFjETHQI/AAAAAAAAAAQ/HeqGcLXV3_I/S220/P7160514.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-vrqxY1JpYRw/Tyb2S9U8cEI/AAAAAAAAAKE/eLeJJ33BrXg/s72-c/0130121027.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.brianhensley.net/2012/01/for-work-weve-got-coming-up-this-friday.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8DSXwyfyp7ImA9WhRUF0Q.&quot;"><id>tag:blogger.com,1999:blog-3872270766482215974.post-2425913953055002933</id><published>2012-01-28T15:21:00.000-08:00</published><updated>2012-01-28T15:21:18.297-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-28T15:21:18.297-08:00</app:edited><title /><content type="html">To the world of blogging and beyond. Not much is known about why people share their thoughts in such an open&amp;nbsp;atmosphere. Think about it, people like you and me, sharing thought to strangers. Complete strangers, probable sitting at home in a country far away even. What is wrong with people! Why don't people get up off the couch and go to the gym or get a life of their own instead of reading about others they wish they knew? None the less, I begin my own.&lt;br /&gt;
&lt;br /&gt;
So where do I start? Do I talk about the weather, sports, my job, personal&amp;nbsp;achievements, projects, the topics can go on forever.&lt;br /&gt;
&lt;br /&gt;
Currently&amp;nbsp;I've&amp;nbsp;started a new project that my wife probable thinks takes up too much room in our little one bedroom&amp;nbsp;apartment. Taking up all of our desk space and sometimes leaving a mess. None the less it's good to have a project. Something to be constantly pushing your mind, skills, and effort towards. It doesn't matter how small or large your project idea is, what matters that it's pushing you towards your goal. Being creative, engineering, and keeping your mind sharp is very important, it leads to living longer. No I won't go into details about my project, might be a business one day. But the idea behind keeping your mind sharp can be very important.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/brianhensley/UnIP/~4/GZjrMPXb37c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.brianhensley.net/feeds/2425913953055002933/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.brianhensley.net/2012/01/to-world-of-blogging-and-beyond.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/2425913953055002933?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/2425913953055002933?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/brianhensley/UnIP/~3/GZjrMPXb37c/to-world-of-blogging-and-beyond.html" title="" /><author><name>Brian</name><uri>http://www.blogger.com/profile/12143981961115835179</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_xdQLaQMyKlY/TOnYFjETHQI/AAAAAAAAAAQ/HeqGcLXV3_I/S220/P7160514.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.brianhensley.net/2012/01/to-world-of-blogging-and-beyond.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIAQno6fCp7ImA9WhRUEEU.&quot;"><id>tag:blogger.com,1999:blog-3872270766482215974.post-4924993855485852744</id><published>2012-01-20T11:24:00.000-08:00</published><updated>2012-01-20T11:25:43.414-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-20T11:25:43.414-08:00</app:edited><title /><content type="html">My first post on brianhensley.net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cheers,&lt;br /&gt;
&lt;br /&gt;
~Brian&lt;img src="http://feeds.feedburner.com/~r/brianhensley/UnIP/~4/wQ5bVSrOOFQ" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/4924993855485852744?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3872270766482215974/posts/default/4924993855485852744?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/brianhensley/UnIP/~3/wQ5bVSrOOFQ/my-first-post-on-brianhensley.html" title="" /><author><name>Brian</name><uri>http://www.blogger.com/profile/12143981961115835179</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/_xdQLaQMyKlY/TOnYFjETHQI/AAAAAAAAAAQ/HeqGcLXV3_I/S220/P7160514.JPG" /></author><feedburner:origLink>http://www.brianhensley.net/2012/01/my-first-post-on-brianhensley.html</feedburner:origLink></entry></feed>
