<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://elinux.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://elinux.org/api.php?action=feedcontributions&amp;user=Harrisgw&amp;feedformat=atom</id>
		<title>eLinux.org - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://elinux.org/api.php?action=feedcontributions&amp;user=Harrisgw&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://elinux.org/Special:Contributions/Harrisgw"/>
		<updated>2013-05-25T19:15:02Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.22alpha</generator>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-20T03:15:45Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: /* Conclusions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat.&lt;br /&gt;
&lt;br /&gt;
In addition, lowpass and bandpass filters have been successfully implemented with Gstreamer. We are working on adding sound effects like flanging, reverberation and the &amp;quot;Wah-Wah&amp;quot;, a classic guitar effect. We will also continue to explore Gstreamer to fit our needs. &lt;br /&gt;
If time permits, it would be interesting to see if what we could also get netcat to do such as transferring video and/or audio from the beagle to the host.&lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ sudo apt-get install gnuplot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now everything should be ready &lt;br /&gt;
&lt;br /&gt;
* Note: The PS Eye should be attached to the Beagle board and both the host computer and beagle should be on the same Internet network&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Currently our project can take audio data from a Playstation Eye microphone array running on the Beagle Board and then plot it on a host computer. We found this method to be the fastest and smoothest way to implement the plotting of the audio signals with the limited C++ programming experience and time we had. The script running on the host can take information about the plots including the range, number of channels, number of windows, and the number of samples displayed. A demo of what our project can do can be found [http://youtu.be/YGzpW3jSiHo here].&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Our program works by running the AudioThru program we made work in Lab08 to generate the audio data. This audio data is then sent through a netcat connection with the host computer. This audio data is then plotted using GnuPlot with the given preferences for the plots supplied by the user. Scripts were created to simplify this entire process. The plots can be generated by only running one script on the beagle and one script on the host computer making the plotting easier for the user. The simple overview of our program can be summed up in the following diagram:&lt;br /&gt;
&lt;br /&gt;
[[File:Diagram.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
Initial work with Qt-Greg&lt;br /&gt;
&lt;br /&gt;
Plotting with gnuplot-Greg&lt;br /&gt;
&lt;br /&gt;
Sending data back to host for faster plotting with netcat- Greg&lt;br /&gt;
&lt;br /&gt;
Making scripts to somewhat automate the plotting- Greg&lt;br /&gt;
&lt;br /&gt;
Audio effect using Gstreamer- Mona&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot harder than first anticipated. Much time was spent trying to get a Qt application to run on the beagle and use Qwt to plot the audio data with not a lot of success. It would definately have been better if we had C++ experience and a familiarity with Qt. It would be very beneficial if time was not a factor to learn how to use Qt because it can provide some powerful applications especially on embedded devices. Though we couldn't get this project to work using Qt and to run soley on the beagle, we did want to have something to show for our project which is the current implementation. Getting a program to run only using the beagle, adding a GUI to enhance the user experience with our program, and having the ability to send video and audio back to a host computer are all enhancements that would be greaat to implement if time permitted.&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-20T03:03:59Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: /* Theory of Operation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat.&lt;br /&gt;
&lt;br /&gt;
In addition, lowpass and bandpass filters have been successfully implemented with Gstreamer. We are working on adding sound effects like flanging, reverberation and the &amp;quot;Wah-Wah&amp;quot;, a classic guitar effect. We will also continue to explore Gstreamer to fit our needs. &lt;br /&gt;
If time permits, it would be interesting to see if what we could also get netcat to do such as transferring video and/or audio from the beagle to the host.&lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ sudo apt-get install gnuplot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now everything should be ready &lt;br /&gt;
&lt;br /&gt;
* Note: The PS Eye should be attached to the Beagle board and both the host computer and beagle should be on the same Internet network&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Currently our project can take audio data from a Playstation Eye microphone array running on the Beagle Board and then plot it on a host computer. We found this method to be the fastest and smoothest way to implement the plotting of the audio signals with the limited C++ programming experience and time we had. The script running on the host can take information about the plots including the range, number of channels, number of windows, and the number of samples displayed. A demo of what our project can do can be found [http://youtu.be/YGzpW3jSiHo here].&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Our program works by running the AudioThru program we made work in Lab08 to generate the audio data. This audio data is then sent through a netcat connection with the host computer. This audio data is then plotted using GnuPlot with the given preferences for the plots supplied by the user. Scripts were created to simplify this entire process. The plots can be generated by only running one script on the beagle and one script on the host computer making the plotting easier for the user. The simple overview of our program can be summed up in the following diagram:&lt;br /&gt;
&lt;br /&gt;
[[File:Diagram.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
Initial work with Qt-Greg&lt;br /&gt;
&lt;br /&gt;
Plotting with gnuplot-Greg&lt;br /&gt;
&lt;br /&gt;
Sending data back to host for faster plotting with netcat- Greg&lt;br /&gt;
&lt;br /&gt;
Making scripts to somewhat automate the plotting- Greg&lt;br /&gt;
&lt;br /&gt;
Audio effect using Gstreamer- Mona&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-20T03:03:20Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: /* Theory of Operation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat.&lt;br /&gt;
&lt;br /&gt;
In addition, lowpass and bandpass filters have been successfully implemented with Gstreamer. We are working on adding sound effects like flanging, reverberation and the &amp;quot;Wah-Wah&amp;quot;, a classic guitar effect. We will also continue to explore Gstreamer to fit our needs. &lt;br /&gt;
If time permits, it would be interesting to see if what we could also get netcat to do such as transferring video and/or audio from the beagle to the host.&lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ sudo apt-get install gnuplot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now everything should be ready &lt;br /&gt;
&lt;br /&gt;
* Note: The PS Eye should be attached to the Beagle board and both the host computer and beagle should be on the same Internet network&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Currently our project can take audio data from a Playstation Eye microphone array running on the Beagle Board and then plot it on a host computer. We found this method to be the fastest and smoothest way to implement the plotting of the audio signals with the limited C++ programming experience and time we had. The script running on the host can take information about the plots including the range, number of channels, number of windows, and the number of samples displayed. A demo of what our project can do can be found [http://youtu.be/YGzpW3jSiHo here].&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Our program works by running the AudioThru program we made work in Lab08 to generate the audio data. This audio data is then sent through a netcat connection with the host computer. This audio data is then plotted using GnuPlot with the given preferences for the plots supplied by the user. Scripts were created to simplify this entire process. The plots can be generated by only running one script on the beagle and one script on the host computer making the plotting easier for the user. The simple overview of our program can be summed up in the following diagram &lt;br /&gt;
[[File:Diagram.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
Initial work with Qt-Greg&lt;br /&gt;
&lt;br /&gt;
Plotting with gnuplot-Greg&lt;br /&gt;
&lt;br /&gt;
Sending data back to host for faster plotting with netcat- Greg&lt;br /&gt;
&lt;br /&gt;
Making scripts to somewhat automate the plotting- Greg&lt;br /&gt;
&lt;br /&gt;
Audio effect using Gstreamer- Mona&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-20T03:02:03Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: /* Theory of Operation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat.&lt;br /&gt;
&lt;br /&gt;
In addition, lowpass and bandpass filters have been successfully implemented with Gstreamer. We are working on adding sound effects like flanging, reverberation and the &amp;quot;Wah-Wah&amp;quot;, a classic guitar effect. We will also continue to explore Gstreamer to fit our needs. &lt;br /&gt;
If time permits, it would be interesting to see if what we could also get netcat to do such as transferring video and/or audio from the beagle to the host.&lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ sudo apt-get install gnuplot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now everything should be ready &lt;br /&gt;
&lt;br /&gt;
* Note: The PS Eye should be attached to the Beagle board and both the host computer and beagle should be on the same Internet network&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Currently our project can take audio data from a Playstation Eye microphone array running on the Beagle Board and then plot it on a host computer. We found this method to be the fastest and smoothest way to implement the plotting of the audio signals with the limited C++ programming experience and time we had. The script running on the host can take information about the plots including the range, number of channels, number of windows, and the number of samples displayed. A demo of what our project can do can be found [http://youtu.be/YGzpW3jSiHo here].&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Our program works by running the AudioThru program we made work in Lab08 to generate the audio data. This audio data is then sent through a netcat connection with the host computer. This audio data is then plotted using GnuPlot with the given preferences for the plots supplied by the user. Scripts were created to simplify this entire process. The plots can be generated by only running one script on the beagle and one script on the host computer making the plotting easier for the user. The simple overview of our program can be summed up in the following diagram &lt;br /&gt;
[[File:Diagram.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
Initial work with Qt-Greg&lt;br /&gt;
&lt;br /&gt;
Plotting with gnuplot-Greg&lt;br /&gt;
&lt;br /&gt;
Sending data back to host for faster plotting with netcat- Greg&lt;br /&gt;
&lt;br /&gt;
Making scripts to somewhat automate the plotting- Greg&lt;br /&gt;
&lt;br /&gt;
Audio effect using Gstreamer- Mona&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/File:Diagram.JPG</id>
		<title>File:Diagram.JPG</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/File:Diagram.JPG"/>
				<updated>2012-02-20T02:54:40Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: Flow diagram for AudioThru Plot Beagle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Flow diagram for AudioThru Plot Beagle&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-20T00:02:56Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: /* Highlights */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat.&lt;br /&gt;
&lt;br /&gt;
In addition, lowpass and bandpass filters have been successfully implemented with Gstreamer. We are working on adding sound effects like flanging, reverberation and the &amp;quot;Wah-Wah&amp;quot;, a classic guitar effect. We will also continue to explore Gstreamer to fit our needs. &lt;br /&gt;
If time permits, it would be interesting to see if what we could also get netcat to do such as transferring video and/or audio from the beagle to the host.&lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ sudo apt-get install gnuplot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now everything should be ready &lt;br /&gt;
&lt;br /&gt;
* Note: The PS Eye should be attached to the Beagle board and both the host computer and beagle should be on the same Internet network&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Currently our project can take audio data from a Playstation Eye microphone array running on the Beagle Board and then plot it on a host computer. We found this method to be the fastest and smoothest way to implement the plotting of the audio signals with the limited C++ programming experience and time we had. The script running on the host can take information about the plots including the range, number of channels, number of windows, and the number of samples displayed. A demo of what our project can do can be found [http://youtu.be/YGzpW3jSiHo here].&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
Initial work with Qt-Greg&lt;br /&gt;
&lt;br /&gt;
Plotting with gnuplot-Greg&lt;br /&gt;
&lt;br /&gt;
Sending data back to host for faster plotting with netcat- Greg&lt;br /&gt;
&lt;br /&gt;
Making scripts to somewhat automate the plotting- Greg&lt;br /&gt;
&lt;br /&gt;
Audio effect using Gstreamer- Mona&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-13T02:24:33Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat.&lt;br /&gt;
&lt;br /&gt;
Future plans would be to add to sound effects to the audio. If time permits it would be interesting to see if what we could also get netcat to do such as transferring video and/or audio from the beagle to the host.&lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ sudo apt-get install gnuplot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now everything should be ready &lt;br /&gt;
&lt;br /&gt;
* Note: The PS Eye should be attached to the Beagle board and both the host computer and beagle should be on the same Internet network&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
Initial work with Qt-Greg&lt;br /&gt;
&lt;br /&gt;
Plotting with gnuplot-Greg&lt;br /&gt;
&lt;br /&gt;
Sending data back to host for faster plotting with netcat- Greg&lt;br /&gt;
&lt;br /&gt;
Making scripts to somewhat automate the plotting- Greg&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-13T02:22:28Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat.&lt;br /&gt;
&lt;br /&gt;
Future plans would be to add to sound effects to the audio. If time permits it would be interesting to see if what we could also get netcat to do such as transferring video and/or audio from the beagle to the host.&lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ sudo apt-get install gnuplot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now everything should be ready &lt;br /&gt;
&lt;br /&gt;
* Note: The PS Eye should be attached to the Beagle board and both the host computer and beagle should be on the same Internet network&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
Initial work with Qt- Greg&lt;br /&gt;
Plotting with gnuplot- Greg&lt;br /&gt;
Sending data back to host for faster plotting with netcat- Greg&lt;br /&gt;
Making scripts to somewhat automate the plotting- Greg&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-13T02:15:33Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat.&lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ sudo apt-get install gnuplot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now everything should be ready &lt;br /&gt;
&lt;br /&gt;
* Note: The PS Eye should be attached to the Beagle board and both the host computer and beagle should be on the same Internet network&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
List the major tasks in your project and who did what.&lt;br /&gt;
&lt;br /&gt;
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-12T21:37:42Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat.&lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE580-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE580-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE580-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE580-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE580-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE580-DisplayAudioWaveforms$ sudo apt-get install gnuplot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now everything should be ready &lt;br /&gt;
&lt;br /&gt;
* Note: The PS Eye should be attached to the Beagle board and both the host computer and beagle should be on the same Internet network&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE580-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
List the major tasks in your project and who did what.&lt;br /&gt;
&lt;br /&gt;
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-12T20:32:30Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat.&lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE580-DisplayAudioWaveforms .  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
List the major tasks in your project and who did what.&lt;br /&gt;
&lt;br /&gt;
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Contributions_and_Project_Status</id>
		<title>ECE497 Contributions and Project Status</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Contributions_and_Project_Status"/>
				<updated>2012-01-27T18:51:44Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
== Project Status ==&lt;br /&gt;
&lt;br /&gt;
Please edit this page and add your project to this list. Copy my [[ECE497 Project Template]] to your own eLinux page and include the title of your project in the name of the page.  &lt;br /&gt;
&lt;br /&gt;
# [[User:Yoder | Mark A. Yoder]], [[ECE497 Project Template | My Beagle Project]]&lt;br /&gt;
# [[user:Yanj|Mona Yan]] and [[user:Harrisgw| Greg Harrison]], [[PS EYE QT PROJECT | Playstation Eye Audio with Qt]]&lt;br /&gt;
&lt;br /&gt;
== Contributions ==&lt;br /&gt;
Please edit this page and add your user name, alphabetically by last name, to this list.&lt;br /&gt;
&lt;br /&gt;
Take a look at what you and others have contributed.&lt;br /&gt;
&lt;br /&gt;
# [[Special:Contributions/Yuming | Yuming Cao]]&lt;br /&gt;
# [[Special:Contributions/Yifei | Yifei Li]]&lt;br /&gt;
# [[Special:Contributions/Harrisgw | Greg Harrison]]&lt;br /&gt;
# [[Special:Contributions/mac | Jack Ma]]&lt;br /&gt;
# [[Special:Contributions/Gemini91 | Guanqun Wang]]&lt;br /&gt;
# [[Special:Contributions/Yanj | Mona Yan]]&lt;br /&gt;
# [[Special:Contributions/Yoder | Mark A. Yoder]]&lt;br /&gt;
# [[Special:Contributions/Yuhasmj | Michael Yuhas]]&lt;br /&gt;
# [[Special:Contributions/Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
# [[Special:Contributions/Zitnikdj | David Zitnik]]&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-01-27T18:48:41Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we would like to capture audio from the Playstation Eye microphone array and be able to display it in Qt using plots from Qwt. We would also like to include an option to select different effects for the captured audio on our Qt GUI.&lt;br /&gt;
&lt;br /&gt;
Currently we are working on setting up the Qt framework for the PS Eye and the effects for the audio.&lt;br /&gt;
&lt;br /&gt;
We currently have nothing working but it is in progress.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
Give step by step instructions on how to install your project on the SPEd2 image.  &lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
List the major tasks in your project and who did what.&lt;br /&gt;
&lt;br /&gt;
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-01-27T18:44:42Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: Created page with &amp;quot;Team members: Mona Yan,  Greg Harrison  == Executive Summary ==  Give two sentence intro to the project.  Give two sentences telling what works.  ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Give two sentence intro to the project.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
Give step by step instructions on how to install your project on the SPEd2 image.  &lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
List the major tasks in your project and who did what.&lt;br /&gt;
&lt;br /&gt;
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Tips_and_Tricks</id>
		<title>ECE497 Tips and Tricks</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Tips_and_Tricks"/>
				<updated>2012-01-21T02:29:21Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Some useful tips and tricks for Linux and the Beagleboard.&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
=== Quick Tips ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Tip&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;pre&amp;gt;$ gnome-open&amp;lt;/pre&amp;gt;&lt;br /&gt;
| Open a file or directory using the default program&lt;br /&gt;
|-&lt;br /&gt;
| Give the IP address a name&lt;br /&gt;
| Inside /etc/hosts add a line of the form &amp;lt;IP address&amp;gt; &amp;lt;alias&amp;gt; this will allow you to refer to the host by name.&lt;br /&gt;
|-&lt;br /&gt;
| Built-in GUI for gdb&lt;br /&gt;
| If you invoke gdb with the command line argument -tui, it will show a built-in GUI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;pre&amp;gt;$ ntpdate pool.ntp.org&amp;lt;/pre&amp;gt;&lt;br /&gt;
| This will go to a '''n'''etwork '''t'''ime '''p'''rotocol server and get the current time and set the Beagle to it.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== bash ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Tip&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| Ctrl-r&lt;br /&gt;
| Reverse incremental search&lt;br /&gt;
|-&lt;br /&gt;
| Ctrl-g&lt;br /&gt;
| Abort command&lt;br /&gt;
|-&lt;br /&gt;
| Esc-.&lt;br /&gt;
| Insert last argument from last command&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ssh ===&lt;br /&gt;
&lt;br /&gt;
==== Suspending ssh ====&lt;br /&gt;
&lt;br /&gt;
Most programs can be suspended by typing &amp;lt;code&amp;gt;^z&amp;lt;/code&amp;gt; (Ctrl-z).  If you have an '''ssh''' connection to another machine you can suspend it by entering &amp;lt;code&amp;gt;~^z&amp;lt;/code&amp;gt;.  You can resume the connection by entering ''fg''.&lt;br /&gt;
&lt;br /&gt;
==== ssh and X-windows ====&lt;br /&gt;
&lt;br /&gt;
When using ssh between to X-windows systems try&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host$ ssh -CX root@beagle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The -X set the DISPLAY variable on the remote machine so you can open windows from the beagle on your host machine.  &lt;br /&gt;
&lt;br /&gt;
The -C compressed the data over the link.  Good for slow connections.&lt;br /&gt;
&lt;br /&gt;
==== vnc ====&lt;br /&gt;
&lt;br /&gt;
You can run a vnc server on the Beagle.  Install it with:&lt;br /&gt;
 $ opkg update&lt;br /&gt;
 $ opkg install x11vnc&lt;br /&gt;
Install a password with&lt;br /&gt;
 $ x11vnc -storepasswd&lt;br /&gt;
Run it on the Beagle with&lt;br /&gt;
 $ x11vnc -display :0 -ssl -usepw -forever -q &amp;amp;&lt;br /&gt;
On your host, connect to it with:&lt;br /&gt;
 host $ vinagre&lt;br /&gt;
or '''Applications:Internet:Remote Desktop Viewer'''&lt;br /&gt;
&lt;br /&gt;
==== Authorizing ssh ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Note: This isn't currently working for me.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''ssh''' and '''scp''' can be set up for automatic authorization so you don't have to enter your password when using these commands. Here's how to do it:&lt;br /&gt;
&lt;br /&gt;
* On your host computer run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ ssh-keygen&lt;br /&gt;
host $ cd ~/.ssh&lt;br /&gt;
host $ scp id_rsa root@beagle:.&lt;br /&gt;
host $ ssh beagle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first command creates an authorization key and places it in your .ssh directory.  Remember the pass phrase you enter here.  You'll use it below.  The next two commands copy that key to your Beagle.  The last command connects to your Beagle.&lt;br /&gt;
* On your Beagle run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
beagle $ mkdir ~/.ssh&lt;br /&gt;
beagle $ cd ~/.ssh&lt;br /&gt;
beagle $ mv ../id_rsa.pub .&lt;br /&gt;
beagle $ cp id_rsa.pub authorized_keys&lt;br /&gt;
beagle $ exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here we create a '''.ssh''' directory and copy the public key into it.  The authorized_keys folder contains a list of all the machines that are authorized to connect to your Beagle without a password.&lt;br /&gt;
* Back on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ ssh -CX root@beagle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This time you should see a window pop up.  Enter your pass phrase from above.  You should be logged into your Beagle.  Log out and log in again.  This time you should get access without having to enter your pass phrase.&lt;br /&gt;
&lt;br /&gt;
[http://kimmo.suominen.com/docs/ssh/ Here] is move information on ssh authorization.&lt;br /&gt;
&lt;br /&gt;
=== Mounting dfs/afs ===&lt;br /&gt;
&lt;br /&gt;
You can set up your Linux box to directly mount your afs and dfs files.  The [http://lug.rose-hulman.edu/wiki/Main_Page Rose-Hulman Linux Users' Group] has a nice [http://lug.rose-hulman.edu/wiki/HOWTO_Use_sshfs_to_mount_AFS/DFS_home page] with the details .&lt;br /&gt;
&lt;br /&gt;
After installing &amp;lt;code&amp;gt;sshfs&amp;lt;/code&amp;gt; I added the following to my &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt; file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sshfs#username@dfs.Rose-hulman.edu:/DFS/MyDocs/username /home/username/MyDocs fuse user,noauto,uid=1000,gid=1000 0 0&lt;br /&gt;
sshfs#username@dfs.rose-hulman.edu:/DFS/Users/Y/username /home/username/dfs-home fuse user,noauto,uid=1000,gid=1000 0 0&lt;br /&gt;
sshfs#username@afs.rose-hulman.edu: /home/username/afs-home fuse user,noauto,uid=1000,gid=1000 0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You'll have to replace &amp;lt;code&amp;gt;username&amp;lt;/code&amp;gt; with your login name.  Then create the mount points:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir MyDocs&lt;br /&gt;
mkdir dfs-home&lt;br /&gt;
mkdir afs-home&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now you can mount your files by using:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mount dfs-home&lt;br /&gt;
cd dfs-home&lt;br /&gt;
ls&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You should now see your dfs files.  You can unmount using:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
sudo umount dfs-home&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tool chain work flows ===&lt;br /&gt;
&lt;br /&gt;
[http://www.angstrom-distribution.org/some-usefull-workflow-blogs Here] is a link to a list of workflows for various tool chains.&lt;br /&gt;
&lt;br /&gt;
=== Installing more applications ===&lt;br /&gt;
==== On the Beagle ====&lt;br /&gt;
&lt;br /&gt;
On the Beagle under Angstrom you use '''opkg''' to manage packages. Start with&lt;br /&gt;
&lt;br /&gt;
 beagle$ '''opkg update'''&lt;br /&gt;
&lt;br /&gt;
This updated the local database with the current version information.  Then&lt;br /&gt;
&lt;br /&gt;
 beagle$ '''opkg list &amp;gt; /tmp/list'''&lt;br /&gt;
 beagle$ '''less /tmp/list'''&lt;br /&gt;
&lt;br /&gt;
will list all the available packages.  You can also search here [1] to see what packages are available.&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.angstrom-distribution.org/repo/ www.angstrom-distribution.org/repo/]&lt;br /&gt;
&lt;br /&gt;
==== On the host ====&lt;br /&gt;
There are tree command that I use for managing packages.&lt;br /&gt;
&lt;br /&gt;
; dpkg&lt;br /&gt;
: is used for listing what packages are installed.&lt;br /&gt;
; synaptic&lt;br /&gt;
: is a GUI-based package manager.  I used it to discover new packages to install.&lt;br /&gt;
; apt-get&lt;br /&gt;
: is used to install and update packages.&lt;br /&gt;
&lt;br /&gt;
For example, let's suppose you run '''make menuconfig''' and the error message says&lt;br /&gt;
  *** Install ncurses (ncurses-devel) and try again.&lt;br /&gt;
&lt;br /&gt;
Let's see what's installed.&lt;br /&gt;
 host$ '''dpkg -l &amp;gt; /tmp/list'''&lt;br /&gt;
 host$ '''grep curses /tmp/list'''&lt;br /&gt;
 ii  libncurses5      5.7+20090803-2ubuntu3  shared  libraries for terminal handling&lt;br /&gt;
 ii  libncursesw5     5.7+20090803-2ubuntu3  shared libraries for terminal handling (wide&lt;br /&gt;
 ii  mtr-tiny         0.75-2build1           Full screen ncurses traceroute tool&lt;br /&gt;
 ii  ncurses-base     5.7+20090803-2ubuntu3  basic terminal type definitions&lt;br /&gt;
 ii  ncurses-bin      5.7+20090803-2ubuntu3  terminal-related programs and man pages&lt;br /&gt;
&lt;br /&gt;
Hmmm... there's something related to ncurses installed, but the error says something about ncurses-devel.  Let's fire up synaptic&lt;br /&gt;
 host$ '''synaptic &amp;amp;'''&lt;br /&gt;
Enter '''ncurses-devel''' in the search field.&lt;br /&gt;
[[File:Screenshot-Synaptic Package Manager .png | 500px]]&lt;br /&gt;
&lt;br /&gt;
The green dot in the '''S''' column says the package is installed. '''libncurses5-dev''' isn't installed.  Install it with:&lt;br /&gt;
 host$ '''sudo apt-get install libncurses5-dev'''&lt;br /&gt;
&lt;br /&gt;
And now your make should work.&lt;br /&gt;
&lt;br /&gt;
=== byobu - A Screen Manager ===&lt;br /&gt;
&lt;br /&gt;
For years Unix has had &amp;lt;code&amp;gt;screen&amp;lt;/code&amp;gt; which is a screen manager.  ''byobu'' is wrapper for screen that puts a nice face on it.  You can run byobu on your host computer and on the Beagle.  With byobu you can start a long running program (bitbake for example) in one terminal and detach from the terminal and the program will keeping running in the background.  Using byobu you can later attach to the program (possibly from another terminal) and see how the program is progressing.&lt;br /&gt;
&lt;br /&gt;
Install byobu on your host with:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo apt-get update&lt;br /&gt;
$ sudo apt-get install byobu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It's a bit harder on the Beagle.&lt;br /&gt;
# opkg update&lt;br /&gt;
# opkg install screen&lt;br /&gt;
# Go to [https://launchpad.net/byobu/+download here] and download the latest version to your Beagle.&lt;br /&gt;
# Run tar zxvf byobu_*.orig.tar.gz &lt;br /&gt;
# cd byobu* and follow the instructions in INSTALL. I had to hack one file.&lt;br /&gt;
# gedit /usr/local/lib/byobu/.constants.  Change the last two lines to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# command -v gsed &amp;gt;/dev/null &amp;amp;&amp;amp; export SED=&amp;quot;gsed&amp;quot; || export SED=&amp;quot;sed&amp;quot;&lt;br /&gt;
# command -v greadlink &amp;gt;/dev/null &amp;amp;&amp;amp; export READLINK=&amp;quot;greadlink&amp;quot; || export READLINK=&amp;quot;readlink&amp;quot;&lt;br /&gt;
export SED=&amp;quot;sed&amp;quot;&lt;br /&gt;
export READLINK=&amp;quot;readlink&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now you can run it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ byobu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You'll see a command prompt.  You'll also see some status information on the bottom two lines.  Type Ctrl-A ? for help.  Type Ctrl-A Ctrl-D to detach from the session.  Running byobu again will reattach you to the session.  Try running byobu in two windows at the same time.  You should see the same session in both.&lt;br /&gt;
&lt;br /&gt;
Hmmm....  I had to reinstall and it doesn't seem to be working now.&lt;br /&gt;
&lt;br /&gt;
=== Finding what opkg installed ===&lt;br /&gt;
&lt;br /&gt;
Once you've run opkg, how do you know what's been installed?  Take a look in '''/usr/lib/opkg/info'''.  The files that end in .list contain a list of what's been installed.&lt;br /&gt;
&lt;br /&gt;
=== Backing up an SD card with dd ===&lt;br /&gt;
&lt;br /&gt;
Here's the command I use to backup an SD card. I use '''System:Administration:Disk Utility''' to figure out the path to the card.  In this case it's ''/dev/sdc''&lt;br /&gt;
&lt;br /&gt;
 $ sudo time dd if=''/dev/sdc'' of=FIE2011.img bs=4M count=1000&lt;br /&gt;
 $ sudo chown yoder:yoder FIE2011.img&lt;br /&gt;
 $ md5sum FIE2011.img &amp;gt; FIE2011.img.md5&lt;br /&gt;
 $ bzip2 -k FIE2011.img&lt;br /&gt;
&lt;br /&gt;
It takes about 5 minutes to dd a 4G card, 1.2 minutes for md5 and bzip2 takes about 23 minutes.&lt;br /&gt;
&lt;br /&gt;
=== CSSE's Linux reference page ===&lt;br /&gt;
&lt;br /&gt;
CSSE332, Operating Systems, has a nice page of Linux resources [http://www.rose-hulman.edu/class/csse/csse332/current/Resources/ here].&lt;br /&gt;
&lt;br /&gt;
=== Local Ubuntu Update Mirror ===&lt;br /&gt;
&lt;br /&gt;
Darryl Mouck in CSSE has passed this on...&lt;br /&gt;
&lt;br /&gt;
We host a local mirror for all ubuntu updates. This is from the current distro back to hardy; it hosts every distro that ubuntu currently supports.&lt;br /&gt;
&lt;br /&gt;
In order to get your system to point to our mirror, please copy and paste this rather lengthy command into a terminal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo cp /etc/apt/sources.list{,.old} &amp;amp;&amp;amp; \&lt;br /&gt;
sudo sh -c '\&lt;br /&gt;
. /etc/lsb-release &amp;amp;&amp;amp;&lt;br /&gt;
echo &amp;quot;&lt;br /&gt;
deb http://ftp.csse.rose-hulman.edu/ubuntu $DISTRIB_CODENAME main restricted universe multiverse&lt;br /&gt;
deb http://ftp.csse.rose-hulman.edu/ubuntu $DISTRIB_CODENAME-updates main restricted universe multiverse&lt;br /&gt;
deb http://ftp.csse.rose-hulman.edu/ubuntu $DISTRIB_CODENAME-security main restricted universe multiverse&lt;br /&gt;
&amp;quot; &amp;gt; /etc/apt/sources.list' &amp;amp;&amp;amp; sudo apt-get update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The text and further instructions are available [http://csse.rose-hulman.edu/news-mainmenu-2/27-linux-distros/102-ubuntu here].&lt;br /&gt;
&lt;br /&gt;
The script makes a backup of the updates file and replaces it with links to our mirror. The $DISTRIB_CODENAME is replaced by whatever distro you are running (eg. lucid, maverick, natty etc.). I wish I could take credit for it, but it was a joint effort with Mike McLeish :-)&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
Most of the work is done under Linux; however there are some handy Windows-based tools.&lt;br /&gt;
&lt;br /&gt;
=== Tera Term ===&lt;br /&gt;
&lt;br /&gt;
[http://www.tucows.com/preview/195282 Tera Term] give you access to the serial port.&lt;br /&gt;
&lt;br /&gt;
=== Notepad++ ===&lt;br /&gt;
&lt;br /&gt;
[http://notepad-plus-plus.org/ Notepad++] is a nice text editor for Windows.&lt;br /&gt;
&lt;br /&gt;
== Set up on the BeagleBoard ==&lt;br /&gt;
&lt;br /&gt;
=== Accessing the Beagle via the Serial Port ===&lt;br /&gt;
&lt;br /&gt;
During boot up the Beagle logs various messages on the serial port.  You can see these messages by:&lt;br /&gt;
&lt;br /&gt;
* See what USB/tty devices are already attached to your host&lt;br /&gt;
 host# '''ls /dev/ttyU*'''&lt;br /&gt;
* Attach a serial to USB converter to your host computer and the Beagle's serial port.&lt;br /&gt;
* See what new USB/tty devices appeared&lt;br /&gt;
 host# '''ls /dev/ttyU*'''&lt;br /&gt;
* On my host, '''/dev/ttyUSB1''' appeared. On the host computer run&lt;br /&gt;
&lt;br /&gt;
 host$ '''byobu /dev/ttyUSB''1'' 115200'''&lt;br /&gt;
where '''ttyUSB1''' is what appeared when you plugged in your converter.&lt;br /&gt;
&lt;br /&gt;
You are now talking to your Beagle's serial port. Login quickly.  There appears to be a bug that makes garbage appear on your screen if you wait too long. Try&lt;br /&gt;
 beagle$ '''shutdown -r now'''&lt;br /&gt;
&lt;br /&gt;
You will see the shutdown messages, followed by the U-boot messages.  After a 3 second (or so) delay you will see the kernel booting.&lt;br /&gt;
&lt;br /&gt;
'''Tip 1''': Ctrl-a H will cause the data on the serial port to be logged.  See&lt;br /&gt;
 host$ '''man byobu'''&lt;br /&gt;
for help.&lt;br /&gt;
&lt;br /&gt;
'''Tip 2''': &amp;lt;F6&amp;gt; will disconnect from the session. You can reconnect later.&lt;br /&gt;
&lt;br /&gt;
=== Installing Ubuntu ===&lt;br /&gt;
&lt;br /&gt;
I've installed 2 different versions of Ubuntu on my SD cards. Each of my SD cards is 4GB, and this is just large enough to hold the Ubuntu images.&lt;br /&gt;
&lt;br /&gt;
I followed the instructions from [http://elinux.org/BeagleBoardUbuntu#Maverick_10.10 here] and [http://elinux.org/BeagleBoardUbuntu#Maverick_10.10_2 here].&lt;br /&gt;
&lt;br /&gt;
The first link references a Ubuntu wiki which details how to install a netbook edition of Ubuntu on ARM/OMAP processor-based systems. It is not beagle-specific. This image runs a little slowly, but not much slower than the [http://elinux.org/ECE497_Lab01_Installing_Angstrom_on_Your_Beagle_%28precompiled%29#From_beagleboard-validation.s3.amazonaws.com SPEd image].&lt;br /&gt;
&lt;br /&gt;
The second link references instructions for installing another image. This image is very minimal, and doesn't have a gui. There are instructions for installing a gui, which I did, with good success. As far as I can tell, even with the gui, this is the fastest image so far.&lt;br /&gt;
&lt;br /&gt;
=== Installing Always Innovating's Super Jumbo ===&lt;br /&gt;
&lt;br /&gt;
[http://www.alwaysinnovating.com/home/index.htm Always Innovating] works with branded products and services companies that are looking to deliver great touch devices as part of their offerings. They have published a free SD card image for the BeagleBoard that runs Angstrom, Android, Ubuntu, and ChromiumOS.  [http://www.alwaysinnovating.com/beagleboard/ Here's] a video showing what it can do.&lt;br /&gt;
&lt;br /&gt;
I've put a copy of the compressed image on my DFS site.  Feal free to play with it.  [http://www.alwaysinnovating.com/wiki/index.php/Beagleboard Here's] a wiki that shows how to switch between OS's on the fly.&lt;br /&gt;
&lt;br /&gt;
=== Resizing an SD card partition via the Beagle ===&lt;br /&gt;
&lt;br /&gt;
The following is a slick way to boot the Beagle so it isn't using the SD, then repartition the SD card.  It came from [http://groups.google.com/group/beagleboard/browse_thread/thread/3be77bc54feb08a6/b792e092e3c48989?lnk=gst&amp;amp;q=resize+partition#b792e092e3c48989]&lt;br /&gt;
		&lt;br /&gt;
Jason Kridner says ...&lt;br /&gt;
I got a related question from Mark about how to perform the partition &lt;br /&gt;
resizing, so I figured I'd address that here.  I don't believe you'd &lt;br /&gt;
be able to resize a mounted partition and that this operation would &lt;br /&gt;
require another file system to mount.  Because this image does not &lt;br /&gt;
have the ramdisk, I downloaded the one used being shipped with the xM &lt;br /&gt;
boards today [http://www.google.com/url?sa=D&amp;amp;q=http://beagleboard-validation.s3.amazonaws.com/deploy/201008201549/sd/ramdisk.gz]. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# wget &lt;br /&gt;
http://www.google.com/url?sa=D&amp;amp;q=http://beagleboard-validation.s3.amazonaws.com/deploy/201008201549/sd/ramdisk.gz&lt;br /&gt;
Connecting to beagleboard-validation.s3.amazonaws.com (72.21.214.39:80) &lt;br /&gt;
ramdisk.gz           100% |*******************************| 19492k 00:00:00 ETA &lt;br /&gt;
root@beagleboard:~# cp ramdisk.gz /media/mmcblk0p1/ &lt;br /&gt;
root@beagleboard:~# shutdown -r now &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
I halted the board during reboot and did: &lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
OMAP3 beagleboard.org # mmc rescan 0 &lt;br /&gt;
OMAP3 beagleboard.org # run loaduimage &lt;br /&gt;
Loading file &amp;quot;/boot/uImage&amp;quot; from mmc device 0:2 (xxa2) &lt;br /&gt;
3194256 bytes read &lt;br /&gt;
OMAP3 beagleboard.org # run loadramdisk &lt;br /&gt;
reading ramdisk.gz &lt;br /&gt;
19960110 bytes read &lt;br /&gt;
OMAP3 beagleboard.org # run ramboot &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
I allowed it to boot and did: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# umount /dev/mmcblk0p1 &lt;br /&gt;
root@beagleboard:~# umount /dev/mmcblk0p2 &lt;br /&gt;
root@beagleboard:~# fdisk /dev/mmcblk0 &lt;br /&gt;
Command (m for help): p &lt;br /&gt;
Disk /dev/mmcblk0: 3965 MB, 3965190144 bytes &lt;br /&gt;
255 heads, 63 sectors/track, 482 cylinders &lt;br /&gt;
Units = cylinders of 16065 * 512 = 8225280 bytes &lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes &lt;br /&gt;
Disk identifier: 0x00000000 &lt;br /&gt;
        Device Boot      Start         End      Blocks   Id  System &lt;br /&gt;
/dev/mmcblk0p1   *           1          15      120456    c  W95 FAT32 (LBA) &lt;br /&gt;
/dev/mmcblk0p2              16         444     3445942+  83  Linux &lt;br /&gt;
Command (m for help): d &lt;br /&gt;
Partition number (1-4): 2 &lt;br /&gt;
Command (m for help): n &lt;br /&gt;
Command action &lt;br /&gt;
   e   extended &lt;br /&gt;
   p   primary partition (1-4) &lt;br /&gt;
p &lt;br /&gt;
Partition number (1-4): 2 &lt;br /&gt;
First cylinder (16-482, default 16): &lt;br /&gt;
Using default value 16 &lt;br /&gt;
Last cylinder, +cylinders or +size{K,M,G} (16-482, default 482): &lt;br /&gt;
Using default value 482 &lt;br /&gt;
Command (m for help): w &lt;br /&gt;
The partition table has been altered! &lt;br /&gt;
Calling ioctl() to re-read partition table. &lt;br /&gt;
Syncing disks. &lt;br /&gt;
root@beagleboard:~# umount /dev/mmcblk0p2 &lt;br /&gt;
root@beagleboard:~# resize2fs /dev/mmcblk0p2 &lt;br /&gt;
resize2fs 1.41.9 (22-Aug-2009) &lt;br /&gt;
Resizing the filesystem on /dev/mmcblk0p2 to 937794 (4k) blocks. &lt;br /&gt;
The filesystem on /dev/mmcblk0p2 is now 937794 blocks long. &lt;br /&gt;
root@beagleboard:~# shutdown -r now &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
I then waited for the reboot.  That was all there was to it. &lt;br /&gt;
Going the other way would require performing the resize operation &lt;br /&gt;
first and specifying the size. &lt;br /&gt;
&lt;br /&gt;
Anyone care to automate this and submit this to Angstrom?&lt;br /&gt;
 &lt;br /&gt;
=== Sharing Laptop Internet Connection with BeagleBoard ===&lt;br /&gt;
Two options: One uses Ubuntu's GUI network connections manager, the other requires modifying things yourself.&lt;br /&gt;
&lt;br /&gt;
==== Option 1 - Using Ubuntu Network Connections GUI ====&lt;br /&gt;
&lt;br /&gt;
# In Ubuntu, go to System -&amp;gt; Preferences -&amp;gt; Network Connections&lt;br /&gt;
# On the 'Wired' tab, select 'Auto eth0' and click 'Edit' (Note: name may be other than 'eth0'.  If nothing exists in this list, then make sure there is '''not''' an entry starting with 'auto eth0' in your /etc/network/interfaces file; such an entry prevents Network Manager from managing that interface.)&lt;br /&gt;
# Click the 'IPv4 Settings' tab and change 'Method' to 'Shared to other computers'&lt;br /&gt;
# Click apply&lt;br /&gt;
# Restart Ubuntu&lt;br /&gt;
# Connect the BeagleBoard to the laptop with the crossover Ethernet cable&lt;br /&gt;
# Boot the BeagleBoard - if Ubuntu was already running and the Ethernet cable was already plugged in, the BeagleBoard should automatically get assigned an IP address and you should be able to access the Internet on the BeagleBoard via the laptop's wireless connection&lt;br /&gt;
&lt;br /&gt;
==== Option 2 - Modifying Things Yourself (DHCP Server) ====&lt;br /&gt;
&lt;br /&gt;
This will setup a DHCP server on the host machine that will listen to the Ethernet port and assign an IP address to the BeagleBoard when it is connected with an Ethernet crossover cable.  The host machine will then act as a router using NAT to send packets out the wifi interface.&amp;lt;br /&amp;gt;&lt;br /&gt;
A number of steps were taken from the [https://help.ubuntu.com/community/Internet/ConnectionSharing Ubuntu Community Documentation].&amp;lt;br /&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* 'eth0' will refer to the internal interface (connected to the BeagleBoard) and 'wlan0' will refer to the external interface (connected to the Internet).  Your interface names may differ.&lt;br /&gt;
* A number of configuration files are changed.  It's a good idea to save a backup copy of these before modifying them.&lt;br /&gt;
&lt;br /&gt;
On the host machine, configure eth0 for a static IP:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo ifconfig eth0 192.168.1.13&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you don't want to configure this after every boot, add an entry to /etc/network/interfaces with the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto eth0&lt;br /&gt;
    address 192.168.1.13&lt;br /&gt;
    netmask 255.255.255.0&lt;br /&gt;
    network 192.168.1.0&lt;br /&gt;
    broadcast 192.168.1.255 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the host machine, configure the IP tables to use NAT translation for routing packets:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo iptables -A FORWARD -o wlan0 -i eth0 -s 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;
sudo iptables -A POSTROUTING -t nat -j MASQUERADE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To avoid having to setup the IP tables after every boot, save the IP tables&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo iptables-save | sudo tee /etc/iptables.sav&amp;lt;/pre&amp;gt;&lt;br /&gt;
And add the following command to /etc/rc.local (or other appropriate file for your distribution) to be run at boot&lt;br /&gt;
&amp;lt;pre&amp;gt;iptables-restore &amp;lt; /etc/iptables.sav&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
IP forwarding needs to be enabled:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo sh -c &amp;quot;echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
To make sure this is set after rebooting, add these lines to /etc/sysctl.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
net.ipv4.conf.default.forwarding=1&lt;br /&gt;
net.ipv4.conf.all.forwarding=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install the DHCP server software&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install dhcp3-server&amp;lt;/pre&amp;gt;&lt;br /&gt;
And edit the configuration file /etc/dhcp3/dhcpd.conf (comment out any already existing lines other than &amp;quot;ddns-update-style none;&amp;quot;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Added for DHCP with BeagleBoard&lt;br /&gt;
default-lease-time 600;&lt;br /&gt;
max-lease-time 7200;&lt;br /&gt;
option subnet-mask 255.255.255.0;&lt;br /&gt;
option broadcast-address 192.168.1.255;&lt;br /&gt;
option routers 192.168.1.13;     #&amp;lt;--This must match the IP address you statically set for eth0&lt;br /&gt;
option domain-name-servers 137.112.4.196,137.112.5.28,137.112.12.11;    #&amp;lt;--Rose-Hulman's DNS servers (according to my laptop, at least)&lt;br /&gt;
option domain-name &amp;quot;rose-hulman.edu&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
subnet 192.168.1.0 netmask 255.255.255.0 {&lt;br /&gt;
range 192.168.1.14 192.168.1.14;  #&amp;lt;--You can specify a larger range; I used this to force my BeagleBoard to always have the same IP so I could add an entry for that IP in /etc/hosts&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You may need to edit /etc/default/dhcp3-server to specify the interface for the DHCP server&lt;br /&gt;
&amp;lt;pre&amp;gt;INTERFACES=&amp;quot;eth0&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then restart the DHCP server service&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo service dhcp3-server restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may need to reboot your host machine, and it may be necessary to run the command above to restart the DHCP server every time you boot (I'm not sure if it starts appropriately at boot).&lt;br /&gt;
&lt;br /&gt;
Now connect the BeagleBoard to the host machine with a crossover Ethernet cable and boot the Beagle.  After booting, run 'ifconfig' to see if the Beagle was assigned an IP address.  If it does not have an IP address, try running the command 'dhclient usb0'.&lt;br /&gt;
&lt;br /&gt;
Once the Beagle does have an IP address, try&lt;br /&gt;
&amp;lt;pre&amp;gt;ping -c 3 -W 10 www.google.com&amp;lt;/pre&amp;gt;&lt;br /&gt;
to test if the setup is working correctly.  If it complains about a bad name, the DNS servers are incorrect; try pinging a specific IP such as 8.8.8.8 to see if packets get through (though unless you want to rely on all IP addresses, you will need to get some DNS servers that work).&lt;br /&gt;
&lt;br /&gt;
==== Option 3 - Manual Routing, Static Beagle IP ====&lt;br /&gt;
&lt;br /&gt;
This will setup the routing on Ubuntu (sending all eth0 traffic out wlan0).  It will then set a static IP address on the BeagleBoard (so you can stick an entry for your BeagleBoard in /etc/hosts for convenience).  The key difference from Option 2 is that the DHCP server in that option supplied the BeagleBoard with DNS servers.  In this option, we add a script that gives the BeagleBoard some static DNS server addresses every time it boots.&lt;br /&gt;
&lt;br /&gt;
First, follow through the steps in Option 2 right up until it starts talking about installing the DHCP server.  Instead of installing the DHCP server, do the following.&lt;br /&gt;
&lt;br /&gt;
On your BeagleBoard, add the following entry to &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; (comment out any pre-existing entries regarding 'usb0')&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto usb0&lt;br /&gt;
iface usb0 inet static&lt;br /&gt;
      address 192.168.1.14         # This is the static IP address of your choice&lt;br /&gt;
      netmask 255.255.255.0&lt;br /&gt;
      network 192.168.1.0&lt;br /&gt;
      gateway 192.168.1.13         # This must match the static IP address you assigned to eth0 on your host machine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
After booting, the BeagleBoard is now configured with a static IP address and knows the gateway for all its traffic is the address of your host machine.  The last thing to do is to make sure your BeagleBoard knows what DNS servers to use.  This information is stored in the &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; file.  You could add it manually every time after boot, but we'll make a script to do it at boot instead.&lt;br /&gt;
&lt;br /&gt;
On your BeagleBoard, navigate to the /etc/rc5.d/ directory.  In this directory, create a file named &amp;lt;code&amp;gt;S99&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; can be anything you prefer.  My file was named &amp;lt;code&amp;gt;S99SetRoseHulmanNameServers&amp;lt;/code&amp;gt;.  Add the following inside that file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#! /bin/sh&lt;br /&gt;
echo &amp;quot;nameserver 137.112.4.196&amp;quot; &amp;gt;&amp;gt; /etc/resolv.conf      # These three IP addresses are the Rose-Hulman DNS servers&lt;br /&gt;
echo &amp;quot;nameserver 137.112.5.28&amp;quot; &amp;gt;&amp;gt; /etc/resolv.conf       # Replace them with whatever DNS servers you are using&lt;br /&gt;
echo &amp;quot;nameserver 137.112.12.11&amp;quot; &amp;gt;&amp;gt; /etc/resolv.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
That should be it.  Assuming all cables are connected properly and you have a WiFi connection on the host machine, after booting the BeagleBoard should have a usable Internet connection.&lt;br /&gt;
&lt;br /&gt;
=== Using u-boot to specify a MAC address at boot ===&lt;br /&gt;
The BeagleBoard has a problem where Linux will randomly select a MAC address at boot. In order to get around this, [http://maxgalemin.blogspot.com/2010/11/patch-for-fixing-random-mac-address-on.html one blogger] provides a patch to enable a kernel command line parameter to set a MAC address. Below is one way to apply, your mileage may vary.&lt;br /&gt;
&lt;br /&gt;
# Make sure your kernel compiles and boots.&lt;br /&gt;
# Grab the patch, and open it with gedit&lt;br /&gt;
# Open .../git/drivers/net/usb/smsc95xx.c&lt;br /&gt;
# Go to line 64-ish, and look for a place to insert the first code with plus signs preceding each line. Remove the plus signs.&lt;br /&gt;
# Go to 656-ish, and repeat for the other block of code.&lt;br /&gt;
# Save and re-compile.&lt;br /&gt;
# Install the new kernel as normal.&lt;br /&gt;
# Edit the kernel command line. There are two ways to do this:&lt;br /&gt;
## Edit the uBoot source and recompile &lt;br /&gt;
### Go to u-boot, and edit ../include/configs/omap3_beagle.h&lt;br /&gt;
### Change mmcargs, nandargs, and ramargs to include a parameter for &amp;quot;ethaddr=...&amp;quot;, where ... is your MAC address.&lt;br /&gt;
### Save, close, recompile.&lt;br /&gt;
### Install the new u-boot as normal.&lt;br /&gt;
## Edit the boot.scr file&lt;br /&gt;
### See [[ECE497 Modifying Kernel Command Line Parameters| Modifying Kernel Command Line Parameters]]&lt;br /&gt;
# Register your MAC Address via any method that works, and enjoy reduced-hassle internet access on your Beagle.&lt;br /&gt;
# Optionally, Update opkg.&lt;br /&gt;
&lt;br /&gt;
=== Rename an External Storage Device ===&lt;br /&gt;
&lt;br /&gt;
I ran out of space on my Linux (Ubuntu) partition, so I opted to do all my development on an external hard drive. This works just fine, except that the drive is labeled &amp;quot;Expansion Drive&amp;quot; and the space in there causes problems in some of the setup scripts. It is possible to add an entry in /etc/fstab that mounts the device with a certain name, but this is very cumbersome, for many reasons. Instead, I used this [1] very helpful guide to change the label on my external drive.&lt;br /&gt;
&lt;br /&gt;
[1] [http://help.ubuntu.com/community/RenameUSBDrive help.ubuntu.com/community/RenameUSBDrive]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Setup a USB Wireless Device on Beagle ===&lt;br /&gt;
The device I used to setup a wireless connection on the Beagle Board was the Linksys Compact Wireless-G USB Network Adapter with SpeedBooster.&lt;br /&gt;
&lt;br /&gt;
I first opened the wpa_supplicant.conf file to setup my networks:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# cd /etc&lt;br /&gt;
root@beagleboard:/etc# gedit wpa_supplicant.conf &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This file is filled with numerous examples of possible wireless configurations for you to basically fill in. After looking at the examples, I scrolled down to the bottom of the page and set up two networks: one for home and one for school. Here are examples of my setup networks:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Home Network&lt;br /&gt;
network={&lt;br /&gt;
        ssid=&amp;quot;YourHomeNetworkName&amp;quot;&lt;br /&gt;
        psk= &amp;quot;YourHomeNetworkPassword&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#School Network&lt;br /&gt;
network={&lt;br /&gt;
        ssid=&amp;quot;RHIT-1X&amp;quot;&lt;br /&gt;
        proto=WPA&lt;br /&gt;
        key_mgmt=WPA-EAP&lt;br /&gt;
        pairwise=CCMP&lt;br /&gt;
        group=TKIP&lt;br /&gt;
        eap=PEAP&lt;br /&gt;
        phase1=&amp;quot;peapver=0 peaplabel=0&amp;quot;&lt;br /&gt;
        phase2=&amp;quot;auth=MSCHAPV2&amp;quot;&lt;br /&gt;
        scan_ssid=1&lt;br /&gt;
        identity= &amp;quot;YourSchoolUsername&amp;quot;&lt;br /&gt;
        password= &amp;quot;YourSchoolPassword&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For the network examples above,the quotation marks actually belong there but replace the Your.... areas with your corresponding information.When finished editing save and exit this file.&lt;br /&gt;
The information for the RHIT school network was found here:[http://lug.rose-hulman.edu/wiki/RHIT-1X RHLUG] &lt;br /&gt;
&lt;br /&gt;
Now you must specify that this is the file to use for the wireless device:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:/etc# cd network&lt;br /&gt;
root@beagleboard:/etc/network# gedit interfaces &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This file will display all of the different types of Internet connections you have setup.&lt;br /&gt;
To use the wpa_supplicant.conf file, scroll down to around line 42 of the code and uncomment the configuration for wpasupplicant. After doing this make sure all of the above lines mentioning anything about wlan0 are commented out. Return back to where it says &amp;quot;iface wlan0 inet dhcp&amp;quot; that you uncommented around line 42.&lt;br /&gt;
Add &amp;quot;auto wlan0&amp;quot; above this line, make sure the line &amp;quot;wpa-conf /etc/wpa_supplicant.conf&amp;quot; is uncommented below the iface line, and change the wpa-driver line below that line to wext. So after all of that the code in this file for the wireless device should be the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto wlan0 &lt;br /&gt;
  iface wlan0 inet dhcp&lt;br /&gt;
     wpa-conf /etc/wpa_supplicant.conf&lt;br /&gt;
     wpa-driver wext&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
NOTE: the auto wlan0 command in this file means that this device will load at boot time. You can take the time in here now to comment out any interfaces you don't use like auto usb0 to make these devices not load at boot time, which will increase the speed at which you boot up.&lt;br /&gt;
Save and exit this file&lt;br /&gt;
&lt;br /&gt;
Once you have finished this you can either restart the Beagle Board or:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:/etc/network# cd&lt;br /&gt;
root@beagleboard:~# /etc/init.d/networking restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
I've found that a lot of the time the interface doesn't receive an IP address when it boots up. If you run ifconfig in the terminal you should see your wireless device connected to a network. If it is connected but no IP address I do the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ifdown wlan0&lt;br /&gt;
 # it will report messages here and then&lt;br /&gt;
root@beagleboard:~# ifup wlan0&lt;br /&gt;
  # more messages and it should report connecting and having an IP address&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This ifdown ifup method has worked every time for me so far but if anyone can find a way to prevent having to do this almost every time please feel free to edit this &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development tips for bitbake and oe ==&lt;br /&gt;
&lt;br /&gt;
[http://www.jumpnowtek.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=70&amp;amp;Itemid=89 Gumstix Development Tips] appears to have some good ideas that can apply to the Beagle too.&lt;br /&gt;
&lt;br /&gt;
=== Point to a given git snapshot ===&lt;br /&gt;
&lt;br /&gt;
The original SD card image came from [http://beagleboard-validation.s3.amazonaws.com/deploy/201008201549/sd/list.html here].  The file [http://beagleboard-validation.s3.amazonaws.com/deploy/201008201549/sd/ec2build.sh ec2buld.sh] shows how the image was build.  There are a couple of interesting things in this file.  &lt;br /&gt;
&lt;br /&gt;
Line 564 shows an additional git repository was used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd sources/openembedded&lt;br /&gt;
$ git remote add myrepo git://gitorious.org/~Jadon/angstrom/jadon-openembedded.git&lt;br /&gt;
$ git remote update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run this git command to get access to this repository. (It took about 2 minutes at 6:20am.) Line 21 shows the hash tag for the build.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ANGSTROM_REPO_ID=24805033b1205acc35f8b4d75cc42f8b9c2a1b38&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If we pull from this tag we will have the same files as were used to generate the SD image.  So do the following&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ git checkout 24805033b1205acc35f8b4d75cc42f8b9c2a1b38&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This takes about 10 seconds.&lt;br /&gt;
&lt;br /&gt;
== Fixing Problems ==&lt;br /&gt;
&lt;br /&gt;
=== Kernel Boot Problems ===&lt;br /&gt;
&lt;br /&gt;
[http://processors.wiki.ti.com/index.php/Kernel_-_Common_Problems_Booting_Linux Here] is a link with some suggestions of what to do if your kernel isn't booting properly.&lt;br /&gt;
&lt;br /&gt;
=== Serial port garbage ===&lt;br /&gt;
&lt;br /&gt;
If you are having trouble with garbage on the console, this might help. Sometimes the serial port times out.   Most of the time it just generates some junk which can be cleared with CTRL-U or backspace.  However, if it happens at the login prompt then getty thinks the terminal is 7-bit with parity (rather than 8-bit raw).  If this happens and you continue to login the whole session appears to be scrambled - if you press CTRL-D you can login again provided you don't stop typing... :] &lt;br /&gt;
I have simply added the following two lines to root's &amp;lt;code&amp;gt;.profile&amp;lt;/code&amp;gt;: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
stty -parenb -parodd cs8 -inpck -istrip &lt;br /&gt;
echo 0 &amp;gt; /sys/class/tty/ttyS2/device/sleep_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A better fix would probably be to just add the second line to a rc.d startup script somewhere.&lt;br /&gt;
&lt;br /&gt;
This suggestion came from this [http://groups.google.com/group/beagleboard/browse_thread/thread/d23c15e3c9fcb8fc posting].&lt;br /&gt;
&lt;br /&gt;
=== Turning off gpe ===&lt;br /&gt;
The following worked last year, but doesn't seem to work now.&lt;br /&gt;
&lt;br /&gt;
Running above will write on top of what Angstrom is doing.  You can turn off the display manager by using:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/gpe-dm stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Replace &amp;lt;code&amp;gt;stop&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;start&amp;lt;/code&amp;gt; if you want to run it again.&lt;br /&gt;
&lt;br /&gt;
== Details of making your own MLO ==&lt;br /&gt;
&lt;br /&gt;
[http://www.embedded-bits.co.uk/2011/beagleboardxmjtaghardwar/ Hardware Environment for a BeagleBoard XM with JTAG]&lt;br /&gt;
&lt;br /&gt;
[http://www.embedded-bits.co.uk/2011/beagleboardxmjtagsoftware/ Software Environment for a BeagleBoard XM with JTAG]&lt;br /&gt;
&lt;br /&gt;
[http://www.embedded-bits.co.uk/2011/writeanmlo/ This] might make a good lab.&lt;br /&gt;
&lt;br /&gt;
== Getting help from a news group == &lt;br /&gt;
&lt;br /&gt;
[http://groups.google.com/group/beagleboard/msg/db315d63de2a522a Here's] a nice tip on what to do before posting a question to a news group.&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project_Ideas</id>
		<title>ECE497 Project Ideas</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project_Ideas"/>
				<updated>2011-12-08T14:46:37Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: /* Mini Project Ideas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
[[Category:BeagleBoard]]&lt;br /&gt;
&lt;br /&gt;
We have both mini projects and projects in ECE497.  &lt;br /&gt;
&lt;br /&gt;
'''Mini projects''' involved finding something interested in the Beagle world and installing it to your beagle and demoing it to the class.  You would also create a wiki page documenting what you did to get it installed.  Often you may find multiple efforts do to something, for example there are a few efforts to port Android on the Beagle.  Your task is to figure out which one should be used.  Generally mini projects won't require you to write new code; however they are the background work that may lead to a full project.  You should do a couple mini projects for the class.  Generally they are done alone, but working in pairs is OK. These will be about 1/3 of your grade and should be done in the first 5 weeks or so.&lt;br /&gt;
&lt;br /&gt;
Only one '''full project''' is done for the class and it's done with a team of 3 or 4.  These projects can take a mini project (or a whole new idea) and add to it.  The goal is to have your work contribute to the open source world. Any code is generated will be kept on [https://github.com/ github] and a [http://bitbake.berlios.de/manual/ bitbake receipt] will be created to automatically download and create the object files.&lt;br /&gt;
&lt;br /&gt;
What follows are&lt;br /&gt;
&lt;br /&gt;
; Places to look for project ideas: Feel free to add your own suggestions.&lt;br /&gt;
; Mini Project ideas: Add your own suggestions, and do some of them.  Mark the ones you've done.&lt;br /&gt;
; Full Project ideas: ditto.&lt;br /&gt;
&lt;br /&gt;
== Sources for Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
Here are some links where you'll find ideas for your project.&lt;br /&gt;
* [http://wiki.omap.com/index.php/ETechDays_Community_Lightning_Talks ETechDays Community Lightning Talks], this is a one-day web-based conference where many project ideas are presented.  One of our 2009-2010 senior design projects was found here.&lt;br /&gt;
* [http://beagleboard.org/project Official list of Beagle Projects], there are many Beagle specific projects listed here.  Many are inactive.  ''List your project here once it running.''&lt;br /&gt;
* [http://www.youtube.com/watch?v=Mk1xjbA-ISE Augmented Reality Project], here's an idea that I think we can do on the Beagle.  Rather than using augmented reality glasses, I'd suggest we use a [http://focus.ti.com/dlpdmd/docs/dlpdiscovery.tsp?sectionId=60&amp;amp;tabId=2235 TI DLP pico projector]. [http://www.hitlabnz.org/wiki/EmbeddedAR Here's] AR running on the Beagle. &lt;br /&gt;
* [http://code.google.com/p/0xdroid/ Android], this is one of a couple of efforts to port [http://source.android.com/ Google's Android OS] to the Beagle.&lt;br /&gt;
* [[BeagleBoard/Ideas-2009]] Google summer code ideas 2009.&lt;br /&gt;
&lt;br /&gt;
== Mini Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Suggestor&lt;br /&gt;
! Implementor&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| Work up an example of controlling the PWM registers from the shell.&lt;br /&gt;
| [http://esdw.wordpress.com/2010/03/25/a-useful-tool-devmem2/ PWM via the shell]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Weather Station&lt;br /&gt;
| [http://dominion.thruhere.net/koen/cms/using-the-beaglebone-as-a-weatherstation Ultrasonic weather]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Mike Yuhas&lt;br /&gt;
| Interface the BeagleBoard with an SRF08 Ultrasonic Ranger over I2C&lt;br /&gt;
| [http://yetanotherhackersblog.wordpress.com/2011/04/07/interfacing-the-beagleboard-with-an-srf08-ultrasonic-ranger-over-i2c Ultrasonic Ranger]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Compile the PowerVR examples&lt;br /&gt;
| [http://www.imgtec.com/powervr/insider/sdkdownloads/index.asp PowerVR Insider SDK Downloads]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Work up some GStreamer PS EYE Demos&lt;br /&gt;
| [http://www.electronsonradio.com/2011/06/playstation-eye-gstreamer-examples GStreamer PS EYE Demos] and [http://www.ridgerun.com/blog/?p=224 RidgeRun]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Douglas Selby&lt;br /&gt;
| Get TI' embedded speech recognizer installed and demo the examples.&lt;br /&gt;
| [https://gforge.ti.com/gf/project/tiesr TI Embedded Speech Recognizer]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Demo last year's TI speech project.  I have a microphone amplifier and mike you can use.&lt;br /&gt;
| [[ECE597 Project pyWikiReader]]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Stephen Mayhew&lt;br /&gt;
| Find who is doing what with Kinect on the Beagle and install and run it.&lt;br /&gt;
| [http://www.google.com/webhp?rlz=1C1GPCK_enUS392US392&amp;amp;sourceid=chrome-instant&amp;amp;ie=UTF-8&amp;amp;ion=1#hl=en&amp;amp;sugexp=ldymls&amp;amp;xhr=t&amp;amp;q=beagleboard+kinect&amp;amp;cp=0&amp;amp;qe=YmVhZ2xlYm9hcmQga2lu&amp;amp;qesig=9qrD0rFfjWfujRRGmkB_Bw&amp;amp;pkc=AFgZ2tn-cylx0f71PasgBKOazjBQY3VK712RWQ7DueEjQNAdbOHr6BCgUd9xdyXyPe8TWErkesrQ246vygwImnAS5mIzCG2-5g&amp;amp;pf=p&amp;amp;sclient=psy&amp;amp;rlz=1C1GPCK_enUS392US392&amp;amp;site=webhp&amp;amp;source=hp&amp;amp;aq=0&amp;amp;aqi=&amp;amp;aql=&amp;amp;oq=beagleboard+kin&amp;amp;pbx=1&amp;amp;bav=on.2,or.&amp;amp;fp=3e817b7ec5d13467&amp;amp;ion=1 Google - beagleboard kinect]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Greg Harrison&lt;br /&gt;
| I have several [http://en.wikipedia.org/wiki/PlayStation_Eye Sony PlayStation Eye web cams] and I have examples of how to pull video from them via V4L2 ([[ECE497 DaVinci Workshop Labs]]).  The Eye also has a 4 microphone array.  I don't know how to get audio from it.  Figure out how.  This may expand to a full project if there is no solution out there.&lt;br /&gt;
| [http://www.google.com/webhp?rlz=1C1GPCK_enUS392US392&amp;amp;sourceid=chrome-instant&amp;amp;ie=UTF-8&amp;amp;ion=1#hl=en&amp;amp;sugexp=ldymls&amp;amp;xhr=t&amp;amp;q=beagleboard+playstation+eye+microphone+array&amp;amp;cp=0&amp;amp;qe=YmVhZ2xlYm9hcmQgcGxheXN0YXRpb24gZXllIG1pY3JvcGhvbmUgYXJyYXk&amp;amp;qesig=Sdh5Ru_jodwYydoeTls1GA&amp;amp;pkc=AFgZ2tmwB41tQwF7XwrJPqFnf0NRO911bMCrbnU1HR9Vm6-Pg0sH8LvbJZsKwjKRUpoin4cZlwLIngZw8OC7dyanjcJCG4N_kg&amp;amp;pf=p&amp;amp;sclient=psy&amp;amp;rlz=1C1GPCK_enUS392US392&amp;amp;site=webhp&amp;amp;aq=f&amp;amp;aqi=&amp;amp;aql=&amp;amp;oq=beagleboard+playstation+eye+microphone+array&amp;amp;pbx=1&amp;amp;bav=on.2,or.&amp;amp;fp=3e817b7ec5d13467&amp;amp;ion=1 Google - beagleboard playstation eye microphone array]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Find some examples of how to use '''cmem'''. CMEM is an API and library for managing one or more blocks of physically contiguous memory. It also provides address translation services (e.g. virtual to physical translation) and user-mode cache management APIs. It's used for managing the shared memory between the ARM and the DSP on the processor.  I've been unable to find examples of how to use it.&lt;br /&gt;
| [http://processors.wiki.ti.com/index.php/CMEM_Overview CMEM Overview]&lt;br /&gt;
|-&lt;br /&gt;
| Mike Lester&lt;br /&gt;
| &lt;br /&gt;
| Connect to your beagleboard using ethernet over USB. This allows your beagleboard to share the host computer's internet connection and allow you to connect via VNC/ssh without the need for an external router/switch. This should make development much easier. &lt;br /&gt;
| [[BeagleBoardBeginners#Connect_with_your_beagleboard_using_VNC_and_ethernet_over_USB | VNC]]&lt;br /&gt;
|-&lt;br /&gt;
| Brian Hulette&lt;br /&gt;
| &lt;br /&gt;
| Experiment with audio synthesis and/or sampling/processing.  You could either synthesize and play a few tones to generate a song, or have the Beagle sample an audio signal then process and output it to create a sort of effects pedal. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| David McGinnis&lt;br /&gt;
| David McGinnis&lt;br /&gt;
| Look into connecting the beagleboard to a phone or headphones using bluetooth. This could involve either outputting audio and taking in audio from a bluetooth headset, allowing you to have audio I/O with the beagleboard, or could involve connecting with phones automatically as they come into range of the beagleboard, allowing for an automatic attendence registration system, among other things.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| David Bliss&lt;br /&gt;
| David Bliss&lt;br /&gt;
| Get a video stream from a PS Eye, and identify the relevant device files.&lt;br /&gt;
| [http://en.wikipedia.org/wiki/PlayStation_Eye#cite_note-Linux_support-32 PlayStation_Eye#cite_note-Linux_support-32]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| William Gerth&lt;br /&gt;
| William Gerth&lt;br /&gt;
| Explore the possibility of implementing OpenAOS on the Beagle, to make a portable media player and etc.&lt;br /&gt;
| http://www.openaos.org/&lt;br /&gt;
|-&lt;br /&gt;
| Joel Carlson&lt;br /&gt;
|&lt;br /&gt;
| Lacking a serial port and don't have a USB-serial converter?  Why not find a way to make the BeagleBoard boot over a USB console connection?&lt;br /&gt;
| [http://itgen.blogspot.com/2011/03/beagleboard-xm-u-boot-without-serial.html BeagleBoard XM U-boot without Serial]&lt;br /&gt;
|-&lt;br /&gt;
| Joel Carlson&lt;br /&gt;
| Joel Carlson&lt;br /&gt;
| Depending on what one is working on, it might be useful to mount the BeagleBoard root filesystem over NFS.  The link to the right does that using a USB-Ethernet connection, but one that just runs over an Ethernet cable would be nice.&lt;br /&gt;
| [http://elinux.org/Mount_BeagleBoard_Root_Filesystem_over_NFS_via_USB Mount BeagleBoard Root Filesystem over NFS via USB]&lt;br /&gt;
Here's an example of mounting dfs/afs on the Beagle&lt;br /&gt;
&lt;br /&gt;
[[ECE497 Mounting dfs/afs in Linux]]&lt;br /&gt;
|-&lt;br /&gt;
| Lei Liu&lt;br /&gt;
| Lei Liu&lt;br /&gt;
| Build communication with FPGA via USB port.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Bamberger&lt;br /&gt;
| Aaron Bamberger&lt;br /&gt;
| Play around with the BeagleBoard's various SPI and I2C ports, and get it to talk to some simple SPI and I2C peripherals, such as a 7-Segment display driver or small LCD panel&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Jay Dial&lt;br /&gt;
| Jay Dial&lt;br /&gt;
| Look into the parallel computing possibilities of the BeagleBoard. See how difficult it would be to get two BeagleBoards to communicate properly for parallel computing.&lt;br /&gt;
| [http://antipastohw.blogspot.com/2010/09/how-to-make-beagleboard-elastic-r.html How to make a BeagleBoard Elastic R Beowulf Cluster]&lt;br /&gt;
|-&lt;br /&gt;
| Randy Billingsley&lt;br /&gt;
| Randy Billingsley&lt;br /&gt;
| Configure wlan on the beagle board using a wireless usb adapter&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Mike Fuson&lt;br /&gt;
| Mike Fuson&lt;br /&gt;
| Get XBMC working on the beagle.&lt;br /&gt;
| [http://elinux.org/BeagleBoard/GSoC/2010_Projects/XBMC XBMC wiki page]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Sam Allen&lt;br /&gt;
|&lt;br /&gt;
| Port Android to beagle&lt;br /&gt;
| It's done.  Check out [http://code.google.com/p/rowboat/ this].&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Yifei Li&lt;br /&gt;
| Change the splash screen to a Rose logo when the Beagle starts up&lt;br /&gt;
| [http://blog.bizmobiletech.com/?p=253&amp;amp;utm_source=feedburner&amp;amp;utm_medium=twitter&amp;amp;utm_campaign=Feed%3A+BeagleBoard+%28BeagleBoard.org%29 How to Change Angstrom Boot logo in beagleboard]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Ziyi Zhang&lt;br /&gt;
| Do remote debugging with Eclipse.  My page needs updating.&lt;br /&gt;
| [[ECE497 Installing the Eclipse IDE]]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
|&lt;br /&gt;
| Investigate Eigen. Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms. Explicit vectorization is performed for SSE 2/3/4, ARM NEON, and AltiVec instruction sets, with graceful fallback to non-vectorized code. This means it should run fast on the Beagle.  How fast does it run?  Has anyone used it on the Beagle?&lt;br /&gt;
| [http://eigen.tuxfamily.org/index.php?title=Main_Page eigen.tuxfamily.org]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Find what libraries are available for the DSP side of the DM 3730 and write some examples that use them.&lt;br /&gt;
| [http://focus.ti.com/docs/toolsw/folders/print/sprc265.html C64x+ DSP Library (DSPLIB)] &lt;br /&gt;
[http://focus.ti.com/docs/toolsw/folders/print/sprc092.html DSPLIB] &lt;br /&gt;
[http://focus.ti.com/docs/toolsw/folders/print/sprc094.html IMGLIB]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Convert the OSS labs to use the new ALSA drivers&lt;br /&gt;
| [http://www.alsa-project.org/main/index.php/Tutorials_and_Presentations ALSA Tutorials]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Dig into the DSS drivers.  The OMAP display subsystem supports rotation and mirroring, but the '''mirror''' and '''rotate''' files in '''/sys/devices/platform/omapdss/display''' ''X'' don't work.  Find the code that implements them see if you can figure out what's wrong.&lt;br /&gt;
| [http://elinux.org/BeagleBoardFAQ#.22DSS2.22_display_driver_for_.3E.3D_2.6.29 dss2]&lt;br /&gt;
|-&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| &lt;br /&gt;
| Install an RT kernel on beagleboard. If successful, this could turn into a full project for exploring RT system and application.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| &lt;br /&gt;
| Interface beagleboard with a GPS device to read location information. If successful, see if it's possible build a (small) app that downloads appropriate map from google map and shows the beagleboard's location.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| &lt;br /&gt;
| Install a VPN server on beagleboard.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Guanqun Wang&lt;br /&gt;
| &lt;br /&gt;
| Run beagle board with a small LCD display&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Yifei Li&lt;br /&gt;
| &lt;br /&gt;
| Demo a BeagleLight program that could synchronize LEDs with music.&lt;br /&gt;
| http://processors.wiki.ti.com/index.php/BeagleLight&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Full Projects ==&lt;br /&gt;
&lt;br /&gt;
=== Winter 2011-2012 ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Team&amp;amp;nbsp;Members&lt;br /&gt;
! Project Title&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [http://e2e.ti.com/blogs_/b/dlp_mems_blog/archive/2011/05/13/3d-structured-light-using-dlp-technology.aspx 3D Structured Light using DLP® Technology]&lt;br /&gt;
| Create 3D maps using a DLP pico and the Beagle.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [http://m.matrixsynth.com/2011/06/beagleboard-synth-proof-of-concept.htm Beagle Midi]&lt;br /&gt;
| Make the Beagle synthesize midi files.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [http://www.sakoman.com/OMAP/an-overiew-of-omap3-power-management-with-2639-pm.html Beagle Power Management]&lt;br /&gt;
| Work up some power management demos.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2011 ===&lt;br /&gt;
Edit this page to add projects you would like to do.  If you aren't in the class, add ideas you would like to see done by class members.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Team&amp;amp;nbsp;Members&lt;br /&gt;
! Project Title&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [https://gforge.ti.com/gf/project/tiesr TI Embedded Speech Recognizer]&lt;br /&gt;
| Port TI's fixed-point speech recognizer to the DSP.  It currently runs on the ARM.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Kinect&lt;br /&gt;
| [http://hackaday.com/2010/11/15/rendering-a-3d-environment-from-kinect-video/ Here] and [http://gamerfront.net/2010/12/with-a-second-kinect-you-can-map-out-your-bedroom-in-3d/4644 here] are some interesting things people are doing with Kinects.  Maybe we could port it to the Beagle.&lt;br /&gt;
|-&lt;br /&gt;
| Mike Lester&lt;br /&gt;
| Accelerometer-based auto-leveled projection&lt;br /&gt;
| Several projects have been started to add [http://matthsu-abacus.blogspot.com/2009/11/build-3-axis-accelerometer-on.html  accelerometer support] to the BeagleBoard. This project would involve getting an accelerometer installed and working, perhaps using a [http://elinux.org/BeagleBoard_Trainer trainer board], as well the [http://focus.ti.com/general/docs/gencontent.tsp?contentId=52770 TI Pico Projector]. The orientation data from the accelerometer would be used to rotate, skew, keystone the projected image in order to keep it level and normalized.&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Bamberger&lt;br /&gt;
| Kinect Based 3d Scanner&lt;br /&gt;
| Build some sort of motorized gantry that allows the Kinect to be rotated around (and possibly from top to bottom) of an arbitrary object.  The motors would be controlled using the BeagleBoard's I2C or SPI interfaces.  Use libfreenect to capture depth information from every side of the object as the Kinect rotates around the object.  Use this data and OpenGL to build a 3d model of the scanned object&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Port winDSK6 to the Beagle&lt;br /&gt;
| [http://www.ece.wisc.edu/~morrow/software/ winDSK6] is a Windows program that talks to a TI 'C6711 DSK and performs many interesting audio effects.  This project would implement the code running on the Windows side on the ARM.  The ARM could capture a frame of audio and send it to the DSP for processing.  The ARM could then send the processed audio to the speakers.  [http://processors.wiki.ti.com/index.php/C6Run c6run] would be used to interact with the DSP.  &lt;br /&gt;
|-&lt;br /&gt;
| David Bliss&lt;br /&gt;
| Automated Die Tester&lt;br /&gt;
| Make a device that can roll a die, and keep statistics on how random the die is. The build can either be very complex, or very simple, depending on how you define &amp;quot;rolling a die&amp;quot;. The software doesn't necessarily have to know what the numbers mean, it just has to be able to uniquely identify the sides.&lt;br /&gt;
|-&lt;br /&gt;
| Stephen Mayhew&lt;br /&gt;
| Set-Playing System&lt;br /&gt;
| Set is a relatively simple card game that lends itself nicely to image recognition and computer play. The layout is not very structured, and the game play is pretty simple. This project would incorporate image recognition, projection of possible moves (using the pico projector), and maybe even speech synthesis, and recognition. For example, if someone didn't know how to play Set, then the board could take them through a tutorial, asking questions of the user as it went along (&amp;quot;If I have these 2 cards, what 3rd card would make a set?&amp;quot;). This would make for an interesting demo at conferences. &lt;br /&gt;
|-&lt;br /&gt;
| Michael Fuson  &lt;br /&gt;
Jay Dial&lt;br /&gt;
| Spectrum Analyzer&lt;br /&gt;
|Create a real-time audio Spectrum analyzer on the BeagleBoard. [http://elinux.org/ECE497_Project_Spectrum_Analyzer Project Page]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2010 ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Team&amp;amp;nbsp;Members&lt;br /&gt;
! Project Title&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| Yannick Polius&lt;br /&gt;
| [[ECE597 Project pyWikiReader | pyWikiReader]]&lt;br /&gt;
| This project is mostly software, with the hardware element being the use of the dsp. The idea is to tie together three technologies: speech recognition, speech synthesis, and internet access in order to create an interface capable of orating information to the user based on a vocal command. The implementation I have in mind is to use the Pocket Sphinx speech recognition engine to first understand what the user wants through speech, such as &amp;quot;Rose-Hulman&amp;quot;. Once the speech is translated, the software can execute a Wikipedia search to pull said item's page. Most of the important info is contained within the introductory paragraph, so the software will take only that chunk and feed it into the Flite speech synthesis engine. The end result is a simple machine with &amp;quot;mother box&amp;quot; like usability, that is, no interaction besides what is natural to the user (speaking) should be necessary to retrieve the information.&lt;br /&gt;
|-&lt;br /&gt;
| Paul Morrison &amp;lt;br&amp;gt; Steven Stark&lt;br /&gt;
| [[ECE597 3D Chess | 3D Chess with Networking]]&lt;br /&gt;
| This project would simulate a hand-held chess game, and the game would allow two player games using two beagleboards over a network connection.  The graphics would use the beagle's PowerVR SGX for hardware accelerated graphics by using OpenGL.  In addition to 3D graphics and networking, a third portion of the project would be to optimize the boot time because a chess computer should start up quickly.&lt;br /&gt;
|-&lt;br /&gt;
| Tom Most &amp;lt;br&amp;gt; David Baty &amp;lt;br&amp;gt; Mark Jacobson&lt;br /&gt;
| [[ECE597: Sumo Robot|Sumo Robot]]&lt;br /&gt;
| The goal of this project is to create a robot capable of competing in the 3.0 kg weight class of a sumo competition ([http://www.youtube.com/watch?v=V3OR_sHrOJM an example]).  This would have minor hardware and electronics elements, but would focus on communication with sensors using the BeagleBoard and the Linux kernel.  At minimum, this involves sensors to detect the edge of the ring and the opposing robot.  This would likely be implemented using Sharp IR rangefinders, a ultrasonic rangefinders, and ideally a camera.  [http://circ.mtco.com/competitions/2010/rules/sumo Sumo rules].&lt;br /&gt;
|-&lt;br /&gt;
|Brian Embry &amp;lt;br&amp;gt; Jessica Lipscomb &amp;lt;br&amp;gt; Paul Banister&lt;br /&gt;
| [[ECE597 Network based MP3 player]]&lt;br /&gt;
| Network based mp3 player.  The Beagle will be programmed using a custom, protocol for transferring files from a network based server (x86 pc) to a Beagle.  Speakers will be attached to the Beagle, where the file will be played back.  Possible extensions are a LCD for displaying id3 tag information, and buttons for user interaction (next track, previous track, etc.) on the GPIO interface.&lt;br /&gt;
|-&lt;br /&gt;
|[[user:routhcr | Chris Routh]] &amp;lt;br&amp;gt; [[user:collinjc | J. Cody Collins]] &amp;lt;br&amp;gt; [[user:jacksogc | Greg Jackson]] [[user:Xinkeqiong | Keqiong Xin]]&lt;br /&gt;
| [[ECE597: Auto HUD]]&lt;br /&gt;
| Use the beagle board to run image recognition on a camera feed located inside a car, and then signaling to the driver via a pico projector various objects of interest.&lt;br /&gt;
|-&lt;br /&gt;
| Adam Jesionowski&amp;lt;br&amp;gt;Qiang Jiang&lt;br /&gt;
| [[ECE597_Adding_Sense_to_Beagle|Adding Sense to Beagle]] (See [[BeagleBoard/GSoC/Ideas]])&lt;br /&gt;
| Sensory aware applications are becoming more mainstream with the release of the Apple iPhone. This project would combine both HW and SW to add sensory awareness to beagle. First, additional modules such as GPS, 3-axis accelerometers, Gyroscopes, Temperature Sensors, Humidity Sensors, Pressure Sensors, etc, would be added to beagle to compliment the microphone input in order to allow sensing of the real world environment. Then SW APIs would need to be layered on top to allow easy access to the sensory data for use by applications. &lt;br /&gt;
|-&lt;br /&gt;
| Mitch Garvin &amp;lt;br&amp;gt; Matt Luke &amp;lt;br&amp;gt; Elliot Simon &amp;lt;br&amp;gt; Jian Li&lt;br /&gt;
| [[ECE597 Interactive Pong|Interactive Pong]]&lt;br /&gt;
| Run classic pong, projecting the screen and using a camera to track user's hands for input.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/EBC_Exercise_08_Installing_Development_Tools</id>
		<title>EBC Exercise 08 Installing Development Tools</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/EBC_Exercise_08_Installing_Development_Tools"/>
				<updated>2011-12-08T02:18:18Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: /* Build a small program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Early in the class most of the exercises we will do will all run on the BeagleBoard. You'll be able to edit ([http://projects.gnome.org/gedit/ gedit]), compile ([http://gcc.gnu.org/ gcc]) and run all on the Beagle.  Later, when we start compiling the kernel [http://www.kernel.org/] or the boot loader, ([http://www.denx.de/wiki/U-Boot U-boot]) you will need to cross compile on a Linux machine and copy the results to the Beagle.&lt;br /&gt;
&lt;br /&gt;
The purpose of this exercise is to install all the tools needed for compiling on your host so they will be ready when you need them.&lt;br /&gt;
&lt;br /&gt;
Instructions for building Ångström are given [http://www.angstrom-distribution.org/building-angstrom here]; however there are a few changes you have to make.  Here's what I did.  &lt;br /&gt;
&lt;br /&gt;
== Install development environment ==&lt;br /&gt;
&lt;br /&gt;
The step is to get the crosscompilers, etc. installed.&lt;br /&gt;
&lt;br /&gt;
=== Get the setup scripts ===&lt;br /&gt;
&lt;br /&gt;
First install &amp;lt;code&amp;gt;git&amp;lt;/code&amp;gt; by running the following on your host computer.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo apt-get install git-core&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(Here is a nice [http://progit.org/book/ git tutorial].  Take a look at it if you want to understand the commands that follow. We'll explore it in more depth in a later exercise.)&lt;br /&gt;
&lt;br /&gt;
Then run the following to load the meta data.&lt;br /&gt;
&lt;br /&gt;
I have everything in a &amp;lt;code&amp;gt;~/BeagleBoard&amp;lt;/code&amp;gt;, so here is how I setup things:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd&lt;br /&gt;
$ mkdir -p BeagleBoard&lt;br /&gt;
$ cd BeagleBoard&lt;br /&gt;
$ git clone git://git.angstrom-distribution.org/setup-scripts oe&lt;br /&gt;
$ cd oe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(The git took 4.5 seconds.)&lt;br /&gt;
This creates a directory for open embedded (&amp;lt;code&amp;gt;oe&amp;lt;/code&amp;gt;) and gets the script to download Ångström.  What files do you see?&lt;br /&gt;
&lt;br /&gt;
=== Setting up for the BeagleBoard ===&lt;br /&gt;
&lt;br /&gt;
Now let's setup &amp;lt;code&amp;gt;local.conf&amp;lt;/code&amp;gt; for our needs:&lt;br /&gt;
 $ gedit conf/local.conf&lt;br /&gt;
Add the following to the '''end''' of the file.&lt;br /&gt;
 MACHINE ?= &amp;quot;beagleboard&amp;quot; &lt;br /&gt;
Look at this block of lines:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Make use of SMP and fast disks&lt;br /&gt;
PARALLEL_MAKE = &amp;quot;-j2&amp;quot;&lt;br /&gt;
BB_NUMBER_THREADS = &amp;quot;2&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you can tell it how many parallel threads to run.  If you have several cores on your machine, make this number big.  If you have only one core, you might be better performance setting it to 1. If you have no clue which value to pick, Gentoo users suggest 1 more than the number of cores in your computer. More details are [http://wiki.openembedded.org/index.php/Advanced_configuration here].&lt;br /&gt;
* PARALLEL_MAKE sets the number &amp;quot;gcc&amp;quot; threads (same as make -j4 at compile time&lt;br /&gt;
* BB_NUMBER_THREADS sets the number of bitbake threads, (one thread can be downloading, while another compiles)&lt;br /&gt;
&lt;br /&gt;
To save you a lot of time, it is useful to disable locale generation for all but the one you need.  Add this to local.conf&lt;br /&gt;
 GLIBC_GENERATE_LOCALES = &amp;quot;en_US.UTF-8 en_GB.UTF-8 de_DE.UTF-8 fr_FR.UTF-8 pt_BR.UTF-8 es_ES.UTF-8 kn_IN.UTF-8 ml_IN.UTF-8 ta_IN.UTF-8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./oebb.sh config beagleboard&lt;br /&gt;
$ ./oebb.sh update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will bring in all the tools you need.  The config took about 3.5 minutes on my machine, update took about 1 minute.&lt;br /&gt;
&lt;br /&gt;
=== Build a small program ===&lt;br /&gt;
&lt;br /&gt;
Before the first time you run bitbake you need to do the following to set up the environmental variables:&lt;br /&gt;
 $ source ~/.oe/environment-oecore&lt;br /&gt;
&lt;br /&gt;
Take a look in the file and see what it is doing.&lt;br /&gt;
 $ less ~/.oe/environment-oecore&lt;br /&gt;
&lt;br /&gt;
To see if everything is ready, run the following&lt;br /&gt;
&lt;br /&gt;
 $ bitbake nano&lt;br /&gt;
&lt;br /&gt;
nano is a small editor.  We really don't need nano, but if it can be compiled we know we have everything in place.  I get the following error when I run the bitbake:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Pseudo is not present but is required, building this first before the main build&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
ERROR:  Poky's config sanity checker detected a potential misconfiguration.&lt;br /&gt;
    Either fix the cause of this error or at your own risk disable the checker (see sanity.conf).&lt;br /&gt;
    Following is the list of potential problems / advisories:&lt;br /&gt;
&lt;br /&gt;
    Please install following missing utilities: C++ Compiler (g++),diffstat,texi2html,makeinfo,cvs,svn,chrpath&lt;br /&gt;
&lt;br /&gt;
ERROR: Execution of event handler 'check_sanity_eventhandler' failed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
So, some programs are missing.  Install them with:&lt;br /&gt;
 $ sudo apt-get install g++ diffstat texi2html texinfo cvs subversion chrpath help2man diffstat texi2html cvs texinfo subversion gawk&lt;br /&gt;
This took just a few minutes.&lt;br /&gt;
&lt;br /&gt;
Now run:&lt;br /&gt;
 $ bitbake nano&lt;br /&gt;
This will take a while. Mine first said it has 77 tasks to do.  Once those were done it had 1113 tasks.&lt;br /&gt;
&lt;br /&gt;
Below is a table of the times from last year.  Add your bitbake time to this year's table.&lt;br /&gt;
{| style=&amp;quot;color:green; background-color:#ffffcc;&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|+ Initial &amp;lt;tt&amp;gt;bitbake nano&amp;lt;/tt&amp;gt; Winter 2011-2012 runtimes&lt;br /&gt;
! Processor&lt;br /&gt;
! Settings&lt;br /&gt;
! Run Time&lt;br /&gt;
|-&lt;br /&gt;
| 8 Core virtual machine&lt;br /&gt;
| PARALLEL_MAKE = &amp;quot;-j8&amp;quot;&amp;lt;br&amp;gt;BB_NUMBER_THREADS = &amp;quot;8&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
| 2.5 hours&lt;br /&gt;
|-&lt;br /&gt;
| Intel Core 2 Duo T7800, 2.60 GHz&lt;br /&gt;
| PARALLEL_MAKE = &amp;quot;-j2&amp;quot;&amp;lt;br&amp;gt;BB_NUMBER_THREADS = &amp;quot;2&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
| 1:55 &lt;br /&gt;
|}&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|+ Initial &amp;lt;tt&amp;gt;bitbake nano&amp;lt;/tt&amp;gt; 2011 runtimes&lt;br /&gt;
! Processor&lt;br /&gt;
! Settings&lt;br /&gt;
! Run Time&lt;br /&gt;
|-&lt;br /&gt;
| Dell E521 with AMD Athlon 64 dual-core&lt;br /&gt;
| PARALLEL_MAKE = &amp;quot;-j4&amp;quot;&amp;lt;br&amp;gt;BB_NUMBER_THREADS = &amp;quot;4&amp;quot;&amp;lt;br&amp;gt;Psyco? Yes.&lt;br /&gt;
| 1.5 hours&lt;br /&gt;
|-&lt;br /&gt;
| Intel Core 2 Duo T7800, 2.60 GHz&lt;br /&gt;
| PARALLEL_MAKE = &amp;quot;-j1&amp;quot;&amp;lt;br&amp;gt;BB_NUMBER_THREADS = &amp;quot;1&amp;quot;&amp;lt;br&amp;gt;Psyco? No.&lt;br /&gt;
| 1:46&lt;br /&gt;
|-&lt;br /&gt;
| Intel Core 2 Duo T7800, 2.60 GHz&lt;br /&gt;
| PARALLEL_MAKE = &amp;quot;-j4&amp;quot;&amp;lt;br /&amp;gt;BB_NUMBER_THREADS = &amp;quot;3&amp;quot;&amp;lt;br /&amp;gt;Psyco? Yes.&amp;lt;br /&amp;gt;Ubuntu 10.04 Running in VMWare Workstation 7.1.3 Under Windows 7 32-bit&lt;br /&gt;
| 1:42&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Once nano is done building you can find it with:&lt;br /&gt;
 $ find . -name nano&lt;br /&gt;
Can you figure out which one is the nano that will run on your Beagle?&lt;br /&gt;
&lt;br /&gt;
== Download and Compile the Kernel ==&lt;br /&gt;
&lt;br /&gt;
The next step is to download and compile the kernel.&lt;br /&gt;
&lt;br /&gt;
We want to keep the kernel source code around so we can experiment with it.  Do this:&lt;br /&gt;
 $ gedit conf/local.conf&lt;br /&gt;
Find the line near the '''top''' that says &amp;lt;code&amp;gt;INHERIT += &amp;quot; rm_work &amp;quot;&amp;lt;/code&amp;gt; and comment it out.  This will save the source code.&lt;br /&gt;
 # INHERIT += &amp;quot; rm_work&lt;br /&gt;
&lt;br /&gt;
Exit gedit and do the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ source ~/.oe/environment-oecore&lt;br /&gt;
$ cd ~/BeagleBoard/oe&lt;br /&gt;
$ bitbake virtual/kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Mine says it has 1032 tasks to do.  It took about XX hours to do them.  Once done you should get a kernel that will work.&lt;br /&gt;
&lt;br /&gt;
If you accidentally run bitbake without commenting out the above line, after it runs you can comment out the INHERIT line and then run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ bitbake -c clean virtual/kernel&lt;br /&gt;
$ bitbake -f -c compile virtual/kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This second run should take less time (one timing: first run took 3.5 hours; the recompiling took 25 minutes).&lt;br /&gt;
&lt;br /&gt;
== Download and Compile U-boot ==&lt;br /&gt;
&lt;br /&gt;
While were' at it, let's get the boot loader we'll be using...&lt;br /&gt;
&lt;br /&gt;
 $ bitbake u-boot&lt;br /&gt;
&lt;br /&gt;
I think this took a half hour or so.&lt;br /&gt;
&lt;br /&gt;
Once installed you are ready for kernel work.&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/EBC_Exercise_10_Flashing_an_LED</id>
		<title>EBC Exercise 10 Flashing an LED</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/EBC_Exercise_10_Flashing_an_LED"/>
				<updated>2011-12-02T20:50:16Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: /* Measuring a gpio pin on an Oscilloscope  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EmbeddedBeagleClass]]&lt;br /&gt;
[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
The [http://en.wikipedia.org/wiki/Hello_world_program &amp;quot;Hello World&amp;quot;] program is the traditional first program for many classes.  Flashing an LED is the embedded equivalent.  Here we will explore a few ways to flash and LED on the Beagle and explore General Purpose I/O (gpio) along the way.  This will call be done from the command line of the Beagle, so there is no need for the host computer.&lt;br /&gt;
&lt;br /&gt;
== gpio via the Shell Command Line and sysfs ==&lt;br /&gt;
&lt;br /&gt;
The easiest way to do general purpose I/O (gpio) on the Beagle is through a terminal window and a shell prompt. In Linux most everything is treated as a file.  Even things that aren't files. In our class we'll use a virtual file system called '''sysfs'''.  sysfs exposes the drivers for the hardware so you get easily use them.&lt;br /&gt;
&lt;br /&gt;
Try this, open a terminal by selecting '''Applications:Accessories:Terminal'''&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal.png‎]]&lt;br /&gt;
&lt;br /&gt;
Then type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /sys&lt;br /&gt;
$ ls -F&lt;br /&gt;
block/  bus/  class/  dev/  devices/  firmware/  fs/  kernel/  module/  power/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here we see several directories that represent hardware we can control. Explore a bit and see what you find.&lt;br /&gt;
&lt;br /&gt;
Now try:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /sys/class&lt;br /&gt;
$ ls -F&lt;br /&gt;
bccat/      hwmon/        mtd/             scsi_disk/     usb_device/&lt;br /&gt;
bdi/        i2c-adapter/  net/             scsi_generic/  usbmon/&lt;br /&gt;
block/      i2c-dev/      omap-previewer/  scsi_host/     vc/&lt;br /&gt;
bluetooth/  input/        omap-resizer/    sound/         video4linux/&lt;br /&gt;
bsg/        leds/         pvr/             spi_master/    vtconsole/&lt;br /&gt;
display/    mdio_bus/     regulator/       spidev/&lt;br /&gt;
firmware/   mem/          rfkill/          thermal/&lt;br /&gt;
gpio/       misc/         rtc/             tty/&lt;br /&gt;
graphics/   mmc_host/     scsi_device/     ubi/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Explore some.  What do you find?  In '''graphics''' you will see the 3 frame buffers supported by the processor.  In '''sound''' you'll see the [http://www.alsa-project.org/main/index.php/Main_Page alsa] sound devices.&lt;br /&gt;
&lt;br /&gt;
=== Reading the Keyboard and Mouse ===&lt;br /&gt;
Try this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /sys/class/input&lt;br /&gt;
$ ls -F&lt;br /&gt;
$ evtest event2&lt;br /&gt;
Hit ctrl-C to stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now move your mouse around, or try you keyboard.  My mouse is plugged into the bottom left USB port and event2 responds to it.  Where do your keyboard and mouse appear?&lt;br /&gt;
&lt;br /&gt;
=== Flashing the LEDs ===&lt;br /&gt;
The Beagle has a '''user0''' and '''user1''' LED that you can control. Try this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /sys/class/leds&lt;br /&gt;
$ ls -F&lt;br /&gt;
beagleboard::pmu_stat@  beagleboard::usr0@  beagleboard::usr1@&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you see the directories for controlling each of the usr LEDs. By default, usr0 flashes a heartbeat pattern and usr1 flashes when the micro SD card is accessed.  Let's control usr0.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd beagleboard\:\:usr0&lt;br /&gt;
$ ls -F&lt;br /&gt;
brightness  device@  max_brightness  power/  subsystem@  trigger  uevent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
See what's in '''brightness''', '''max_brightness''' and '''trigger''' by using the &amp;lt;code&amp;gt;cat&amp;lt;/code&amp;gt; command.  For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat trigger&lt;br /&gt;
none nand-disk mmc0 [heartbeat]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This shows trigger can have 4 values.  The present value is '''heartbeat'''.  Check the LED, is the beating?  You can stop the heartbeat via:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ echo none &amp;gt; trigger&lt;br /&gt;
$ cat trigger&lt;br /&gt;
[none] nand-disk mmc0 heartbeat &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Did it stop beating?  You can now turn it on and off with:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ echo 1 &amp;gt; brightness&lt;br /&gt;
$ echo 0 &amp;gt; brightness&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Is it responding correctly?&lt;br /&gt;
&lt;br /&gt;
=== Reading the User Button ===&lt;br /&gt;
The Beagle has a couple of push buttons. One reboots the whole board.  Use with care.  One is for you to use, it's to the right of the Reset button, between the two stacks of USB ports.&lt;br /&gt;
[[File:BeagleUserButton.png]]&lt;br /&gt;
&lt;br /&gt;
It's attached to gpio port 4.  You can read it via:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /sys/class/gpio&lt;br /&gt;
$ ls -F&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notice there is no gpio4.  Here's how you can create it, set it to an input port and read its value:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ echo 4 &amp;gt; export&lt;br /&gt;
$ ls&lt;br /&gt;
$ cd gpio4&lt;br /&gt;
$ echo in &amp;gt; direction&lt;br /&gt;
$ cat value&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Try holding down the switch and doing &amp;lt;code&amp;gt;cat value&amp;lt;/code&amp;gt; again.  Does the value change?  There's a shell script called '''readgpio''' that repeatedly reads the switch.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ readgpio 4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Try pushing the switch.  Does it work?  Hit ctrl-C to stop.  Look at readgpio.  How does it work?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ which readgpio&lt;br /&gt;
$ cp /usr/bin/readgpio ~&lt;br /&gt;
$ gedit ~/readgpio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reading a gpio pin with an Oscilloscope ===&lt;br /&gt;
You can easily access many of the gpio pins via the Main Expansion Header.  Page 107 of the [http://beagleboard.org/static/BBxMSRM_latest.pdf BeagleBoard-xM System Reference Manual] has this figure.&lt;br /&gt;
[[File:MainHeader.png | 750px]]&lt;br /&gt;
&lt;br /&gt;
Unfortunately the gpio pins don't appear here.  It turns out the processor has more internal I/O lines than it has physical pins.  Each physical pin can can be connected to up to 8 internal lines.  [[BeagleBoardPinMux]] does a nice job of explaining it all.  The big clue is here [[BeagleBoardPinMux#Beagle]] which references Table 22 on page 108 of the -xM [http://beagleboard.org/static/BBSRM_latest.pdf System Reference Manual].&lt;br /&gt;
&lt;br /&gt;
[[File:ExpansionSignals.png‎]]&lt;br /&gt;
&lt;br /&gt;
Note that gpio130 appears on pin 21 of the Expansion Header. Also note that pins 27 and 28 are ground.  Attach your scope probe to these.  Now, let's put a signal on the pin.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /sys/class/gpio&lt;br /&gt;
$ ls -F&lt;br /&gt;
export      gpiochip128@  gpiochip192@  gpiochip64@  unexport&lt;br /&gt;
gpiochip0@  gpiochip160@  gpiochip32@   gpiochip96@&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notice there is no folder for gpio130.  Create it with:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ echo 130 &amp;gt; export&lt;br /&gt;
$ ls -F&lt;br /&gt;
export    gpiochip0@    gpiochip160@  gpiochip32@  gpiochip96@&lt;br /&gt;
gpio130@  gpiochip128@  gpiochip192@  gpiochip64@  unexport&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Go to your home directory on your Beagle and get '''togglepgio'''.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd&lt;br /&gt;
$ wget http://www.rose-hulman.edu/~yoder/Beagle/exercises/togglegpio&lt;br /&gt;
$ chmod +x togglegpio&lt;br /&gt;
$ gedit togglegpio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Can you tell what the program is doing?  Try running it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ togglegpio 130 0.05&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that if you are the root user (which is the default case for Angstrom), you will have to type the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./togglegpio 130 0.05&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first argument tells which gpio port to toggle, the second tells how long to delay between toggling.  In this example 0.05 s is 50 ms, which should give a period around 100ms. Measure the signal on an oscilloscope.&lt;br /&gt;
&lt;br /&gt;
=== Assignment: gpio from the shell ===&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;Measuring a gpio pin on an Oscilloscope &amp;lt;/span&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
Answer the following questions about gpio measurements.&lt;br /&gt;
&lt;br /&gt;
# What's the min and max voltage?  &lt;br /&gt;
# What period is it?  &lt;br /&gt;
# How close is it to 100ms?  &lt;br /&gt;
# Why do they differ?&lt;br /&gt;
# Run '''htop''' and see how much processor you are using.&lt;br /&gt;
# Try different values for the sleep time (2nd argument). What's the shortest period you can get? Make a table of the values you try and the corresponding period and processor usage.&lt;br /&gt;
# How stable is the period?  &lt;br /&gt;
# Try launching something like '''mplayer'''. How stable is the period?&lt;br /&gt;
# Try cleaning up togglegpio and removing unneeded lines.  Does it impact the period?&lt;br /&gt;
# togglegpio uses bash (first line in file).  Try using sh.  Is the period shorter?&lt;br /&gt;
# What's the shortest period you can get?&lt;br /&gt;
&lt;br /&gt;
==== Toggling the LEDs ====&lt;br /&gt;
&lt;br /&gt;
Modify togglegpio (call it toggleLED) to toggle the LEDs.  Can you get the LED to appear to dim by changing the duty cycle of the toggling?&lt;br /&gt;
&lt;br /&gt;
==== User Button to gpio 130 ====&lt;br /&gt;
&lt;br /&gt;
Write a shell script that reads the User Button and outputs it value on gpio pin 130.&lt;br /&gt;
&lt;br /&gt;
==== Count the User Button Presses ====&lt;br /&gt;
&lt;br /&gt;
Write a shell script that displays a count of the number of times the User Button has been pressed.&lt;br /&gt;
&lt;br /&gt;
==== Copy gpio 130 to gpio 131 ====&lt;br /&gt;
&lt;br /&gt;
Write a shell script that copies the value of gpio pin 130 to gpio pin 131.  How much CPU time does it take?  What's the delay from the time the input changes until the output changes?  How constant is the delay?&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
# [http://wh1t3s.com/2009/05/14/reading-beagleboard-gpio/ Here] is wh1ts article on flashing an LED.  It is referenced in the '''readgpio''' file that comes on the Beagle.&lt;br /&gt;
# [http://blog.makezine.com/archive/2009/02/blinking-leds-with-the-beagle-board.html?CMP=OTC-0D6B48984890 This] Make magazine article has a few more details.&lt;br /&gt;
# [http://www.avrfreaks.net/wiki/index.php/Documentation:Linux/GPIO#Getting_access_to_a_GPIO Here] in a gpio reference for Linux in general. It includes sample 'C' code for flashing at 1 Hz.&lt;br /&gt;
# [https://groups.google.com/forum/?hl=en#!msg/beagleboard/20rM-r8C2YY/hVZiN2ahI8YJ Here] is a posting in the Beagle Google group about gpio.&lt;br /&gt;
# [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/gpio.txt;h=36af58eba136bac198ea3b1f33f34236be9ce5df;hb=HEAD Here] is some information about gpio from the kernel point of view.&lt;br /&gt;
# [http://wiki.gumstix.org/index.php?title=GPIO_Event_Driver Here] is some info on a GPIO Event Driver&lt;br /&gt;
# [https://www.ridgerun.com/developer/wiki/index.php/How_to_use_GPIO_signals Here] is info on how to set '''edge''' to falling and poll() the pin.&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Contributions_and_Project_Status</id>
		<title>ECE497 Contributions and Project Status</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Contributions_and_Project_Status"/>
				<updated>2011-11-26T17:33:03Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Please edit this page and add your user name, alphabetically by last name, to this list.&lt;br /&gt;
&lt;br /&gt;
Take a look at what you and others have contributed.&lt;br /&gt;
&lt;br /&gt;
# [[Special:Contributions/YourUserName| YourName]]&lt;br /&gt;
# [[Special:Contributions/Yoder | Mark A. Yoder]]&lt;br /&gt;
# [[Special:Contributions/Yuming | Yuming Cao]]&lt;br /&gt;
# [[Special:Contributions/Yifei | Yifei Li]]&lt;br /&gt;
# [[Special:Contributions/Harrisgw | Greg Harrison]]&lt;br /&gt;
# [[Special:Contributions/Yuhasmj | Michael Yuhas]]&lt;br /&gt;
# [[Special:Contributions/Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
# [[Special:Contributions/Zitnikdj | David Zitnik]]&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Harrisgw</id>
		<title>User:Harrisgw</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Harrisgw"/>
				<updated>2011-11-26T17:27:06Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am Greg Harrison, a senior EE at Rose-Hulman ready for to learn all of the interesting things this class has to offer!!&lt;br /&gt;
&lt;br /&gt;
Lets get back to it!!&lt;br /&gt;
&lt;br /&gt;
[[Category:ECE497]]&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Harrisgw</id>
		<title>User:Harrisgw</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Harrisgw"/>
				<updated>2011-11-26T17:23:44Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am Greg Harrison, a senior EE at Rose-Hulman ready for to learn all of the interesting things this class has to offer!!&lt;br /&gt;
Lets get back to it!!&lt;br /&gt;
&lt;br /&gt;
[[Category:ECE497]]&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Harrisgw</id>
		<title>User:Harrisgw</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Harrisgw"/>
				<updated>2011-11-26T17:22:38Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am a senior EE at Rose-Hulman ready for to learn all of the interesting things this class has to offer!!&lt;br /&gt;
Lets get back to it!!&lt;br /&gt;
&lt;br /&gt;
[[Category:ECE497]]&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Harrisgw</id>
		<title>User:Harrisgw</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Harrisgw"/>
				<updated>2011-11-26T17:20:32Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: Created page with &amp;quot;I am a senior EE at Rose-Hulman ready for to learn all of the interesting things this class has to offer!! Lets get back to it!!&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am a senior EE at Rose-Hulman ready for to learn all of the interesting things this class has to offer!!&lt;br /&gt;
Lets get back to it!!&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Editing_a_Wiki</id>
		<title>ECE497 Editing a Wiki</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Editing_a_Wiki"/>
				<updated>2011-11-26T17:17:43Z</updated>
		
		<summary type="html">&lt;p&gt;Harrisgw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Here is a wiki you can practice editing.  Before you can edit it you will have to create an login.  Pick something that will make it easy for me to identify you as part of my class.  Then just add your name and date on the end of the table.&lt;br /&gt;
&lt;br /&gt;
You can get help here: [[Help:Contents]].&lt;br /&gt;
&lt;br /&gt;
If you need help with syntax check out the [[Editing Quickstart Guide|eLinux guide]] or the [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet Wikipedia Cheetsheet].&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Name&lt;br /&gt;
! Date&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yoder | Mark A. Yoder]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yuming | Yuming Cao]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yuhasmj | Michael Yuhas]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yifei | Yifei Li]]&lt;br /&gt;
| 22-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
| 24-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Zitnikdj | David Zitnik]]&lt;br /&gt;
| 25-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Harrisgw | Greg Harrison]]&lt;br /&gt;
| 26-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Harrisgw</name></author>	</entry>

	</feed>